Re: [PATCH] drm/i915/cnl: WaForceEnableNonCoherent

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

 



On Fri, Aug 25, 2017 at 09:13:18AM -0700, Oscar Mateo wrote:
> 
> 
> On 08/25/2017 12:41 AM, Michał Winiarski wrote:
> > On Thu, Aug 24, 2017 at 03:42:05PM -0700, Oscar Mateo wrote:
> > > 
> > > On 08/23/2017 03:02 PM, Rodrigo Vivi wrote:
> > > > Must Force Non-Coherent whenever executing a 3D context.
> > > > This is a workaround for a possible hang in the unlikely event
> > > >    a TLB invalidation occurs during a PSD flush.
> > > > Set masked bit 4 in 0x7300 during boot.
> > > This bug should not be present in HW anymore. A different reason to keep
> > > doing this is performance, though.
> > Doesn't userspace already has a choice between coherent and non-coherent access.
> > Why would we want to cheat, and force non-coherent when it clearly wants to use
> > coherent one?
> 
> But does it? I cannot find anything in i915 to allow userspace to flip this
> chicken bit (the register is not whitelisted and we don't have any execbuf
> flag/hint). Or am I missing something?

It's a hardware interface, not i915 interface.
See: IHD-OS-SKL-Vol7-05.16
Shared Functions -> Overview of memory accesses (Cache behavior) (page 144)
https://01.org/sites/default/files/documentation/intel-gfx-prm-osrc-skl-vol07-3d_media_gpgpu.pdf

The workaround is removing the ability to choose coherency model - even if
userspace is opting in for coherent path, the HW will use non-coherent one.

-Michał

> 
> > (well, because that's what we've been always doing is one reason, the other one
> > may be that "clearly" can sometimes turn out to be "by accident")
> > 
> > -Michał
> > 
> > > > Cc: Mika Kuoppala <mika.kuoppala@xxxxxxxxxxxxxxx>
> > > > Cc: Oscar Mateo <oscar.mateo@xxxxxxxxx>
> > > > Signed-off-by: Rodrigo Vivi <rodrigo.vivi@xxxxxxxxx>
> > > > ---
> > > >    drivers/gpu/drm/i915/intel_engine_cs.c | 5 ++++-
> > > >    1 file changed, 4 insertions(+), 1 deletion(-)
> > > > 
> > > > diff --git a/drivers/gpu/drm/i915/intel_engine_cs.c b/drivers/gpu/drm/i915/intel_engine_cs.c
> > > > index a6ac9d0a4156..7dfc78b038c4 100644
> > > > --- a/drivers/gpu/drm/i915/intel_engine_cs.c
> > > > +++ b/drivers/gpu/drm/i915/intel_engine_cs.c
> > > > @@ -1071,8 +1071,11 @@ static int cnl_init_workarounds(struct intel_engine_cs *engine)
> > > >    	int ret;
> > > >    	/* WaForceContextSaveRestoreNonCoherent:cnl */
> > > > +	/* WaForceEnableNonCoherent:cnl */
> > > >    	WA_SET_BIT_MASKED(CNL_HDC_CHICKEN0,
> > > > -			  HDC_FORCE_CONTEXT_SAVE_RESTORE_NON_COHERENT);
> > > > +			  HDC_FORCE_CONTEXT_SAVE_RESTORE_NON_COHERENT |
> > > > +			  HDC_FORCE_NON_COHERENT);
> > > > +
> > > >    	/* WaDisableReplayBufferBankArbitrationOptimization:cnl */
> > > >    	WA_SET_BIT_MASKED(COMMON_SLICE_CHICKEN2,
> > > _______________________________________________
> > > Intel-gfx mailing list
> > > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
> > > https://lists.freedesktop.org/mailman/listinfo/intel-gfx
> 
_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux