[PATCH] drm/xe/pm: add debug logs for D3cold

Nilawar, Badal badal.nilawar at intel.com
Tue Feb 6 08:44:18 UTC 2024



On 06-02-2024 11:29, Riana Tauro wrote:
> add additional debug logs for PME# capability and
^Add
> presence of ACPI _PR3 resources. This is to identify
> the reason why the card is not capable of D3cold.
> 
> No functional changes
> 
> Signed-off-by: Riana Tauro <riana.tauro at intel.com>
Reviewed-by: Badal Nilawar <badal.nilawar at intel.com>
> ---
>   drivers/gpu/drm/xe/xe_pm.c | 19 +++++++++++++------
>   1 file changed, 13 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_pm.c b/drivers/gpu/drm/xe/xe_pm.c
> index d5f219796d7e..3d55ff77f7c3 100644
> --- a/drivers/gpu/drm/xe/xe_pm.c
> +++ b/drivers/gpu/drm/xe/xe_pm.c
> @@ -125,17 +125,26 @@ int xe_pm_resume(struct xe_device *xe)
>   	return 0;
>   }
>   
> -static bool xe_pm_pci_d3cold_capable(struct pci_dev *pdev)
> +static bool xe_pm_pci_d3cold_capable(struct xe_device *xe)
>   {
> +	struct pci_dev *pdev = to_pci_dev(xe->drm.dev);
>   	struct pci_dev *root_pdev;
>   
>   	root_pdev = pcie_find_root_port(pdev);
>   	if (!root_pdev)
>   		return false;
>   
> -	/* D3Cold requires PME capability and _PR3 power resource */
> -	if (!pci_pme_capable(root_pdev, PCI_D3cold) || !pci_pr3_present(root_pdev))
> +	/* D3Cold requires PME capability */
> +	if (!pci_pme_capable(root_pdev, PCI_D3cold)) {
> +		drm_dbg(&xe->drm, "d3cold: PME# not supported\n");
>   		return false;
> +	}
> +
> +	/* D3Cold requires _PR3 power resource */
> +	if (!pci_pr3_present(root_pdev)) {
> +		drm_dbg(&xe->drm, "d3cold: ACPI _PR3 not present\n");
> +		return false;
> +	}
>   
>   	return true;
>   }
> @@ -171,15 +180,13 @@ void xe_pm_init_early(struct xe_device *xe)
>   
>   void xe_pm_init(struct xe_device *xe)
>   {
> -	struct pci_dev *pdev = to_pci_dev(xe->drm.dev);
> -
>   	/* For now suspend/resume is only allowed with GuC */
>   	if (!xe_device_uc_enabled(xe))
>   		return;
>   
>   	drmm_mutex_init(&xe->drm, &xe->d3cold.lock);
>   
> -	xe->d3cold.capable = xe_pm_pci_d3cold_capable(pdev);
> +	xe->d3cold.capable = xe_pm_pci_d3cold_capable(xe);
>   
>   	if (xe->d3cold.capable) {
>   		xe_device_sysfs_init(xe);


More information about the Intel-xe mailing list