All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/6] Support render only drivers
@ 2016-06-24 17:15 Frank Binns
  2016-06-24 17:15 ` [PATCH 1/6] drm/vmwgfx: Stop checking minor type directly Frank Binns
                   ` (5 more replies)
  0 siblings, 6 replies; 15+ messages in thread
From: Frank Binns @ 2016-06-24 17:15 UTC (permalink / raw)
  To: dri-devel; +Cc: rufus.hamade

This series resurrects work originally done by Thierry Reding (hence
the v2) but without taking things quite as far as the original [1].

The motivation for this series is to remove the dual meaning of
the DRIVER_MODESET feature flag, whereby it means "support kernel
modesetting" and "don't expose pre-KMS legacy behaviour". Without
this, it's necessary for render only drivers, such as etnaviv, to
choose between falsely advertising themselves as modesetting drivers
or exposing legacy behaviour. Unlike the original series, it doesn't
restrict the card-node to drivers that set DRIVER_MODESET.

As a couple of years have now passed, a number of the patches from the
original series have now either been merged (mainly clean up), are no
longer relevant or have no code changes in common with the originals.
It also means that some new patches are needed. Those patches that have
been rebased are marked as v2.

[1] https://lwn.net/Articles/588016/

Frank Binns (4):
  drm/vmwgfx: Stop checking minor type directly
  drm: Rename DRM_MINOR_LEGACY to DRM_MINOR_PRIMARY
  drm/amd/amdgpu: Set DRIVER_MODESET feature flag at build time
  drm: Separate DRIVER_MODESET and DRIVER_LEGACY

Thierry Reding (2):
  drm/qxl: Remove dead code
  drm: Introduce DRIVER_LEGACY feature

 Documentation/gpu/drm-internals.rst     |  9 ++++++---
 drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c |  3 +--
 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_drv.c               | 16 ++++++++--------
 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 +++---
 drivers/gpu/drm/i810/i810_drv.c         |  3 ++-
 drivers/gpu/drm/mga/mga_drv.c           |  3 ++-
 drivers/gpu/drm/qxl/qxl_kms.c           |  4 ----
 drivers/gpu/drm/r128/r128_drv.c         |  3 ++-
 drivers/gpu/drm/savage/savage_drv.c     |  2 +-
 drivers/gpu/drm/sis/sis_drv.c           |  2 +-
 drivers/gpu/drm/tdfx/tdfx_drv.c         |  1 +
 drivers/gpu/drm/via/via_drv.c           |  2 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_drv.c     |  3 +--
 include/drm/drmP.h                      |  5 +++--
 22 files changed, 79 insertions(+), 75 deletions(-)

-- 
2.7.4

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [PATCH 1/6] drm/vmwgfx: Stop checking minor type directly
  2016-06-24 17:15 [PATCH v2 0/6] Support render only drivers Frank Binns
@ 2016-06-24 17:15 ` Frank Binns
  2016-06-24 22:46   ` Sinclair Yeh
  2016-06-24 17:15 ` [PATCH 2/6] drm: Rename DRM_MINOR_LEGACY to DRM_MINOR_PRIMARY Frank Binns
                   ` (4 subsequent siblings)
  5 siblings, 1 reply; 15+ messages in thread
From: Frank Binns @ 2016-06-24 17:15 UTC (permalink / raw)
  To: dri-devel; +Cc: rufus.hamade, Thomas Hellstrom

Use the appropriate drm minor type helper instead.

Cc: Sinclair Yeh <syeh@vmware.com>
Cc: Thomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: Frank Binns <frank.binns@imgtec.com>
---
 drivers/gpu/drm/vmwgfx/vmwgfx_drv.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
index 6064664..5d5c951 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
@@ -1041,8 +1041,7 @@ static struct vmw_master *vmw_master_check(struct drm_device *dev,
 	struct vmw_fpriv *vmw_fp = vmw_fpriv(file_priv);
 	struct vmw_master *vmaster;
 
-	if (file_priv->minor->type != DRM_MINOR_LEGACY ||
-	    !(flags & DRM_AUTH))
+	if (!drm_is_primary_client(file_priv) || !(flags & DRM_AUTH))
 		return NULL;
 
 	ret = mutex_lock_interruptible(&dev->master_mutex);
-- 
2.7.4

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 2/6] drm: Rename DRM_MINOR_LEGACY to DRM_MINOR_PRIMARY
  2016-06-24 17:15 [PATCH v2 0/6] Support render only drivers Frank Binns
  2016-06-24 17:15 ` [PATCH 1/6] drm/vmwgfx: Stop checking minor type directly Frank Binns
@ 2016-06-24 17:15 ` Frank Binns
  2016-07-12 11:09   ` Daniel Vetter
  2016-06-24 17:15 ` [PATCH 3/6] drm/amd/amdgpu: Set DRIVER_MODESET feature flag at build time Frank Binns
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 15+ messages in thread
From: Frank Binns @ 2016-06-24 17:15 UTC (permalink / raw)
  To: dri-devel; +Cc: rufus.hamade

This brings the minor type name into line with how the actual minor,
using this type, is referenced throughout the rest of drm.

Signed-off-by: Frank Binns <frank.binns@imgtec.com>
---
 drivers/gpu/drm/drm_drv.c | 16 ++++++++--------
 include/drm/drmP.h        |  4 ++--
 2 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
