[PATCH v2] drm/xe/guc: Set wedged on Xe micro hardware initialization error

Michal Wajdeczko michal.wajdeczko at intel.com
Wed Jun 11 18:45:53 UTC 2025



On 11.06.2025 19:24, Summers, Stuart wrote:
> On Wed, 2025-06-04 at 19:45 -0400, Zhanjun Dong wrote:
>> Declare wedged on Xe micro controller hardware initialization
>> failed.
>>
>> Signed-off-by: Zhanjun Dong <zhanjun.dong at intel.com>
>> Closes: https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/4917
>>
>> ---
>> Cc: Michal Wajdeczko <michal.wajdeczko at intel.com>
>>
>> Change list:
>> v2: Remove unnecessary jump to err-out
>>     Drop disable ct, swtich to set wedge

typo swtich

>> ---
>>  drivers/gpu/drm/xe/xe_uc.c | 21 ++++++++++++++-------
>>  1 file changed, 14 insertions(+), 7 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/xe/xe_uc.c b/drivers/gpu/drm/xe/xe_uc.c
>> index 3a8751a8b92d..bd1d4e8fab7e 100644
>> --- a/drivers/gpu/drm/xe/xe_uc.c
>> +++ b/drivers/gpu/drm/xe/xe_uc.c
>> @@ -13,6 +13,7 @@
>>  #include "xe_gt_printk.h"
>>  #include "xe_gt_sriov_vf.h"
>>  #include "xe_guc.h"
>> +#include "xe_guc_ct.h"

do we need this?

>>  #include "xe_guc_pc.h"
>>  #include "xe_guc_engine_activity.h"
>>  #include "xe_huc.h"
>> @@ -157,19 +158,22 @@ static int vf_uc_init_hw(struct xe_uc *uc)
>>  
>>         err = xe_guc_enable_communication(&uc->guc);
>>         if (err)
>> -               return err;
>> +               goto err_out;
>>  
>>         err = xe_gt_sriov_vf_connect(uc_to_gt(uc));
>>         if (err)
>> -               return err;
>> +               goto err_out;
>>  
>>         uc->guc.submission_state.enabled = true;
>>  
>>         err = xe_gt_record_default_lrcs(uc_to_gt(uc));
>>         if (err)
>> -               return err;
>> +               goto err_out;
>>  
>>         return 0;
>> +err_out:
>> +       xe_device_declare_wedged(uc_to_xe(uc));
> 
> On the VF side should we be reducing the scope for this? Is there a way
> to mark the VF as wedged?

"wedged" is more a driver software state, so VF should be able to
declare it too, even if this is just from this VF driver POV

> 
> Thanks,
> Stuart
> 
>> +       return err;
>>  }
>>  
>>  /*
>> @@ -197,19 +201,19 @@ int xe_uc_init_hw(struct xe_uc *uc)
>>  
>>         ret = xe_guc_enable_communication(&uc->guc);
>>         if (ret)
>> -               return ret;
>> +               goto err_out;
>>  
>>         ret = xe_gt_record_default_lrcs(uc_to_gt(uc));
>>         if (ret)
>> -               return ret;
>> +               goto err_out;
>>  
>>         ret = xe_guc_post_load_init(&uc->guc);
>>         if (ret)
>> -               return ret;
>> +               goto err_out;
>>  
>>         ret = xe_guc_pc_start(&uc->guc.pc);
>>         if (ret)
>> -               return ret;
>> +               goto err_out;
>>  
>>         xe_guc_engine_activity_enable_stats(&uc->guc);
>>  
>> @@ -221,6 +225,9 @@ int xe_uc_init_hw(struct xe_uc *uc)
>>         xe_gsc_load_start(&uc->gsc);
>>  
>>         return 0;

nit: new line here

>> +err_out:
>> +       xe_device_declare_wedged(uc_to_xe(uc));
>> +       return ret;
>>  }
>>  
>>  int xe_uc_fini_hw(struct xe_uc *uc)
> 



More information about the Intel-xe mailing list