Re: [PATCH v3 18/23] drm/xe: Report 'Survivability Mode' errors using SIGID

"Mallesh, Koujalagi" <[email protected]>
Newsgroups org.freedesktop.lists.intel-xe
Message-ID <[email protected]>
On 30-07-2026 08:51 pm, Michal Wajdeczko wrote:
> Report various 'Survivability Mode' errors using xe_log() helpers.
>
> Signed-off-by: Michal Wajdeczko<[email protected]>
> Cc: Rodrigo Vivi<[email protected]>
> Cc: Riana Tauro<[email protected]>
> Cc: Aravind Iddamsetty<[email protected]>
> Cc: Mallesh Koujalagi<[email protected]>
> ---
>   drivers/gpu/drm/xe/xe_survivability_mode.c | 24 +++++++++++++---------
>   1 file changed, 14 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_survivability_mode.c b/drivers/gpu/drm/xe/xe_survivability_mode.c
> index 4c506027fa94..788b7e8137a9 100644
> --- a/drivers/gpu/drm/xe/xe_survivability_mode.c
> +++ b/drivers/gpu/drm/xe/xe_survivability_mode.c
> @@ -14,9 +14,11 @@
>   #include "xe_device.h"
>   #include "xe_heci_gsc.h"
>   #include "xe_i2c.h"
> +#include "xe_log.h"
>   #include "xe_mmio.h"
>   #include "xe_nvm.h"
>   #include "xe_pcode_api.h"
> +#include "xe_printk.h"
>   #include "xe_vsec.h"
>   
>   /**
> @@ -179,11 +181,11 @@ static void log_survivability_info(struct pci_dev *pdev)
>   	u32 *info = survivability->info;
>   	int id;
>   
> -	dev_info(&pdev->dev, "Survivability Boot Status : Critical Failure (%d)\n",
> -		 survivability->boot_status);
> +	xe_log_info(xe, SURVIVABILITY, "Boot Status : Critical Failure (%d)\n",
> +		    survivability->boot_status);
>   	for (id = 0; id < MAX_SCRATCH_REG; id++) {
>   		if (info[id])
> -			dev_info(&pdev->dev, "%s: 0x%x\n", reg_map[id], info[id]);
> +			xe_log_info(xe, SURVIVABILITY, "%s: 0x%x\n", reg_map[id], info[id]);
>   	}
>   }
>   
> @@ -316,7 +318,6 @@ static int create_survivability_sysfs(struct pci_dev *pdev)
>   
>   static int enable_boot_survivability_mode(struct pci_dev *pdev)
>   {
> -	struct device *dev = &pdev->dev;
>   	struct xe_device *xe = pdev_to_xe_device(pdev);
>   	struct xe_survivability *survivability = &xe->survivability;
>   	int ret = 0;
> @@ -342,12 +343,12 @@ static int enable_boot_survivability_mode(struct pci_dev *pdev)
>   	if (ret)
>   		goto err;
>   
> -	dev_err(dev, "In Survivability Mode\n");
> -
> +	xe_log_emit(pdev, check_boot_failure(xe) ? CPER_SEV_FATAL : CPER_SEV_INFORMATIONAL,
> +		    XE_SIGID_SURVIVABILITY, 0, 0, 0, 0, "In Survivability Boot Mode\n");

Please make it cleaner and simpler.

if(check_boot_failure(xe))

     xe_log_err_fatal(xe, SURVIVABILITY, .. );

else

      xe_log_info(xe, SURVIVABILITY, .. );


OR

xe_log_emit(xe_any_to_pdev(xe),
             check_boot_failure(xe) ? CPER_SEV_FATAL : 
CPER_SEV_INFORMATIONAL,
             XE_SIGID_SURVIVABILITY, XE_LOG_COMPONENT_SURVIVABILITY,
             xe_log_location(xe),
             &survivability->boot_status, 
sizeof(survivability->boot_status),
             "In Survivability Boot Mode\n");

>   	return 0;
>   
>   err:
> -	dev_err(dev, "Failed to enable Survivability Mode\n");
> +	xe_log_err_fatal(xe, SURVIVABILITY, ret, "Failed to enable Survivability Mode\n");
>   	survivability->mode = false;
>   	return ret;
>   }
> @@ -412,7 +413,7 @@ void xe_survivability_mode_runtime_enable(struct xe_device *xe)
>   	struct pci_dev *pdev = to_pci_dev(xe->drm.dev);
>   
>   	if (!IS_DGFX(xe) || IS_SRIOV_VF(xe) || xe->info.platform < XE_BATTLEMAGE) {
> -		dev_err(&pdev->dev, "Runtime Survivability Mode not supported\n");
> +		xe_log_info(xe, SURVIVABILITY, "Runtime Mode not supported!\n");
We can add xe_log_err(xe, SURVIVABILITY, -EOPNOTSUPP, ...);
>   		return;
>   	}
>   
> @@ -422,11 +423,14 @@ void xe_survivability_mode_runtime_enable(struct xe_device *xe)
>   		dev_err(&pdev->dev, "Failed to create survivability sysfs\n");
need to use xe_log_err(xe, SURVIVABILITY. -EIO, ... );
>   
>   	survivability->type = XE_SURVIVABILITY_TYPE_RUNTIME;
> -	dev_err(&pdev->dev, "Runtime Survivability mode enabled\n");
> +	xe_log_err_fatal(xe, SURVIVABILITY, 0, "Runtime Mode enabled!\n");
hmm, Logging error as fatal, however passing err=0 (Success). is it 
right? or simply we can log as xe_log_err or xe_log_info ? any thoughts.
>   
>   	xe_device_set_wedged_method(xe, DRM_WEDGE_RECOVERY_VENDOR);
>   	xe_device_declare_wedged(xe);
> -	dev_err(&pdev->dev, "Firmware flash required, Please refer to the userspace documentation for more details!\n");
> +
> +	xe_log_err_fatal(xe, SURVIVABILITY, 0, "Firmware flash required!\n");
ditto
> +	xe_info(xe, "Please refer to the userspace documentation for more details how to flash the firmware on %s!\n",
> +		xe->info.platform_name);
>   }
>   
>   /**
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.