linux/arch/s390
Gerd Bayer f82bc4a04a s390/pci: Allow allocation of more than 1 MSI interrupt
[ Upstream commit ab42fcb511 ]

On a PCI adapter that provides up to 8 MSI interrupt sources the s390
implementation of PCI interrupts rejected to accommodate them, although
the underlying hardware is able to support that.

For MSI-X it is sufficient to allocate a single irq_desc per msi_desc,
but for MSI multiple irq descriptors are attached to and controlled by
a single msi descriptor. Add the appropriate loops to maintain multiple
irq descriptors and tie/untie them to/from the appropriate AIBV bit, if
a device driver allocates more than 1 MSI interrupt.

Common PCI code passes on requests to allocate a number of interrupt
vectors based on the device drivers' demand and the PCI functions'
capabilities. However, the root-complex of s390 systems support just a
limited number of interrupt vectors per PCI function.
Produce a kernel log message to inform about any architecture-specific
capping that might be done.

With this change, we had a PCI adapter successfully raising
interrupts to its device driver via all 8 sources.

Fixes: a384c8924a ("s390/PCI: Fix single MSI only check")
Signed-off-by: Gerd Bayer <gbayer@linux.ibm.com>
Reviewed-by: Niklas Schnelle <schnelle@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-08-03 08:49:52 +02:00
..
appldata s390/appldata: use struct_size() helper 2020-06-29 16:32:34 +02:00
boot s390/boot: Remove alt_stfle_fac_list from decompressor 2024-06-12 11:03:44 +02:00
configs s390/configs: add kasan.config addon config file 2022-11-08 19:32:32 +01:00
crypto crypto: s390/aes - Fix buffer overread in CTR mode 2024-01-31 16:16:58 -08:00
hypfs s390/hypfs: avoid error message under KVM 2022-08-15 17:19:51 +02:00
include s390: Mark psw in __load_psw_mask() as __unitialized 2024-07-18 13:18:35 +02:00
kernel s390/uv: Don't call folio_wait_writeback() without a folio reference 2024-08-03 08:49:12 +02:00
kvm KVM: s390: fix LPSWEY handling 2024-07-11 12:47:11 +02:00
lib s390/uaccess: add missing earlyclobber annotations to __clear_user() 2023-04-06 12:10:55 +02:00
mm s390/mm: Fix clearing storage keys for huge pages 2024-05-17 11:55:58 +02:00
net s390/bpf: Emit a barrier for BPF_FETCH instructions 2024-06-12 11:03:19 +02:00
pci s390/pci: Allow allocation of more than 1 MSI interrupt 2024-08-03 08:49:52 +02:00
purgatory s390/purgatory: disable branch profiling 2023-06-28 11:12:38 +02:00
tools KVM: s390: Add facility 197 to the allow list 2022-07-13 15:25:25 +02:00
Kbuild kbuild: use more subdir- for visiting subdirectories while cleaning 2021-10-24 13:49:46 +09:00
Kconfig s390: always build relocatable kernel 2022-11-08 19:32:32 +01:00
Kconfig.debug s390/Kconfig.debug: fix indentation 2022-06-01 12:03:15 +02:00
Makefile s390/decompressor: fix misaligned symbol build error 2023-07-23 13:49:43 +02:00