Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

iommu/hyper-v: Use helper instead of directly accessing affinity

Recent changes to solve inconsistencies in handling IRQ masks #ifdef
out the affinity field in irq_common_data for non-SMP configurations.
The current code in hyperv_irq_remapping_alloc() gets a compiler error
in that case.

Fix this by using the new irq_data_update_affinity() helper, which
handles the non-SMP case correctly.

Signed-off-by: Michael Kelley <mikelley@microsoft.com>
Reported-by: Randy Dunlap <rdunlap@infradead.org>
Tested-by: Randy Dunlap <rdunlap@infradead.org>
Acked-by: Randy Dunlap <rdunlap@infradead.org>
Acked-by: Joerg Roedel <jroedel@suse.de>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Fixes: aa0813581b8d ("genirq: Provide an IRQ affinity mask in non-SMP configs")
Link: https://lore.kernel.org/r/1658796820-2261-1-git-send-email-mikelley@microsoft.com

authored by

Michael Kelley and committed by
Marc Zyngier
b0a4ab7c 2bd1753e

+1 -3
+1 -3
drivers/iommu/hyperv-iommu.c
··· 68 68 { 69 69 struct irq_alloc_info *info = arg; 70 70 struct irq_data *irq_data; 71 - struct irq_desc *desc; 72 71 int ret = 0; 73 72 74 73 if (!info || info->type != X86_IRQ_ALLOC_TYPE_IOAPIC || nr_irqs > 1) ··· 89 90 * Hypver-V IO APIC irq affinity should be in the scope of 90 91 * ioapic_max_cpumask because no irq remapping support. 91 92 */ 92 - desc = irq_data_to_desc(irq_data); 93 - cpumask_copy(desc->irq_common_data.affinity, &ioapic_max_cpumask); 93 + irq_data_update_affinity(irq_data, &ioapic_max_cpumask); 94 94 95 95 return 0; 96 96 }