linux_dsm_epyc7002/kernel/irq
Marc Zyngier 0fe48a40ac genirq/msi: Activate Multi-MSI early when MSI_FLAG_ACTIVATE_EARLY is set
commit 4c457e8cb75eda91906a4f89fc39bde3f9a43922 upstream.

When MSI_FLAG_ACTIVATE_EARLY is set (which is the case for PCI),
__msi_domain_alloc_irqs() performs the activation of the interrupt (which
in the case of PCI results in the endpoint being programmed) as soon as the
interrupt is allocated.

But it appears that this is only done for the first vector, introducing an
inconsistent behaviour for PCI Multi-MSI.

Fix it by iterating over the number of vectors allocated to each MSI
descriptor. This is easily achieved by introducing a new
"for_each_msi_vector" iterator, together with a tiny bit of refactoring.

Fixes: f3b0946d62 ("genirq/msi: Make sure PCI MSIs are activated early")
Reported-by: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20210123122759.1781359-1-maz@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-02-10 09:29:17 +01:00
..
affinity.c
autoprobe.c
chip.c Surgery of the MSI interrupt handling to prepare the support of upcoming 2020-10-12 11:40:41 -07:00
cpuhotplug.c
debug.h
debugfs.c Merge branch 'irq/qcom-pdc-wakeup' into irq/irqchip-next 2020-10-06 11:28:03 +01:00
devres.c
dummychip.c
generic-chip.c
handle.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
internals.h genirq/chip: Use the first chip in irq_chip_compose_msi_msg() 2020-09-16 16:52:28 +02:00
ipi.c
irq_sim.c
irqdesc.c
irqdomain.c genirq/irqdomain: Don't try to free an interrupt that has no mapping 2020-12-30 11:53:25 +01:00
Kconfig genirq: Let GENERIC_IRQ_IPI select IRQ_DOMAIN_HIERARCHY 2020-10-15 21:41:44 +01:00
Makefile
manage.c task_work: cleanup notification modes 2020-10-17 15:05:30 -06:00
matrix.c genirq/matrix: Deal with the sillyness of for_each_cpu() on UP 2020-08-30 19:17:28 +02:00
migration.c
msi.c genirq/msi: Activate Multi-MSI early when MSI_FLAG_ACTIVATE_EARLY is set 2021-02-10 09:29:17 +01:00
pm.c genirq/PM: Introduce IRQCHIP_ENABLE_WAKEUP_ON_SUSPEND flag 2020-10-06 11:23:41 +01:00
proc.c genirq: Allow interrupts to be excluded from /proc/interrupts 2020-09-13 17:04:38 +01:00
resend.c genirq: Walk the irq_data hierarchy when resending an interrupt 2020-09-06 18:25:23 +01:00
settings.h genirq: Allow interrupts to be excluded from /proc/interrupts 2020-09-13 17:04:38 +01:00
spurious.c
timings.c kernel/: fix repeated words in comments 2020-10-16 11:11:19 -07:00