mirror-linux/drivers/gpu/drm
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
..
adp drm: include drm_print.h where needed 2025-10-31 10:34:52 +02:00
amd drm/amdgpu: Fix double deletion of validate_list 2026-02-03 17:24:21 -05:00
arm drm: Discard pm_runtime_put() return value 2026-01-16 20:28:05 +01:00
armada drm/fb-helper: Allocate and release fb_info in single place 2025-11-25 11:02:43 +01:00
aspeed
ast Linux 6.18-rc6 2025-11-21 08:55:08 +10:00
atmel-hlcdc drm: include drm_print.h where needed 2025-10-31 10:34:52 +02:00
bridge Power management updates for 6.20-rc1/7.0-rc1 2026-02-09 19:00:42 -08:00
ci drm/ci: disable broken MR check in sanity job 2025-10-16 07:49:06 -07:00
clients Extra drm-misc-next for v6.19-rc1: 2025-12-02 18:09:08 +10:00
display Merge tag 'drm-misc-next-2025-11-05-1' of https://gitlab.freedesktop.org/drm/misc/kernel into drm-next 2025-11-07 12:41:26 +10:00
etnaviv Linux 6.18-rc6 2025-11-21 08:55:08 +10:00
exynos drm/exynos: hdmi: replace use of system_wq with system_percpu_wq 2026-01-07 17:50:50 +09:00
fsl-dcu drm: include drm_print.h where needed 2025-10-31 10:34:52 +02:00
gma500 Revert "drm/gma500: use drm_crtc_vblank_crtc()" 2026-02-02 10:10:15 +01:00
gud drm/gud: fix NULL fb and crtc dereferences on USB disconnect 2026-01-13 13:58:24 +00:00
hisilicon drm: include drm_print.h where needed 2025-10-31 10:34:52 +02:00
hyperv drm/hyperv: include drm_print.h where needed 2025-11-04 14:37:15 +02:00
i915 A slightly calmer cycle for docs this time around, though there is still a 2026-02-09 20:53:18 -08:00
imagination Merge branch 'pm-runtime' 2026-02-04 21:03:18 +01:00
imx Power management updates for 6.20-rc1/7.0-rc1 2026-02-09 19:00:42 -08:00
ingenic
kmb drm: include drm_print.h where needed 2025-10-31 10:34:52 +02:00
lib
lima drm: include drm_print.h where needed 2025-10-31 10:34:52 +02:00
logicvc
loongson drm/ttm: Replace multiple booleans with flags in device init 2025-10-31 09:14:35 +00:00
mcde drm: include drm_print.h where needed 2025-10-31 10:34:52 +02:00
mediatek Mediatek DRM Fixes - 20260119 2026-01-23 10:13:12 +10:00
meson drm: include drm_print.h where needed 2025-10-31 10:34:52 +02:00
mgag200 drm/mgag200: fix mgag200_bmc_stop_scanout() 2026-02-04 08:52:53 +01:00
msm Merge tag 'drm-msm-fixes-2026-01-23' of https://gitlab.freedesktop.org/drm/msm into drm-fixes 2026-01-28 14:25:16 +10:00
mxsfb drm: include drm_print.h where needed 2025-10-31 10:34:52 +02:00
nouveau hardening updates for v7.0-rc1 2026-02-10 08:54:13 -08:00
nova Driver core changes for 6.19-rc1 2025-12-05 21:29:02 -08:00
omapdrm drm/fb-helper: Allocate and release fb_info in single place 2025-11-25 11:02:43 +01:00
panel drm/panel: simple: restore connector_type fallback 2026-01-13 10:07:40 +01:00
panfrost drm: include drm_print.h where needed 2025-10-31 10:34:52 +02:00
panthor drm/gpuvm: take GEM lock inside drm_gpuvm_bo_obtain_prealloc() 2026-01-08 17:45:09 +01:00
pl111 drm/pl111: Fix error handling in pl111_amba_probe 2025-12-31 22:42:26 +01:00
qxl drm/ttm: Replace multiple booleans with flags in device init 2025-10-31 09:14:35 +00:00
radeon Updates for the [PCI] MSI subsystem: 2026-02-10 16:30:29 -08:00
renesas drm/rcar-du: dsi: Handle both DRM_MODE_FLAG_N.SYNC and !DRM_MODE_FLAG_P.SYNC 2025-12-04 14:59:21 +02:00
rockchip drm/rockchip: dw_hdmi_qp: Switch to gpiod_set_value_cansleep() 2026-01-11 14:36:21 +01:00
scheduler Linux 6.18-rc6 2025-11-21 08:55:08 +10:00
sitronix drm: include drm_print.h where needed 2025-10-31 10:34:52 +02:00
solomon drm: include drm_print.h where needed 2025-10-31 10:34:52 +02:00
sprd
sti drm-next for 6.19-rc1: 2025-12-04 08:53:30 -08:00
stm drm: include drm_print.h where needed 2025-10-31 10:34:52 +02:00
sun4i drm/sun4i: Nuke mixer pointer from layer code 2025-11-12 17:18:25 +08:00
sysfb EFI updates for v7.0 2026-02-09 20:49:19 -08:00
tegra drm-next for 6.19-rc1: 2025-12-04 08:53:30 -08:00
tests Merge remote-tracking branch 'drm/drm-fixes' into drm-misc-fixes 2025-12-15 12:53:27 +01:00
tidss drm/tidss: Fix enable/disable order 2026-01-03 20:08:24 +01:00
tilcdc drm fixes for 6.19-rc1 2025-12-13 17:39:28 +12:00
tiny Linux 6.18-rc6 2025-11-21 08:55:08 +10:00
ttm drm fixes for 6.19-rc1 2025-12-13 17:39:28 +12:00
tve200 drm: include drm_print.h where needed 2025-10-31 10:34:52 +02:00
tyr drm/tyr: depend on `COMMON_CLK` to fix build error 2026-01-26 02:18:58 +01:00
udl drm: include drm_print.h where needed 2025-10-31 10:34:52 +02:00
v3d drm: include drm_print.h where needed 2025-10-31 10:34:52 +02:00
vboxvideo drm: include drm_print.h where needed 2025-10-31 10:34:52 +02:00
vc4 drm: Discard pm_runtime_put() return value 2026-01-16 20:28:05 +01:00
vgem
virtio drm: include drm_print.h where needed 2025-10-31 10:34:52 +02:00
vkms drm/vkms: Fix color pipeline enum name leak 2026-01-22 10:26:35 +01:00
vmwgfx drm/vmwgfx: Fix kernel-doc warnings for vmwgfx_fence 2026-01-07 12:31:21 -05:00
xe drm/xe/guc: Fix CFI violation in debugfs access. 2026-02-05 09:45:22 +01:00
xen drm: include drm_print.h where needed 2025-10-31 10:34:52 +02:00
xlnx
Kconfig drm, drm/xe: Fix xe userptr in the absence of CONFIG_DEVICE_PRIVATE 2026-01-22 10:41:18 +01:00
Kconfig.debug
Makefile drm, drm/xe: Fix xe userptr in the absence of CONFIG_DEVICE_PRIVATE 2026-01-22 10:41:18 +01:00
drm_atomic.c drm/colorop: Add 3D LUT support to color pipeline 2025-11-26 23:09:42 +01:00
drm_atomic_helper.c drm/atomic-helper: Export and namespace some functions 2026-01-03 20:08:17 +01:00
drm_atomic_state_helper.c drm/plane: Add COLOR PIPELINE property 2025-11-26 23:03:32 +01:00
drm_atomic_uapi.c drm/colorop: Add 3D LUT support to color pipeline 2025-11-26 23:09:42 +01:00
drm_auth.c
drm_blend.c
drm_bridge.c drm/bridge: add warning for bridges using neither devm_drm_bridge_alloc() nor drm_bridge_add() 2025-11-03 13:04:55 +01:00
drm_bridge_helper.c
drm_buddy.c drm: include drm_print.h where needed 2025-10-31 10:34:52 +02:00
drm_cache.c
drm_client.c drm/client: Support emergency restore via sysrq for all clients 2025-11-25 08:43:47 +01:00
drm_client_event.c drm/client: Pass force parameter to client restore 2025-11-25 08:43:46 +01:00
drm_client_modeset.c
drm_client_sysrq.c drm/client: Support emergency restore via sysrq for all clients 2025-11-25 08:43:47 +01:00
drm_color_mgmt.c drm: Add Enhanced LUT precision structure 2025-11-26 23:03:35 +01:00
drm_colorop.c drm/colorop: Add DRM_COLOROP_1D_CURVE_GAMMA22 to 1D Curve 2025-11-26 23:09:44 +01:00
drm_connector.c drm/colorop: Introduce DRM_CLIENT_CAP_PLANE_COLOR_PIPELINE 2025-11-26 23:03:32 +01:00
drm_crtc.c drm/drm_crtc: Introduce sharpness strength property 2025-10-30 15:38:04 +02:00
drm_crtc_helper.c
drm_crtc_helper_internal.h
drm_crtc_internal.h drm/colorop: Introduce DRM_CLIENT_CAP_PLANE_COLOR_PIPELINE 2025-11-26 23:03:32 +01:00
drm_damage_helper.c
drm_debugfs.c
drm_debugfs_crc.c
drm_displayid.c drm/displayid: add quirk to ignore DisplayID checksum errors 2025-11-04 14:49:30 +02:00
drm_displayid_internal.h drm/displayid: add quirk to ignore DisplayID checksum errors 2025-11-04 14:49:30 +02:00
drm_draw.c drm/draw: fix color truncation in drm_draw_fill24 2025-10-14 09:25:10 +02:00
drm_draw_internal.h drm/draw: fix color truncation in drm_draw_fill24 2025-10-14 09:25:10 +02:00
drm_drv.c drm/client: Support emergency restore via sysrq for all clients 2025-11-25 08:43:47 +01:00
drm_dumb_buffers.c drm: include drm_print.h where needed 2025-10-31 10:34:52 +02:00
drm_edid.c drm/edid: add 6 bpc quirk to the Sharp LQ116M1JW10 2025-11-06 08:51:21 -08:00
drm_edid_load.c
drm_eld.c
drm_encoder.c
drm_exec.c
drm_fb_dma_helper.c
drm_fb_helper.c drm/fb-helper: Fix vblank timeout during suspend/reset 2026-01-06 09:05:06 +01:00
drm_fbdev_dma.c drm/fb-helper: Allocate and release fb_info in single place 2025-11-25 11:02:43 +01:00
drm_fbdev_shmem.c drm/fb-helper: Allocate and release fb_info in single place 2025-11-25 11:02:43 +01:00
drm_fbdev_ttm.c drm/fb-helper: Allocate and release fb_info in single place 2025-11-25 11:02:43 +01:00
drm_file.c drm/client: Pass force parameter to client restore 2025-11-25 08:43:46 +01:00
drm_flip_work.c
drm_format_helper.c
drm_format_internal.h
drm_fourcc.c
drm_framebuffer.c
drm_gem.c drm: Do not allow userspace to trigger kernel warnings in drm_gem_change_handle_ioctl() 2026-01-26 11:45:51 +00:00
drm_gem_atomic_helper.c Linux 6.18-rc6 2025-11-21 08:55:08 +10:00
drm_gem_dma_helper.c drm/gem-dma: revert the 8-byte alignment constraint 2025-12-03 10:52:18 +01:00
drm_gem_framebuffer_helper.c drm: include drm_print.h where needed 2025-10-31 10:34:52 +02:00
drm_gem_shmem_helper.c drm/gem-shmem: Fix the MODULE_LICENSE() string 2025-12-21 20:15:36 +01:00
drm_gem_ttm_helper.c drm: include drm_print.h where needed 2025-10-31 10:34:52 +02:00
drm_gem_vram_helper.c drm/ttm: Replace multiple booleans with flags in device init 2025-10-31 09:14:35 +00:00
drm_gpusvm.c drm/gpusvm, drm/xe: Allow mixed mappings for userptr 2025-10-17 10:25:27 +02:00
drm_gpuvm.c drm/gpuvm: take GEM lock inside drm_gpuvm_bo_obtain_prealloc() 2026-01-08 17:45:09 +01:00
drm_internal.h drm/client: Support emergency restore via sysrq for all clients 2025-11-25 08:43:47 +01:00
drm_ioc32.c
drm_ioctl.c drm/colorop: Introduce DRM_CLIENT_CAP_PLANE_COLOR_PIPELINE 2025-11-26 23:03:32 +01:00
drm_kms_helper_common.c
drm_lease.c
drm_managed.c
drm_mipi_dbi.c drm: include drm_print.h where needed 2025-10-31 10:34:52 +02:00
drm_mipi_dsi.c
drm_mm.c drm: include drm_print.h where needed 2025-10-31 10:34:52 +02:00
drm_mode_config.c drm/colorop: Introduce new drm_colorop mode object 2025-11-26 23:03:30 +01:00
drm_mode_object.c drm/colorop: Introduce DRM_CLIENT_CAP_PLANE_COLOR_PIPELINE 2025-11-26 23:03:32 +01:00
drm_modes.c
drm_modeset_helper.c drm/client: Remove holds_console_lock parameter from suspend/resume 2025-10-18 17:35:09 +02:00
drm_modeset_lock.c
drm_of.c
drm_pagemap.c mm/zone_device: reinitialize large zone device private folios 2026-01-26 19:03:48 -08:00
drm_panel.c
drm_panel_backlight_quirks.c
drm_panel_orientation_quirks.c
drm_panic.c drm/panic: Fix 24bit pixel crossing page boundaries 2025-10-21 11:28:03 +02:00
drm_panic_qr.rs
drm_pci.c
drm_plane.c drm fixes for 6.19-rc1 2025-12-13 17:39:28 +12:00
drm_plane_helper.c
drm_prime.c drm: include drm_print.h where needed 2025-10-31 10:34:52 +02:00
drm_print.c
drm_privacy_screen.c
drm_privacy_screen_x86.c
drm_probe_helper.c
drm_property.c
drm_rect.c
drm_self_refresh_helper.c
drm_simple_kms_helper.c
drm_suballoc.c
drm_syncobj.c
drm_sysfs.c
drm_trace.h
drm_trace_points.c
drm_vblank.c drm-next for 6.19-rc1: 2025-12-04 08:53:30 -08:00
drm_vblank_helper.c
drm_vblank_work.c drm/vblank: use drm_crtc_vblank_crtc() in workers 2025-11-10 13:22:58 +02:00
drm_vma_manager.c
drm_writeback.c