linux-kernelorg-stable/drivers
Linus Torvalds 44ed0f35df Updates for the MSI subsystem (core code and PCI):
- Switch the MSI decriptor locking to lock guards
 
   - Replace a broken and naive implementation of PCI/MSI-X control word
     updates in the PCI/TPH driver with a properly serialized variant in the
     PCI/MSI core code.
 
   - Remove the MSI descriptor abuse in the SCCI/UFS/QCOM driver by
     replacing the direct access to the MSI descriptors with the proper API
     function calls. People will never understand that APIs exist for a
     reason...
 
   - Provide core infrastructre for the upcoming PCI endpoint library
     extensions. Currently limited to ARM GICv3+, but in theory extensible
     to other architectures.
 
   - Provide a MSI domain::teardown() callback, which allows drivers to undo
     the effects of the prepare() callback.
 
   - Move the MSI domain::prepare() callback invocation to domain creation
     time to avoid redundant (and in case of ARM/GIC-V3-ITS confusing)
     invocations on every allocation.
 
     In combination with the new teardown callback this removes some ugly
     hacks in the GIC-V3-ITS driver, which pretended to work around the
     short comings of the core code so far. With this update the code is
     correct by design and implementation.
 
   - Make the irqchip MSI library globally available, provide a MSI parent
     domain creation helper and convert a bunch of (PCI/)MSI drivers over to
     the modern MSI parent mechanism. This is the first step to get rid of
     at least one incarnation of the three PCI/MSI management schemes.
 
   - The usual small cleanups and improvements
 -----BEGIN PGP SIGNATURE-----
 
 iQJHBAABCgAxFiEEQp8+kY+LLUocC4bMphj1TA10mKEFAmgzgFsTHHRnbHhAbGlu
 dXRyb25peC5kZQAKCRCmGPVMDXSYoR0KD/402K12tlI/D70H2aTG25dbTx+dkVk+
 pKpJz0985uUlLJiPCR54dZL0ofcfRU+CdjEIf1I+6TPshtg6IWLJCfqu7OWVPYzz
 2lJDO0yeUGwJqc0CIa1vttvJWvcUcxfWBX/ZSkOIM5avaXqSwRwsFNfd7TQ+T+eG
 79VS1yyW197mUva53ekSF2voa8EEPWfEslAjoX1dRg5d4viAxaLtKm/KpBqo1oPh
 Eb+E67xEWiIonvWNdr1AOisxnbi19PyDo1xnftgBToaeXXYBodNrNIAfAkx40YUZ
 IZQLHvhZ91x15hXYIS4Cz1RXqPECbu/tHxs4AFUgGvqdgJUF89wzI3C21ymrKA6E
 tDlWfpIcuE3vV/bsqj1gHGL5G5m1tyBRgIdIAOOmMoTHvwp5rrQtuZzpuqzGmEzj
 iVIHnn5m08kRpOZQc7+PlxQMh3eunEyj9WWG49EJgoAnJPb5lou4shTwBUheHcKm
 NXxKsfo4x5C+WehGTxv80UlnMcK3Yh/TuWf2OPR6QuT2iHP2VL5jyHjIs0ICn0cp
 1tvSJtdc1rgvk/4Vn4lu5eyVaTx5ZAH8ZXNQfwwBTWTp3ZyAW+7GkaCq3LPaNJoZ
 4LWpgZ5gs6wT+1XNT3boKdns81VolmeTI8P1ciQKpUtaTt6Cy9P/i2az/J+BCS4U
 Fn5Qqk08PHGrUQ==
 =OBMj
 -----END PGP SIGNATURE-----

