drm/xe/gsc: Fix FW status if the firmware is already loaded
authorDaniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Wed, 28 Aug 2024 21:51:55 +0000 (14:51 -0700)
committerDaniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Thu, 29 Aug 2024 17:32:18 +0000 (10:32 -0700)
We set the FW status to "TRANSFERRED" after the load completes and to
"RUNNING"once we're done with proxy init, so do the same if we're trying
to re-load the FW and it is already loaded.

Note that there is no difference in driver behavior between the 2
states, but it's useful to be accurate when we dump the status for
debug.

Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: John Harrison <John.C.Harrison@Intel.com>
Cc: Alan Previn <alan.previn.teres.alexis@intel.com>
Reviewed-by: Julia Filipchuk <julia.filipchuk@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240828215158.2743994-3-daniele.ceraolospurio@intel.com
drivers/gpu/drm/xe/xe_gsc.c

index 9614d9e6617eb4ad5ff686c49a63ddf4ac427b50..6a94d51fb933b7fa4287c8d9bd34d7350b943157 100644 (file)
@@ -531,7 +531,10 @@ void xe_gsc_load_start(struct xe_gsc *gsc)
 
        /* GSC FW survives GT reset and D3Hot */
        if (gsc_fw_is_loaded(gt)) {
-               xe_uc_fw_change_status(&gsc->fw, XE_UC_FIRMWARE_TRANSFERRED);
+               if (xe_gsc_proxy_init_done(gsc))
+                       xe_uc_fw_change_status(&gsc->fw, XE_UC_FIRMWARE_RUNNING);
+               else
+                       xe_uc_fw_change_status(&gsc->fw, XE_UC_FIRMWARE_TRANSFERRED);
                return;
        }