[PATCH 13/18] drm/i915/guc: Relax CTB response timeout
Matthew Brost
matthew.brost at intel.com
Wed May 26 17:38:08 UTC 2021
On Wed, May 26, 2021 at 02:25:26PM +0200, Michal Wajdeczko wrote:
>
>
> On 26.05.2021 08:42, Matthew Brost wrote:
> > From: Michal Wajdeczko <michal.wajdeczko at intel.com>
> >
> > In upcoming patch we will allow more CTB requests to be sent in
> > parallel to the GuC for processing, so we shouldn't assume any more
> > that GuC will always reply without 10ms.
> >
> > Use bigger value from CONFIG_DRM_I915_GUC_CTB_TIMEOUT instead.
> >
> > v2: Add CONFIG_DRM_I915_GUC_CTB_TIMEOUT config option
> >
> > Signed-off-by: Michal Wajdeczko <michal.wajdeczko at intel.com>
> > Signed-off-by: Matthew Brost <matthew.brost at intel.com>
> > Reviewed-by: Matthew Brost <matthew.brost at intel.com>
> > ---
> > drivers/gpu/drm/i915/Kconfig.profile | 9 +++++++++
> > drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c | 5 ++++-
> > 2 files changed, 13 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/gpu/drm/i915/Kconfig.profile b/drivers/gpu/drm/i915/Kconfig.profile
> > index 39328567c200..68ac707755d2 100644
> > --- a/drivers/gpu/drm/i915/Kconfig.profile
> > +++ b/drivers/gpu/drm/i915/Kconfig.profile
> > @@ -38,6 +38,15 @@ config DRM_I915_USERFAULT_AUTOSUSPEND
> > May be 0 to disable the extra delay and solely use the device level
> > runtime pm autosuspend delay tunable.
> >
> > +config DRM_I915_GUC_CTB_TIMEOUT
> > + int "How long to wait for the GuC to make forward progress on CTBs (ms)"
>
> maybe worth to provide here explicit allowed range:
>
> range 10 60000
>
> and then we can skip runtime adjustment for minimum 10ms timeout
Didn't know this option, done.
>
> > + default 1500 # milliseconds
> > + help
> > + Configures the default timeout waiting for GuC the to make forward
> > + progress on CTBs. e.g. Waiting for a response to requeset.
>
> typo
>
Fixed.
Matt
> > +
> > + A minimum value of 10 ms is allowed.
> > +
> > config DRM_I915_HEARTBEAT_INTERVAL
> > int "Interval between heartbeat pulses (ms)"
> > default 2500 # milliseconds
> > diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c b/drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c
> > index 916c2b80c841..5b0dece7a7cd 100644
> > --- a/drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c
> > +++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c
> > @@ -436,6 +436,7 @@ static int ct_write(struct intel_guc_ct *ct,
> > */
> > static int wait_for_ct_request_update(struct ct_request *req, u32 *status)
> > {
> > + long timeout;
> > int err;
> >
> > /*
> > @@ -443,10 +444,12 @@ static int wait_for_ct_request_update(struct ct_request *req, u32 *status)
> > * up to that length of time, then switch to a slower sleep-wait loop.
> > * No GuC command should ever take longer than 10ms.
> > */
> > + timeout = max(10, CONFIG_DRM_I915_GUC_CTB_TIMEOUT);
> > +
> > #define done INTEL_GUC_MSG_IS_RESPONSE(READ_ONCE(req->status))
> > err = wait_for_us(done, 10);
> > if (err)
> > - err = wait_for(done, 10);
> > + err = wait_for(done, timeout);
> > #undef done
> >
> > if (unlikely(err))
> >
More information about the dri-devel
mailing list