Merge tag 'irq-msi-2025-05-25' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull MSI updates from Thomas Gleixner:
 "Updates for the MSI subsystem (core code and PCI):

   - Switch the MSI descriptor locking to lock guards

   - Replace a broken and naive implementation of PCI/MSI-X control word
     updates in the PCI/TPH driver with a properly serialized variant in
     the PCI/MSI core code.

   - Remove the MSI descriptor abuse in the SCCI/UFS/QCOM driver by
     replacing the direct access to the MSI descriptors with the proper
     API function calls. People will never understand that APIs exist
     for a reason...

   - Provide core infrastructre for the upcoming PCI endpoint library
     extensions. Currently limited to ARM GICv3+, but in theory
     extensible to other architectures.

   - Provide a MSI domain::teardown() callback, which allows drivers to
     undo the effects of the prepare() callback.

   - Move the MSI domain::prepare() callback invocation to domain
     creation time to avoid redundant (and in case of ARM/GIC-V3-ITS
     confusing) invocations on every allocation.

     In combination with the new teardown callback this removes some
     ugly hacks in the GIC-V3-ITS driver, which pretended to work around
     the short comings of the core code so far. With this update the
     code is correct by design and implementation.

   - Make the irqchip MSI library globally available, provide a MSI
     parent domain creation helper and convert a bunch of (PCI/)MSI
     drivers over to the modern MSI parent mechanism. This is the first
     step to get rid of at least one incarnation of the three PCI/MSI
     management schemes.

   - The usual small cleanups and improvements"

* tag 'irq-msi-2025-05-25' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (33 commits)
  PCI/MSI: Use bool for MSI enable state tracking
  PCI: tegra: Convert to MSI parent infrastructure
  PCI: xgene: Convert to MSI parent infrastructure
  PCI: apple: Convert to MSI parent infrastructure
  irqchip/msi-lib: Honour the MSI_FLAG_NO_AFFINITY flag
  irqchip/mvebu: Convert to msi_create_parent_irq_domain() helper
  irqchip/gic: Convert to msi_create_parent_irq_domain() helper
  genirq/msi: Add helper for creating MSI-parent irq domains
  irqchip: Make irq-msi-lib.h globally available
  irqchip/gic-v3-its: Use allocation size from the prepare call
  genirq/msi: Engage the .msi_teardown() callback on domain removal
  genirq/msi: Move prepare() call to per-device allocation
  irqchip/gic-v3-its: Implement .msi_teardown() callback
  genirq/msi: Add .msi_teardown() callback as the reverse of .msi_prepare()
  irqchip/gic-v3-its: Add support for device tree msi-map and msi-mask
  dt-bindings: PCI: pci-ep: Add support for iommu-map and msi-map
  irqchip/gic-v3-its: Set IRQ_DOMAIN_FLAG_MSI_IMMUTABLE for ITS
  irqdomain: Add IRQ_DOMAIN_FLAG_MSI_IMMUTABLE and irq_domain_is_msi_immutable()
  platform-msi: Add msi_remove_device_irq_domain() in platform_device_msi_free_irqs_all()
  genirq/msi: Rename msi_[un]lock_descs()
  ...
