[PATCH RFC 087/111] staging: etnaviv: align command stream size to 64 bit

Lucas Stach l.stach at pengutronix.de
Thu Apr 2 09:49:09 PDT 2015


Am Donnerstag, den 02.04.2015, 17:45 +0100 schrieb Russell King - ARM
Linux:
> On Thu, Apr 02, 2015 at 06:29:24PM +0200, Lucas Stach wrote:
> > The start of the commands must always be 64bit aligned, it's the same
> > for all pipes. The size can be dword aligned if the last command in the
> > stream is something like SET_STATE with a length of 2. In that case one
> > needs to insert another padding dword, but as it's the end of the stream
> > userspace may omit that.
> > 
> > So that more a question of policy: do we want userspace to always
> > specify the size including the padding and reject streams with a size
> > not double-dword aligned, or do we just fix it up in the kernel, as it's
> > equally easily done there. I was a bit on the fence here and decided to
> > go the "let the kernel fix things" route.
> 
> Without really knowing the hardware, it's hard to say.  However, they
> seem to be designed around a 64-bit architecture, and I would not be
> surprised if the front end DMA always fetches from the command buffer
> in 64-bit quantities.
> 
> You mention SET_STATE, but the same applies to NOP, WAIT and all of the
> other commands for the 2D cores - the command word must always be in
> the first 32-bits of each 64-bit naturally aligned word in memory.
> 
> Given that, my feeling (and it's only a feeling) is that it would be
> potentially dangerous to allow userspace to pass a buffer which isn't
> aligned.  As you've found, the kernel would have to align the buffer
> size up to a 64-bit quantity to add the LINK command at the end anyway.
> 
> So, I would err on the side of having userspace always do that, and
> we initially enforce that on the kernel side.  If we find that's too
> strict, we can always relax the kernel side - and we still remain
> compatible with userspace.  If we do the reverse, it's harder for the
> kernel to become more strict without breaking userspace.  Given the
> "no regressions" rule, that's something we all want to avoid. :)
> 
Yes, seems reasonable. I'll change this to just reject non 64bit aligned
sizes and change my userspace accordingly.

Thanks,
Lucas
-- 
Pengutronix e.K.             | Lucas Stach                 |
Industrial Linux Solutions   | http://www.pengutronix.de/  |



More information about the dri-devel mailing list