[Intel-gfx] [PATCH v2 1/1] drm/i915/mtl: Disable MC6 for MTL A step

Gupta, Anshuman anshuman.gupta at intel.com
Mon Mar 13 13:57:17 UTC 2023



> -----Original Message-----
> From: Intel-gfx <intel-gfx-bounces at lists.freedesktop.org> On Behalf Of
> Rodrigo Vivi
> Sent: Friday, March 10, 2023 4:43 PM
> To: Nilawar, Badal <badal.nilawar at intel.com>
> Cc: Germano, Gregory F <gregory.f.germano at intel.com>; intel-
> gfx at lists.freedesktop.org; Nandamuri, Srikanth
> <srikanth.nandamuri at intel.com>; Chilmakuru, Hima B
> <hima.b.chilmakuru at intel.com>
> Subject: Re: [Intel-gfx] [PATCH v2 1/1] drm/i915/mtl: Disable MC6 for MTL A
> step
> 
> On Fri, Mar 10, 2023 at 11:43:39AM +0530, Badal Nilawar wrote:
> > The Wa_14017073508 require to send Media Busy/Idle mailbox while
> > accessing Media tile. As of now it is getting handled while
> > __gt_unpark, __gt_park. But there are various corner cases where
> > forcewakes are taken without __gt_unpark i.e. without sending Busy
> > Mailbox especially during register reads. Forcewakes are taken without
> > busy mailbox leads to GPU HANG. So bringing mailbox calls under
> > forcewake calls are no feasible option as forcewake calls are atomic and
> mailbox calls are blocking.
> > The issue already fixed in B step so disabling MC6 on A step and
> > reverting previous commit which handles Wa_14017073508
> >
> > Fixes: 8f70f1ec587d ("drm/i915/mtl: Add Wa_14017073508 for SAMedia")
> > Cc: Rodrigo Vivi <rodrigo.vivi at intel.com>
> > Signed-off-by: Badal Nilawar <badal.nilawar at intel.com>
> > Reviewed-by: Rodrigo Vivi <rodrigo.vivi at intel.com>
> 
> Reviewed-by: Rodrigo Vivi <rodrigo.vivi at intel.com>
> 
> I confirm my rv-b here although this came from a combination of 2 patches
> and has a different msg.
> 
> However, depending on when we got the CI results back I won't be available
> for pushing it and I will be out next week. I hope another committer can push
> this to drm-intel-gt-next.
Pushed to drm-intel-gt-next.
Thanks for patch and Review.
Br,
Anshuman Gupta.
> 
> BTW, no need for cover letter in single patches.
> 
> Thanks for the patch,
> Rodrigo.
> 
> > ---
> >  drivers/gpu/drm/i915/gt/intel_gt_pm.c     | 27 -----------------------
> >  drivers/gpu/drm/i915/gt/intel_rc6.c       |  8 +++++++
> >  drivers/gpu/drm/i915/gt/uc/intel_guc_rc.c | 13 +----------
> >  drivers/gpu/drm/i915/i915_reg.h           |  9 --------
> >  4 files changed, 9 insertions(+), 48 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/gt/intel_gt_pm.c
> > b/drivers/gpu/drm/i915/gt/intel_gt_pm.c
> > index 85ae7dc079f2..e02cb90723ae 100644
> > --- a/drivers/gpu/drm/i915/gt/intel_gt_pm.c
> > +++ b/drivers/gpu/drm/i915/gt/intel_gt_pm.c
> > @@ -20,31 +20,10 @@
> >  #include "intel_rc6.h"
> >  #include "intel_rps.h"
> >  #include "intel_wakeref.h"
> > -#include "intel_pcode.h"
> >  #include "pxp/intel_pxp_pm.h"
> >
> >  #define I915_GT_SUSPEND_IDLE_TIMEOUT (HZ / 2)
> >
> > -static void mtl_media_busy(struct intel_gt *gt) -{
> > -	/* Wa_14017073508: mtl */
> > -	if (IS_MTL_GRAPHICS_STEP(gt->i915, P, STEP_A0, STEP_B0) &&
> > -	    gt->type == GT_MEDIA)
> > -		snb_pcode_write_p(gt->uncore, PCODE_MBOX_GT_STATE,
> > -				  PCODE_MBOX_GT_STATE_MEDIA_BUSY,
> > -
> PCODE_MBOX_GT_STATE_DOMAIN_MEDIA, 0);
> > -}
> > -
> > -static void mtl_media_idle(struct intel_gt *gt) -{
> > -	/* Wa_14017073508: mtl */
> > -	if (IS_MTL_GRAPHICS_STEP(gt->i915, P, STEP_A0, STEP_B0) &&
> > -	    gt->type == GT_MEDIA)
> > -		snb_pcode_write_p(gt->uncore, PCODE_MBOX_GT_STATE,
> > -
> PCODE_MBOX_GT_STATE_MEDIA_NOT_BUSY,
> > -
> PCODE_MBOX_GT_STATE_DOMAIN_MEDIA, 0);
> > -}
> > -
> >  static void user_forcewake(struct intel_gt *gt, bool suspend)  {
> >  	int count = atomic_read(&gt->user_wakeref); @@ -92,9 +71,6 @@
> static
> > int __gt_unpark(struct intel_wakeref *wf)
> >
> >  	GT_TRACE(gt, "\n");
> >
> > -	/* Wa_14017073508: mtl */
> > -	mtl_media_busy(gt);
> > -
> >  	/*
> >  	 * It seems that the DMC likes to transition between the DC states a
> lot
> >  	 * when there are no connected displays (no active power domains)
> > during @@ -144,9 +120,6 @@ static int __gt_park(struct intel_wakeref
> *wf)
> >  	GEM_BUG_ON(!wakeref);
> >  	intel_display_power_put_async(i915, POWER_DOMAIN_GT_IRQ,
> wakeref);
> >
> > -	/* Wa_14017073508: mtl */
> > -	mtl_media_idle(gt);
> > -
> >  	return 0;
> >  }
> >
> > diff --git a/drivers/gpu/drm/i915/gt/intel_rc6.c
> > b/drivers/gpu/drm/i915/gt/intel_rc6.c
> > index 5c91622dfca4..f4150f61f39c 100644
> > --- a/drivers/gpu/drm/i915/gt/intel_rc6.c
> > +++ b/drivers/gpu/drm/i915/gt/intel_rc6.c
> > @@ -486,6 +486,7 @@ static bool bxt_check_bios_rc6_setup(struct
> > intel_rc6 *rc6)  static bool rc6_supported(struct intel_rc6 *rc6)  {
> >  	struct drm_i915_private *i915 = rc6_to_i915(rc6);
> > +	struct intel_gt *gt = rc6_to_gt(rc6);
> >
> >  	if (!HAS_RC6(i915))
> >  		return false;
> > @@ -502,6 +503,13 @@ static bool rc6_supported(struct intel_rc6 *rc6)
> >  		return false;
> >  	}
> >
> > +	if (IS_MTL_MEDIA_STEP(gt->i915, STEP_A0, STEP_B0) &&
> > +	    gt->type == GT_MEDIA) {
> > +		drm_notice(&i915->drm,
> > +			   "Media RC6 disabled on A step\n");
> > +		return false;
> > +	}
> > +
> >  	return true;
> >  }
> >
> > diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_rc.c
> > b/drivers/gpu/drm/i915/gt/uc/intel_guc_rc.c
> > index fcf51614f9a4..1adec6de223c 100644
> > --- a/drivers/gpu/drm/i915/gt/uc/intel_guc_rc.c
> > +++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_rc.c
> > @@ -12,20 +12,9 @@
> >
> >  static bool __guc_rc_supported(struct intel_guc *guc)  {
> > -	struct intel_gt *gt = guc_to_gt(guc);
> > -
> > -	/*
> > -	 * Wa_14017073508: mtl
> > -	 * Do not enable gucrc to avoid additional interrupts which
> > -	 * may disrupt pcode wa.
> > -	 */
> > -	if (IS_MTL_GRAPHICS_STEP(gt->i915, P, STEP_A0, STEP_B0) &&
> > -	    gt->type == GT_MEDIA)
> > -		return false;
> > -
> >  	/* GuC RC is unavailable for pre-Gen12 */
> >  	return guc->submission_supported &&
> > -		GRAPHICS_VER(gt->i915) >= 12;
> > +		GRAPHICS_VER(guc_to_gt(guc)->i915) >= 12;
> >  }
> >
> >  static bool __guc_rc_selected(struct intel_guc *guc) diff --git
> > a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> > index b9b6d46dfe1b..9db6b3f06a74 100644
> > --- a/drivers/gpu/drm/i915/i915_reg.h
> > +++ b/drivers/gpu/drm/i915/i915_reg.h
> > @@ -6460,15 +6460,6 @@
> >  /*   XEHP_PCODE_FREQUENCY_CONFIG param2 */
> >  #define     PCODE_MBOX_DOMAIN_NONE		0x0
> >  #define     PCODE_MBOX_DOMAIN_MEDIAFF		0x3
> > -
> > -/* Wa_14017210380: mtl */
> > -#define   PCODE_MBOX_GT_STATE			0x50
> > -/* sub-commands (param1) */
> > -#define     PCODE_MBOX_GT_STATE_MEDIA_BUSY	0x1
> > -#define     PCODE_MBOX_GT_STATE_MEDIA_NOT_BUSY	0x2
> > -/* param2 */
> > -#define     PCODE_MBOX_GT_STATE_DOMAIN_MEDIA	0x1
> > -
> >  #define GEN6_PCODE_DATA
> 	_MMIO(0x138128)
> >  #define   GEN6_PCODE_FREQ_IA_RATIO_SHIFT	8
> >  #define   GEN6_PCODE_FREQ_RING_RATIO_SHIFT	16
> > --
> > 2.25.1
> >


More information about the Intel-gfx mailing list