index aead9ff..7775c8b 100644
--- a/drivers/gpu/drm/drm_drv.c
+++ b/drivers/gpu/drm/drm_drv.c
@@ -112,7 +112,7 @@ static struct drm_minor **drm_minor_get_slot(struct drm_device *dev,
 					     unsigned int type)
 {
 	switch (type) {
-	case DRM_MINOR_LEGACY:
+	case DRM_MINOR_PRIMARY:
 		return &dev->primary;
 	case DRM_MINOR_RENDER:
 		return &dev->render;
@@ -362,7 +362,7 @@ EXPORT_SYMBOL(drm_put_dev);
 void drm_unplug_dev(struct drm_device *dev)
 {
 	/* for a USB device */
-	drm_minor_unregister(dev, DRM_MINOR_LEGACY);
+	drm_minor_unregister(dev, DRM_MINOR_PRIMARY);
 	drm_minor_unregister(dev, DRM_MINOR_RENDER);
 	drm_minor_unregister(dev, DRM_MINOR_CONTROL);
 
@@ -514,7 +514,7 @@ int drm_dev_init(struct drm_device *dev,
 			goto err_minors;
 	}
 
-	ret = drm_minor_alloc(dev, DRM_MINOR_LEGACY);
+	ret = drm_minor_alloc(dev, DRM_MINOR_PRIMARY);
 	if (ret)
 		goto err_minors;
 
@@ -547,7 +547,7 @@ err_ctxbitmap:
 	drm_legacy_ctxbitmap_cleanup(dev);
 	drm_ht_remove(&dev->map_hash);
 err_minors:
-	drm_minor_free(dev, DRM_MINOR_LEGACY);
+	drm_minor_free(dev, DRM_MINOR_PRIMARY);
 	drm_minor_free(dev, DRM_MINOR_RENDER);
 	drm_minor_free(dev, DRM_MINOR_CONTROL);
 	drm_fs_inode_free(dev->anon_inode);
@@ -610,7 +610,7 @@ static void drm_dev_release(struct kref *ref)
 	drm_ht_remove(&dev->map_hash);
 	drm_fs_inode_free(dev->anon_inode);
 
-	drm_minor_free(dev, DRM_MINOR_LEGACY);
+	drm_minor_free(dev, DRM_MINOR_PRIMARY);
 	drm_minor_free(dev, DRM_MINOR_RENDER);
 	drm_minor_free(dev, DRM_MINOR_CONTROL);
 
@@ -686,7 +686,7 @@ int drm_dev_register(struct drm_device *dev, unsigned long flags)
 	if (ret)
 		goto err_minors;
 
-	ret = drm_minor_register(dev, DRM_MINOR_LEGACY);
+	ret = drm_minor_register(dev, DRM_MINOR_PRIMARY);
 	if (ret)
 		goto err_minors;
 
@@ -703,7 +703,7 @@ int drm_dev_register(struct drm_device *dev, unsigned long flags)
 	goto out_unlock;
 
 err_minors:
-	drm_minor_unregister(dev, DRM_MINOR_LEGACY);
+	drm_minor_unregister(dev, DRM_MINOR_PRIMARY);
 	drm_minor_unregister(dev, DRM_MINOR_RENDER);
 	drm_minor_unregister(dev, DRM_MINOR_CONTROL);
 out_unlock:
@@ -743,7 +743,7 @@ void drm_dev_unregister(struct drm_device *dev)
 	list_for_each_entry_safe(r_list, list_temp, &dev->maplist, head)
 		drm_legacy_rmmap(dev, r_list->map);
 
-	drm_minor_unregister(dev, DRM_MINOR_LEGACY);
+	drm_minor_unregister(dev, DRM_MINOR_PRIMARY);
 	drm_minor_unregister(dev, DRM_MINOR_RENDER);
 	drm_minor_unregister(dev, DRM_MINOR_CONTROL);
 }
diff --git a/include/drm/drmP.h b/include/drm/drmP.h
index cf918e3e..1d39988 100644
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
@@ -642,7 +642,7 @@ struct drm_driver {
 };
 
 enum drm_minor_type {
-	DRM_MINOR_LEGACY,
+	DRM_MINOR_PRIMARY,
 	DRM_MINOR_CONTROL,
 	DRM_MINOR_RENDER,
 	DRM_MINOR_CNT,
@@ -883,7 +883,7 @@ static inline bool drm_is_control_client(const struct drm_file *file_priv)
 
 static inline bool drm_is_primary_client(const struct drm_file *file_priv)
 {
-	return file_priv->minor->type == DRM_MINOR_LEGACY;
+	return file_priv->minor->type == DRM_MINOR_PRIMARY;
 }
 
 /******************************************************************/
-- 
2.7.4

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 3/6] drm/amd/amdgpu: Set DRIVER_MODESET feature flag at build time
  2016-06-24 17:15 [PATCH v2 0/6] Support render only drivers Frank Binns
  2016-06-24 17:15 ` [PATCH 1/6] drm/vmwgfx: Stop checking minor type directly Frank Binns
  2016-06-24 17:15 ` [PATCH 2/6] drm: Rename DRM_MINOR_LEGACY to DRM_MINOR_PRIMARY Frank Binns
@ 2016-06-24 17:15 ` Frank Binns
  2016-06-24 22:08   ` Alex Deucher
  2016-06-24 17:15 ` [PATCH 4/6] drm/qxl: Remove dead code Frank Binns
                   ` (2 subsequent siblings)
  5 siblings, 1 reply; 15+ messages in thread
From: Frank Binns @ 2016-06-24 17:15 UTC (permalink / raw)
  To: dri-devel; +Cc: rufus.hamade

This flag was being set unconditionally at runtime so just set it at
compile time instead.

Signed-off-by: Frank Binns <frank.binns@imgtec.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
index f888c01..7fe7f3c 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
@@ -515,7 +515,7 @@ static struct drm_driver kms_driver = {
 	.driver_features =
 	    DRIVER_USE_AGP |
 	    DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED | DRIVER_GEM |
-	    DRIVER_PRIME | DRIVER_RENDER,
+	    DRIVER_PRIME | DRIVER_RENDER | DRIVER_MODESET,
 	.dev_priv_size = 0,
 	.load = amdgpu_driver_load_kms,
 	.open = amdgpu_driver_open_kms,
@@ -590,7 +590,6 @@ static int __init amdgpu_init(void)
 	DRM_INFO("amdgpu kernel modesetting enabled.\n");
 	driver = &kms_driver;
 	pdriver = &amdgpu_kms_pci_driver;
-	driver->driver_features |= DRIVER_MODESET;
 	driver->num_ioctls = amdgpu_max_kms_ioctl;
 	amdgpu_register_atpx_handler();
 	/* let modprobe override vga console setting */
-- 
2.7.4

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 4/6] drm/qxl: Remove dead code
  2016-06-24 17:15 [PATCH v2 0/6] Support render only drivers Frank Binns
                   ` (2 preceding siblings ...)
  2016-06-24 17:15 ` [PATCH 3/6] drm/amd/amdgpu: Set DRIVER_MODESET feature flag at build time Frank Binns
@ 2016-06-24 17:15 ` Frank Binns
  2016-07-12 11:09   ` Daniel Vetter
  2016-06-24 17:15 ` [PATCH v2 5/6] drm: Introduce DRIVER_LEGACY feature Frank Binns
  2016-06-24 17:15 ` [PATCH v2 6/6] drm: Separate DRIVER_MODESET and DRIVER_LEGACY Frank Binns
  5 siblings, 1 reply; 15+ messages in thread
From: Frank Binns @ 2016-06-24 17:15 UTC (permalink / raw)
  To: dri-devel; +Cc: Thierry Reding, rufus.hamade

From: Thierry Reding <treding@nvidia.com>

The QXL driver sets DRIVER_MODESET unconditionally, so testing for the
absence of the feature will always fail.

Signed-off-by: Thierry Reding <treding@nvidia.com>
---
 drivers/gpu/drm/qxl/qxl_kms.c | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/drivers/gpu/drm/qxl/qxl_kms.c b/drivers/gpu/drm/qxl/qxl_kms.c
index 2319800..12b8dff 100644
--- a/drivers/gpu/drm/qxl/qxl_kms.c
+++ b/drivers/gpu/drm/qxl/qxl_kms.c
@@ -310,10 +310,6 @@ int qxl_driver_load(struct drm_device *dev, unsigned long flags)
 	struct qxl_device *qdev;
 	int r;
 
-	/* require kms */
-	if (!drm_core_check_feature(dev, DRIVER_MODESET))
-		return -ENODEV;
-
 	qdev = kzalloc(sizeof(struct qxl_device), GFP_KERNEL);
 	if (qdev == NULL)
 		return -ENOMEM;
-- 
2.7.4

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v2 5/6] drm: Introduce DRIVER_LEGACY feature
  2016-06-24 17:15 [PATCH v2 0/6] Support render only drivers Frank Binns
                   ` (3 preceding siblings ...)
  2016-06-24 17:15 ` [PATCH 4/6] drm/qxl: Remove dead code Frank Binns
@ 2016-06-24 17:15 ` Frank Binns
  2016-06-24 17:15 ` [PATCH v2 6/6] drm: Separate DRIVER_MODESET and DRIVER_LEGACY Frank Binns
  5 siblings, 0 replies; 15+ messages in thread
From: Frank Binns @ 2016-06-24 17:15 UTC (permalink / raw)
  To: dri-devel; +Cc: Thierry Reding, rufus.hamade

From: Thierry Reding <treding@nvidia.com>

Currently drivers that set the DRIVER_MODESET feature are considered to
be non-legacy drivers. At the same time DRIVER_MODESET implies that the
mode-setting IOCTLs are available. It is therefore not possible to
distinguish between a non-legacy driver with full mode-setting support
and a non-legacy driver without mode-setting functionality.

To separate the meaning of "legacy" and "modeset", a new driver feature
is introduced: DRIVER_LEGACY. The meaning of DRIVER_MODESET can then be
changed to apply to the mode-setting functionality only, irrespective
of whether it is legacy or not.

Mark all legacy drivers appropriately.

Signed-off-by: Thierry Reding <treding@nvidia.com>

v2:
- Rebase
- Add legacy flag to r128
- Don't add legacy flag to radeon
- Build fix for tdfx (use the correct field name)
- Add documentation to drm-internals

Signed-off-by: Frank Binns <frank.binns@imgtec.com>
---
I wasn't totally sure what to do with regards to authorship and sign-off
as I'd like to give credit where it's due. Feel free to tell me if I got
it wrong :)

 Documentation/gpu/drm-internals.rst | 9 ++++++---
 drivers/gpu/drm/i810/i810_drv.c     | 3 ++-
 drivers/gpu/drm/mga/mga_drv.c       | 3 ++-
 drivers/gpu/drm/r128/r128_drv.c     | 3 ++-
 drivers/gpu/drm/savage/savage_drv.c | 2 +-
 drivers/gpu/drm/sis/sis_drv.c       | 2 +-
 drivers/gpu/drm/tdfx/tdfx_drv.c     | 1 +
 drivers/gpu/drm/via/via_drv.c       | 2 +-
 include/drm/drmP.h                  | 1 +
 9 files changed, 17 insertions(+), 9 deletions(-)

diff --git a/Documentation/gpu/drm-internals.rst b/Documentation/gpu/drm-internals.rst
index 4f71765..97b458e 100644
--- a/Documentation/gpu/drm-internals.rst
+++ b/Documentation/gpu/drm-internals.rst
@@ -95,6 +95,9 @@ DRIVER_ATOMIC
     implement appropriate obj->atomic_get_property() vfuncs for any
     modeset objects with driver specific properties.
 
+DRIVER_LEGACY
+    Driver supports user mode setting interfaces (UMS). Deprecated.
+
 Major, Minor and Patchlevel
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
@@ -337,9 +340,9 @@ how the ioctl is allowed to be called.
    device
 
 -  DRM_UNLOCKED - The ioctl handler will be called without locking the
-   DRM global mutex. This is the enforced default for kms drivers (i.e.
-   using the DRIVER_MODESET flag) and hence shouldn't be used any more
-   for new drivers.
+   DRM global mutex. This is the enforced default for drivers that don't
+   support UMS (i.e. using the DRIVER_LEGACY flag) and hence shouldn't
+   be used any more for new drivers.
 
 .. kernel-doc:: drivers/gpu/drm/drm_ioctl.c
    :export:
