All of lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel Vetter <daniel.vetter@ffwll.ch>
To: DRI Development <dri-devel@lists.freedesktop.org>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Subject: [PATCH 14/18] drm: inline drm_pci_set_unique
Date: Fri, 11 Apr 2014 23:36:11 +0200	[thread overview]
Message-ID: <1397252175-14227-15-git-send-email-daniel.vetter@ffwll.ch> (raw)
In-Reply-To: <1397252175-14227-1-git-send-email-daniel.vetter@ffwll.ch>

This is only used for drm versions 1.0, and kms drivers have never
been there. So we can appropriately restrict this to legacy and hence
pci devices and inline everything.

v2: Make the dummy function actually return something, caught by Wu
Fengguang's 0-day tester.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---
 drivers/gpu/drm/drm_ioctl.c | 10 +++++++---
 drivers/gpu/drm/drm_pci.c   | 14 ++++++++++----
 include/drm/drmP.h          |  5 +++--
 3 files changed, 20 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/drm_ioctl.c b/drivers/gpu/drm/drm_ioctl.c
index 93a42040bedb..5aea5b57ba4b 100644
--- a/drivers/gpu/drm/drm_ioctl.c
+++ b/drivers/gpu/drm/drm_ioctl.c
@@ -93,7 +93,8 @@ drm_unset_busid(struct drm_device *dev,
  * Copies the bus id from userspace into drm_device::unique, and verifies that
  * it matches the device this DRM is attached to (EINVAL otherwise).  Deprecated
  * in interface version 1.1 and will return EBUSY when setversion has requested
- * version 1.1 or greater.
+ * version 1.1 or greater. Also note that KMS is all version 1.1 and later and
+ * UMS was only ever support on pci devices.
  */
 int drm_setunique(struct drm_device *dev, void *data,
 		  struct drm_file *file_priv)
@@ -108,10 +109,13 @@ int drm_setunique(struct drm_device *dev, void *data,
 	if (!u->unique_len || u->unique_len > 1024)
 		return -EINVAL;
 
-	if (!dev->driver->bus->set_unique)
+	if (drm_core_check_feature(dev, DRIVER_MODESET))
+		return 0;
+
+	if (WARN_ON(!dev->pdev))
 		return -EINVAL;
 
-	ret = dev->driver->bus->set_unique(dev, master, u);
+	ret = drm_pci_set_unique(dev, master, u);
 	if (ret)
 		goto err;
 
diff --git a/drivers/gpu/drm/drm_pci.c b/drivers/gpu/drm/drm_pci.c
index 7d388d188c4c..0fa42072262b 100644
--- a/drivers/gpu/drm/drm_pci.c
+++ b/drivers/gpu/drm/drm_pci.c
@@ -185,9 +185,9 @@ err:
 	return ret;
 }
 
-static int drm_pci_set_unique(struct drm_device *dev,
-			      struct drm_master *master,
-			      struct drm_unique *u)
+int drm_pci_set_unique(struct drm_device *dev,
+		       struct drm_master *master,
+		       struct drm_unique *u)
 {
 	int domain, bus, slot, func, ret;
 	const char *bus_name;
@@ -315,7 +315,6 @@ void drm_pci_agp_destroy(struct drm_device *dev)
 static struct drm_bus drm_pci_bus = {
 	.get_name = drm_pci_get_name,
 	.set_busid = drm_pci_set_busid,
-	.set_unique = drm_pci_set_unique,
 };
 
 /**
@@ -482,6 +481,13 @@ int drm_irq_by_busid(struct drm_device *dev, void *data,
 {
 	return -EINVAL;
 }
+
+int drm_pci_set_unique(struct drm_device *dev,
+		       struct drm_master *master,
+		       struct drm_unique *u)
+{
+	return -EINVAL;
+}
 #endif
 
 EXPORT_SYMBOL(drm_pci_init);
diff --git a/include/drm/drmP.h b/include/drm/drmP.h
index f62891998388..5333659d4d0e 100644
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
@@ -728,8 +728,6 @@ struct drm_master {
 struct drm_bus {
 	const char *(*get_name)(struct drm_device *dev);
 	int (*set_busid)(struct drm_device *dev, struct drm_master *master);
-	int (*set_unique)(struct drm_device *dev, struct drm_master *master,
-			  struct drm_unique *unique);
 };
 
 /**
@@ -1511,6 +1509,9 @@ extern drm_dma_handle_t *drm_pci_alloc(struct drm_device *dev, size_t size,
 				       size_t align);
 extern void __drm_pci_free(struct drm_device *dev, drm_dma_handle_t * dmah);
 extern void drm_pci_free(struct drm_device *dev, drm_dma_handle_t * dmah);
+extern int drm_pci_set_unique(struct drm_device *dev,
+			      struct drm_master *master,
+			      struct drm_unique *u);
 
 			       /* sysfs support (drm_sysfs.c) */
 struct drm_sysfs_class;
-- 
1.8.5.2

  parent reply	other threads:[~2014-04-11 21:36 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-11 21:35 [PATCH 00/18] drm_bus cleanups and other cruft removal Daniel Vetter
2014-04-11 21:35 ` [PATCH 01/18] drm/omap: fix up pdev_remove Daniel Vetter
2014-04-12 15:26   ` Rob Clark
2014-04-14  6:26   ` Tomi Valkeinen
2014-04-16  8:15     ` Daniel Vetter
2014-04-16  8:27       ` Tomi Valkeinen
2014-04-16 17:05         ` Daniel Vetter
2014-04-11 21:35 ` [PATCH 02/18] drm/irq: simplify irq checks in drm_wait_vblank Daniel Vetter
2014-04-14 20:55   ` Thierry Reding
2014-04-11 21:36 ` [PATCH 03/18] drm/pci: fold in irq_by_busid support Daniel Vetter
2014-04-17 14:33   ` Thierry Reding
2014-04-11 21:36 ` [PATCH 04/18] drm/irq: drm_control is a legacy ioctl, so pci devices only Daniel Vetter
2014-04-17 14:38   ` Thierry Reding
2014-04-11 21:36 ` [PATCH 05/18] drm/irq: remove cargo-culted locking from irq_install/unistall Daniel Vetter
2014-04-17 14:43   ` Thierry Reding
2014-04-17 14:44     ` Thierry Reding
2014-04-11 21:36 ` [PATCH 06/18] drm: remove drm_dev_to_irq from drivers Daniel Vetter
2014-04-17 14:47   ` Thierry Reding
2014-04-11 21:36 ` [PATCH 07/18] drm: kill drm_bus->bus_type Daniel Vetter
2014-04-17 14:50   ` Thierry Reding
2014-04-11 21:36 ` [PATCH 08/18] drm: Rip out totally bogus vga_switcheroo->can_switch locking Daniel Vetter
2014-04-17 14:56   ` Thierry Reding
2014-04-22 20:45     ` [PATCH] " Daniel Vetter
2014-04-23  7:28       ` Thierry Reding
2014-04-11 21:36 ` [PATCH 09/18] drm: rename dev->count_lock to dev->buf_lock Daniel Vetter
2014-04-17 14:57   ` Thierry Reding
2014-04-11 21:36 ` [PATCH 10/18] drm/irq: track the irq installed in drm_irq_install in dev->irq Daniel Vetter
2014-04-16 21:57   ` Laurent Pinchart
2014-04-16 22:02   ` Laurent Pinchart
2014-04-22  9:46     ` Daniel Vetter
2014-04-22 10:49       ` Thierry Reding
2014-04-17 15:03   ` Thierry Reding
2014-04-22 20:44   ` [PATCH] " Daniel Vetter
2014-04-23  7:27     ` Thierry Reding
2014-04-23  8:31       ` Daniel Vetter
2014-04-11 21:36 ` [PATCH 11/18] drm/irq: Look up the pci irq directly in the drm_control ioctl Daniel Vetter
2014-04-11 21:36 ` [PATCH 12/18] drm: pass the irq explicitly to drm_irq_install Daniel Vetter
2014-04-17 15:06   ` Thierry Reding
2014-04-11 21:36 ` [PATCH 13/18] drm: remove bus->get_irq implementations Daniel Vetter
2014-04-17 15:07   ` Thierry Reding
2014-04-11 21:36 ` Daniel Vetter [this message]
2014-04-17 15:10   ` [PATCH 14/18] drm: inline drm_pci_set_unique Thierry Reding
2014-04-11 21:36 ` [PATCH 15/18] drm: rip out dev->devname Daniel Vetter
2014-04-17 15:11   ` Thierry Reding
2014-04-11 21:36 ` [PATCH 16/18] drm: remove drm_bus->get_name Daniel Vetter
2014-04-17 15:12   ` Thierry Reding
2014-04-11 21:36 ` [PATCH 17/18] drm: Remove dev->kdriver Daniel Vetter
2014-04-17 15:13   ` Thierry Reding
2014-04-11 21:36 ` [PATCH 18/18] drm/<drivers>: don't set driver->dev_priv_size to 0 Daniel Vetter
2014-04-17 15:14   ` Thierry Reding
2014-04-16 22:10 ` [PATCH 00/18] drm_bus cleanups and other cruft removal Laurent Pinchart
2014-04-22  7:30 ` David Herrmann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1397252175-14227-15-git-send-email-daniel.vetter@ffwll.ch \
    --to=daniel.vetter@ffwll.ch \
    --cc=dri-devel@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.