[PATCH v2 6/6] drm: Separate DRIVER_MODESET and DRIVER_LEGACY

2016-07-12 Thread Daniel Vetter
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

2016-06-24 Thread Frank Binns
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