[PATCH] drm/xe: Stop checking for power_lost on D3Cold
Gupta, Anshuman
anshuman.gupta at intel.com
Thu Feb 29 13:53:29 UTC 2024
> -----Original Message-----
> From: Vivi, Rodrigo <rodrigo.vivi at intel.com>
> Sent: Wednesday, February 28, 2024 12:14 AM
> To: intel-xe at lists.freedesktop.org
> Cc: Vivi, Rodrigo <rodrigo.vivi at intel.com>; Gupta, Anshuman
> <anshuman.gupta at intel.com>
> Subject: [PATCH] drm/xe: Stop checking for power_lost on D3Cold
>
> GuC reset status is not reliable for this purpose and it is once in a while
> ending up in a situation of D3Cold, where power_reset is false and without
> the proper memory restoration the GuC reload and Display will fail to come
> back from D3Cold.
>
> So, let's do a full restoration of everything if we have a risk of losing power,
> without further optimizations.
>
> Cc: Anshuman Gupta <anshuman.gupta at intel.com>
> Signed-off-by: Rodrigo Vivi <rodrigo.vivi at intel.com>
Is guc is not in reset during d3cold ?
Another comment below
> ---
> drivers/gpu/drm/xe/xe_device_types.h | 3 ---
> drivers/gpu/drm/xe/xe_pm.c | 12 ++----------
> 2 files changed, 2 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_device_types.h
> b/drivers/gpu/drm/xe/xe_device_types.h
> index 9785eef2e5a4..f7eb473a3aec 100644
> --- a/drivers/gpu/drm/xe/xe_device_types.h
> +++ b/drivers/gpu/drm/xe/xe_device_types.h
> @@ -423,9 +423,6 @@ struct xe_device {
> /** @d3cold.allowed: Indicates if d3cold is a valid device
> state */
> bool allowed;
>
> - /** @d3cold.power_lost: Indicates if card has really lost
> power. */
> - bool power_lost;
> -
> /**
> * @d3cold.vram_threshold:
> *
> diff --git a/drivers/gpu/drm/xe/xe_pm.c b/drivers/gpu/drm/xe/xe_pm.c index
> b5511e3c3153..9a03a4d5b439 100644
> --- a/drivers/gpu/drm/xe/xe_pm.c
> +++ b/drivers/gpu/drm/xe/xe_pm.c
> @@ -365,15 +365,7 @@ int xe_pm_runtime_resume(struct xe_device *xe)
>
> lock_map_acquire(&xe_device_mem_access_lockdep_map);
>
> - /*
> - * It can be possible that xe has allowed d3cold but other pcie
> devices
> - * in gfx card soc would have blocked d3cold, therefore card has not
> - * really lost power. Detecting primary Gt power is sufficient.
> - */
> - gt = xe_device_get_gt(xe, 0);
> - xe->d3cold.power_lost = xe_guc_in_reset(>->uc.guc);
xe_guc_in_reset() is unused function after this patch.
This should be removed.
Thanks,
Anshuman Gupta.
> -
> - if (xe->d3cold.allowed && xe->d3cold.power_lost) {
> + if (xe->d3cold.allowed) {
> for_each_gt(gt, xe, id) {
> err = xe_pcode_init(gt);
> if (err)
> @@ -394,7 +386,7 @@ int xe_pm_runtime_resume(struct xe_device *xe)
> for_each_gt(gt, xe, id)
> xe_gt_resume(gt);
>
> - if (xe->d3cold.allowed && xe->d3cold.power_lost) {
> + if (xe->d3cold.allowed) {
> err = xe_bo_restore_user(xe);
> if (err)
> goto out;
> --
> 2.43.2
More information about the Intel-xe
mailing list