diff --git a/drivers/gpu/drm/i810/i810_drv.c b/drivers/gpu/drm/i810/i810_drv.c
index 44f4a13..8c3c04a 100644
--- a/drivers/gpu/drm/i810/i810_drv.c
+++ b/drivers/gpu/drm/i810/i810_drv.c
@@ -58,7 +58,8 @@ static const struct file_operations i810_driver_fops = {
 static struct drm_driver driver = {
 	.driver_features =
 	    DRIVER_USE_AGP |
-	    DRIVER_HAVE_DMA,
+	    DRIVER_HAVE_DMA |
+	    DRIVER_LEGACY,
 	.dev_priv_size = sizeof(drm_i810_buf_priv_t),
 	.load = i810_driver_load,
 	.lastclose = i810_driver_lastclose,
diff --git a/drivers/gpu/drm/mga/mga_drv.c b/drivers/gpu/drm/mga/mga_drv.c
index 5e2f131..06aafdc 100644
--- a/drivers/gpu/drm/mga/mga_drv.c
+++ b/drivers/gpu/drm/mga/mga_drv.c
@@ -59,7 +59,8 @@ static const struct file_operations mga_driver_fops = {
 static struct drm_driver driver = {
 	.driver_features =
 	    DRIVER_USE_AGP | DRIVER_PCI_DMA |
-	    DRIVER_HAVE_DMA | DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED,
+	    DRIVER_HAVE_DMA | DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED |
+	    DRIVER_LEGACY,
 	.dev_priv_size = sizeof(drm_mga_buf_priv_t),
 	.load = mga_driver_load,
 	.unload = mga_driver_unload,
diff --git a/drivers/gpu/drm/r128/r128_drv.c b/drivers/gpu/drm/r128/r128_drv.c
index c57b4de..5a63425 100644
--- a/drivers/gpu/drm/r128/r128_drv.c
+++ b/drivers/gpu/drm/r128/r128_drv.c
@@ -57,7 +57,8 @@ static const struct file_operations r128_driver_fops = {
 static struct drm_driver driver = {
 	.driver_features =
 	    DRIVER_USE_AGP | DRIVER_PCI_DMA | DRIVER_SG |
-	    DRIVER_HAVE_DMA | DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED,
+	    DRIVER_HAVE_DMA | DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED |
+	    DRIVER_LEGACY,
 	.dev_priv_size = sizeof(drm_r128_buf_priv_t),
 	.load = r128_driver_load,
 	.preclose = r128_driver_preclose,
diff --git a/drivers/gpu/drm/savage/savage_drv.c b/drivers/gpu/drm/savage/savage_drv.c
index 21aed1f..3b80713 100644
--- a/drivers/gpu/drm/savage/savage_drv.c
+++ b/drivers/gpu/drm/savage/savage_drv.c
@@ -50,7 +50,7 @@ static const struct file_operations savage_driver_fops = {
 
 static struct drm_driver driver = {
 	.driver_features =
-	    DRIVER_USE_AGP | DRIVER_HAVE_DMA | DRIVER_PCI_DMA,
+	    DRIVER_USE_AGP | DRIVER_HAVE_DMA | DRIVER_PCI_DMA | DRIVER_LEGACY,
 	.dev_priv_size = sizeof(drm_savage_buf_priv_t),
 	.load = savage_driver_load,
 	.firstopen = savage_driver_firstopen,
diff --git a/drivers/gpu/drm/sis/sis_drv.c b/drivers/gpu/drm/sis/sis_drv.c
index 79bce76..ae98398 100644
--- a/drivers/gpu/drm/sis/sis_drv.c
+++ b/drivers/gpu/drm/sis/sis_drv.c
@@ -102,7 +102,7 @@ static void sis_driver_postclose(struct drm_device *dev, struct drm_file *file)
 }
 
 static struct drm_driver driver = {
-	.driver_features = DRIVER_USE_AGP,
+	.driver_features = DRIVER_USE_AGP | DRIVER_LEGACY,
 	.load = sis_driver_load,
 	.unload = sis_driver_unload,
 	.open = sis_driver_open,
diff --git a/drivers/gpu/drm/tdfx/tdfx_drv.c b/drivers/gpu/drm/tdfx/tdfx_drv.c
index fab5ebc..f418892 100644
--- a/drivers/gpu/drm/tdfx/tdfx_drv.c
+++ b/drivers/gpu/drm/tdfx/tdfx_drv.c
@@ -56,6 +56,7 @@ static const struct file_operations tdfx_driver_fops = {
 };
 
 static struct drm_driver driver = {
+	.driver_features = DRIVER_LEGACY,
 	.set_busid = drm_pci_set_busid,
 	.fops = &tdfx_driver_fops,
 	.name = DRIVER_NAME,
diff --git a/drivers/gpu/drm/via/via_drv.c b/drivers/gpu/drm/via/via_drv.c
index ed8aa8f..de54424 100644
--- a/drivers/gpu/drm/via/via_drv.c
+++ b/drivers/gpu/drm/via/via_drv.c
@@ -73,7 +73,7 @@ static const struct file_operations via_driver_fops = {
 static struct drm_driver driver = {
 	.driver_features =
 	    DRIVER_USE_AGP | DRIVER_HAVE_IRQ |
-	    DRIVER_IRQ_SHARED,
+	    DRIVER_IRQ_SHARED | DRIVER_LEGACY,
 	.load = via_driver_load,
 	.unload = via_driver_unload,
 	.open = via_driver_open,
diff --git a/include/drm/drmP.h b/include/drm/drmP.h
index 1d39988..b6e21f3 100644
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
@@ -157,6 +157,7 @@ void drm_err(const char *format, ...);
 #define DRIVER_RENDER			0x8000
 #define DRIVER_ATOMIC			0x10000
 #define DRIVER_KMS_LEGACY_CONTEXT	0x20000
+#define DRIVER_LEGACY			0x40000
 
 /***********************************************************************/
 /** \name Macros to make printk easier */
-- 
2.7.4

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v2 6/6] drm: Separate DRIVER_MODESET and DRIVER_LEGACY
  2016-06-24 17:15 [PATCH v2 0/6] Support render only drivers Frank Binns
                   ` (4 preceding siblings ...)
  2016-06-24 17:15 ` [PATCH v2 5/6] drm: Introduce DRIVER_LEGACY feature Frank Binns
@ 2016-06-24 17:15 ` Frank Binns
  2016-07-12 11:06   ` Daniel Vetter
  5 siblings, 1 reply; 15+ messages in thread
From: Frank Binns @ 2016-06-24 17:15 UTC (permalink / raw)
  To: dri-devel; +Cc: Thierry Reding, rufus.hamade

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 <treding@nvidia.com>

v2:
- Rebase
- Change a few more places to check against DRIVER_LEGACY
- Move a core check

Signed-off-by: Frank Binns <frank.binns@imgtec.com>
---
 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(&dev->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(&dev->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(&dev->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
--- a/drivers/gpu/drm/drm_context.c
+++ b/drivers/gpu/drm/drm_context.c
@@ -54,7 +54,7 @@ struct drm_ctx_list {
 void drm_legacy_ctxbitmap_free(struct drm_device * dev, int ctx_handle)
 {
 	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(&dev->struct_mutex);
@@ -92,7 +92,7 @@ static int drm_legacy_ctxbitmap_next(struct drm_device * dev)
 void drm_legacy_ctxbitmap_init(struct drm_device * dev)
 {
 	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;
 
 	idr_init(&dev->ctx_idr);
@@ -109,7 +109,7 @@ void drm_legacy_ctxbitmap_init(struct drm_device * dev)
 void drm_legacy_ctxbitmap_cleanup(struct drm_device * dev)
 {
 	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(&dev->struct_mutex);
@@ -131,7 +131,7 @@ void drm_legacy_ctxbitmap_flush(struct drm_device *dev, struct drm_file *file)
 	struct drm_ctx_list *pos, *tmp;
 
 	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(&dev->ctxlist_mutex);
@@ -177,7 +177,7 @@ int drm_legacy_getsareactx(struct drm_device *dev, void *data,
 	struct drm_map_list *_entry;
 
 	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(&dev->struct_mutex);
@@ -225,7 +225,7 @@ int drm_legacy_setsareactx(struct drm_device *dev, void *data,
 	struct drm_map_list *r_list = NULL;
 
 	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(&dev->struct_mutex);
@@ -329,7 +329,7 @@ int drm_legacy_resctx(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;
 
 	if (res->count >= DRM_RESERVED_CONTEXTS) {
@@ -363,7 +363,7 @@ int drm_legacy_addctx(struct drm_device *dev, void *data,
 	struct drm_ctx *ctx = data;
 
 	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;
 
 	ctx->handle = drm_legacy_ctxbitmap_next(dev);
@@ -410,7 +410,7 @@ int drm_legacy_getctx(struct drm_device *dev, void *data,
 	struct drm_ctx *ctx = data;
 
 	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;
 
 	/* This is 0, because we don't handle any context flags */
@@ -436,7 +436,7 @@ int drm_legacy_switchctx(struct drm_device *dev, void *data,
 	struct drm_ctx *ctx = data;
 
 	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;
 
 	DRM_DEBUG("%d\n", ctx->handle);
@@ -460,7 +460,7 @@ int drm_legacy_newctx(struct drm_device *dev, void *data,
 	struct drm_ctx *ctx = data;
 
 	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;
 
 	DRM_DEBUG("%d\n", ctx->handle);
@@ -486,7 +486,7 @@ int drm_legacy_rmctx(struct drm_device *dev, void *data,
 	struct drm_ctx *ctx = data;
 
 	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;
 
 	DRM_DEBUG("%d\n", ctx->handle);
diff --git a/drivers/gpu/drm/drm_dma.c b/drivers/gpu/drm/drm_dma.c
index ea48180..c7dd17f 100644
--- a/drivers/gpu/drm/drm_dma.c
+++ b/drivers/gpu/drm/drm_dma.c
@@ -50,7 +50,7 @@ int drm_legacy_dma_setup(struct drm_device *dev)
 	int i;
 
 	if (!drm_core_check_feature(dev, DRIVER_HAVE_DMA) ||
-	    drm_core_check_feature(dev, DRIVER_MODESET)) {
+	    !drm_core_check_feature(dev, DRIVER_LEGACY)) {
 		return 0;
 	}
 
@@ -81,7 +81,7 @@ void drm_legacy_dma_takedown(struct drm_device *dev)
 	int i, j;
 
 	if (!drm_core_check_feature(dev, DRIVER_HAVE_DMA) ||
-	    drm_core_check_feature(dev, DRIVER_MODESET)) {
+	    !drm_core_check_feature(dev, DRIVER_LEGACY)) {
 		return;
 	}
 
diff --git a/drivers/gpu/drm/drm_fops.c b/drivers/gpu/drm/drm_fops.c
index 323c238..fee5b0c 100644
--- a/drivers/gpu/drm/drm_fops.c
+++ b/drivers/gpu/drm/drm_fops.c
@@ -91,8 +91,8 @@ static int drm_setup(struct drm_device * dev)
 {
 	int ret;
 
-	if (dev->driver->firstopen &&
-	    !drm_core_check_feature(dev, DRIVER_MODESET)) {
+	if (drm_core_check_feature(dev, DRIVER_LEGACY) &&
+	    dev->driver->firstopen) {
 		ret = dev->driver->firstopen(dev);
 		if (ret != 0)
 			return ret;
@@ -307,6 +307,9 @@ static void drm_events_release(struct drm_file *file_priv)
  */
 static void drm_legacy_dev_reinit(struct drm_device *dev)
 {
+	if (!drm_core_check_feature(dev, DRIVER_LEGACY))
+		return;
+
 	if (dev->irq_enabled)
 		drm_irq_uninstall(dev);
 
@@ -346,8 +349,7 @@ void drm_lastclose(struct drm_device * dev)
 		dev->driver->lastclose(dev);
 	DRM_DEBUG("driver lastclose completed\n");
 
-	if (!drm_core_check_feature(dev, DRIVER_MODESET))
-		drm_legacy_dev_reinit(dev);
+	drm_legacy_dev_reinit(dev);
 }
 
 /**
diff --git a/drivers/gpu/drm/drm_ioctl.c b/drivers/gpu/drm/drm_ioctl.c
index 1f84ff5..b2175bf 100644
--- a/drivers/gpu/drm/drm_ioctl.c
+++ b/drivers/gpu/drm/drm_ioctl.c
@@ -717,9 +717,9 @@ long drm_ioctl(struct file *filp,
 		memset(kdata, 0, usize);
 	}
 
-	/* Enforce sane locking for kms driver ioctls. Core ioctls are
+	/* Enforce sane locking for non-legacy driver ioctls. Core ioctls are
 	 * too messy still. */
-	if ((drm_core_check_feature(dev, DRIVER_MODESET) && is_driver_ioctl) ||
+	if ((drm_core_check_feature(dev, DRIVER_LEGACY) && is_driver_ioctl) ||
 	    (ioctl->flags & DRM_UNLOCKED))
 		retcode = func(dev, kdata, file_priv);
 	else {
diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c
index 8ca3d2b..dce3c57 100644
--- a/drivers/gpu/drm/drm_irq.c
+++ b/drivers/gpu/drm/drm_irq.c
@@ -336,7 +336,7 @@ void drm_vblank_cleanup(struct drm_device *dev)
 		struct drm_vblank_crtc *vblank = &dev->vblank[pipe];
 
 		WARN_ON(vblank->enabled &&
-			drm_core_check_feature(dev, DRIVER_MODESET));
+			!drm_core_check_feature(dev, DRIVER_LEGACY));
 
 		del_timer_sync(&vblank->disable_timer);
 	}
@@ -482,7 +482,7 @@ int drm_irq_install(struct drm_device *dev, int irq)
 		return ret;
 	}
 
-	if (!drm_core_check_feature(dev, DRIVER_MODESET))
+	if (drm_core_check_feature(dev, DRIVER_LEGACY))
 		vga_client_register(dev->pdev, (void *)dev, drm_irq_vgaarb_nokms, NULL);
 
 	/* After installing handler */
@@ -491,7 +491,7 @@ int drm_irq_install(struct drm_device *dev, int irq)
 
 	if (ret < 0) {
 		dev->irq_enabled = false;
-		if (!drm_core_check_feature(dev, DRIVER_MODESET))
+		if (drm_core_check_feature(dev, DRIVER_LEGACY))
 			vga_client_register(dev->pdev, NULL, NULL, NULL);
 		free_irq(irq, dev);
 	} else {
@@ -544,7 +544,7 @@ int drm_irq_uninstall(struct drm_device *dev)
 			if (!vblank->enabled)
 				continue;
 
-			WARN_ON(drm_core_check_feature(dev, DRIVER_MODESET));
+			WARN_ON(!drm_core_check_feature(dev, DRIVER_LEGACY));
 
 			vblank_disable_and_save(dev, i);
 			wake_up(&vblank->queue);
@@ -557,7 +557,7 @@ int drm_irq_uninstall(struct drm_device *dev)
 
 	DRM_DEBUG("irq=%d\n", dev->irq);
 
-	if (!drm_core_check_feature(dev, DRIVER_MODESET))
+	if (drm_core_check_feature(dev, DRIVER_LEGACY))
 		vga_client_register(dev->pdev, NULL, NULL, NULL);
 
 	if (dev->driver->irq_uninstall)
@@ -592,7 +592,7 @@ int drm_control(struct drm_device *dev, void *data,
 
 	if (!drm_core_check_feature(dev, DRIVER_HAVE_IRQ))
 		return 0;
-	if (drm_core_check_feature(dev, DRIVER_MODESET))
+	if (!drm_core_check_feature(dev, DRIVER_LEGACY))
 		return 0;
 	/* UMS was only ever support on pci devices. */
 	if (WARN_ON(!dev->pdev))
@@ -1522,7 +1522,7 @@ int drm_modeset_ctl(struct drm_device *dev, void *data,
 		return 0;
 
 	/* KMS drivers handle this internally */
-	if (drm_core_check_feature(dev, DRIVER_MODESET))
+	if (!drm_core_check_feature(dev, DRIVER_LEGACY))
 		return 0;
 
 	pipe = modeset->crtc;
diff --git a/drivers/gpu/drm/drm_lock.c b/drivers/gpu/drm/drm_lock.c
index 48ac0eb..c901f3c 100644
--- a/drivers/gpu/drm/drm_lock.c
+++ b/drivers/gpu/drm/drm_lock.c
@@ -163,7 +163,7 @@ int drm_legacy_lock(struct drm_device *dev, void *data,
 	struct drm_master *master = file_priv->master;
 	int ret = 0;
 
-	if (drm_core_check_feature(dev, DRIVER_MODESET))
+	if (!drm_core_check_feature(dev, DRIVER_LEGACY))
 		return -EINVAL;
 
 	++file_priv->lock_count;
@@ -252,7 +252,7 @@ int drm_legacy_unlock(struct drm_device *dev, void *data, struct drm_file *file_
 	struct drm_lock *lock = data;
 	struct drm_master *master = file_priv->master;
 
-	if (drm_core_check_feature(dev, DRIVER_MODESET))
+	if (!drm_core_check_feature(dev, DRIVER_LEGACY))
 		return -EINVAL;
 
 	if (lock->context == DRM_KERNEL_CONTEXT) {
diff --git a/drivers/gpu/drm/drm_pci.c b/drivers/gpu/drm/drm_pci.c
index b2f8f10..0fc8cec 100644
--- a/drivers/gpu/drm/drm_pci.c
+++ b/drivers/gpu/drm/drm_pci.c
@@ -175,7 +175,7 @@ int drm_irq_by_busid(struct drm_device *dev, void *data,
 {
 	struct drm_irq_busid *p = data;
 
-	if (drm_core_check_feature(dev, DRIVER_MODESET))
+	if (!drm_core_check_feature(dev, DRIVER_LEGACY))
 		return -EINVAL;
 
 	/* UMS was only ever support on PCI devices. */
@@ -248,7 +248,7 @@ int drm_get_pci_dev(struct pci_dev *pdev, const struct pci_device_id *ent,
 	dev->hose = pdev->sysdata;
 #endif
 
-	if (drm_core_check_feature(dev, DRIVER_MODESET))
+	if (!drm_core_check_feature(dev, DRIVER_LEGACY))
 		pci_set_drvdata(pdev, dev);
 
 	drm_pci_agp_init(dev);
@@ -263,7 +263,7 @@ int drm_get_pci_dev(struct pci_dev *pdev, const struct pci_device_id *ent,
 
 	/* No locking needed since shadow-attach is single-threaded since it may
 	 * only be called from the per-driver module init hook. */
-	if (!drm_core_check_feature(dev, DRIVER_MODESET))
+	if (drm_core_check_feature(dev, DRIVER_LEGACY))
 		list_add_tail(&dev->legacy_dev_list, &driver->legacy_dev_list);
 
 	return 0;
@@ -299,7 +299,7 @@ int drm_pci_init(struct drm_driver *driver, struct pci_driver *pdriver)
 
 	DRM_DEBUG("\n");
 
-	if (driver->driver_features & DRIVER_MODESET)
+	if (!(driver->driver_features & DRIVER_LEGACY))
 		return pci_register_driver(pdriver);
 
 	/* If not using KMS, fall back to stealth mode manual scanning. */
@@ -421,7 +421,7 @@ void drm_pci_exit(struct drm_driver *driver, struct pci_driver *pdriver)
 	struct drm_device *dev, *tmp;
 	DRM_DEBUG("\n");
 
-	if (driver->driver_features & DRIVER_MODESET) {
+	if (!(driver->driver_features & DRIVER_LEGACY)) {
 		pci_unregister_driver(pdriver);
 	} else {
 		list_for_each_entry_safe(dev, tmp, &driver->legacy_dev_list,
diff --git a/drivers/gpu/drm/drm_scatter.c b/drivers/gpu/drm/drm_scatter.c
index 4f0f3b3..efee0de 100644
--- a/drivers/gpu/drm/drm_scatter.c
+++ b/drivers/gpu/drm/drm_scatter.c
@@ -68,7 +68,7 @@ static void drm_sg_cleanup(struct drm_sg_mem * entry)
 void drm_legacy_sg_cleanup(struct drm_device *dev)
 {
 	if (drm_core_check_feature(dev, DRIVER_SG) && dev->sg &&
-	    !drm_core_check_feature(dev, DRIVER_MODESET)) {
+	    drm_core_check_feature(dev, DRIVER_LEGACY)) {
 		drm_sg_cleanup(dev->sg);
 		dev->sg = NULL;
 	}
@@ -88,7 +88,7 @@ int drm_legacy_sg_alloc(struct drm_device *dev, void *data,
 
 	DRM_DEBUG("\n");
 
-	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_SG))
@@ -201,7 +201,7 @@ int drm_legacy_sg_free(struct drm_device *dev, void *data,
 	struct drm_scatter_gather *request = data;
 	struct drm_sg_mem *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_SG))
-- 
2.7.4

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: [PATCH 3/6] drm/amd/amdgpu: Set DRIVER_MODESET feature flag at build time
  2016-06-24 17:15 ` [PATCH 3/6] drm/amd/amdgpu: Set DRIVER_MODESET feature flag at build time Frank Binns
@ 2016-06-24 22:08   ` Alex Deucher
  2016-06-27  9:37     ` Frank Binns
  0 siblings, 1 reply; 15+ messages in thread
From: Alex Deucher @ 2016-06-24 22:08 UTC (permalink / raw)
  To: Frank Binns; +Cc: rufus.hamade, Maling list - DRI developers

On Fri, Jun 24, 2016 at 1:15 PM, Frank Binns <frank.binns@imgtec.com> wrote:
> This flag was being set unconditionally at runtime so just set it at
> compile time instead.
>
> Signed-off-by: Frank Binns <frank.binns@imgtec.com>

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>

Do you want to take this as part of the patch set, or should I apply
this to my tree?

Alex

> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> index f888c01..7fe7f3c 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> @@ -515,7 +515,7 @@ static struct drm_driver kms_driver = {
>         .driver_features =
>             DRIVER_USE_AGP |
>             DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED | DRIVER_GEM |
> -           DRIVER_PRIME | DRIVER_RENDER,
> +           DRIVER_PRIME | DRIVER_RENDER | DRIVER_MODESET,
>         .dev_priv_size = 0,
>         .load = amdgpu_driver_load_kms,
>         .open = amdgpu_driver_open_kms,
> @@ -590,7 +590,6 @@ static int __init amdgpu_init(void)
>         DRM_INFO("amdgpu kernel modesetting enabled.\n");
>         driver = &kms_driver;
>         pdriver = &amdgpu_kms_pci_driver;
> -       driver->driver_features |= DRIVER_MODESET;
>         driver->num_ioctls = amdgpu_max_kms_ioctl;
>         amdgpu_register_atpx_handler();
>         /* let modprobe override vga console setting */
> --
> 2.7.4
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 1/6] drm/vmwgfx: Stop checking minor type directly
  2016-06-24 17:15 ` [PATCH 1/6] drm/vmwgfx: Stop checking minor type directly Frank Binns
@ 2016-06-24 22:46   ` Sinclair Yeh
  2016-07-12 11:08     ` Daniel Vetter
  0 siblings, 1 reply; 15+ messages in thread
From: Sinclair Yeh @ 2016-06-24 22:46 UTC (permalink / raw)
  To: Frank Binns; +Cc: rufus.hamade, Thomas Hellstrom, dri-devel

Thanks!

Reviewed-by: Sinclair Yeh <syeh@vmware.com>


On Fri, Jun 24, 2016 at 06:15:15PM +0100, Frank Binns wrote:
> Use the appropriate drm minor type helper instead.
> 
> Cc: Sinclair Yeh <syeh@vmware.com>
> Cc: Thomas Hellstrom <thellstrom@vmware.com>
> Signed-off-by: Frank Binns <frank.binns@imgtec.com>
> ---
>  drivers/gpu/drm/vmwgfx/vmwgfx_drv.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> index 6064664..5d5c951 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> @@ -1041,8 +1041,7 @@ static struct vmw_master *vmw_master_check(struct drm_device *dev,
>  	struct vmw_fpriv *vmw_fp = vmw_fpriv(file_priv);
>  	struct vmw_master *vmaster;
>  
> -	if (file_priv->minor->type != DRM_MINOR_LEGACY ||
> -	    !(flags & DRM_AUTH))
> +	if (!drm_is_primary_client(file_priv) || !(flags & DRM_AUTH))
>  		return NULL;
>  
>  	ret = mutex_lock_interruptible(&dev->master_mutex);
> -- 
> 2.7.4
> 
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 3/6] drm/amd/amdgpu: Set DRIVER_MODESET feature flag at build time
  2016-06-24 22:08   ` Alex Deucher
@ 2016-06-27  9:37     ` Frank Binns
  2016-06-27 15:51       ` Alex Deucher
  0 siblings, 1 reply; 15+ messages in thread
From: Frank Binns @ 2016-06-27  9:37 UTC (permalink / raw)
  To: Alex Deucher; +Cc: rufus.hamade, Maling list - DRI developers

On 24/06/16 23:08, Alex Deucher wrote:
> On Fri, Jun 24, 2016 at 1:15 PM, Frank Binns <frank.binns@imgtec.com> wrote:
>> This flag was being set unconditionally at runtime so just set it at
>> compile time instead.
>>
>> Signed-off-by: Frank Binns <frank.binns@imgtec.com>
> Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
>
> Do you want to take this as part of the patch set, or should I apply
> this to my tree?
>
> Alex

This patch is independent of the rest so I'm happy for you to
apply it to your tree.

Thanks
Frank

>
>> ---
>>   drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 3 +--
>>   1 file changed, 1 insertion(+), 2 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
>> index f888c01..7fe7f3c 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
>> @@ -515,7 +515,7 @@ static struct drm_driver kms_driver = {
>>          .driver_features =
>>              DRIVER_USE_AGP |
>>              DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED | DRIVER_GEM |
>> -           DRIVER_PRIME | DRIVER_RENDER,
>> +           DRIVER_PRIME | DRIVER_RENDER | DRIVER_MODESET,
>>          .dev_priv_size = 0,
>>          .load = amdgpu_driver_load_kms,
>>          .open = amdgpu_driver_open_kms,
>> @@ -590,7 +590,6 @@ static int __init amdgpu_init(void)
>>          DRM_INFO("amdgpu kernel modesetting enabled.\n");
>>          driver = &kms_driver;
>>          pdriver = &amdgpu_kms_pci_driver;
>> -       driver->driver_features |= DRIVER_MODESET;
>>          driver->num_ioctls = amdgpu_max_kms_ioctl;
>>          amdgpu_register_atpx_handler();
>>          /* let modprobe override vga console setting */
>> --
>> 2.7.4
>>
>> _______________________________________________
>> dri-devel mailing list
>> dri-devel@lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/dri-devel

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 3/6] drm/amd/amdgpu: Set DRIVER_MODESET feature flag at build time
  2016-06-27  9:37     ` Frank Binns
@ 2016-06-27 15:51       ` Alex Deucher
  0 siblings, 0 replies; 15+ messages in thread
From: Alex Deucher @ 2016-06-27 15:51 UTC (permalink / raw)
  To: Frank Binns; +Cc: rufus.hamade, Maling list - DRI developers

On Mon, Jun 27, 2016 at 5:37 AM, Frank Binns <frank.binns@imgtec.com> wrote:
> On 24/06/16 23:08, Alex Deucher wrote:
>>
>> On Fri, Jun 24, 2016 at 1:15 PM, Frank Binns <frank.binns@imgtec.com>
>> wrote:
>>>
>>> This flag was being set unconditionally at runtime so just set it at
>>> compile time instead.
>>>
>>> Signed-off-by: Frank Binns <frank.binns@imgtec.com>
>>
>> Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
>>
>> Do you want to take this as part of the patch set, or should I apply
>> this to my tree?
>>
>> Alex
>
>
> This patch is independent of the rest so I'm happy for you to
> apply it to your tree.
>

Applied.  thanks!

Alex

> Thanks
> Frank
>
>
>>
>>> ---
>>>   drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 3 +--
>>>   1 file changed, 1 insertion(+), 2 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
>>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
>>> index f888c01..7fe7f3c 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
>>> @@ -515,7 +515,7 @@ static struct drm_driver kms_driver = {
>>>          .driver_features =
>>>              DRIVER_USE_AGP |
>>>              DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED | DRIVER_GEM |
>>> -           DRIVER_PRIME | DRIVER_RENDER,
>>> +           DRIVER_PRIME | DRIVER_RENDER | DRIVER_MODESET,
>>>          .dev_priv_size = 0,
>>>          .load = amdgpu_driver_load_kms,
>>>          .open = amdgpu_driver_open_kms,
>>> @@ -590,7 +590,6 @@ static int __init amdgpu_init(void)
>>>          DRM_INFO("amdgpu kernel modesetting enabled.\n");
>>>          driver = &kms_driver;
>>>          pdriver = &amdgpu_kms_pci_driver;
>>> -       driver->driver_features |= DRIVER_MODESET;
>>>          driver->num_ioctls = amdgpu_max_kms_ioctl;
>>>          amdgpu_register_atpx_handler();
>>>          /* let modprobe override vga console setting */
>>> --
>>> 2.7.4
>>>
>>> _______________________________________________
>>> dri-devel mailing list
>>> dri-devel@lists.freedesktop.org
>>> https://lists.freedesktop.org/mailman/listinfo/dri-devel
>
>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v2 6/6] drm: Separate DRIVER_MODESET and DRIVER_LEGACY
  2016-06-24 17:15 ` [PATCH v2 6/6] drm: Separate DRIVER_MODESET and DRIVER_LEGACY Frank Binns
@ 2016-07-12 11:06   ` Daniel Vetter
  0 siblings, 0 replies; 15+ messages in thread
From: Daniel Vetter @ 2016-07-12 11:06 UTC (permalink / raw)
  To: Frank Binns; +Cc: rufus.hamade, Thierry Reding, dri-devel

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 <treding@nvidia.com>
> 
> v2:
> - Rebase
> - Change a few more places to check against DRIVER_LEGACY
> - Move a core check
> 
> Signed-off-by: Frank Binns <frank.binns@imgtec.com>

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(&dev->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(&dev->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(&dev->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
> --- a/drivers/gpu/drm/drm_context.c
> +++ b/drivers/gpu/drm/drm_context.c
> @@ -54,7 +54,7 @@ struct drm_ctx_list {
>  void drm_legacy_ctxbitmap_free(struct drm_device * dev, int ctx_handle)
>  {
>  	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(&dev->struct_mutex);
> @@ -92,7 +92,7 @@ static int drm_legacy_ctxbitmap_next(struct drm_device * dev)
>  void drm_legacy_ctxbitmap_init(struct drm_device * dev)
>  {
>  	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;
>  
>  	idr_init(&dev->ctx_idr);
> @@ -109,7 +109,7 @@ void drm_legacy_ctxbitmap_init(struct drm_device * dev)
>  void drm_legacy_ctxbitmap_cleanup(struct drm_device * dev)
>  {
>  	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(&dev->struct_mutex);
> @@ -131,7 +131,7 @@ void drm_legacy_ctxbitmap_flush(struct drm_device *dev, struct drm_file *file)
>  	struct drm_ctx_list *pos, *tmp;
>  
>  	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(&dev->ctxlist_mutex);
> @@ -177,7 +177,7 @@ int drm_legacy_getsareactx(struct drm_device *dev, void *data,
>  	struct drm_map_list *_entry;
>  
>  	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(&dev->struct_mutex);
> @@ -225,7 +225,7 @@ int drm_legacy_setsareactx(struct drm_device *dev, void *data,
>  	struct drm_map_list *r_list = NULL;
>  
>  	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(&dev->struct_mutex);
> @@ -329,7 +329,7 @@ int drm_legacy_resctx(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;
>  
>  	if (res->count >= DRM_RESERVED_CONTEXTS) {
> @@ -363,7 +363,7 @@ int drm_legacy_addctx(struct drm_device *dev, void *data,
>  	struct drm_ctx *ctx = data;
>  
>  	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;
>  
>  	ctx->handle = drm_legacy_ctxbitmap_next(dev);
> @@ -410,7 +410,7 @@ int drm_legacy_getctx(struct drm_device *dev, void *data,
>  	struct drm_ctx *ctx = data;
>  
>  	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;
>  
>  	/* This is 0, because we don't handle any context flags */
> @@ -436,7 +436,7 @@ int drm_legacy_switchctx(struct drm_device *dev, void *data,
>  	struct drm_ctx *ctx = data;
>  
>  	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;
>  
>  	DRM_DEBUG("%d\n", ctx->handle);
> @@ -460,7 +460,7 @@ int drm_legacy_newctx(struct drm_device *dev, void *data,
>  	struct drm_ctx *ctx = data;
>  
>  	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;
>  
>  	DRM_DEBUG("%d\n", ctx->handle);
> @@ -486,7 +486,7 @@ int drm_legacy_rmctx(struct drm_device *dev, void *data,
>  	struct drm_ctx *ctx = data;
>  
>  	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;
>  
>  	DRM_DEBUG("%d\n", ctx->handle);
> diff --git a/drivers/gpu/drm/drm_dma.c b/drivers/gpu/drm/drm_dma.c
> index ea48180..c7dd17f 100644
> --- a/drivers/gpu/drm/drm_dma.c
> +++ b/drivers/gpu/drm/drm_dma.c
> @@ -50,7 +50,7 @@ int drm_legacy_dma_setup(struct drm_device *dev)
>  	int i;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_HAVE_DMA) ||
> -	    drm_core_check_feature(dev, DRIVER_MODESET)) {
> +	    !drm_core_check_feature(dev, DRIVER_LEGACY)) {
>  		return 0;
>  	}
>  
> @@ -81,7 +81,7 @@ void drm_legacy_dma_takedown(struct drm_device *dev)
>  	int i, j;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_HAVE_DMA) ||
> -	    drm_core_check_feature(dev, DRIVER_MODESET)) {
> +	    !drm_core_check_feature(dev, DRIVER_LEGACY)) {
>  		return;
>  	}
>  
> diff --git a/drivers/gpu/drm/drm_fops.c b/drivers/gpu/drm/drm_fops.c
> index 323c238..fee5b0c 100644
> --- a/drivers/gpu/drm/drm_fops.c
> +++ b/drivers/gpu/drm/drm_fops.c
> @@ -91,8 +91,8 @@ static int drm_setup(struct drm_device * dev)
>  {
>  	int ret;
>  
> -	if (dev->driver->firstopen &&
> -	    !drm_core_check_feature(dev, DRIVER_MODESET)) {
> +	if (drm_core_check_feature(dev, DRIVER_LEGACY) &&
> +	    dev->driver->firstopen) {
>  		ret = dev->driver->firstopen(dev);
>  		if (ret != 0)
>  			return ret;
> @@ -307,6 +307,9 @@ static void drm_events_release(struct drm_file *file_priv)
>   */
>  static void drm_legacy_dev_reinit(struct drm_device *dev)
>  {
> +	if (!drm_core_check_feature(dev, DRIVER_LEGACY))
> +		return;
> +
>  	if (dev->irq_enabled)
>  		drm_irq_uninstall(dev);
>  
> @@ -346,8 +349,7 @@ void drm_lastclose(struct drm_device * dev)
>  		dev->driver->lastclose(dev);
>  	DRM_DEBUG("driver lastclose completed\n");
>  
> -	if (!drm_core_check_feature(dev, DRIVER_MODESET))
> -		drm_legacy_dev_reinit(dev);
> +	drm_legacy_dev_reinit(dev);
>  }
>  
>  /**
> diff --git a/drivers/gpu/drm/drm_ioctl.c b/drivers/gpu/drm/drm_ioctl.c
> index 1f84ff5..b2175bf 100644
> --- a/drivers/gpu/drm/drm_ioctl.c
> +++ b/drivers/gpu/drm/drm_ioctl.c
> @@ -717,9 +717,9 @@ long drm_ioctl(struct file *filp,
>  		memset(kdata, 0, usize);
>  	}
>  
> -	/* Enforce sane locking for kms driver ioctls. Core ioctls are
> +	/* Enforce sane locking for non-legacy driver ioctls. Core ioctls are
>  	 * too messy still. */
> -	if ((drm_core_check_feature(dev, DRIVER_MODESET) && is_driver_ioctl) ||
> +	if ((drm_core_check_feature(dev, DRIVER_LEGACY) && is_driver_ioctl) ||
>  	    (ioctl->flags & DRM_UNLOCKED))
>  		retcode = func(dev, kdata, file_priv);
>  	else {
> diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c
> index 8ca3d2b..dce3c57 100644
> --- a/drivers/gpu/drm/drm_irq.c
> +++ b/drivers/gpu/drm/drm_irq.c
> @@ -336,7 +336,7 @@ void drm_vblank_cleanup(struct drm_device *dev)
>  		struct drm_vblank_crtc *vblank = &dev->vblank[pipe];
>  
>  		WARN_ON(vblank->enabled &&
> -			drm_core_check_feature(dev, DRIVER_MODESET));
> +			!drm_core_check_feature(dev, DRIVER_LEGACY));
>  
>  		del_timer_sync(&vblank->disable_timer);
>  	}
> @@ -482,7 +482,7 @@ int drm_irq_install(struct drm_device *dev, int irq)
>  		return ret;
>  	}
>  
> -	if (!drm_core_check_feature(dev, DRIVER_MODESET))
> +	if (drm_core_check_feature(dev, DRIVER_LEGACY))
>  		vga_client_register(dev->pdev, (void *)dev, drm_irq_vgaarb_nokms, NULL);
>  
>  	/* After installing handler */
> @@ -491,7 +491,7 @@ int drm_irq_install(struct drm_device *dev, int irq)
>  
>  	if (ret < 0) {
>  		dev->irq_enabled = false;
> -		if (!drm_core_check_feature(dev, DRIVER_MODESET))
> +		if (drm_core_check_feature(dev, DRIVER_LEGACY))
>  			vga_client_register(dev->pdev, NULL, NULL, NULL);
>  		free_irq(irq, dev);
>  	} else {
> @@ -544,7 +544,7 @@ int drm_irq_uninstall(struct drm_device *dev)
>  			if (!vblank->enabled)
>  				continue;
>  
> -			WARN_ON(drm_core_check_feature(dev, DRIVER_MODESET));
> +			WARN_ON(!drm_core_check_feature(dev, DRIVER_LEGACY));
>  
>  			vblank_disable_and_save(dev, i);
>  			wake_up(&vblank->queue);
> @@ -557,7 +557,7 @@ int drm_irq_uninstall(struct drm_device *dev)
>  
>  	DRM_DEBUG("irq=%d\n", dev->irq);
>  
> -	if (!drm_core_check_feature(dev, DRIVER_MODESET))
> +	if (drm_core_check_feature(dev, DRIVER_LEGACY))
>  		vga_client_register(dev->pdev, NULL, NULL, NULL);
>  
>  	if (dev->driver->irq_uninstall)
> @@ -592,7 +592,7 @@ int drm_control(struct drm_device *dev, void *data,
>  
>  	if (!drm_core_check_feature(dev, DRIVER_HAVE_IRQ))
>  		return 0;
> -	if (drm_core_check_feature(dev, DRIVER_MODESET))
> +	if (!drm_core_check_feature(dev, DRIVER_LEGACY))
>  		return 0;
>  	/* UMS was only ever support on pci devices. */
>  	if (WARN_ON(!dev->pdev))
> @@ -1522,7 +1522,7 @@ int drm_modeset_ctl(struct drm_device *dev, void *data,
>  		return 0;
>  
>  	/* KMS drivers handle this internally */
> -	if (drm_core_check_feature(dev, DRIVER_MODESET))
> +	if (!drm_core_check_feature(dev, DRIVER_LEGACY))
>  		return 0;
>  
>  	pipe = modeset->crtc;
> diff --git a/drivers/gpu/drm/drm_lock.c b/drivers/gpu/drm/drm_lock.c
> index 48ac0eb..c901f3c 100644
> --- a/drivers/gpu/drm/drm_lock.c
> +++ b/drivers/gpu/drm/drm_lock.c
> @@ -163,7 +163,7 @@ int drm_legacy_lock(struct drm_device *dev, void *data,
>  	struct drm_master *master = file_priv->master;
>  	int ret = 0;
>  
> -	if (drm_core_check_feature(dev, DRIVER_MODESET))
> +	if (!drm_core_check_feature(dev, DRIVER_LEGACY))
>  		return -EINVAL;
>  
>  	++file_priv->lock_count;
> @@ -252,7 +252,7 @@ int drm_legacy_unlock(struct drm_device *dev, void *data, struct drm_file *file_
>  	struct drm_lock *lock = data;
>  	struct drm_master *master = file_priv->master;
>  
> -	if (drm_core_check_feature(dev, DRIVER_MODESET))
> +	if (!drm_core_check_feature(dev, DRIVER_LEGACY))
>  		return -EINVAL;
>  
>  	if (lock->context == DRM_KERNEL_CONTEXT) {
> diff --git a/drivers/gpu/drm/drm_pci.c b/drivers/gpu/drm/drm_pci.c
> index b2f8f10..0fc8cec 100644
> --- a/drivers/gpu/drm/drm_pci.c
> +++ b/drivers/gpu/drm/drm_pci.c
> @@ -175,7 +175,7 @@ int drm_irq_by_busid(struct drm_device *dev, void *data,
>  {
>  	struct drm_irq_busid *p = data;
>  
> -	if (drm_core_check_feature(dev, DRIVER_MODESET))
> +	if (!drm_core_check_feature(dev, DRIVER_LEGACY))
>  		return -EINVAL;
>  
>  	/* UMS was only ever support on PCI devices. */
> @@ -248,7 +248,7 @@ int drm_get_pci_dev(struct pci_dev *pdev, const struct pci_device_id *ent,
>  	dev->hose = pdev->sysdata;
>  #endif
>  
> -	if (drm_core_check_feature(dev, DRIVER_MODESET))
> +	if (!drm_core_check_feature(dev, DRIVER_LEGACY))
>  		pci_set_drvdata(pdev, dev);
>  
>  	drm_pci_agp_init(dev);
> @@ -263,7 +263,7 @@ int drm_get_pci_dev(struct pci_dev *pdev, const struct pci_device_id *ent,
>  
>  	/* No locking needed since shadow-attach is single-threaded since it may
>  	 * only be called from the per-driver module init hook. */
> -	if (!drm_core_check_feature(dev, DRIVER_MODESET))
> +	if (drm_core_check_feature(dev, DRIVER_LEGACY))
>  		list_add_tail(&dev->legacy_dev_list, &driver->legacy_dev_list);
>  
>  	return 0;
> @@ -299,7 +299,7 @@ int drm_pci_init(struct drm_driver *driver, struct pci_driver *pdriver)
>  
>  	DRM_DEBUG("\n");
>  
> -	if (driver->driver_features & DRIVER_MODESET)
> +	if (!(driver->driver_features & DRIVER_LEGACY))
>  		return pci_register_driver(pdriver);
>  
>  	/* If not using KMS, fall back to stealth mode manual scanning. */
> @@ -421,7 +421,7 @@ void drm_pci_exit(struct drm_driver *driver, struct pci_driver *pdriver)
>  	struct drm_device *dev, *tmp;
>  	DRM_DEBUG("\n");
>  
> -	if (driver->driver_features & DRIVER_MODESET) {
> +	if (!(driver->driver_features & DRIVER_LEGACY)) {
>  		pci_unregister_driver(pdriver);
>  	} else {
>  		list_for_each_entry_safe(dev, tmp, &driver->legacy_dev_list,
> diff --git a/drivers/gpu/drm/drm_scatter.c b/drivers/gpu/drm/drm_scatter.c
> index 4f0f3b3..efee0de 100644
> --- a/drivers/gpu/drm/drm_scatter.c
> +++ b/drivers/gpu/drm/drm_scatter.c
> @@ -68,7 +68,7 @@ static void drm_sg_cleanup(struct drm_sg_mem * entry)
>  void drm_legacy_sg_cleanup(struct drm_device *dev)
>  {
>  	if (drm_core_check_feature(dev, DRIVER_SG) && dev->sg &&
> -	    !drm_core_check_feature(dev, DRIVER_MODESET)) {
> +	    drm_core_check_feature(dev, DRIVER_LEGACY)) {
>  		drm_sg_cleanup(dev->sg);
>  		dev->sg = NULL;
>  	}
> @@ -88,7 +88,7 @@ int drm_legacy_sg_alloc(struct drm_device *dev, void *data,
>  
>  	DRM_DEBUG("\n");
>  
> -	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_SG))
> @@ -201,7 +201,7 @@ int drm_legacy_sg_free(struct drm_device *dev, void *data,
>  	struct drm_scatter_gather *request = data;
>  	struct drm_sg_mem *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_SG))
> -- 
> 2.7.4
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 1/6] drm/vmwgfx: Stop checking minor type directly
  2016-06-24 22:46   ` Sinclair Yeh
@ 2016-07-12 11:08     ` Daniel Vetter
  0 siblings, 0 replies; 15+ messages in thread
From: Daniel Vetter @ 2016-07-12 11:08 UTC (permalink / raw)
  To: Sinclair Yeh; +Cc: rufus.hamade, Thomas Hellstrom, dri-devel

On Fri, Jun 24, 2016 at 03:46:25PM -0700, Sinclair Yeh wrote:
> Thanks!
> 
> Reviewed-by: Sinclair Yeh <syeh@vmware.com>

Applied to drm-misc.
-Daniel

> 
> 
> On Fri, Jun 24, 2016 at 06:15:15PM +0100, Frank Binns wrote:
> > Use the appropriate drm minor type helper instead.
> > 
> > Cc: Sinclair Yeh <syeh@vmware.com>
> > Cc: Thomas Hellstrom <thellstrom@vmware.com>
> > Signed-off-by: Frank Binns <frank.binns@imgtec.com>
> > ---
> >  drivers/gpu/drm/vmwgfx/vmwgfx_drv.c | 3 +--
> >  1 file changed, 1 insertion(+), 2 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> > index 6064664..5d5c951 100644
> > --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> > +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> > @@ -1041,8 +1041,7 @@ static struct vmw_master *vmw_master_check(struct drm_device *dev,
> >  	struct vmw_fpriv *vmw_fp = vmw_fpriv(file_priv);
> >  	struct vmw_master *vmaster;
> >  
> > -	if (file_priv->minor->type != DRM_MINOR_LEGACY ||
> > -	    !(flags & DRM_AUTH))
> > +	if (!drm_is_primary_client(file_priv) || !(flags & DRM_AUTH))
> >  		return NULL;
> >  
> >  	ret = mutex_lock_interruptible(&dev->master_mutex);
> > -- 
> > 2.7.4
> > 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 2/6] drm: Rename DRM_MINOR_LEGACY to DRM_MINOR_PRIMARY
  2016-06-24 17:15 ` [PATCH 2/6] drm: Rename DRM_MINOR_LEGACY to DRM_MINOR_PRIMARY Frank Binns
@ 2016-07-12 11:09   ` Daniel Vetter
  0 siblings, 0 replies; 15+ messages in thread
From: Daniel Vetter @ 2016-07-12 11:09 UTC (permalink / raw)
  To: Frank Binns; +Cc: rufus.hamade, dri-devel

On Fri, Jun 24, 2016 at 06:15:16PM +0100, Frank Binns wrote:
> This brings the minor type name into line with how the actual minor,
> using this type, is referenced throughout the rest of drm.
> 
> Signed-off-by: Frank Binns <frank.binns@imgtec.com>

Tiny conflict with latest drm-misc, please rebase (since I'm still halfway
in vacation mode, so don't trust myself to do it ...).

Thanks, Daniel

> ---
>  drivers/gpu/drm/drm_drv.c | 16 ++++++++--------
>  include/drm/drmP.h        |  4 ++--
>  2 files changed, 10 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
> index aead9ff..7775c8b 100644
> --- a/drivers/gpu/drm/drm_drv.c
> +++ b/drivers/gpu/drm/drm_drv.c
> @@ -112,7 +112,7 @@ static struct drm_minor **drm_minor_get_slot(struct drm_device *dev,
>  					     unsigned int type)
>  {
>  	switch (type) {
> -	case DRM_MINOR_LEGACY:
> +	case DRM_MINOR_PRIMARY:
>  		return &dev->primary;
>  	case DRM_MINOR_RENDER:
>  		return &dev->render;
> @@ -362,7 +362,7 @@ EXPORT_SYMBOL(drm_put_dev);
>  void drm_unplug_dev(struct drm_device *dev)
>  {
>  	/* for a USB device */
> -	drm_minor_unregister(dev, DRM_MINOR_LEGACY);
> +	drm_minor_unregister(dev, DRM_MINOR_PRIMARY);
>  	drm_minor_unregister(dev, DRM_MINOR_RENDER);
>  	drm_minor_unregister(dev, DRM_MINOR_CONTROL);
>  
> @@ -514,7 +514,7 @@ int drm_dev_init(struct drm_device *dev,
>  			goto err_minors;
>  	}
>  
> -	ret = drm_minor_alloc(dev, DRM_MINOR_LEGACY);
> +	ret = drm_minor_alloc(dev, DRM_MINOR_PRIMARY);
>  	if (ret)
>  		goto err_minors;
>  
> @@ -547,7 +547,7 @@ err_ctxbitmap:
>  	drm_legacy_ctxbitmap_cleanup(dev);
>  	drm_ht_remove(&dev->map_hash);
>  err_minors:
> -	drm_minor_free(dev, DRM_MINOR_LEGACY);
> +	drm_minor_free(dev, DRM_MINOR_PRIMARY);
>  	drm_minor_free(dev, DRM_MINOR_RENDER);
>  	drm_minor_free(dev, DRM_MINOR_CONTROL);
>  	drm_fs_inode_free(dev->anon_inode);
> @@ -610,7 +610,7 @@ static void drm_dev_release(struct kref *ref)
>  	drm_ht_remove(&dev->map_hash);
>  	drm_fs_inode_free(dev->anon_inode);
>  
> -	drm_minor_free(dev, DRM_MINOR_LEGACY);
> +	drm_minor_free(dev, DRM_MINOR_PRIMARY);
>  	drm_minor_free(dev, DRM_MINOR_RENDER);
>  	drm_minor_free(dev, DRM_MINOR_CONTROL);
>  
> @@ -686,7 +686,7 @@ int drm_dev_register(struct drm_device *dev, unsigned long flags)
>  	if (ret)
>  		goto err_minors;
>  
> -	ret = drm_minor_register(dev, DRM_MINOR_LEGACY);
> +	ret = drm_minor_register(dev, DRM_MINOR_PRIMARY);
>  	if (ret)
>  		goto err_minors;
>  
> @@ -703,7 +703,7 @@ int drm_dev_register(struct drm_device *dev, unsigned long flags)
>  	goto out_unlock;
>  
>  err_minors:
> -	drm_minor_unregister(dev, DRM_MINOR_LEGACY);
> +	drm_minor_unregister(dev, DRM_MINOR_PRIMARY);
>  	drm_minor_unregister(dev, DRM_MINOR_RENDER);
>  	drm_minor_unregister(dev, DRM_MINOR_CONTROL);
>  out_unlock:
> @@ -743,7 +743,7 @@ void drm_dev_unregister(struct drm_device *dev)
>  	list_for_each_entry_safe(r_list, list_temp, &dev->maplist, head)
>  		drm_legacy_rmmap(dev, r_list->map);
>  
> -	drm_minor_unregister(dev, DRM_MINOR_LEGACY);
> +	drm_minor_unregister(dev, DRM_MINOR_PRIMARY);
>  	drm_minor_unregister(dev, DRM_MINOR_RENDER);
>  	drm_minor_unregister(dev, DRM_MINOR_CONTROL);
>  }
> diff --git a/include/drm/drmP.h b/include/drm/drmP.h
> index cf918e3e..1d39988 100644
> --- a/include/drm/drmP.h
> +++ b/include/drm/drmP.h
> @@ -642,7 +642,7 @@ struct drm_driver {
>  };
>  
>  enum drm_minor_type {
> -	DRM_MINOR_LEGACY,
> +	DRM_MINOR_PRIMARY,
>  	DRM_MINOR_CONTROL,
>  	DRM_MINOR_RENDER,
>  	DRM_MINOR_CNT,
> @@ -883,7 +883,7 @@ static inline bool drm_is_control_client(const struct drm_file *file_priv)
>  
>  static inline bool drm_is_primary_client(const struct drm_file *file_priv)
>  {
> -	return file_priv->minor->type == DRM_MINOR_LEGACY;
> +	return file_priv->minor->type == DRM_MINOR_PRIMARY;
>  }
>  
>  /******************************************************************/
> -- 
> 2.7.4
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 4/6] drm/qxl: Remove dead code
  2016-06-24 17:15 ` [PATCH 4/6] drm/qxl: Remove dead code Frank Binns
@ 2016-07-12 11:09   ` Daniel Vetter
  0 siblings, 0 replies; 15+ messages in thread
From: Daniel Vetter @ 2016-07-12 11:09 UTC (permalink / raw)
  To: Frank Binns; +Cc: rufus.hamade, Thierry Reding, dri-devel

On Fri, Jun 24, 2016 at 06:15:18PM +0100, Frank Binns wrote:
> From: Thierry Reding <treding@nvidia.com>
> 
> The QXL driver sets DRIVER_MODESET unconditionally, so testing for the
> absence of the feature will always fail.
> 
> Signed-off-by: Thierry Reding <treding@nvidia.com>

Applied to drm-misc.
-Daniel

> ---
>  drivers/gpu/drm/qxl/qxl_kms.c | 4 ----
>  1 file changed, 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/qxl/qxl_kms.c b/drivers/gpu/drm/qxl/qxl_kms.c
> index 2319800..12b8dff 100644
> --- a/drivers/gpu/drm/qxl/qxl_kms.c
> +++ b/drivers/gpu/drm/qxl/qxl_kms.c
> @@ -310,10 +310,6 @@ int qxl_driver_load(struct drm_device *dev, unsigned long flags)
>  	struct qxl_device *qdev;
>  	int r;
>  
> -	/* require kms */
> -	if (!drm_core_check_feature(dev, DRIVER_MODESET))
> -		return -ENODEV;
> -
>  	qdev = kzalloc(sizeof(struct qxl_device), GFP_KERNEL);
>  	if (qdev == NULL)
>  		return -ENOMEM;
> -- 
> 2.7.4
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2016-07-12 11:09 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-06-24 17:15 [PATCH v2 0/6] Support render only drivers Frank Binns
2016-06-24 17:15 ` [PATCH 1/6] drm/vmwgfx: Stop checking minor type directly Frank Binns
2016-06-24 22:46   ` Sinclair Yeh
2016-07-12 11:08     ` Daniel Vetter
2016-06-24 17:15 ` [PATCH 2/6] drm: Rename DRM_MINOR_LEGACY to DRM_MINOR_PRIMARY Frank Binns
2016-07-12 11:09   ` Daniel Vetter
2016-06-24 17:15 ` [PATCH 3/6] drm/amd/amdgpu: Set DRIVER_MODESET feature flag at build time Frank Binns
2016-06-24 22:08   ` Alex Deucher
2016-06-27  9:37     ` Frank Binns
2016-06-27 15:51       ` Alex Deucher
2016-06-24 17:15 ` [PATCH 4/6] drm/qxl: Remove dead code Frank Binns
2016-07-12 11:09   ` Daniel Vetter
2016-06-24 17:15 ` [PATCH v2 5/6] drm: Introduce DRIVER_LEGACY feature Frank Binns
2016-06-24 17:15 ` [PATCH v2 6/6] drm: Separate DRIVER_MODESET and DRIVER_LEGACY Frank Binns
2016-07-12 11:06   ` Daniel Vetter

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.