From: Nicholas Kazlauskas <[email protected]>

[Why]
DMCUB encounters a page fault/double exception with driver direct load
because DMCUB is not held in soft reset after releasing secure reset.

The clean shutdown sequence via GPINT is also not executed in this
sequence which leaves hardware behavior in an indeterminate state.

[How]
Move reset earlier in the sequence.

Signed-off-by: Nicholas Kazlauskas <[email protected]>
Reviewed-by: Eric Yang <[email protected]>
Acked-by: Anson Jacob <[email protected]>
---
 drivers/gpu/drm/amd/display/dmub/src/dmub_srv.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dmub/src/dmub_srv.c 
b/drivers/gpu/drm/amd/display/dmub/src/dmub_srv.c
index d2588b7cd325..61f64a295f06 100644
--- a/drivers/gpu/drm/amd/display/dmub/src/dmub_srv.c
+++ b/drivers/gpu/drm/amd/display/dmub/src/dmub_srv.c
@@ -406,6 +406,9 @@ enum dmub_status dmub_srv_hw_init(struct dmub_srv *dmub,
        dmub->fb_offset = params->fb_offset;
        dmub->psp_version = params->psp_version;
 
+       if (dmub->hw_funcs.reset)
+               dmub->hw_funcs.reset(dmub);
+
        if (inst_fb && data_fb) {
                cw0.offset.quad_part = inst_fb->gpu_addr;
                cw0.region.base = DMUB_CW0_BASE;
@@ -427,9 +430,6 @@ enum dmub_status dmub_srv_hw_init(struct dmub_srv *dmub,
 
        }
 
-       if (dmub->hw_funcs.reset)
-               dmub->hw_funcs.reset(dmub);
-
        if (inst_fb && data_fb && bios_fb && mail_fb && tracebuff_fb &&
            fw_state_fb && scratch_mem_fb) {
                cw2.offset.quad_part = data_fb->gpu_addr;
-- 
2.25.1

_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to