diff options
author | Leo Li <sunpeng.li@amd.com> | 2019-03-19 19:29:16 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2019-04-10 13:53:28 -0500 |
commit | 113b7a010872117e90b16a3e411558db5cb5979e (patch) | |
tree | 6f806d720f725f50ad78e02e84e48192bd8fd21b /drivers/firmware/memmap.c | |
parent | fbd06ec492fc6e078a62664c5b4a0d74b90285be (diff) | |
download | linux-113b7a010872117e90b16a3e411558db5cb5979e.tar.gz linux-113b7a010872117e90b16a3e411558db5cb5979e.tar.bz2 linux-113b7a010872117e90b16a3e411558db5cb5979e.zip |
drm/amd/display: Recreate private_obj->state during S3 resume
[Why]
When entering S3, amdgpu first calls DRM to cache the current atomic
state, then commit the 'all-disabled' state. This sets dc->current_state
to point at the private atomic object's dm_atomic_state->context, as
any regular atomic commit would.
Afterwards, amdgpu_dm calls dc_set_power_state() with S3 power state.
This invalidates dc->current_state by wiping it to 0, consequently
wiping dm_atomic_state->context.
During resume, the cached atomic state is restored. When getting the
private object however, the dm_atomic_state - containing the wiped
context - is duplicated into the atomic state. This causes DC validation
to fail during atomic check, as necessary function pointers in dc_state
are now NULL.
[How]
Recreate the private object's dm_atomic_state->context during resume,
restoring any static values such as function pointers.
A TODO item is added to move static read-only values out of dc_state -
they shouldn't be there anyways.
Signed-off-by: Leo Li <sunpeng.li@amd.com>
Reviewed-by: Nicholas Kazlauskas <Nicholas.Kazlauskas@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/firmware/memmap.c')
0 files changed, 0 insertions, 0 deletions