2025-05-27 08:15:26 -07:00
..
accel Linux 6.15-rc7 2025-05-21 08:45:03 +02:00
accessibility treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
acpi Linux 6.15-rc7 2025-05-21 08:45:03 +02:00
amba
android vfs-6.16-rc1.async.dir 2025-05-26 08:02:43 -07:00
ata ata: libata-scsi: Improve CDL control 2025-04-22 16:06:05 +09:00
atm treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
auxdisplay treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
base Updates for the MSI subsystem (core code and PCI): 2025-05-27 08:15:26 -07:00
bcma
block for-6.16/block-20250523 2025-05-26 11:39:36 -07:00
bluetooth Bluetooth: btusb: use skb_pull to avoid unsafe access in QCA dump handling 2025-05-15 13:12:54 -04:00
bus bus: moxtet: Switch to irq_domain_create_simple() 2025-05-16 21:06:08 +02:00
cache
cdrom cdrom: Remove unnecessary NULL check before unregister_sysctl_table() 2025-05-15 16:25:20 -06:00
cdx
char Core x86 updates for v6.16: 2025-05-26 16:04:17 -07:00
clk Allwinner clk fixes for 6.15 2025-05-17 20:46:38 -07:00
clocksource clocksource/i8253: Use raw_spinlock_irqsave() in clockevent_i8253_disable() 2025-05-05 15:34:49 +02:00
comedi comedi: jr3_pci: Fix synchronous deletion of timer 2025-04-15 15:18:55 +02:00
connector
counter Char/Misc fixes for 6.15-rc1 2025-04-02 18:03:34 -07:00
cpufreq Core x86 updates for v6.16: 2025-05-26 16:04:17 -07:00
cpuidle pmdomain core: 2025-03-25 20:40:51 -07:00
crypto Core x86 updates for v6.16: 2025-05-26 16:04:17 -07:00
cxl cxl/core/regs.c: Skip Memory Space Enable check for RCD and RCH Ports 2025-04-21 08:30:13 -07:00
dax
dca
devfreq
dio
dma Linux 6.15-rc7 2025-05-21 08:45:03 +02:00
dma-buf dma-buf: insert memory barrier before updating num_fences 2025-05-14 15:31:23 +02:00
dpll
edac A set of cleanups for the generic interrupt subsystem: 2025-05-27 08:07:32 -07:00
eisa
extcon
firewire treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
firmware Core x86 updates for v6.16: 2025-05-26 16:04:17 -07:00
fpga fpga: tests: add module descriptions 2025-04-11 17:32:38 -07:00
fsi
fwctl fwctl: Fix repeated device word in log message 2025-04-11 20:47:45 -03:00
gnss
gpio A set of cleanups for the generic interrupt subsystem: 2025-05-27 08:07:32 -07:00
gpu A set of cleanups for the generic interrupt subsystem: 2025-05-27 08:07:32 -07:00
greybus treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
hid hid-for-linus-2025051501 2025-05-15 10:57:24 -07:00
hsi treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
hte treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
hv Including fixes from Bluetooth and wireless. 2025-05-15 10:40:49 -07:00
hwmon Merge branch 'x86/msr' into x86/core, to resolve conflicts 2025-05-13 10:42:06 +02:00
hwspinlock
hwtracing intel_th: avoid using deprecated page->mapping, index fields 2025-04-15 13:29:03 +02:00
i2c A set of cleanups for the generic interrupt subsystem: 2025-05-27 08:07:32 -07:00
i3c i3c: Add NULL pointer check in i3c_master_queue_ibi() 2025-03-31 11:44:00 +02:00
idle x86/cpuid: Set <asm/cpuid/api.h> as the main CPUID header 2025-05-15 18:23:55 +02:00
iio A set of cleanups for the generic interrupt subsystem: 2025-05-27 08:07:32 -07:00
infiniband vfs-6.16-rc1.async.dir 2025-05-26 08:02:43 -07:00
input Input updates for v6.15-rc7 2025-05-24 18:54:18 -07:00
interconnect
iommu iommu: Skip PASID validation for devices without PASID capability 2025-05-22 09:10:00 +02:00
ipack
irqchip Updates for the MSI subsystem (core code and PCI): 2025-05-27 08:15:26 -07:00
isdn treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
leds treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
macintosh treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
mailbox mailbox: qcom-ipcc: Switch to irq_domain_create_tree() 2025-05-16 21:06:09 +02:00
mcb mcb: fix a double free bug in chameleon_parse_gdd() 2025-04-15 18:21:39 +02:00
md for-6.16/block-20250523 2025-05-26 11:39:36 -07:00
media media: cec: tda9950: add back i2c dependency 2025-04-07 08:12:12 +02:00
memory memory: omap-gpmc: Switch to irq_domain_create_linear() 2025-05-16 21:06:10 +02:00
memstick treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
message SCSI misc on 20250326 2025-03-26 19:57:34 -07:00
mfd mfd: Switch to irq_domain_create_*() 2025-05-16 21:06:10 +02:00
misc A set of cleanups for the generic interrupt subsystem: 2025-05-27 08:07:32 -07:00
mmc mmc: sdhci_am654: Add SDHCI_QUIRK2_SUPPRESS_V1P8_ENA quirk to am62 compatible 2025-05-19 14:26:12 +02:00
most treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
mtd Linux 6.15-rc4 2025-05-02 09:43:44 +02:00
mux
net A set of cleanups for the generic interrupt subsystem: 2025-05-27 08:07:32 -07:00
nfc treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
ntb NTB/msi: Switch MSI descriptor locking to lock guard() 2025-04-09 20:47:29 +02:00
nubus
nvdimm libnvdimm additions for 6.15 2025-04-02 20:27:18 -07:00
nvme for-6.16/block-20250523 2025-05-26 11:39:36 -07:00
nvmem nvmem: qfprom: switch to 4-byte aligned reads 2025-04-11 14:41:22 +02:00
of Devicetree for v6.15: 2025-03-29 11:23:16 -07:00
opp
parisc
parport treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
pci Updates for the MSI subsystem (core code and PCI): 2025-05-27 08:15:26 -07:00
pcmcia treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
peci
perf perf/apple_m1: Remove driver-specific throttle support 2025-05-21 13:57:44 +02:00
phy phy: Fix error handling in tegra_xusb_port_init 2025-05-14 12:28:43 +01:00
pinctrl A set of cleanups for the generic interrupt subsystem: 2025-05-27 08:07:32 -07:00
platform Core x86 updates for v6.16: 2025-05-26 16:04:17 -07:00
pmdomain pmdomain: core: Fix error checking in genpd_dev_pm_attach_by_id() 2025-05-08 13:29:30 +02:00
pnp x86/platform/amd: Move the <asm/amd_nb.h> header to <asm/amd/nb.h> 2025-04-14 09:34:14 +02:00
power gcc-15: get rid of misc extra NUL character padding 2025-04-20 11:57:54 -07:00
powercap x86/msr: Add explicit includes of <asm/msr.h> 2025-05-02 10:23:47 +02:00
pps pps: generators: tio: fix platform_set_drvdata() 2025-04-15 18:22:32 +02:00
ps3
ptp ptp: ocp: Limit signal/freq counts in summary output functions 2025-05-16 15:43:44 -07:00
pwm pwm: A set of fixes for pwm core and various drivers 2025-04-12 08:11:19 -07:00
rapidio
ras Linux 6.15-rc5 2025-05-06 10:00:58 +02:00
regulator regulator: max20086: fix invalid memory access 2025-05-14 11:16:52 +02:00
remoteproc remoteproc: qcom_wcnss: Fix on platforms without fallback regulators 2025-05-13 10:34:33 -05:00
reset remoteproc updates for v6.15 2025-03-29 17:18:50 -07:00
rpmsg
rtc treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
s390 s390 updates for 6.16 merge window 2025-05-26 14:36:05 -07:00
sbus
scsi for-6.16/block-20250523 2025-05-26 11:39:36 -07:00
sh sh: Switch to irq_domain_create_*() 2025-05-16 21:06:11 +02:00
siox
slimbus
soc Updates for the MSI subsystem (core code and PCI): 2025-05-27 08:15:26 -07:00
soundwire soundwire fix for 6.15 2025-05-17 12:04:19 -07:00
spi spi: spi-fsl-dspi: Reset SR flags before sending a new message 2025-05-22 16:05:26 +01:00
spmi
ssb
staging Staging driver fixes for 6.15-rc6 2025-05-10 09:08:19 -07:00
target scsi: target: iscsi: Fix timeout on deleted connection 2025-04-11 22:13:00 -04:00
tc
tee
thermal A set of cleanups for the generic interrupt subsystem: 2025-05-27 08:07:32 -07:00
thunderbolt USB/Thunderbolt update for 6.15-rc1 2025-04-02 18:23:31 -07:00
tty serial: sifive: lock port in startup()/shutdown() callbacks 2025-04-15 15:02:39 +02:00
ufs Updates for the MSI subsystem (core code and PCI): 2025-05-27 08:15:26 -07:00
uio uio_hv_generic: Fix sysfs creation path for ring buffer 2025-05-02 13:59:02 +02:00
usb for-6.16/block-20250523 2025-05-26 11:39:36 -07:00
vdpa
vfio vfio/pci: Align huge faults to order 2025-05-06 12:59:12 -06:00
vhost vhost-scsi: Fix vhost_scsi_send_status() 2025-04-18 10:08:11 -04:00
video x86/msr: Add explicit includes of <asm/msr.h> 2025-05-02 10:23:47 +02:00
virt treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
virtio virtgpu: don't reset on shutdown 2025-04-18 10:05:49 -04:00
w1 w1: ds2406: use crc16() instead of crc16_byte() loop 2025-05-13 20:37:16 -07:00
watchdog watchdog: diag288_wdt: Implement module autoload 2025-04-16 09:26:49 +02:00
xen xenbus: Use kref to track req lifetime 2025-05-07 16:21:41 +02:00
zorro
Kconfig
Makefile