linux/drivers/gpu/drm
Chris Wilson 73b66f8731 drm/i915: Prepare GEM for suspend earlier
In order to prepare the GPU for sleeping, we may want to submit commands
to it. This is a complicated process that may even require some swapping
in from shmemfs, if the GPU was in the wrong state. As such, we need to
do this preparation step synchronously before the rest of the system has
started to turn off (e.g. swapin fails if scsi is suspended).
Fortunately, we are provided with a such a hook, pm_ops.prepare().

v2: Compile cleanup
v3: Fewer asserts, fewer problems?

v4: Ville pointed out that in some circumstances (such as switching off
the overlay) the display code may issue a GPU request. This is
unexpected, and will result in us going to sleep with us believing the
GPU is still awake (though all user work has been saved). Add a comment
to remind our future selves of what trouble brews.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106640
Testcase: igt/drv_suspend after igt/gem_tiled_swapping
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Link: https://patchwork.freedesktop.org/patch/msgid/20180525092629.1456-1-chris@chris-wilson.co.uk
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com>
2018-05-25 14:52:20 +01:00
..
amd Merge branch 'drm-fixes-4.17' of git://people.freedesktop.org/~agd5f/linux into drm-fixes 2018-04-26 11:08:26 +10:00
arc drm/arcpgu: remove drm_encoder_slave 2018-01-30 18:05:25 +01:00
arm drm: mali-dp: Add YUV->RGB conversion support for video layers 2018-03-14 11:41:01 +00:00
armada drm: Don't pass clip to drm_atomic_helper_check_plane_state() 2018-03-05 20:48:25 +02:00
ast drm/ast: fix mode_valid's return type 2018-04-25 09:09:22 +02:00
atmel-hlcdc drm/atmel-hclcdc: Convert to the new generic alpha property 2018-04-16 21:20:40 +02:00
bochs drm/bochs: fix mode_valid's return type 2018-04-25 09:34:00 +02:00
bridge drm-misc-next for v4.18: 2018-04-30 09:32:43 +10:00
cirrus Linux 4.16-rc7 2018-03-28 14:30:41 +10:00
etnaviv drm/etnaviv: bump HW job limit to 4 2018-03-22 11:08:48 +01:00
exynos drm-misc-next for v4.18: 2018-04-30 09:32:43 +10:00
fsl-dcu
gma500 drm/gma500: fix psb_intel_lvds_mode_valid()'s return type 2018-04-25 09:38:37 +02:00
hisilicon drm/hisilicon: fix mode_valid's return type 2018-04-25 09:09:22 +02:00
i2c drm/i2c: tda998x: fix mode_valid's return type 2018-04-25 09:38:57 +02:00
i810
i915 drm/i915: Prepare GEM for suspend earlier 2018-05-25 14:52:20 +01:00
imx Linux 4.16-rc7 2018-03-28 14:30:41 +10:00
lib
mediatek drm: Don't pass clip to drm_atomic_helper_check_plane_state() 2018-03-05 20:48:25 +02:00
meson Linux 4.16-rc7 2018-03-28 14:30:41 +10:00
mga
mgag200 drm/mgag200: fix mode_valid's return type 2018-04-25 09:09:22 +02:00
msm Merge tag 'drm-msm-fixes-2018-04-25' of git://people.freedesktop.org/~robclark/linux into drm-fixes 2018-04-26 11:09:04 +10:00
mxsfb drm/mxsfb: Use simple_display_pipe prepare_fb helper 2018-04-24 13:58:43 +02:00
nouveau Merge airlied/drm-next into drm-misc-next 2018-03-30 12:35:45 -04:00
omapdrm drm-misc-next for v4.18: 2018-04-30 09:32:43 +10:00
panel drm/panel: rm68200: Add backlight dependency 2018-03-14 11:51:24 +01:00
pl111 drm/pl111: Use simple_display_pipe prepare_fb helper 2018-04-24 13:58:24 +02:00
qxl drm-misc-next for v4.18: 2018-04-30 09:32:43 +10:00
r128 r128: don't open-code memdup_user() 2017-12-27 19:00:09 -05:00
radeon drm/radeon: add PX quirk for Asus K73TK 2018-04-11 13:11:50 -05:00
rcar-du drm/rcar-du: Convert to the new generic alpha property 2018-04-16 21:20:59 +02:00
rockchip drm/rockchip: psr: Remove flush by CRTC 2018-04-24 08:34:54 +02:00
savage
scheduler treewide/trivial: Remove ';;$' typo noise 2018-02-22 10:59:33 +01:00
selftests
shmobile
sis
sti drm/sti: Depend on OF rather than selecting it 2018-04-05 14:04:17 +02:00
stm drm/stm: ltdc: fix warning in ltdc_crtc_update_clut() 2018-04-19 12:24:45 +02:00
sun4i drm-misc-next for v4.18: 2018-04-30 09:32:43 +10:00
tdfx
tegra drm-misc-next for v4.18: 2018-04-30 09:32:43 +10:00
tilcdc drm/tilcdc: tilcdc_panel: Rename device from "panel" to "tilcdc-panel" 2018-02-28 11:48:25 +02:00
tinydrm drm: Move simple_display_pipe prepare_fb helper into gem fb helpers 2018-04-24 13:57:22 +02:00
ttm drm/ttm: Export the ttm_k[un]map_atomic_prot API. 2018-03-22 11:10:06 +01:00
tve200 drm/tve200: Use simple_display_pipe prepare_fb helper 2018-04-24 13:58:06 +02:00
udl drm/udl: fix mode_valid's return type 2018-04-25 09:09:22 +02:00
vc4 drm-misc-next for v4.18: 2018-04-30 09:32:43 +10:00
vgem
via
virtio drm-misc-next for v4.18: 2018-04-30 09:32:43 +10:00
vmwgfx drm/vmwgfx: Remove no-op prepare/cleanup_fb callbacks 2018-04-24 13:57:11 +02:00
xen drm/xen-front: use simple display pipe prepare_fb helper 2018-04-24 14:02:53 +02:00
zte drm/zte: Stop consulting plane->crtc 2018-03-29 19:14:21 +03:00
ati_pcigart.c
drm_agpsupport.c
drm_atomic_helper.c drm/atomic: Add sanity checks to drm_atomic_helper_async_commit() 2018-04-18 09:06:16 +02:00
drm_atomic.c Merge drm/drm-next into drm-intel-next-queued 2018-05-02 12:20:32 +03: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/docs: Document "scaling mode" property better 2018-02-20 12:10:46 +01:00
drm_context.c
drm_crtc_helper_internal.h
drm_crtc_helper.c
drm_crtc_internal.h drm: Don't EXPORT drm_add/reset_display_info 2018-04-24 21:34:53 +02:00
drm_crtc.c drm: Use plane->state->fb over plane->fb 2018-03-29 19:14:21 +03:00
drm_debugfs_crc.c drm/crc: Add support for polling on the data fd. 2018-02-05 13:22:44 +01:00
drm_debugfs.c
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/dp: Add HBR3 support in existing DRM DP helpers 2018-01-26 13:36:53 +02: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 drm: Use srcu to protect drm_device.unplugged 2018-03-29 13:19:20 +03:00
drm_dumb_buffers.c
drm_edid_load.c
drm_edid.c drm-misc-next for v4.18: 2018-04-30 09:32:43 +10:00
drm_encoder_slave.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_fb_cma_helper.c
drm_fb_helper.c drm: Remove now pointelss blob->data casts 2018-03-16 15:44:01 +02:00
drm_file.c vfs: do bulk POLL* -> EPOLL* replacement 2018-02-11 14:34:03 -08: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: Reshuffle getfb error returns 2018-03-30 17:54:27 +01:00
drm_gem_cma_helper.c
drm_gem_framebuffer_helper.c drm: Move simple_display_pipe prepare_fb helper into gem fb helpers 2018-04-24 13:57:22 +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_global.c
drm_hashtab.c
drm_info.c
drm_internal.h
drm_ioc32.c
drm_ioctl.c drm: Print the pid when debug logging an ioctl error. 2018-02-10 22:23:10 +00: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 drm: fix drm_get_max_iomem type mismatch 2018-02-22 11:18:58 -05:00
drm_mipi_dsi.c drm/dsi: Fix improper use of mipi_dsi_device_transfer() return value 2018-01-16 17:10:14 -05:00
drm_mm.c Linux 4.16-rc7 2018-03-28 14:30:41 +10:00
drm_mode_config.c Linux 4.15-rc4 2017-12-19 21:37:24 +10:00
drm_mode_object.c
drm_modes.c drm: Fix uabi regression by allowing garbage mode->type from userspace 2018-03-23 13:51:12 +02: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: simplify component probe code 2018-03-06 14:05:00 +05:30
drm_panel_orientation_quirks.c drm: panel-orientation-quirks: Add quirk for Lenovo Ideapad Mixx 320 2018-04-24 13:43:45 +02:00
drm_panel.c
drm_pci.c
drm_plane_helper.c drm: Don't pass clip to drm_atomic_helper_check_plane_state() 2018-03-05 20:48:25 +02:00
drm_plane.c drm: Use plane->state->fb over plane->fb 2018-03-29 19:14:21 +03:00
drm_prime.c drm: add parameter explanation for some gem dmabuf_ops 2018-03-28 15:10:28 -05: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 Revert "drm: Use a flexible array member for blob property data" 2018-03-16 15:44:01 +02:00
drm_rect.c
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 drm: Use idr_init_base(1) when using id==0 for invalid 2018-02-19 12:21:24 +00:00
drm_sysfs.c
drm_trace_points.c
drm_trace.h
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
drm_vma_manager.c
Kconfig drm/xen-front: Add support for Xen PV display frontend 2018-04-03 14:41:48 +03:00
Makefile drm/xen-front: Add support for Xen PV display frontend 2018-04-03 14:41:48 +03:00