drm: Introduce per-device driver_features
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Thu, 13 Sep 2018 13:16:21 +0000 (16:16 +0300)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Thu, 13 Sep 2018 15:44:06 +0000 (18:44 +0300)
commit18ace11f87e69454379a3a1247a657b70ca142fc
tree570818abaa848dbd6811fec47b2f255d921e690f
parent169cc4c7a14e988985c8833ddec2f3e897de2c28
drm: Introduce per-device driver_features

We wish to control certain driver_features flags on a per-device basis
while still sharing a single drm_driver instance across all the
devices. To that end introduce device.driver_features. By default
it will be set to ~0 to not impose any limits beyond
driver.driver_features. Drivers can then clear specific flags
in the per-device bitmask to limit the capabilities of the device.

An alternative approach would be to copy the driver_features from
the driver into the device in drm_dev_init(), however that would
require verifying that no driver is currently changing
driver.driver_features after drm_dev_init(). Hence the ~0 apporach
was easier.

Ideally we'd also make drm_driver const but there is plenty of code
left that wants to mutate it (eg. various vfunc assignments). We'll
need to fix all that up before we can make it const.

And while at it fix up the type of the feature flag passed to
drm_core_check_feature().

v2: Streamline the && vs. & (Chris)
    s/int/u32/ in drm_core_check_feature() args

Cc: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180913131622.17690-1-ville.syrjala@linux.intel.com
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
drivers/gpu/drm/drm_drv.c
include/drm/drm_device.h
include/drm/drm_drv.h