linux_dsm_epyc7002/drivers/gpu/drm/nouveau
Lyude Paul fa3cdf8d0b drm/nouveau: Reset MST branching unit before enabling
When probing a new MST device, it's not safe to make any assumptions
about it's current state. While most well mannered MST hubs will just
disable the branching unit on hotplug disconnects, this isn't enough to
save us from various other scenarios that might have resulted in
something writing to the MST branching unit before we got control of it.
This could happen if a previous probe we tried failed, if we're booting
in kexec context and the hub is still in the state the last kernel put
it in, etc.

Luckily; there is no reason we can't just reset the branching unit
every time we enable a new topology. So, fix this by resetting it on
enabling new topologies to ensure that we always start off with a clean,
unmodified topology state on MST sinks.

This fixes occasional hard-lockups on my P50's laptop dock (e.g. AUX
times out all DPCD trasactions) observed after multiple docks, undocks,
and module reloads.

Signed-off-by: Lyude Paul <lyude@redhat.com>
Cc: stable@vger.kernel.org
Cc: Karol Herbst <karolherbst@gmail.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-09-07 06:54:27 +10:00
..
dispnv04 BackMerge v4.18-rc7 into drm-next 2018-07-30 10:39:22 +10:00
dispnv50 drm/nouveau: Reset MST branching unit before enabling 2018-09-07 06:54:27 +10:00
include drm/nouveau/nvif: remove const attribute from nvif_mclass 2018-07-16 18:06:29 +10:00
nvif treewide: kzalloc() -> kcalloc() 2018-06-12 16:19:22 -07:00
nvkm BackMerge v4.18-rc7 into drm-next 2018-07-30 10:39:22 +10:00
Kbuild drm/nouveau/kms/nv50-: move code underneath dispnv50/ 2018-05-18 15:01:26 +10:00
Kconfig
nouveau_abi16.c drm/nouveau: Replace drm_gem_object_unreference_unlocked with put function 2018-07-16 18:06:29 +10:00
nouveau_abi16.h
nouveau_acpi.c drm/nouveau: fix nouveau_dsm_get_client_id()'s return type 2018-05-18 17:09:46 +10:00
nouveau_acpi.h
nouveau_backlight.c drm/nouveau: Use drm_connector_list_iter_* for iterating connectors 2018-07-16 17:59:59 +10:00
nouveau_bios.c
nouveau_bios.h
nouveau_bo.c drm/nouveau/ce/gv100: initial support 2018-05-18 15:01:46 +10:00
nouveau_bo.h drm/nouveau/ttm: don't dereference nvbo::cli, it can outlive client 2018-05-10 13:11:52 +10:00
nouveau_chan.c drm/nouveau/fifo/gv100: initial support 2018-05-18 15:01:46 +10:00
nouveau_chan.h drm/nouveau/fifo: support channel count query 2018-05-18 15:01:21 +10:00
nouveau_connector.c drm/nouveau: Fix deadlocks in nouveau_connector_detect() 2018-09-07 06:54:26 +10:00
nouveau_connector.h drm/nouveau: Avoid looping through fake MST connectors 2018-07-16 17:59:59 +10:00
nouveau_crtc.h drm/nouveau/kms/nv50: prepare for double-buffered LUTs 2018-02-02 15:24:06 +10:00
nouveau_debugfs.c drm/nouveau/debugfs: Wake up GPU before doing any reclocking 2018-07-16 18:06:29 +10:00
nouveau_debugfs.h
nouveau_display.c drm/nouveau/drm/nouveau: Fix deadlock with fb_helper with async RPM requests 2018-09-07 06:54:26 +10:00
nouveau_display.h drm/nouveau/kms: move display class instantiation to library 2018-05-18 15:01:26 +10:00
nouveau_dma.c drm/nouveau/fifo/gv100: initial support 2018-05-18 15:01:46 +10:00
nouveau_dma.h drm/nouveau/drm/nv50-: remove allocation of sw class 2018-05-18 15:01:26 +10:00
nouveau_dp.c
nouveau_drm.c drm/nouveau: Remove useless poll_enable() call in drm_load() 2018-09-07 06:54:26 +10:00
nouveau_drv.h drm/nouveau/fifo: support channel count query 2018-05-18 15:01:21 +10:00
nouveau_encoder.h drm/nouveau/kms/nv50: handle SetControlOutputResource from head 2018-05-18 15:01:28 +10:00
nouveau_fbcon.c drm/nouveau/drm/nouveau: Fix deadlock with fb_helper with async RPM requests 2018-09-07 06:54:26 +10:00
nouveau_fbcon.h drm/nouveau/drm/nouveau: Fix deadlock with fb_helper with async RPM requests 2018-09-07 06:54:26 +10:00
nouveau_fence.c drm/nouveau/fifo: support channel count query 2018-05-18 15:01:21 +10:00
nouveau_fence.h drm/nouveau/fifo: support channel count query 2018-05-18 15:01:21 +10:00
nouveau_gem.c BackMerge v4.18-rc7 into drm-next 2018-07-30 10:39:22 +10:00
nouveau_gem.h
nouveau_hwmon.c drm/nouveau/hwmon: potential uninitialized variables 2018-07-16 18:06:29 +10:00
nouveau_hwmon.h
nouveau_ioc32.c
nouveau_ioctl.h
nouveau_led.c
nouveau_led.h
nouveau_mem.c drm/nouveau: use alternate memory type for system-memory buffers with kind != 0 2017-12-19 10:16:37 +10:00
nouveau_mem.h
nouveau_nvif.c
nouveau_platform.c drm/nouveau: Replace drm_dev_unref with drm_dev_put 2018-07-16 18:06:30 +10:00
nouveau_platform.h
nouveau_prime.c
nouveau_reg.h
nouveau_sgdma.c drm/ttm: add bo as parameter to the ttm_tt_create callback 2018-03-14 14:38:27 -05:00
nouveau_ttm.c drm/noveau: add SPDX identifier and clarify license 2018-06-29 15:28:47 -05:00
nouveau_ttm.h drm/ttm: add bo as parameter to the ttm_tt_create callback 2018-03-14 14:38:27 -05:00
nouveau_usif.c
nouveau_usif.h
nouveau_vga.c drm/nouveau: Remove useless poll_disable() call in switcheroo_set_state() 2018-09-07 06:54:26 +10:00
nouveau_vga.h
nouveau_vmm.c drm/nouveau/gem: attach fences to VMAs to track GPU usage 2018-05-18 15:01:26 +10:00
nouveau_vmm.h drm/nouveau/gem: attach fences to VMAs to track GPU usage 2018-05-18 15:01:26 +10:00
nv04_fbcon.c
nv04_fence.c drm/nouveau/fifo: support channel count query 2018-05-18 15:01:21 +10:00
nv10_fence.c drm/nouveau/fifo: support channel count query 2018-05-18 15:01:21 +10:00
nv10_fence.h
nv17_fence.c drm/nouveau/fifo: support channel count query 2018-05-18 15:01:21 +10:00
nv50_display.h drm/nouveau/kms/nv50-: split each resource type into their own source files 2018-05-18 15:01:28 +10:00
nv50_fbcon.c
nv50_fence.c drm/nouveau/fifo: support channel count query 2018-05-18 15:01:21 +10:00
nv84_fence.c treewide: Use array_size() in vmalloc() 2018-06-12 16:19:22 -07:00
nvc0_fbcon.c
nvc0_fence.c