Indeed, we argued at first to let the driver handle the ioctls directly, but we would like to use the DRM interface if possible.
On Mon, Sep 4, 2017 at 6:26 PM, Chris Wilson chris@chris-wilson.co.uk wrote:
Quoting Marius Vlad (2017-09-04 16:16:41)
From: Marius Vlad marius.vlad0@gmail.com
Currently driver-specific ioctls have to be declared static and are
confined to
DRM core driver. This patch series provides the means to remove those
constrains
and allow to register driver-specific ioctls dynamically by keeping a
list of
registered ioctls in struct drm_driver, then each component of the
driver can
then register its own specific ioctls using this interface.
The driver must assign ioctl_register/ioctl_deregister in its drm_driver structure in order to make use of it.
While SoC drivers benefit the most from this approach (by not polluting
DRM core
driver and allowing sub drivers to implement and register driver-specific ioctls dynamically), further patches shows how easy is to convert
drm/i915 to
this approach by registering GEM and perf ioctls separately.
Why?
You do not have to use drm_ioctl directly... Avoiding it would reduce our ioctl overhead considerably, for example reducing busy_ioctl from around 110ns to around 45ns. -Chris