> -----Original Message-----
> From: Vivi, Rodrigo <rodrigo.v...@intel.com>
> Sent: Friday, July 21, 2023 2:34 AM
> To: intel-gfx@lists.freedesktop.org
> Cc: Vivi, Rodrigo <rodrigo.v...@intel.com>; Gupta, Anshuman
> <anshuman.gu...@intel.com>
> Subject: [PATCH 2/4] drm/xe: Move d3cold_allowed decision all together.
> 
> And let's use the VRAM threshold to keep d3cold temporarily disabled.
> 
> With this we have the ability to run D3Cold experiments just by touching the
> vram_d3cold_threshold sysfs entry.
> 
> Cc: Anshuman Gupta <anshuman.gu...@intel.com>
> Signed-off-by: Rodrigo Vivi <rodrigo.v...@intel.com>
LGTM,
Reviewed-by: Anshuman Gupta <anshuman.gu...@intel.com>
> ---
>  drivers/gpu/drm/xe/xe_pci.c | 15 +--------------
> drivers/gpu/drm/xe/xe_pm.c  |  5 +++++  drivers/gpu/drm/xe/xe_pm.h  |  7
> ++++++-
>  3 files changed, 12 insertions(+), 15 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c
> index 0c4051f4f746..06759afb4224 100644
> --- a/drivers/gpu/drm/xe/xe_pci.c
> +++ b/drivers/gpu/drm/xe/xe_pci.c
> @@ -834,20 +834,7 @@ static int xe_pci_runtime_idle(struct device *dev)
>       struct pci_dev *pdev = to_pci_dev(dev);
>       struct xe_device *xe = pdev_to_xe_device(pdev);
> 
> -     if (!xe->d3cold.capable) {
> -             xe->d3cold.allowed = false;
> -     } else {
> -             xe_pm_d3cold_allowed_toggle(xe);
> -
> -             /*
> -              * TODO: d3cold should be allowed (true) if
> -              * (IS_DGFX(xe) && !xe_device_mem_access_ongoing(xe))
> -              * but maybe include some other conditions. So, before
> -              * we can re-enable the D3cold, we need to:
> -              * 1. rewrite the VRAM save / restore to avoid buffer object
> locks
> -              */
> -             xe->d3cold.allowed = false;
> -     }
> +     xe_pm_d3cold_allowed_toggle(xe);
> 
>       return 0;
>  }
> diff --git a/drivers/gpu/drm/xe/xe_pm.c b/drivers/gpu/drm/xe/xe_pm.c
> index 17a69b7af155..a6459df2599e 100644
> --- a/drivers/gpu/drm/xe/xe_pm.c
> +++ b/drivers/gpu/drm/xe/xe_pm.c
> @@ -326,6 +326,11 @@ void xe_pm_d3cold_allowed_toggle(struct
> xe_device *xe)
>       u64 vram_used;
>       int i;
> 
> +     if (!xe->d3cold.capable) {
> +             xe->d3cold.allowed = false;
> +             return;
> +     }
> +
>       for (i = XE_PL_VRAM0; i <= XE_PL_VRAM1; ++i) {
>               man = ttm_manager_type(&xe->ttm, i);
>               if (man) {
> diff --git a/drivers/gpu/drm/xe/xe_pm.h b/drivers/gpu/drm/xe/xe_pm.h
> index 08a633ce5145..6b9031f7af24 100644
> --- a/drivers/gpu/drm/xe/xe_pm.h
> +++ b/drivers/gpu/drm/xe/xe_pm.h
> @@ -8,7 +8,12 @@
> 
>  #include <linux/pm_runtime.h>
> 
> -#define DEFAULT_VRAM_THRESHOLD 300 /* in MB */
> +/*
> + * TODO: Threshold = 0 will block D3Cold.
> + *       Before we can move this to a higher value (like 300), we need to:
> + *           1. rewrite the VRAM save / restore to avoid buffer object locks
> + */
> +#define DEFAULT_VRAM_THRESHOLD 0 /* in MB */
> 
>  struct xe_device;
> 
> --
> 2.41.0

Reply via email to