OSDN Git Service

drm/i915: Prepare GEM for suspend earlier
authorChris Wilson <chris@chris-wilson.co.uk>
Fri, 25 May 2018 09:26:29 +0000 (10:26 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Fri, 25 May 2018 13:52:20 +0000 (14:52 +0100)
commit73b66f8731573a5fa74799dfabb4cdfe513b9241
tree7668422be95d544fc4f5113c4dd5c0364af38ffd
parentfe25f3048322f32131a151ebe213f52821322f9c
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>
drivers/gpu/drm/i915/i915_drv.c