]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
drm/xe/uc: Extract xe_uc_sanitize_reset
authorMichał Winiarski <michal.winiarski@intel.com>
Tue, 5 Dec 2023 01:33:07 +0000 (02:33 +0100)
committerRodrigo Vivi <rodrigo.vivi@intel.com>
Thu, 21 Dec 2023 16:45:12 +0000 (11:45 -0500)
Earlier GuC load will require more fine-grained control over reset.
Extract it outside of xe_uc_init_hw.

Signed-off-by: Michał Winiarski <michal.winiarski@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
drivers/gpu/drm/xe/xe_gt.c
drivers/gpu/drm/xe/xe_uc.c
drivers/gpu/drm/xe/xe_uc.h

index 4db94344bbde7847462fe052725cbec2244cd98f..a9c71da985d30c9676652ae06397b8784e21c663 100644 (file)
@@ -542,6 +542,10 @@ static int do_gt_restart(struct xe_gt *gt)
        for_each_hw_engine(hwe, gt, id)
                xe_hw_engine_enable_ring(hwe);
 
+       err = xe_uc_sanitize_reset(&gt->uc);
+       if (err)
+               return err;
+
        err = xe_uc_init_hw(&gt->uc);
        if (err)
                return err;
index 15dcd1f91e9c4467fad5b5670efdc5b6bed08d0a..72a7b3c2577ddb0d799c7f2de116075383089764 100644 (file)
@@ -80,6 +80,10 @@ int xe_uc_init_post_hwconfig(struct xe_uc *uc)
        if (!xe_device_uc_enabled(uc_to_xe(uc)))
                return 0;
 
+       err = xe_uc_sanitize_reset(uc);
+       if (err)
+               return err;
+
        err = xe_guc_init_post_hwconfig(&uc->guc);
        if (err)
                return err;
@@ -101,13 +105,13 @@ static int uc_reset(struct xe_uc *uc)
        return 0;
 }
 
-void xe_uc_sanitize(struct xe_uc *uc)
+static void xe_uc_sanitize(struct xe_uc *uc)
 {
        xe_huc_sanitize(&uc->huc);
        xe_guc_sanitize(&uc->guc);
 }
 
-static int xe_uc_sanitize_reset(struct xe_uc *uc)
+int xe_uc_sanitize_reset(struct xe_uc *uc)
 {
        xe_uc_sanitize(uc);
 
@@ -147,10 +151,6 @@ int xe_uc_init_hw(struct xe_uc *uc)
        if (!xe_device_uc_enabled(uc_to_xe(uc)))
                return 0;
 
-       ret = xe_uc_sanitize_reset(uc);
-       if (ret)
-               return ret;
-
        ret = xe_huc_upload(&uc->huc);
        if (ret)
                return ret;
index 4109ae7028af5f69e4f8f8599aa665486838da36..5d5110c0c834b97be13a657206d39a65026d41a3 100644 (file)
@@ -19,6 +19,6 @@ void xe_uc_stop_prepare(struct xe_uc *uc);
 int xe_uc_stop(struct xe_uc *uc);
 int xe_uc_start(struct xe_uc *uc);
 int xe_uc_suspend(struct xe_uc *uc);
-void xe_uc_sanitize(struct xe_uc *uc);
+int xe_uc_sanitize_reset(struct xe_uc *uc);
 
 #endif