[Intel-gfx] [PATCH igt v2] lib: Skip aliased bsd ABI ring if bsd2 is available

Chris Wilson chris at chris-wilson.co.uk
Wed Feb 21 13:07:25 UTC 2018


Quoting Tvrtko Ursulin (2018-02-21 12:55:17)
> 
> On 21/02/2018 12:53, Tvrtko Ursulin wrote:
> > 
> > On 21/02/2018 12:17, Chris Wilson wrote:
> >> How much do I want this uABI to rot away? Say "Never again!" to implicit
> >> aliasing.
> >>
> >> In the meantime, we do not need to perform duplicate work on bsd2
> >> machines, as especially we do not know which engine bsd relates to.
> >>
> >> v2: When in doubt, shout!
> >>
> >> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> >> Cc: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
> >> ---
> >>   lib/ioctl_wrappers.c | 2 +-
> >>   1 file changed, 1 insertion(+), 1 deletion(-)
> >>
> >> diff --git a/lib/ioctl_wrappers.c b/lib/ioctl_wrappers.c
> >> index 8748cfcf..b9b86079 100644
> >> --- a/lib/ioctl_wrappers.c
> >> +++ b/lib/ioctl_wrappers.c
> >> @@ -1460,7 +1460,7 @@ bool gem_has_ring(int fd, unsigned ring)
> >>       /* silly ABI, the kernel thinks everyone who has BSD also has 
> >> BSD2 */
> >>       if ((ring & ~(3<<13)) == I915_EXEC_BSD) {
> >> -        if (ring & (3 << 13) && !gem_has_bsd2(fd))
> >> +        if (!(ring & (3 << 13)) ^ !gem_has_bsd2(fd))
> >>               return false;
> >>       }
> > 
> > If default BSD (1)
> >      and no BSD2 -> 1 ^ 1 = 1 OK
> 
> Oops
> 1 ^ 1 = 0 so also bad
> 
> >      and BSD2 -> 1 ^ 0 = 1 BAD
> > 
> > If explicit BSD (0)
> >      and no BSD2 -> 0 ^ 1 = 1 BAD
> >      has BSD2 -> 0 ^ 0 = 0 = BAD
> > 
> > Maybe I'm confused.. please simplify the statement? :)

return false?

default BSD ^ has-bsd2
0		0	-> 0 OK
0		1	-> 1 SKIP
1		0	-> 1 SKIP
1		1	-> 0 OK

So we only use bsd (implicit) on single BSD engine machines, and only
use bsd0,bsd1 (explicit) on dual engine machines.
-Chris


More information about the Intel-gfx mailing list