Re: [PATCH 2/4] drm/xe: Move d3cold_allowed decision all together.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> -----Original Message-----
> From: Vivi, Rodrigo <rodrigo.vivi@xxxxxxxxx>
> Sent: Friday, July 21, 2023 2:34 AM
> To: intel-gfx@xxxxxxxxxxxxxxxxxxxxx
> Cc: Vivi, Rodrigo <rodrigo.vivi@xxxxxxxxx>; Gupta, Anshuman
> <anshuman.gupta@xxxxxxxxx>
> 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.gupta@xxxxxxxxx>
> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@xxxxxxxxx>
LGTM,
Reviewed-by: Anshuman Gupta <anshuman.gupta@xxxxxxxxx>
> ---
>  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





[Index of Archives]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux