[igt-dev] [PATCH i-g-t 1/7] lib/gem_submission: Add kernel exec object alignment capability

Zbigniew Kempczyński zbigniew.kempczynski at intel.com
Wed Oct 13 05:27:45 UTC 2021


On Tue, Oct 12, 2021 at 09:47:18PM -0700, Dixit, Ashutosh wrote:
> On Thu, 07 Oct 2021 23:54:26 -0700, Zbigniew Kempczyński wrote:
> >
> > +bool gem_allows_passing_alignment(int fd)
> > +{
> > +	struct drm_i915_gem_exec_object2 obj = {
> > +		.handle = gem_create(fd, 4096),
> > +	};
> > +	struct drm_i915_gem_execbuffer2 execbuf = {
> > +		.buffers_ptr = to_user_pointer(&obj),
> > +		.buffer_count = 1,
> > +	};
> > +	bool ret;
> > +	const uint32_t bbe = MI_BATCH_BUFFER_END;
> > +
> > +	gem_write(fd, obj.handle, 0, &bbe, sizeof(bbe));
> > +	gem_execbuf(fd, &execbuf);
> > +
> > +	obj.alignment = 0x2000;
> 
> 8K? Shouldn't this be less than 4K?

I'm not sure how kernel check will look like so positive value larger
than 4K is sane for me. For example if in the kernel we will have:

if (entry->alignment != 0 && entry->alignment != 0x1000)
	return -EINVAL;

checking with 0x1000 would give me kernel supports alignment what
is not true. I'm saying I'm not sure because there's no patch 
kernel which land upstream yet. My trybot patch is in:

https://patchwork.freedesktop.org/series/95087/

but there's only generation check. 

--
Zbigniew

> 
> > +	ret = __gem_execbuf(fd, &execbuf) == 0;
> > +	gem_close(fd, obj.handle);
> > +
> > +	return ret;
> > +}


More information about the igt-dev mailing list