On Sun, May 14 2023 at 00:23, Kuppuswamy Sathyanarayanan wrote:
+static int __init tdx_event_irq_init(void) +{
- struct irq_affinity_desc desc;
- struct irq_alloc_info info;
- struct irq_cfg *cfg;
- int irq;
- if (!cpu_feature_enabled(X86_FEATURE_TDX_GUEST))
return 0;
- init_irq_alloc_info(&info, NULL);
- cpumask_set_cpu(smp_processor_id(), &desc.mask);
desc is completely uninitialized here and therefore desc.mask and desc.is_managed contain random stack content.
The only reason why this "works" is that tdx_event_irq_init() is an early initcall which is invoked before SMP init, so the only choice of the allocator is to pick an interrupt on CPU0.
Thanks,
tglx