Re: [PATCH v2] drm/i915/dgfx: Keep PCI autosuspend control 'on' by default on all dGPU

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

 




> -----Original Message-----
> From: Gupta, Anshuman <anshuman.gupta@xxxxxxxxx>
> Sent: Friday, October 14, 2022 5:03 PM
> To: intel-gfx@xxxxxxxxxxxxxxxxxxxxx
> Cc: joonas.lahtinen@xxxxxxxxxxxxxxx; tvrtko.ursulin@xxxxxxxxxxxxxxx; Auld,
> Matthew <matthew.auld@xxxxxxxxx>; Vivi, Rodrigo <rodrigo.vivi@xxxxxxxxx>;
> Gupta, Anshuman <anshuman.gupta@xxxxxxxxx>
> Subject: [PATCH v2] drm/i915/dgfx: Keep PCI autosuspend control 'on' by
> default on all dGPU
> 
> DGFX platforms has lmem and cpu can access the lmem objects via mmap and
> i915 internal i915_gem_object_pin_map() for
> i915 own usages. Both of these methods has pre-requisite requirement to keep
> GFX PCI endpoint in D0 for a supported iomem transaction over PCI link. (Refer
> PCIe specs 5.3.1.4.1)
> 
> Both DG1/DG2 have a known hardware bug that violates the PCIe specs and
> support the iomem read write transaction over PCIe bus despite endpoint is D3
> state.
> Due to above H/W bug, we had never observed any issue with i915 runtime PM
> versus lmem access.
> But this issue becomes visible when PCIe gfx endpoint's upstream bridge enters
> to D3, at this point any lmem read/write access will be returned as unsupported
> request. But again this issue is not observed on every platform because it has
> been observed on few host machines
> DG1/DG2 endpoint's upstream bridge does not bind with pcieport driver.
> which really disables the PCIe  power savings and leaves the bridge at D0 state.
> 
> We need a unique interface to read/write from lmem with runtime PM wakeref
> protection something similar to intel_uncore_{read, write}, keep autosuspend
> control to 'on' on all discrete platforms, until we have a unique interface to
> read/write from lmem.
> 
> This just change the default autosuspend setting of i915 on dGPU, user can still
> change it to 'auto'.
> 
> v2:
> - Modified the commit message and subject with more information.
> - Changed the Fixes tag to LMEM support commit. [Joonas]
> - Changed !HAS_LMEM() Cond to !IS_DGFX(). [Rodrigo]
> 
> Fixes: b908be543e44 ("drm/i915: support creating LMEM objects")
> Suggested-by: Rodrigo Vivi <rodrigo.vivi@xxxxxxxxx>
> Signed-off-by: Anshuman Gupta <anshuman.gupta@xxxxxxxxx>
Hi Rodrigo ,
I missed to add your conditional RB tag here.
I addressed all comments and changed the Fixes tag to b908be543e44 ("drm/i915: support creating LMEM objects")
CI is green, shall I use your RB and merge this tag if nobody else has any further review comment?
Thanks,
Anshuman.
> ---
>  drivers/gpu/drm/i915/intel_runtime_pm.c | 11 +++++++++--
>  1 file changed, 9 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_runtime_pm.c
> b/drivers/gpu/drm/i915/intel_runtime_pm.c
> index 6ed5786bcd29..744cca507946 100644
> --- a/drivers/gpu/drm/i915/intel_runtime_pm.c
> +++ b/drivers/gpu/drm/i915/intel_runtime_pm.c
> @@ -591,8 +591,15 @@ void intel_runtime_pm_enable(struct
> intel_runtime_pm *rpm)
>  		pm_runtime_use_autosuspend(kdev);
>  	}
> 
> -	/* Enable by default */
> -	pm_runtime_allow(kdev);
> +	/*
> +	 *  FIXME: Temp hammer to keep autosupend disable on lmem
> supported platforms.
> +	 *  As per PCIe specs 5.3.1.4.1, all iomem read write request over a PCIe
> +	 *  function will be unsupported in case PCIe endpoint function is in D3.
> +	 *  Let's keep i915 autosuspend control 'on' till we fix all known issue
> +	 *  with lmem access in D3.
> +	 */
> +	if (!IS_DGFX(i915))
> +		pm_runtime_allow(kdev);
> 
>  	/*
>  	 * The core calls the driver load handler with an RPM reference held.
> --
> 2.25.1





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

  Powered by Linux