linux/drivers/pci
Linus Torvalds 3381d7b2b3 Updates for the [PCI] MSI subsystem:
- Add interrupt redirection infrastructure
 
     Some PCI controllers use a single demultiplexing interrupt for the MSI
     interrupts of subordinate devices.
 
     This prevents setting the interrupt affinity of device interrupts, which
     causes device interrupts to be delivered to a single CPU. That obviously is
     counterproductive for multi-queue devices and interrupt balancing.
 
     To work around this limitation the new infrastructure installs a dummy
     irq_set_affinity() callback which captures the affinity mask and picks a
     redirection target CPU out of the mask.
 
     When the PCI controller demultiplexes the interrupts it invokes a new
     handling function in the core, which either runs the interrupt handler in
     the context of the target CPU or delegates it to irq_work on the target CPU.
 
   - Utilize the interrupt redirection mechanism in the PCI DWC host controller
     driver.
 
     This allows affinity control for the subordinate device MSI interrupts
     instead of being randomly executed on the CPU which runs the demultiplex
     handler.
 
   - Replace the binary 64-bit MSI flag with a DMA mask
 
     Some PCI devices have PCI_MSI_FLAGS_64BIT in the MSI capability, but
     implement less than 64 address bits. This breaks on platforms where such a
     device is assigned an MSI address higher than what's supported.
 
     With the binary 64-bit flag there is no other choice than disabling 64-bit
     MSI support which leaves the device disfunctional.
 
     By using a DMA mask the address limit of a device can be described
     correctly which provides support for the above scenario.
 
   - Make use of the DMA mask based address limit in the hda/intel and radeon
     drivers to enable them on affected platforms.
 
   - The usual small cleanups and improvements
 -----BEGIN PGP SIGNATURE-----
 
 iQJEBAABCgAuFiEEQp8+kY+LLUocC4bMphj1TA10mKEFAmmJyPsQHHRnbHhAa2Vy
 bmVsLm9yZwAKCRCmGPVMDXSYocekEADAsS5FlUkFuBy6kODhl5J7b9/oqlL3IEnR
 3CdOrFO716dce+Gej+Wp3T93dJ3XsfD7nCZuy99+LwUkTubmaBJXfjY9S+Ket0ID
 Wc3ltiD6f3GEFB14rXN+fFG/u+OOLkaXdpbQpiTnqL4JAti9qF80D4uon28+FC/o
 wc1MhqVBPbOHU9iM196ngkZuXCNVPLcnZN6PNBgIn0sxx06LcK+daY0bNGxfn5Ua
 LY9SD8hN7tYlkDi42nB/ZXMrexqT9cxSqHObmPX+G/QLfXCRBtD+gyVbs+KVzpRL
 hmFERTlUh9tUdcQFrjgiZP/r4N5ilzsu6w5ZpSOEsGuahFUPZWJWFFC1D8rmq/Ay
 X9HKge1jqXJtbCf0pJM/kdbJKSH5S6aLP3iF37y+PqITIEIX8jIT3oVcvL9hI0BW
 HFxpuJfhAVg63kMegZCO/iROTusLHUZr8iwYOM7pEiCE6fP46jPijsPffVIWvrlJ
 2LVOv/A5wy9q8FW8sF9/M6CW7cdeYQF06Ce3qAyMxjZjEyR3KFBJCVWjhqyMxZJP
 3zFl1XXKXgRO+CDrYKVTPIaXR5D76k/l6MnECQpq81CQyQKm2h6A9PyY+n70FfbZ
 BimakUlBGCd92ZbSxzC9pAOiHo0ZoKtc5BhnsRhKVyBCmEKDazEplDuf49/OSZUE
 p2kaf/PuOw==
 =SCSQ
 -----END PGP SIGNATURE-----

Merge tag 'irq-msi-2026-02-09' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull MSI updates from Thomas Gleixner:
 "Updates for the [PCI] MSI subsystem:

   - Add interrupt redirection infrastructure

     Some PCI controllers use a single demultiplexing interrupt for the
     MSI interrupts of subordinate devices.

     This prevents setting the interrupt affinity of device interrupts,
     which causes device interrupts to be delivered to a single CPU.
     That obviously is counterproductive for multi-queue devices and
     interrupt balancing.

     To work around this limitation the new infrastructure installs a
     dummy irq_set_affinity() callback which captures the affinity mask
     and picks a redirection target CPU out of the mask.

     When the PCI controller demultiplexes the interrupts it invokes a
     new handling function in the core, which either runs the interrupt
     handler in the context of the target CPU or delegates it to
     irq_work on the target CPU.

   - Utilize the interrupt redirection mechanism in the PCI DWC host
     controller driver.

     This allows affinity control for the subordinate device MSI
     interrupts instead of being randomly executed on the CPU which runs
     the demultiplex handler.

   - Replace the binary 64-bit MSI flag with a DMA mask

     Some PCI devices have PCI_MSI_FLAGS_64BIT in the MSI capability,
     but implement less than 64 address bits. This breaks on platforms
     where such a device is assigned an MSI address higher than what's
     supported.

     With the binary 64-bit flag there is no other choice than disabling
     64-bit MSI support which leaves the device disfunctional.

     By using a DMA mask the address limit of a device can be described
     correctly which provides support for the above scenario.

   - Make use of the DMA mask based address limit in the hda/intel and
     radeon drivers to enable them on affected platforms

   - The usual small cleanups and improvements"

* tag 'irq-msi-2026-02-09' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  ALSA: hda/intel: Make MSI address limit based on the device DMA limit
  drm/radeon: Make MSI address limit based on the device DMA limit
  PCI/MSI: Check the device specific address mask in msi_verify_entries()
  PCI/MSI: Convert the boolean no_64bit_msi flag to a DMA address mask
  genirq/redirect: Prevent writing MSI message on affinity change
  PCI/MSI: Unmap MSI-X region on error
  genirq: Update effective affinity for redirected interrupts
  PCI: dwc: Enable MSI affinity support
  PCI: dwc: Code cleanup
  genirq: Add interrupt redirection infrastructure
  genirq/msi: Correct kernel-doc in <linux/msi.h>
2026-02-10 16:30:29 -08:00
..
controller Updates for the [PCI] MSI subsystem: 2026-02-10 16:30:29 -08:00
endpoint pci-v6.19-changes 2025-12-04 17:29:41 -08:00
hotplug s390: Remove KMSG_COMPONENT macro 2025-11-24 11:45:21 +01:00
msi Updates for the [PCI] MSI subsystem: 2026-02-10 16:30:29 -08:00
pcie ACPI: extlog: Trace CPER PCI Express Error Section 2026-01-14 17:09:34 +01:00
pwrctrl PCI: pwrctrl: Add power control driver for TC9563 2025-11-24 15:30:52 -06:00
switch PCI: switchtec: Replace manual locks with guard 2025-08-28 10:39:54 -05:00
access.c
ats.c iommufd: Extend IOMMU_GET_HW_INFO to report PASID capability 2025-03-28 10:07:23 -03:00
bus.c tsm for 6.19 2025-12-06 10:15:41 -08:00
devres.c PCI: Remove redundant set of request functions 2025-05-20 07:39:15 +00:00
doe.c PCI/TSM: Establish Secure Sessions and Link Encryption 2025-11-03 19:27:41 -08:00
ecam.c Revert "PCI: ecam: Allow cfg->priv to be pre-populated from the root port device" 2025-06-30 12:30:03 -05:00
host-bridge.c PCI: Export pci_get_host_bridge_device() for use by pci-keystone 2025-11-13 12:20:46 -06:00
ide.c PCI/IDE: Fix reading a wrong reg for unused sel stream initialization 2026-01-22 17:47:21 -08:00
iomap.c PCI: Remove hybrid-devres usage warnings from kernel-doc 2025-05-20 07:39:16 +00:00
iov.c PCI: Convert BAR sizes bitmasks to u64 2025-11-14 12:34:22 -06:00
irq.c
Kconfig x86/kaslr: Recognize all ZONE_DEVICE users as physaddr consumers 2026-01-05 18:05:55 -07:00
Makefile tsm for 6.19 2025-12-06 10:15:41 -08:00
mmap.c
npem.c PCI/NPEM: Add _DSM PCIe SSD status LED management 2024-09-06 11:37:24 -05:00
of.c PCI: of: Add of_pci_get_equalization_presets() API 2025-04-19 19:42:33 +05:30
of_property.c PCI: of: Update parent unit address generation in of_pci_prop_intr_map() 2025-09-12 14:17:57 -05:00
p2pdma.c Significant patch series in this merge are as follows: 2025-12-05 13:52:43 -08:00
pci-acpi.c ACPI: PCI: PM: Rework root bus notification setup 2025-12-17 13:52:53 +01:00
pci-bridge-emul.c PCI: Rename CRS Completion Status to RRS 2024-09-10 19:52:30 -05:00
pci-bridge-emul.h
pci-driver.c PCI: Remove superfluous HK_TYPE_WQ check 2026-02-03 15:23:34 +01:00
pci-label.c
pci-mid.c
pci-pf-stub.c
pci-stub.c
pci-sysfs.c tsm for 6.19 2025-12-06 10:15:41 -08:00
pci.c Merge branch 'pci/resource' 2025-12-03 14:18:32 -06:00
pci.h tsm for 6.19 2025-12-06 10:15:41 -08:00
probe.c PCI/MSI: Convert the boolean no_64bit_msi flag to a DMA address mask 2026-01-31 01:11:48 +01:00
proc.c s390/pci: Introduce pdev->non_mappable_bars and replace VFIO_PCI_MMAP 2025-03-21 14:54:16 -05:00
quirks.c misc: rp1: drop overlay support 2025-12-19 12:42:23 -08:00
rebar.c PCI: Fix Resizable BAR restore order 2026-01-22 10:29:55 -06:00
remove.c PCI/IDE: Initialize an ID for all IDE streams 2025-11-14 15:06:57 -08:00
rom.c
search.c PCI: Introduce pci_walk_bus_reverse(), for_each_pci_dev_reverse() 2025-11-03 19:27:40 -08:00
setup-bus.c PCI: Fix Resizable BAR restore order 2026-01-22 10:29:55 -06:00
setup-res.c PCI: Move Resizable BAR code to rebar.c 2025-11-14 12:34:21 -06:00
slot.c PCI: hotplug: Inline pci_hp_{create,remove}_module_link() 2025-03-04 17:00:12 -06:00
syscall.c
tph.c PCI/TPH: Expose pcie_tph_get_st_table_loc() 2025-11-09 05:13:02 -05:00
tsm.c PCI/TSM: Add 'dsm' and 'bound' attributes for dependent functions 2025-11-14 15:06:57 -08:00
vc.c
vgaarb.c EFI updates for v7.0 2026-02-09 20:49:19 -08:00
vpd.c sysfs: treewide: switch back to attribute_group::bin_attrs 2025-06-17 10:44:15 +02:00
xen-pcifront.c