summaryrefslogtreecommitdiffstats
path: root/kernel/gsp_phys_gpu.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/gsp_phys_gpu.c')
-rw-r--r--kernel/gsp_phys_gpu.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/kernel/gsp_phys_gpu.c b/kernel/gsp_phys_gpu.c
index 79c79bf..88d13f2 100644
--- a/kernel/gsp_phys_gpu.c
+++ b/kernel/gsp_phys_gpu.c
@@ -898,6 +898,15 @@ void gsp_phys_gpu_release(void)
wpr2_ret = -EIO;
gsp_phys_boot_staging_free(phys.pdev);
} else {
+ /*
+ * Clean GSP-RM shutdown: after a stage-3d boot, send
+ * UNLOADING_GUEST_DRIVER once (no-op otherwise) so
+ * GSP-RM suspends and sets the scratch14 handoff bits
+ * the Booter Unload gate needs; then quiesce the GSP
+ * falcon and run the existing FWSEC teardown. A failed
+ * RPC leaves the existing fail-safe in charge.
+ */
+ gsp_phys_boot_rm_unload(phys.bar0);
gsp_phys_boot_quiesce(phys.bar0);
wpr2_ret = gsp_phys_fwsec_release(&phys.boot,
phys.pdev,