linux_dsm_epyc7002/drivers/gpu/drm/amd/amdkfd
Christian König 2383a767c0 drm/amdkfd: fix interrupt spin lock
Vega10 has multiple interrupt rings, so this can be called from multiple
calles at the same time resulting in:

[   71.779334] ================================
[   71.779406] WARNING: inconsistent lock state
[   71.779478] 4.19.0-rc1+ #44 Tainted: G        W
[   71.779565] --------------------------------
[   71.779637] inconsistent {IN-HARDIRQ-W} -> {HARDIRQ-ON-W} usage.
[   71.779740] kworker/6:1/120 [HC0[0]:SC0[0]:HE1:SE1] takes:
[   71.779832] 00000000ad761971 (&(&kfd->interrupt_lock)->rlock){?...},
at: kgd2kfd_interrupt+0x75/0x100 [amdgpu]
[   71.780058] {IN-HARDIRQ-W} state was registered at:
[   71.780115]   _raw_spin_lock+0x2c/0x40
[   71.780180]   kgd2kfd_interrupt+0x75/0x100 [amdgpu]
[   71.780248]   amdgpu_irq_callback+0x6c/0x150 [amdgpu]
[   71.780315]   amdgpu_ih_process+0x88/0x100 [amdgpu]
[   71.780380]   amdgpu_irq_handler+0x20/0x40 [amdgpu]
[   71.780409]   __handle_irq_event_percpu+0x49/0x2a0
[   71.780436]   handle_irq_event_percpu+0x30/0x70
[   71.780461]   handle_irq_event+0x37/0x60
[   71.780484]   handle_edge_irq+0x83/0x1b0
[   71.780506]   handle_irq+0x1f/0x30
[   71.780526]   do_IRQ+0x53/0x110
[   71.780544]   ret_from_intr+0x0/0x22
[   71.780566]   cpuidle_enter_state+0xaa/0x330
[   71.780591]   do_idle+0x203/0x280
[   71.780610]   cpu_startup_entry+0x6f/0x80
[   71.780634]   start_secondary+0x1b0/0x200
[   71.780657]   secondary_startup_64+0xa4/0xb0

Fix this by always using irq save spin locks.

Signed-off-by: Christian König <christian.koenig@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2018-11-05 15:49:38 -05:00
..
cik_event_interrupt.c drm/amdkfd: Simplify kfd2kgd interface 2018-11-05 14:21:07 -05:00
cik_int.h drm/amdkfd: Clean up reference of radeon 2018-07-11 22:33:08 -04:00
cik_regs.h drm/amdkfd: Delete a duplicate statement in set_pasid_vmid_mapping() 2018-11-05 14:21:13 -05:00
cwsr_trap_handler_gfx8.asm drm/amdkfd: Fix race between scheduler and context restore 2018-07-11 22:32:46 -04:00
cwsr_trap_handler_gfx9.asm drm/amdkfd: Fix race between scheduler and context restore 2018-07-11 22:32:46 -04:00
cwsr_trap_handler.h drm/amdkfd: Fix race between scheduler and context restore 2018-07-11 22:32:46 -04:00
Kconfig drm/amdgpu: Merge amdkfd into amdgpu 2018-08-28 11:22:42 -05:00
kfd_chardev.c drm/amdkfd: Add proper prefix to functions 2018-11-05 14:21:08 -05:00
kfd_crat.c drm/amdkfd: Add proper prefix to functions 2018-11-05 14:21:08 -05:00
kfd_crat.h drm/amdkfd: Only add bi-directional iolink on GPU with XGMI or largebar (v2) 2018-09-10 22:49:33 -05:00
kfd_dbgdev.c drm/amdkfd: Clean up reference of radeon 2018-07-11 22:33:08 -04:00
kfd_dbgdev.h drm/amdkfd: Clean up reference of radeon 2018-07-11 22:33:08 -04:00
kfd_dbgmgr.c drm/amdkfd: Make sched_policy a per-device setting 2018-01-04 17:17:43 -05:00
kfd_dbgmgr.h drm/amdkfd: Clean up KFD style errors and warnings v2 2017-08-15 23:00:04 -04:00
kfd_debugfs.c drm/amdkfd: Add debugfs interface to trigger HWS hang 2018-07-11 22:33:04 -04:00
kfd_device_queue_manager_cik.c drm/amdkfd: Add dGPU support to the device queue manager 2018-01-04 17:17:44 -05:00
kfd_device_queue_manager_v9.c drm/amdkfd: Use module parameters noretry as the internal variable name 2018-07-11 22:33:06 -04:00
kfd_device_queue_manager_vi.c drm/amdkfd: Add dGPU support to the device queue manager 2018-01-04 17:17:44 -05:00
kfd_device_queue_manager.c drm/amdkfd: Delete a duplicate statement in set_pasid_vmid_mapping() 2018-11-05 14:21:13 -05:00
kfd_device_queue_manager.h drm/amdkfd: Make the number of SDMA queues variable 2018-09-26 21:09:16 -05:00
kfd_device.c drm/amdkfd: fix interrupt spin lock 2018-11-05 15:49:38 -05:00
kfd_doorbell.c drm/amdkfd: Fix kernel queue 64 bit doorbell offset calculation 2018-07-11 22:33:01 -04:00
kfd_events.c drm/amdkfd: Optimize out some duplicated code in kfd_signal_iommu_event() 2018-07-13 16:17:47 -04:00
kfd_events.h drm/amdkfd: Implement GPU reset handlers in KFD 2018-07-11 22:32:56 -04:00
kfd_flat_memory.c drm/amdkfd: Vega20 bring up on amdkfd side 2018-09-26 21:09:18 -05:00
kfd_int_process_v9.c drm/amdkfd: fix zero reading of VMID and PASID for Hawaii 2018-07-11 22:32:51 -04:00
kfd_interrupt.c drm/amdkfd: fix zero reading of VMID and PASID for Hawaii 2018-07-11 22:32:51 -04:00
kfd_iommu.c drm/amdkfd: Fix ATS capablity was not reported correctly on some APUs 2018-09-20 10:25:23 -05:00
kfd_iommu.h drm/amdkfd: Centralize IOMMUv2 code and make it conditional 2017-12-08 19:22:12 -05:00
kfd_kernel_queue_cik.c drm/amdkfd: Add 64-bit doorbell and wptr support to kernel queue 2018-04-08 22:03:51 -04:00
kfd_kernel_queue_v9.c drm/amd: Interface change to support 64 bit page_table_base 2018-09-26 21:09:17 -05:00
kfd_kernel_queue_vi.c drm/amdkfd: Add GFXv9 PM4 packet writer functions 2018-04-10 17:33:07 -04:00
kfd_kernel_queue.c drm/amdkfd: Vega20 bring up on amdkfd side 2018-09-26 21:09:18 -05:00
kfd_kernel_queue.h drm/amdkfd: Replace mqd with mqd_mgr as the variable name for mqd_manager 2018-07-11 22:33:07 -04:00
kfd_module.c drm/amdgpu: Move KFD parameters to amdgpu (v3) 2018-08-28 11:51:11 -05:00
kfd_mqd_manager_cik.c drm/amdkfd: Add CU-masking ioctl to KFD 2018-07-14 19:05:59 -04:00
kfd_mqd_manager_v9.c drm/amdkfd: Add proper prefix to functions 2018-11-05 14:21:08 -05:00
kfd_mqd_manager_vi.c drm/amdkfd: Add wavefront context save state retrieval ioctl 2018-09-26 21:09:15 -05:00
kfd_mqd_manager.c drm/amdkfd: Add proper prefix to functions 2018-11-05 14:21:08 -05:00
kfd_mqd_manager.h drm/amdkfd: Add wavefront context save state retrieval ioctl 2018-09-26 21:09:15 -05:00
kfd_packet_manager.c drm/amdkfd: Vega20 bring up on amdkfd side 2018-09-26 21:09:18 -05:00
kfd_pasid.c drm/amdkfd: Simplify kfd2kgd interface 2018-11-05 14:21:07 -05:00
kfd_pm4_headers_ai.h drm/amdkfd: Add GFXv9 PM4 packet writer functions 2018-04-10 17:33:07 -04:00
kfd_pm4_headers_diq.h drm/amdkfd: Add skeleton H/W debugger module support 2015-06-03 11:32:28 +03:00
kfd_pm4_headers_vi.h drm/amdkfd: Update PM4 packet headers 2017-08-15 23:00:15 -04:00
kfd_pm4_headers.h drm/amdkfd: Update PM4 packet headers 2017-08-15 23:00:15 -04:00
kfd_pm4_opcodes.h amdkfd: Add kernel queue module 2014-07-17 00:45:35 +03:00
kfd_priv.h drm/amdkfd: page_table_base already have the flags needed 2018-11-05 14:21:14 -05:00
kfd_process_queue_manager.c drm/amdkfd: Add wavefront context save state retrieval ioctl 2018-09-26 21:09:15 -05:00
kfd_process.c drm/amdkfd: Simplify kfd2kgd interface 2018-11-05 14:21:07 -05:00
kfd_queue.c drm/amdkfd: use %px to print user space address instead of %p 2018-05-01 17:56:04 -04:00
kfd_topology.c drm/amdkfd: Add proper prefix to functions 2018-11-05 14:21:08 -05:00
kfd_topology.h drm/amdkfd: kfd expose the hive_id of the device through its node properties 2018-09-10 22:48:43 -05:00
Makefile drm/amdgpu: Merge amdkfd into amdgpu 2018-08-28 11:22:42 -05:00
soc15_int.h drm/amdkfd: Add SOC15 interrupt processing support 2018-04-10 17:33:10 -04:00