1
0
Fork 0
alistair23-linux/drivers/gpu/drm/amd/amdgpu
Lyude 23a1a9e54e drm/amdgpu: Disable RPM helpers while reprobing connectors on resume
Just about all of amdgpu's connector probing functions try to acquire
runtime PM refs. If we try to do this in the context of
amdgpu_resume_kms by calling drm_helper_hpd_irq_event(), we end up
deadlocking the system.

Since we're guaranteed to be holding the spinlock for RPM in
amdgpu_resume_kms, and we already know the GPU is in working order, we
need to prevent the RPM helpers from trying to run during the initial
connector reprobe on resume.

There's a couple of solutions I've explored for fixing this, but this
one by far seems to be the simplest and most reliable (plus I'm pretty
sure that's what disable_depth is there for anyway).

Reproduction recipe:
  - Get any laptop dual GPUs using PRIME
  - Make sure runtime PM is enabled for amdgpu
  - Boot the machine
  - If the machine managed to boot without hanging, switch out of X to
    another VT. This should definitely cause X to hang infinitely.

Changes since v1:
  - add appropriate #ifdef checks for CONFIG_PM. This is not very
    useful, but it appears some kernel test suites test compiling amdgpu
    with CONFIG_PM disabled, which results in this patch breaking the builds
    if we don't include this #ifdef

Cc: stable@vger.kernel.org
Cc: Alex Deucher <alexdeucher@gmail.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Lyude <cpaul@redhat.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2016-07-29 14:36:44 -04:00
..
Kconfig drm/amdgpu: optionally enable GART debugfs file 2016-05-02 15:26:57 -04:00
Makefile drm/amdgpu: rename amdgpu_sched.c to amdgpu_job.c 2016-02-10 14:17:23 -05:00
ObjectID.h
amdgpu.h drm/amdgpu: add read/write function for GC CAC programming 2016-07-07 15:06:23 -04:00
amdgpu_acp.c drm/amd/amdgpu: Add name field to amd_ip_funcs (v2) 2016-05-11 12:31:26 -04:00
amdgpu_acp.h drm/amd: make a type-safe cgs_device struct. (v2) 2016-05-04 20:20:28 -04:00
amdgpu_acpi.c drm/amdgpu: mv amdgpu_acpi.h to amd/include/amd_acpi.h 2015-12-21 16:42:05 -05:00
amdgpu_afmt.c drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
amdgpu_amdkfd.c drm/amdgpu: move get_gpu_clock_counter into the gfx struct 2016-07-07 15:01:42 -04:00
amdgpu_amdkfd.h drm/amdgpu: Return -EPROBE_DEFER when amdkfd not loaded 2016-02-27 22:52:40 +02:00
amdgpu_amdkfd_gfx_v7.c drm/amdgpu: fix non-ANSI declaration of amdgpu_amdkfd_gfx_*_get_functions() 2016-01-28 14:39:34 +02:00
amdgpu_amdkfd_gfx_v8.c drm/amdgpu: fix non-ANSI declaration of amdgpu_amdkfd_gfx_*_get_functions() 2016-01-28 14:39:34 +02:00
amdgpu_atombios.c drm/amdgpu: fix firmware info version checks 2016-07-28 10:07:07 -04:00
amdgpu_atombios.h drm/amdgpu: add an interface to get gfx constants from atombios 2016-05-04 20:24:57 -04:00
amdgpu_atpx_handler.c drm/amdgpu: init atpx at switcheroo register time (v2) 2016-07-29 14:36:32 -04:00
amdgpu_benchmark.c drm/amd: make some function-local tables static const 2016-05-04 20:20:20 -04:00
amdgpu_bios.c drm/amdgpu: do not store bios_header_start in amdgpu_device 2016-05-02 13:08:56 -04:00
amdgpu_bo_list.c drm/amd/amdgpu : adding new tracepoints to track memory information. 2016-07-07 14:51:29 -04:00
amdgpu_cgs.c drm/amdgpu: add ucode_start_address into cgs_firmware_info 2016-07-15 12:33:10 -04:00
amdgpu_connectors.c drm/amdgpu: Poll for both connect/disconnect on analog connectors 2016-07-07 15:06:07 -04:00
amdgpu_connectors.h drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
amdgpu_cs.c drm/amdgpu: remove fence parameter from amd_sched_job_init 2016-07-07 15:06:11 -04:00
amdgpu_ctx.c drm/amdgpu: fix coding style in amdgpu_ctx.c 2016-02-12 15:42:54 -05:00
amdgpu_device.c drm/amdgpu: Disable RPM helpers while reprobing connectors on resume 2016-07-29 14:36:44 -04:00
amdgpu_display.c drm/amdgpu: Unpin BO if we can't get fences in amdgpu_crtc_page_flip 2016-07-07 15:02:06 -04:00
amdgpu_dpm.c drm/amdgpu: use drm_mode_vrefresh() rather than mode->vrefresh 2016-05-04 20:31:02 -04:00
amdgpu_dpm.h drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
amdgpu_drv.c drm/amd/amdgpu: Set DRIVER_MODESET feature flag at build time 2016-07-07 15:02:07 -04:00
amdgpu_drv.h drm/amdgpu: merge amdgpu_family.h into amd_shared.h (v2) 2015-08-17 16:50:21 -04:00
amdgpu_encoders.c drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
amdgpu_fb.c drm/amdgpu: don't init fbdev if we don't have any connectors 2016-01-26 00:35:56 -05:00
amdgpu_fence.c drm/amdgpu: always signal all fences 2016-07-14 16:46:07 -04:00
amdgpu_gart.c drm/amdgpu: optionally enable GART debugfs file 2016-05-02 15:26:57 -04:00
amdgpu_gds.h drm/amd: cleanup remaining spaces and tabs v2 2016-05-11 12:31:20 -04:00
amdgpu_gem.c drm/amdgpu: validate VM PTs only on eviction 2016-07-07 14:54:49 -04:00
amdgpu_gfx.c drm/amdgpu: add disable_cu parameter 2016-07-07 14:54:44 -04:00
amdgpu_gfx.h drm/amdgpu: add disable_cu parameter 2016-07-07 14:54:44 -04:00
amdgpu_i2c.c drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
amdgpu_i2c.h drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
amdgpu_ib.c drm/amdgpu: cleanup hw reference handling in the IB tests 2016-07-14 16:46:05 -04:00
amdgpu_ih.c drm/amdgpu: export reservation_object from dmabuf to ttm (v2) 2015-09-23 17:23:34 -04:00
amdgpu_ih.h drm/amdgpu: Implement irq interfaces for CGS 2015-08-17 16:50:09 -04:00
amdgpu_ioc32.c drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
amdgpu_irq.c drm/amdgpu: add amdgpu_irq_gpu_reset_resume_helper 2016-07-07 14:54:48 -04:00
amdgpu_irq.h drm/amdgpu: add amdgpu_irq_gpu_reset_resume_helper 2016-07-07 14:54:48 -04:00
amdgpu_job.c drm/amdgpu: cleanup hw reference handling in the IB tests 2016-07-14 16:46:05 -04:00
amdgpu_kms.c Merge tag 'topic/drm-misc-2016-07-14' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-07-15 11:01:37 +10:00
amdgpu_mn.c drm/amdgpu: make amdgpu_mn_get wait for mmap_sem killable 2016-05-23 17:04:14 -07:00
amdgpu_mode.h drm/amdgpu: Support DRM_MODE_PAGE_FLIP_ASYNC (v2) 2016-05-11 12:31:25 -04:00
amdgpu_object.c drm/amd/amdgpu : adding new tracepoints to track memory information. 2016-07-07 14:51:29 -04:00
amdgpu_object.h drm/ttm: remove use_ticket parameter from ttm_bo_reserve 2016-05-04 20:21:21 -04:00
amdgpu_pll.c drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
amdgpu_pll.h drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
amdgpu_pm.c drm/amdgpu: some improvement in parsing inputs 2016-07-07 14:54:32 -04:00
amdgpu_pm.h drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
amdgpu_powerplay.c drm/amdgpu: add powercontainment module parameter 2016-07-07 14:50:55 -04:00
amdgpu_powerplay.h drm/amd/powerplay: add basic powerplay framework 2015-12-21 16:42:07 -05:00
amdgpu_prime.c drm/amdgpu: two minor 80 char fixes 2016-05-11 12:31:18 -04:00
amdgpu_ring.c drm/amdgpu: remove more of the ring backup code 2016-07-07 15:06:19 -04:00
amdgpu_sa.c Linux 4.7-rc5 2016-07-02 15:56:01 +10:00
amdgpu_sync.c drm/amdgpu: use a fence array for VMID management 2016-07-07 14:51:23 -04:00
amdgpu_test.c drm/amdgpu: clean up hw semaphore support in driver 2016-02-10 14:16:49 -05:00
amdgpu_trace.h drm/amdgpu: trace need_flush in grab_vm as well 2016-07-14 16:46:08 -04:00
amdgpu_trace_points.c drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
amdgpu_ttm.c drm/amdgpu: add eviction counter 2016-07-07 14:54:49 -04:00
amdgpu_ucode.c drm/amdgpu: export reservation_object from dmabuf to ttm (v2) 2015-09-23 17:23:34 -04:00
amdgpu_ucode.h drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
amdgpu_uvd.c Merge branch 'drm-next-4.8' of git://people.freedesktop.org/~agd5f/linux into drm-next 2016-07-28 05:51:39 +10:00
amdgpu_uvd.h drm/amdgpu: send UVD IB tests directly to the ring again 2016-02-10 14:17:23 -05:00
amdgpu_vce.c drm/amdgpu: cleanup hw reference handling in the IB tests 2016-07-14 16:46:05 -04:00
amdgpu_vce.h drm/amdgpu: move VM fields into job 2016-05-11 13:30:31 -04:00
amdgpu_vm.c drm/amdgpu: trace need_flush in grab_vm as well 2016-07-14 16:46:08 -04:00
atom.c drm/amdgpu/atom: add support for new div32 opcodes (v3) 2015-10-14 16:16:24 -04:00
atom.h drm/amd: cleanup remaining spaces and tabs v2 2016-05-11 12:31:20 -04:00
atombios_crtc.c drm/amdgpu/atom: add support for new SetPixelClock table 2016-05-04 20:23:58 -04:00
atombios_crtc.h drm/amdgpu/atom: add SetDCEClock helper 2016-05-04 20:23:53 -04:00
atombios_dp.c drm/amdgpu: fix DP mode validation 2016-05-12 15:03:49 -04:00
atombios_dp.h drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
atombios_encoders.c drm/amdgpu: support backlight control for UNIPHY3 2016-07-14 16:46:06 -04:00
atombios_encoders.h drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
atombios_i2c.c drm/amdgpu: fix power distribution issue for Polaris10 XT 2016-07-14 16:39:35 -04:00
atombios_i2c.h drm/amdgpu: fix power distribution issue for Polaris10 XT 2016-07-14 16:39:35 -04:00
ci_dpm.c drm/amdgpu: comment out unused defaults_bonaire_pro static const structures to 2016-07-15 14:23:08 -04:00
ci_dpm.h drm/amdgpu: add the CI code to enable sclk OD(OverDrive) 2016-07-07 14:50:49 -04:00
ci_smc.c drm/amdgpu: Add support for CIK parts 2015-06-03 21:03:17 -04:00
cik.c drm/amd/gfx: add instance field to select_se_sh (v3) 2016-07-07 15:06:07 -04:00
cik.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
cik_dpm.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
cik_ih.c drm/amd/amdgpu : Remove unused variable 2016-05-18 09:21:52 -04:00
cik_ih.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
cik_sdma.c drm/amdgpu: remove usec timeout loop from IB tests 2016-07-14 16:46:05 -04:00
cik_sdma.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
cikd.h drm/amd: cleanup remaining spaces and tabs v2 2016-05-11 12:31:20 -04:00
clearstate_ci.h drm/amdgpu: Add support for CIK parts 2015-06-03 21:03:17 -04:00
clearstate_defs.h
clearstate_vi.h drm/amdgpu: Add initial VI support 2015-06-03 21:03:17 -04:00
cz_dpm.c drm/amd/amdgpu: make sure VCE is disabled by default 2016-07-07 14:54:47 -04:00
cz_dpm.h drm/amdgpu/cz: add code to enable forcing VCE clocks 2016-01-13 12:12:43 -05:00
cz_ih.c drm/amd/amdgpu : Remove unused variable 2016-05-18 09:22:12 -04:00
cz_ih.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
cz_smc.c drm/amdgpu: Update SMC/DPM for Stoney 2015-10-21 12:19:46 -04:00
cz_smumgr.h drm/amd: cleanup remaining spaces and tabs v2 2016-05-11 12:31:20 -04:00
dce_v8_0.c drm/amdgpu/dce8: fix flash with white screen on monitor 2016-07-07 15:02:04 -04:00
dce_v8_0.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
dce_v10_0.c drm/amdgpu: use drm_crtc_vblank_{on,off}() 2016-06-13 18:37:50 +02:00
dce_v10_0.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
dce_v11_0.c drm/amdgpu/dce11: update async flip update time 2016-07-07 15:02:01 -04:00
dce_v11_0.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
fiji_dpm.c drm/amdgpu: fix fw leak in non-powerplay dpm code 2016-06-09 10:48:56 -04:00
fiji_smc.c drm/amdgpu/smu: skip SMC ucode loading on SR-IOV capable boards (v2) 2016-02-10 14:17:13 -05:00
fiji_smum.h drm/amdgpu: rename fiji_smumgr.h to fiji_smum.h 2015-12-21 16:42:44 -05:00
gfx_v7_0.c drm/amdgpu: remove usec timeout loop from IB tests 2016-07-14 16:46:05 -04:00
gfx_v7_0.h drm/amdgpu/gfx7: make gfx_v7_0_rlc_stop static 2016-07-07 15:01:58 -04:00
gfx_v8_0.c Merge branch 'drm-next-4.8' of git://people.freedesktop.org/~agd5f/linux into drm-next 2016-07-28 05:51:39 +10:00
gfx_v8_0.h drm/amdgpu: move get_gpu_clock_counter into the gfx struct 2016-07-07 15:01:42 -04:00
gmc_v7_0.c drm/amdgpu/gmc7: remove duplicate wait_for_idle functions 2016-07-07 15:02:05 -04:00
gmc_v7_0.h drm/amdgpu: drop wait_for_mc_idle asic callback 2016-07-07 14:54:50 -04:00
gmc_v8_0.c drm/amdgpu/gmc8: remove duplicate wait_for_idle functions 2016-07-07 15:02:05 -04:00
gmc_v8_0.h drm/amdgpu: drop wait_for_mc_idle asic callback 2016-07-07 14:54:50 -04:00
iceland_dpm.c drm/amdgpu: rename smumgr to smum for dpm 2016-07-15 12:32:50 -04:00
iceland_ih.c drm/amd/amdgpu : Remove unused variable 2016-05-18 09:22:17 -04:00
iceland_ih.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
iceland_sdma_pkt_open.h drm/amdgpu: add count field for the SDMA NOP packet v2 2015-09-02 12:21:35 -04:00
iceland_smc.c drm/amdgpu: rename smumgr to smum for dpm 2016-07-15 12:32:50 -04:00
iceland_smum.h drm/amdgpu: rename smumgr to smum for dpm 2016-07-15 12:32:50 -04:00
kv_dpm.c drm/amdgpu: temporary comment out unused static const structures to fix the build 2016-07-15 14:22:48 -04:00
kv_dpm.h drm/amdgpu: Add support for CIK parts 2015-06-03 21:03:17 -04:00
kv_smc.c drm/amdgpu: Add support for CIK parts 2015-06-03 21:03:17 -04:00
ppsmc.h drm/amdgpu: add new definitions into ppsmc.h for iceland 2016-07-15 12:33:31 -04:00
sdma_v2_4.c drm/amdgpu: no need load microcode at sdma if powerplay is enabled 2016-07-15 12:33:00 -04:00
sdma_v2_4.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
sdma_v3_0.c drm/amdgpu: remove usec timeout loop from IB tests 2016-07-14 16:46:05 -04:00
sdma_v3_0.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
smu_ucode_xfer_vi.h drm/amd/powerplay: Add smc_sk firmware to baffin & ellesmere. 2016-05-04 20:26:26 -04:00
tonga_dpm.c drm/amdgpu: fix fw leak in non-powerplay dpm code 2016-06-09 10:48:56 -04:00
tonga_ih.c drm/amd/amdgpu : Remove unused variable 2016-05-18 09:22:23 -04:00
tonga_ih.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
tonga_sdma_pkt_open.h drm/amdgpu: add count field for the SDMA NOP packet v2 2015-09-02 12:21:35 -04:00
tonga_smc.c drm/amdgpu/smu: skip SMC ucode loading on SR-IOV capable boards (v2) 2016-02-10 14:17:13 -05:00
tonga_smum.h drm/amdgpu: rename tonga_smumgr.h to tonga_smum.h 2015-12-21 16:42:43 -05:00
uvd_v4_2.c drm/amdgpu: implement HDP functions for UVD v2 2016-07-07 15:01:59 -04:00
uvd_v4_2.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
uvd_v5_0.c drm/amdgpu: implement HDP functions for UVD v2 2016-07-07 15:01:59 -04:00
uvd_v5_0.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
uvd_v6_0.c drm/amdgpu: implement HDP functions for UVD v2 2016-07-07 15:01:59 -04:00
uvd_v6_0.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
vce_v2_0.c drm/amd/amdgpu: Add name field to amd_ip_funcs (v2) 2016-05-11 12:31:26 -04:00
vce_v2_0.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
vce_v3_0.c drm/amdgpu: S3 resume fail on Polaris10 2016-07-15 12:34:18 -04:00
vce_v3_0.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
vi.c drm/amdgpu: disable GFX PG on CZ/BR/ST 2016-07-15 12:28:12 -04:00
vi.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
vi_dpm.h drm/amdgpu: Add Fiji support to SMC and DPM (v2) 2015-08-17 16:50:26 -04:00
vid.h drm/amdgpu/dce11: fix audio offset for asics with >7 audio pins 2016-05-11 13:30:33 -04:00