[PATCH v2 6/6] drm: Separate DRIVER_MODESET and DRIVER_LEGACY
On Fri, Jun 24, 2016 at 06:15:20PM +0100, Frank Binns wrote: > Support non-legacy drivers without mode-setting functionality by using > the new DRIVER_LEGACY feature to separate out legacy code, rather than > relying on DRIVER_MODESET not being advertised. > > Signed-off-by: Thierry Reding > > v2: > - Rebase > - Change a few more places to check against DRIVER_LEGACY > - Move a core check > > Signed-off-by: Frank Binns There's no reason at all to have both DRIVER_LEGACY and DRIVER_MODESET, since DRIVER_MODESET really only means "not a legacy horror show". There's 0 harm at all in registering a render-only driver as DRIVER_MODESET. The upshot of a 1:1 replacement is then that you can do it using coccinelle, which makes it a lot easier to review. -Daniel > --- > drivers/gpu/drm/drm_bufs.c| 22 +++--- > drivers/gpu/drm/drm_context.c | 24 > drivers/gpu/drm/drm_dma.c | 4 ++-- > drivers/gpu/drm/drm_fops.c| 10 ++ > drivers/gpu/drm/drm_ioctl.c | 4 ++-- > drivers/gpu/drm/drm_irq.c | 14 +++--- > drivers/gpu/drm/drm_lock.c| 4 ++-- > drivers/gpu/drm/drm_pci.c | 10 +- > drivers/gpu/drm/drm_scatter.c | 6 +++--- > 9 files changed, 50 insertions(+), 48 deletions(-) > > diff --git a/drivers/gpu/drm/drm_bufs.c b/drivers/gpu/drm/drm_bufs.c > index c3a12cd..3219151 100644 > --- a/drivers/gpu/drm/drm_bufs.c > +++ b/drivers/gpu/drm/drm_bufs.c > @@ -397,7 +397,7 @@ int drm_legacy_addmap_ioctl(struct drm_device *dev, void > *data, > return -EPERM; > > if (!drm_core_check_feature(dev, DRIVER_KMS_LEGACY_CONTEXT) && > - drm_core_check_feature(dev, DRIVER_MODESET)) > + !drm_core_check_feature(dev, DRIVER_LEGACY)) > return -EINVAL; > > err = drm_addmap_core(dev, map->offset, map->size, map->type, > @@ -443,7 +443,7 @@ int drm_legacy_getmap_ioctl(struct drm_device *dev, void > *data, > int i; > > if (!drm_core_check_feature(dev, DRIVER_KMS_LEGACY_CONTEXT) && > - drm_core_check_feature(dev, DRIVER_MODESET)) > + !drm_core_check_feature(dev, DRIVER_LEGACY)) > return -EINVAL; > > idx = map->offset; > @@ -545,7 +545,7 @@ EXPORT_SYMBOL(drm_legacy_rmmap_locked); > void drm_legacy_rmmap(struct drm_device *dev, struct drm_local_map *map) > { > if (!drm_core_check_feature(dev, DRIVER_KMS_LEGACY_CONTEXT) && > - drm_core_check_feature(dev, DRIVER_MODESET)) > + !drm_core_check_feature(dev, DRIVER_LEGACY)) > return; > > mutex_lock(>struct_mutex); > @@ -558,7 +558,7 @@ void drm_legacy_master_rmmaps(struct drm_device *dev, > struct drm_master *master) > { > struct drm_map_list *r_list, *list_temp; > > - if (drm_core_check_feature(dev, DRIVER_MODESET)) > + if (!drm_core_check_feature(dev, DRIVER_LEGACY)) > return; > > mutex_lock(>struct_mutex); > @@ -595,7 +595,7 @@ int drm_legacy_rmmap_ioctl(struct drm_device *dev, void > *data, > int ret; > > if (!drm_core_check_feature(dev, DRIVER_KMS_LEGACY_CONTEXT) && > - drm_core_check_feature(dev, DRIVER_MODESET)) > + !drm_core_check_feature(dev, DRIVER_LEGACY)) > return -EINVAL; > > mutex_lock(>struct_mutex); > @@ -1220,7 +1220,7 @@ int drm_legacy_addbufs(struct drm_device *dev, void > *data, > struct drm_buf_desc *request = data; > int ret; > > - if (drm_core_check_feature(dev, DRIVER_MODESET)) > + if (!drm_core_check_feature(dev, DRIVER_LEGACY)) > return -EINVAL; > > if (!drm_core_check_feature(dev, DRIVER_HAVE_DMA)) > @@ -1266,7 +1266,7 @@ int drm_legacy_infobufs(struct drm_device *dev, void > *data, > int i; > int count; > > - if (drm_core_check_feature(dev, DRIVER_MODESET)) > + if (!drm_core_check_feature(dev, DRIVER_LEGACY)) > return -EINVAL; > > if (!drm_core_check_feature(dev, DRIVER_HAVE_DMA)) > @@ -1347,7 +1347,7 @@ int drm_legacy_markbufs(struct drm_device *dev, void > *data, > int order; > struct drm_buf_entry *entry; > > - if (drm_core_check_feature(dev, DRIVER_MODESET)) > + if (!drm_core_check_feature(dev, DRIVER_LEGACY)) > return -EINVAL; > > if (!drm_core_check_feature(dev, DRIVER_HAVE_DMA)) > @@ -1395,7 +1395,7 @@ int drm_legacy_freebufs(struct drm_device *dev, void > *data, > int idx; > struct drm_buf *buf; > > - if (drm_core_check_feature(dev, DRIVER_MODESET)) > + if (!drm_core_check_feature(dev, DRIVER_LEGACY)) > return -EINVAL; > > if (!drm_core_check_feature(dev, DRIVER_HAVE_DMA)) > @@ -1450,7 +1450,7 @@ int drm_legacy_mapbufs(struct drm_device *dev, void > *data, > struct drm_buf_map *request = data; > int i; > > - if (drm_core_check_feature(dev, DRIVER_MODESET)) > + if (!drm_core_check_feature(dev, DRIVER_LEGACY)) >
[PATCH v2 6/6] drm: Separate DRIVER_MODESET and DRIVER_LEGACY
Support non-legacy drivers without mode-setting functionality by using the new DRIVER_LEGACY feature to separate out legacy code, rather than relying on DRIVER_MODESET not being advertised. Signed-off-by: Thierry Reding v2: - Rebase - Change a few more places to check against DRIVER_LEGACY - Move a core check Signed-off-by: Frank Binns --- drivers/gpu/drm/drm_bufs.c| 22 +++--- drivers/gpu/drm/drm_context.c | 24 drivers/gpu/drm/drm_dma.c | 4 ++-- drivers/gpu/drm/drm_fops.c| 10 ++ drivers/gpu/drm/drm_ioctl.c | 4 ++-- drivers/gpu/drm/drm_irq.c | 14 +++--- drivers/gpu/drm/drm_lock.c| 4 ++-- drivers/gpu/drm/drm_pci.c | 10 +- drivers/gpu/drm/drm_scatter.c | 6 +++--- 9 files changed, 50 insertions(+), 48 deletions(-) diff --git a/drivers/gpu/drm/drm_bufs.c b/drivers/gpu/drm/drm_bufs.c index c3a12cd..3219151 100644 --- a/drivers/gpu/drm/drm_bufs.c +++ b/drivers/gpu/drm/drm_bufs.c @@ -397,7 +397,7 @@ int drm_legacy_addmap_ioctl(struct drm_device *dev, void *data, return -EPERM; if (!drm_core_check_feature(dev, DRIVER_KMS_LEGACY_CONTEXT) && - drm_core_check_feature(dev, DRIVER_MODESET)) + !drm_core_check_feature(dev, DRIVER_LEGACY)) return -EINVAL; err = drm_addmap_core(dev, map->offset, map->size, map->type, @@ -443,7 +443,7 @@ int drm_legacy_getmap_ioctl(struct drm_device *dev, void *data, int i; if (!drm_core_check_feature(dev, DRIVER_KMS_LEGACY_CONTEXT) && - drm_core_check_feature(dev, DRIVER_MODESET)) + !drm_core_check_feature(dev, DRIVER_LEGACY)) return -EINVAL; idx = map->offset; @@ -545,7 +545,7 @@ EXPORT_SYMBOL(drm_legacy_rmmap_locked); void drm_legacy_rmmap(struct drm_device *dev, struct drm_local_map *map) { if (!drm_core_check_feature(dev, DRIVER_KMS_LEGACY_CONTEXT) && - drm_core_check_feature(dev, DRIVER_MODESET)) + !drm_core_check_feature(dev, DRIVER_LEGACY)) return; mutex_lock(>struct_mutex); @@ -558,7 +558,7 @@ void drm_legacy_master_rmmaps(struct drm_device *dev, struct drm_master *master) { struct drm_map_list *r_list, *list_temp; - if (drm_core_check_feature(dev, DRIVER_MODESET)) + if (!drm_core_check_feature(dev, DRIVER_LEGACY)) return; mutex_lock(>struct_mutex); @@ -595,7 +595,7 @@ int drm_legacy_rmmap_ioctl(struct drm_device *dev, void *data, int ret; if (!drm_core_check_feature(dev, DRIVER_KMS_LEGACY_CONTEXT) && - drm_core_check_feature(dev, DRIVER_MODESET)) + !drm_core_check_feature(dev, DRIVER_LEGACY)) return -EINVAL; mutex_lock(>struct_mutex); @@ -1220,7 +1220,7 @@ int drm_legacy_addbufs(struct drm_device *dev, void *data, struct drm_buf_desc *request = data; int ret; - if (drm_core_check_feature(dev, DRIVER_MODESET)) + if (!drm_core_check_feature(dev, DRIVER_LEGACY)) return -EINVAL; if (!drm_core_check_feature(dev, DRIVER_HAVE_DMA)) @@ -1266,7 +1266,7 @@ int drm_legacy_infobufs(struct drm_device *dev, void *data, int i; int count; - if (drm_core_check_feature(dev, DRIVER_MODESET)) + if (!drm_core_check_feature(dev, DRIVER_LEGACY)) return -EINVAL; if (!drm_core_check_feature(dev, DRIVER_HAVE_DMA)) @@ -1347,7 +1347,7 @@ int drm_legacy_markbufs(struct drm_device *dev, void *data, int order; struct drm_buf_entry *entry; - if (drm_core_check_feature(dev, DRIVER_MODESET)) + if (!drm_core_check_feature(dev, DRIVER_LEGACY)) return -EINVAL; if (!drm_core_check_feature(dev, DRIVER_HAVE_DMA)) @@ -1395,7 +1395,7 @@ int drm_legacy_freebufs(struct drm_device *dev, void *data, int idx; struct drm_buf *buf; - if (drm_core_check_feature(dev, DRIVER_MODESET)) + if (!drm_core_check_feature(dev, DRIVER_LEGACY)) return -EINVAL; if (!drm_core_check_feature(dev, DRIVER_HAVE_DMA)) @@ -1450,7 +1450,7 @@ int drm_legacy_mapbufs(struct drm_device *dev, void *data, struct drm_buf_map *request = data; int i; - if (drm_core_check_feature(dev, DRIVER_MODESET)) + if (!drm_core_check_feature(dev, DRIVER_LEGACY)) return -EINVAL; if (!drm_core_check_feature(dev, DRIVER_HAVE_DMA)) @@ -1530,7 +1530,7 @@ int drm_legacy_mapbufs(struct drm_device *dev, void *data, int drm_legacy_dma_ioctl(struct drm_device *dev, void *data, struct drm_file *file_priv) { - if (drm_core_check_feature(dev, DRIVER_MODESET)) + if (!drm_core_check_feature(dev, DRIVER_LEGACY)) return -EINVAL; if (dev->driver->dma_ioctl) diff --git a/drivers/gpu/drm/drm_context.c b/drivers/gpu/drm/drm_context.c index 192a5f9..3c4000f 100644