[Intel-gfx] [RFC v1] drm/i915: Add Exec param to control data port coherency.

Chris Wilson chris at chris-wilson.co.uk
Mon Mar 19 14:26:59 UTC 2018

Quoting Lis, Tomasz (2018-03-19 14:14:19)
> On 2018-03-19 13:43, Chris Wilson wrote:
> > Quoting Tomasz Lis (2018-03-19 12:37:35)
> >> The patch adds a parameter to control the data port coherency functionality
> >> on a per-exec call basis. When data port coherency flag value is different
> >> than what it was in previous call for the context, a command to switch data
> >> port coherency state is added before the buffer to be executed.
> > So this is part of the context? Why do it at exec level?
> It is part of the context, stored within HDC chicken bit register.
> The exec level was requested by the OCL team, due to concerns about 
> performance cost of context setparam calls.

What? Oh dear, oh dear, thrice oh dear. The context setparam would look

	if (arg != context->value) {
		rq = request_alloc(context, RCS);
		cs = ring_begin(rq, 4);
		cs++ = MI_LRI;
		cs++ = reg;
		cs++ = magic;
		cs++ = MI_NOOP;
		context->value = arg

The argument is whether stuffing it into a crowded, v.frequently
executed execbuf is better than an irregular setparam. If they want to
flip it on every batch, use execbuf. If it's going to be very
infrequent, setparam.

That discussion must be part of the rationale in the commitlog.

Otoh, execbuf3 would accept it as a command packet. Hmm.

> >   If exec level
> > is desired, why not whitelist it?
> If we have no issue in whitelisting the register, I'm sure OCL will 
> agree to that.
> I assumed the whitelisting will be unacceptable because of security 
> concerns with some options.
> The register also changes its position and content between gens, which 
> makes whitelisting hard to manage.
> Main purpose of chicken bit registers, in general, is to allow work 
> around for hardware features which couldĀ  be buggy or could have 
> unintended influence on the platform.
> The data port coherency functionality landed there for the same reasons; 
> then it twisted itself in a way that we now need user space to switch it.
> Is it really ok to whitelist chicken bit registers?

It all depends on whether it breaks segregation. If the only users
affected are themselves, fine. Otherwise, no.

More information about the Intel-gfx mailing list