linux-stable/drivers/gpu/drm
Lyude Paul 280cf1a94b drm/amdgpu: Dynamically probe for ATIF handle (v2)
The other day I was testing one of the HP laptops at my office with an
i915/amdgpu hybrid setup and noticed that hotplugging was non-functional
on almost all of the display outputs. I eventually discovered that all
of the external outputs were connected to the amdgpu device instead of
i915, and that the hotplugs weren't being detected so long as the GPU
was in runtime suspend. After some talking with folks at AMD, I learned
that amdgpu is actually supposed to support hotplug detection in runtime
suspend so long as the OEM has implemented it properly in the firmware.

On this HP ZBook 15 G4 (the machine in question), amdgpu wasn't managing
to find the ATIF handle at all despite the fact that I could see acpi
events being sent in response to any hotplugging. After going through
dumps of the firmware, I discovered that this machine did in fact
support ATIF, but that it's ATIF method lived in an entirely different
namespace than this device's handle (the device handle was
\_SB_.PCI0.PEG0.PEGP, but ATIF lives in ATPX's handle at
\_SB_.PCI0.GFX0).

So, fix this by probing ATPX's ACPI parent's namespace if we can't find
ATIF elsewhere, along with storing a pointer to the proper handle to use
for ATIF and using that instead of the device's handle.

This fixes HPD detection while in runtime suspend for this ZBook!

v2: Update the comment to reflect how the namespaces are arranged
based on the system configuration. (Alex)

