CVSROOT: /cvs
Module name: src
Changes by: [email protected] 2026/03/31 02:54:15
Modified files:
sys/dev/pci/drm: drm_linux.c
Log message:
access ida under spltty()
ida is accessed from both process and interrupt contexts.
The interrupt context use occurs when a fence is hardware signaled:
dma_fence_signal -> amdgpu_pasid_free_cb -> ida_free -> idr_remove
linux currently uses an xarray with XA_FLAGS_LOCK_IRQ for ida, which
blocks interrupts when locked
This change was prompted by protection faults such as:
idr_tree_SPLAY+0x58
idr_alloc+0xb1
amdgpu_pasid_alloc+0x5d
amdgpu_driver_open_kms+0xac
drm_file_alloc+0x245
drmopen+0x12c
seen with 6.12 and 6.18 drm
volker@ could more consistently reproduce this on a system with a
Navi 31 (7900 XTX).
Lots of testing from volker@ and feedback from kettenis@