RFC on upstreaming of a Mediatek DRM modesetting driver

Jerome Glisse j.glisse at gmail.com
Mon Dec 1 07:32:37 PST 2014


On Mon, Dec 01, 2014 at 10:01:37AM +0000, Frank Binns wrote:
> Hi,
> 
> We are currently in negotiations with one of our customers (Mediatek) on a
> strategy that will allow them to push a DRM modesetting driver into the
> upstream kernel. We are writing to get people's opinions and feedback on
> our proposed approach.
> 
> Currently, our driver is structured in such a way that the display driver
> is more tightly integrated with the GPU driver than we would like. Although
> our kernel driver has been shipped with a GPL license for a long time, it
> is not in a form that would be considered acceptable upstream. Unfortunately,
> it is going to be a long process to get this part of the driver into a
> reasonable state. However, in the meantime, we don't want to prevent customer
> portions of the driver from being upstreamed. With the work done on recent
> kernels, and with a willing partner in Mediatek, we now think that we can
> restructure our driver in such a way as to allow this to happen.
> 
> We see two basic approaches to achieving this:
> 1) Two independent DRM drivers, i.e. modesetting and render node drivers
> 2) A single componentised DRM driver
> 
> Our (IMG's) preferred approach is to have a single componentised DRM driver.
> This is due to the following reasons:
> 
> - Existing user space is not fully prepared to handle render nodes.
> 
> - There is concern that any IMG DRM render node driver will need knowledge
>   about multiple SoCs, each one being from a different vendor. Would this
>   be deemed acceptable?
> 
> - There is a trend, at least for DRM SoC drivers, towards using the component
>   interface. Although there appears to be very few (one?) examples of GPU
>   component drivers.
> 
> To give some high level details on how we expect the componentised DRM driver
> model to work, each vendor (in this case Mediatek) will write their own DRM
> driver (supporting modesetting, dumb buffers, GEM, prime, etc) and IMG will
> provide an almost entirely independent component driver that adds in GPU
> support. Until our GPU driver is in a suitable state this will most likely
> necessitate a small kernel patch to wire up support, e.g. GPU specific ioctls.
> 
> Cross-device and cross-process memory allocations will be made using the DRM
> driver. In order for this memory to be shared with the GPU component driver
> it will be necessary, at least for the time being, to export it via prime and
> import it via a GPU ioctl. Synchronisation between the display and GPU will be
> performed via reservation objects.
> 
> Does this sound like a sane approach? Questions and/or feedback is very welcome.

Writting a standalone KMS only drm driver for the whole modesetting side is fine.
So is using DMA buffer to export/import buffer btw your KMS driver and your
accel providing driver (two separate standalone driver). As long as you do not do
anything as ugly as IMG have done in the past in which they hook up inside each
drm driver and add there own set of ioctl on top.

A side note is that any IMG driver can not be accepted without open source user
space and also a proper design. AFAICT current IMG driver design is unsuited for
upstream given how unsecure it is. My understanding of it is that it's very easy
for userspace to use IMG to read/write to any system memory.

So frankly i do not expect anything on the IMG side to be worth troubling us with
as long as there is no open source userspace and proper secure driver design.

Cheers,
Jérôme

> 
> Thanks
> Frank 


More information about the dri-devel mailing list