Signed-off-by: Lyude Paul <lyude@redhat.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2018-07-05 16:38:58 -05:00
..
amd drm/amdgpu: Dynamically probe for ATIF handle (v2) 2018-07-05 16:38:58 -05:00
arc drm/arc: Stop consulting plane->fb 2018-05-25 20:08:27 +03:00
arm drm/mali-dp: Rectify the width and height passed to rotmem_required() 2018-06-18 18:08:43 +01:00
armada dma-buf: remove kmap_atomic interface 2018-06-20 15:59:34 +02:00
ast drm/ast: fix mode_valid's return type 2018-04-25 09:09:22 +02:00
atmel-hlcdc Merge v4.18-rc3 into drm-next 2018-07-04 10:27:12 +10:00
bochs drm/bochs: fix mode_valid's return type 2018-04-25 09:34:00 +02:00
bridge Merge v4.18-rc3 into drm-next 2018-07-04 10:27:12 +10:00
cirrus drm/cirrus: cirrus_framebuffer -> drm_framebuffer 2018-05-18 14:52:30 +01:00
etnaviv drm/scheduler: Rename cleanup functions v2. 2018-07-05 16:38:45 -05:00
exynos drm-misc-next for 4.19: 2018-06-22 12:58:08 +10:00
fsl-dcu
gma500 drm-misc-next for 4.19: 2018-06-28 13:29:07 +10:00
hisilicon drm: kirin: Remove useless "Scale not support" error message 2018-06-25 18:09:38 +02:00
i2c Merge drm-upstream/drm-next into drm-misc-next 2018-06-20 13:22:22 -03:00
i810
i915 Merge v4.18-rc3 into drm-next 2018-07-04 10:27:12 +10:00
imx Linux 4.16-rc7 2018-03-28 14:30:41 +10:00
lib
mediatek Merge drm-upstream/drm-next into drm-misc-next 2018-06-20 13:22:22 -03:00
meson drm/meson: Fix an un-handled error path in 'meson_drv_bind_master()' 2018-06-26 10:22:29 +02:00
mga
mgag200 drm/mgag200: fix mode_valid's return type 2018-04-25 09:09:22 +02:00
msm drm-misc-next for 4.19: 2018-06-22 12:58:08 +10:00
mxsfb drm/mxsfb: Use simple_display_pipe prepare_fb helper 2018-04-24 13:58:43 +02:00
nouveau Merge branch 'linux-4.18' of git://github.com/skeggsb/linux into drm-fixes 2018-06-20 16:57:09 +10:00
omapdrm drm/omap: remove now unused functions 2018-06-25 13:28:06 +10:00
panel drm/panel: Add Ilitek ILI9881c panel driver 2018-06-25 20:03:40 +02:00
pl111 drm/pl111: Fix module probe bug 2018-05-04 00:13:41 +02:00
qxl Only a small qxl fix that was queued for v4.17. 2018-06-20 16:58:49 +10:00
r128
radeon Merge branch 'drm-next-4.19' of git://people.freedesktop.org/~agd5f/linux into drm-next 2018-06-22 13:19:05 +10:00
rcar-du DeviceTree updates for v4.18: 2018-06-07 14:06:31 -07:00
rockchip drm/rockchip: vop: fixup linebuffer mode calc error 2018-06-27 14:07:40 +02:00
savage treewide: kmalloc() -> kmalloc_array() 2018-06-12 16:19:22 -07:00
scheduler drm/scheduler: Rename cleanup functions v2. 2018-07-05 16:38:45 -05:00
selftests drm-misc-next for 4.19: 2018-06-22 12:58:08 +10:00
shmobile drm: shmobile: remove unused MERAM support 2018-05-14 15:47:30 +02:00
sis
sti drm/sti: Stop consulting plane->crtc 2018-05-25 20:08:27 +03:00
stm drm/stm: ltdc: fix warnings in ltdc_plane_create() 2018-04-27 11:02:58 +02:00
sun4i Merge v4.18-rc3 into drm-next 2018-07-04 10:27:12 +10:00
tdfx
tegra Merge drm-upstream/drm-next into drm-misc-next 2018-06-20 13:22:22 -03:00
tilcdc drm/tilcdc: Fix setting clock divider for omap-l138 2018-05-09 19:55:18 +03:00
tinydrm drm-misc-next for 4.19: 2018-06-28 13:29:07 +10:00
ttm Merge branch 'drm-next-4.19' of git://people.freedesktop.org/~agd5f/linux into drm-next 2018-06-22 13:19:05 +10:00
tve200 drm/tve200: Use simple_display_pipe prepare_fb helper 2018-04-24 13:58:06 +02:00
udl dma-buf: remove kmap_atomic interface 2018-06-20 15:59:34 +02:00
v3d drm/scheduler: Rename cleanup functions v2. 2018-07-05 16:38:45 -05:00
vc4 drm-misc-next for 4.19: 2018-06-28 13:29:07 +10:00
vgem gpu: drm: vgem: Change return type to vm_fault_t 2018-05-24 14:56:57 +02:00
via treewide: Use array_size() in vzalloc() 2018-06-12 16:19:22 -07:00
virtio drm/virtio: Stop updating plane->crtc 2018-06-11 20:22:44 +03:00
vmwgfx drm-misc-next for 4.19: 2018-06-22 12:58:08 +10:00
xen drm-misc-next for 4.19: 2018-06-22 12:58:08 +10:00
zte drm/zte: Stop consulting plane->crtc 2018-03-29 19:14:21 +03:00
ati_pcigart.c
drm_agpsupport.c
drm_atomic.c Merge drm-upstream/drm-next into drm-misc-next 2018-06-20 13:22:22 -03:00
drm_atomic_helper.c drm: Add writeback connector type 2018-06-20 15:27:49 +01:00
drm_auth.c drm: Check for lessee in DROP_MASTER ioctl 2018-01-31 09:27:51 +01:00
drm_blend.c drm/blend: Add a generic alpha property 2018-04-16 21:17:29 +02:00
drm_bridge.c
drm_bufs.c drm: dma_bufs: Fixed checkpatch issues 2018-03-19 09:31:20 -04:00
drm_cache.c
drm_color_mgmt.c kernel.h: Retain constant expression output for max()/min() 2018-04-05 14:17:16 -07:00
drm_connector.c drm: Add writeback connector type 2018-06-20 15:27:49 +01:00
drm_context.c
drm_crtc.c drm: Add checks for atomic_[duplicate/destroy]_state with atomic drivers 2018-06-18 09:20:51 +02:00
drm_crtc_helper.c
drm_crtc_helper_internal.h
drm_crtc_internal.h drm: Make ioctls available for in-kernel clients 2018-06-25 16:20:14 +02:00
drm_debugfs.c
drm_debugfs_crc.c drm/crc: Add support for polling on the data fd. 2018-02-05 13:22:44 +01:00
drm_dma.c
drm_dp_aux_dev.c sched/wait, drivers/drm: Convert wait_on_atomic_t() usage to the new wait_var_event() API 2018-03-20 08:23:18 +01:00
drm_dp_dual_mode_helper.c drm/i915: Fix LSPCON TMDS output buffer enabling from low-power state 2018-04-18 16:33:14 +03:00
drm_dp_helper.c drm for v4.18-rc1 2018-06-06 08:16:33 -07:00
drm_dp_mst_topology.c drm/dp/mst: Fix off-by-one typo when dump payload table 2018-03-28 09:12:16 +03:00
drm_drv.c Single fix for v4.18: 2018-06-20 16:58:31 +10:00
drm_dumb_buffers.c drm-misc-next for 4.19: 2018-06-28 13:29:07 +10:00
drm_edid.c drm-misc-next for 4.19: 2018-06-22 12:58:08 +10:00
drm_edid_load.c
drm_encoder.c drm: Warn if plane/crtc/encoder/connector index exceeds our 32bit bitmasks 2018-01-29 18:46:53 +02:00
drm_encoder_slave.c
drm_fb_cma_helper.c
drm_fb_helper.c drm: Stop updating plane->crtc/fb/old_fb on atomic drivers 2018-06-11 20:22:44 +03:00
drm_file.c drm/file: Don't set master on in-kernel clients 2018-06-25 16:18:39 +02:00
drm_flip_work.c
drm_fourcc.c drm/fourcc: Add a alpha field to drm_format_info 2018-01-29 12:07:47 +01:00
drm_framebuffer.c drm: Make ioctls available for in-kernel clients 2018-06-25 16:20:14 +02:00
drm_gem.c drm/gem: Document that handle_create must be the last step 2018-03-26 17:42:06 +02:00
drm_gem_cma_helper.c
drm_gem_framebuffer_helper.c drm/gem-fb-helper: Always do implicit sync 2018-06-20 14:43:13 +02:00
drm_global.c
drm_hashtab.c treewide: Use array_size() in vzalloc() 2018-06-12 16:19:22 -07:00
drm_info.c
drm_internal.h drm: provide management functions for drm_file 2018-06-25 16:17:03 +02:00
drm_ioc32.c drm: Drop DRM_CONTROL_ALLOW from ioctls 2018-05-03 11:28:02 +02:00
drm_ioctl.c drm: Make ioctls available for in-kernel clients 2018-06-25 16:20:14 +02:00
drm_irq.c
drm_kms_helper_common.c
drm_lease.c gpu: drm/lease:: Use list_{next/prev}_entry instead of list_entry 2018-03-26 10:38:06 +02:00
drm_legacy.h
drm_lock.c
drm_memory.c treewide: Use array_size() in vmalloc() 2018-06-12 16:19:22 -07:00
drm_mipi_dsi.c
drm_mm.c drm/mm: Add a search-by-address variant to only inspect a single hole 2018-05-24 15:04:30 +01:00
drm_mode_config.c drm: writeback: Add client capability for exposing writeback connectors 2018-06-20 15:30:20 +01:00
drm_mode_object.c
drm_modes.c drm: Print bad user modes 2018-06-15 23:31:07 +03:00
drm_modeset_helper.c
drm_modeset_lock.c drm/atomic: Call ww_acquire_done after drm_modeset_lock_all 2018-03-05 10:35:32 +01:00
drm_of.c drm: of: Export and rename drm_crtc_port_mask() 2018-06-27 21:44:04 +02:00
drm_panel.c drm/panel: Add device_link from panel device to DRM device 2018-05-18 11:22:06 +02:00
drm_panel_orientation_quirks.c drm: panel-orientation-quirks: Convert to use match_string() helper 2018-05-10 11:36:25 -04:00
drm_pci.c
drm_plane.c drm: Add checks for atomic_[duplicate/destroy]_state with atomic drivers 2018-06-18 09:20:51 +02:00
drm_plane_helper.c drm: Stop updating plane->crtc/fb/old_fb on atomic drivers 2018-06-11 20:22:44 +03:00
drm_prime.c dma-buf: remove kmap_atomic interface 2018-06-20 15:59:34 +02:00
drm_print.c drm: Reduce object size of DRM_DEV_<LEVEL> uses 2018-03-19 15:15:42 +01:00
drm_probe_helper.c Linux 4.16-rc7 2018-03-28 14:30:41 +10:00
drm_property.c drm: Don't pass the index to drm_property_add_enum() 2018-04-27 16:46:50 +03:00
drm_rect.c drm/rect: Handle rounding errors in drm_rect_clip_scaled, v3. 2018-05-04 11:09:54 +02:00
drm_scatter.c
drm_scdc_helper.c drm/scdc-helper: Convert errors into debug messages 2018-03-26 21:37:24 +03:00
drm_simple_kms_helper.c drm/simple-kms-helper: Plumb plane state to the enable hook 2018-03-28 19:19:32 +03:00
drm_syncobj.c Revert 190c462d5be19ba622a82f5fd0625087c870a1e6..bf3012ada1b2222e770de5c35c1bb16f73b3a01d" 2018-05-03 12:38:39 +02:00
drm_sysfs.c drm: remove all control node code 2018-05-03 21:26:32 +02:00
drm_trace.h
drm_trace_points.c
drm_vblank.c Merge tag 'drm-intel-next-2018-03-08' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2018-03-14 14:53:01 +10:00
drm_vm.c gpu: drm: drm_vm: Adding new typedef vm_fault_t 2018-05-29 08:58:46 +02:00
drm_vma_manager.c
drm_writeback.c drm: writeback: Add out-fences for writeback connectors 2018-06-20 15:29:18 +01:00
Kconfig drm/selftests: Add drm helper selftest 2018-05-04 11:36:45 +02:00
Makefile drm: Add writeback connector type 2018-06-20 15:27:49 +01:00