[PATCH RFC 087/111] staging: etnaviv: align command stream size to 64 bit
Russell King - ARM Linux
linux at arm.linux.org.uk
Thu Apr 2 09:20:37 PDT 2015
On Thu, Apr 02, 2015 at 05:30:29PM +0200, Lucas Stach wrote:
> It is legal for the userspace to pass in a command stream of a size
> aligned to 32 bit, if that is where the last user command ends. The
> kernel then needs to insert a LINK command at the end of the stream,
> which needs to be aligned to 64 bit, so the kernel may insert an
> additional 32bits of padding in the stream. Align the stream size
> to account for that in the size and command stream validator checks.
>
> Signed-off-by: Lucas Stach <l.stach at pengutronix.de>
> ---
> drivers/staging/etnaviv/etnaviv_gem_submit.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/staging/etnaviv/etnaviv_gem_submit.c b/drivers/staging/etnaviv/etnaviv_gem_submit.c
> index 7bd4912ab8ad..965096be5219 100644
> --- a/drivers/staging/etnaviv/etnaviv_gem_submit.c
> +++ b/drivers/staging/etnaviv/etnaviv_gem_submit.c
> @@ -377,8 +377,11 @@ int etnaviv_ioctl_gem_submit(struct drm_device *dev, void *data,
>
> /*
> * We must have space to add a LINK command at the end of
> - * the command buffer.
> + * the command buffer. Align buffer size to the next 64bit
> + * quantity, as that's the point where we need to insert the
> + * next command.
> */
> + submit_cmd.size = ALIGN(submit_cmd.size, 8);
> max_size = etnaviv_obj->base.size - 8;
I wonder if it's an error if the command size is not a multiple of 8?
I know that the command stream is always aligned to 8 bytes for the 2D
cores, but I don't know about the 3D or VG cores.
--
FTTC broadband for 0.8mile line: currently at 10.5Mbps down 400kbps up
according to speedtest.net.
More information about the dri-devel
mailing list