[PATCH 13/13] drm: remove redundant minor->index
David Herrmann
dh.herrmann at gmail.com
Wed Jan 29 06:02:00 PST 2014
The index of a minor can be easily calculated, no reason to store it.
Furthermore, it's actually only really used in drm_sysfs.c during
device-registration, so we don't win anything by caching it. All other
uses of it are dev->primary->index accesses, which are equivalent to
dev->minor_base now.
Replace all occurrences and drop minor->index. A small helper
drm_minor_get_id() is added, so drm_sysfs.c does not have to hard-code the
+64 offset, which is an implementation detail of drm_stub.c.
Signed-off-by: David Herrmann <dh.herrmann at gmail.com>
---
drivers/gpu/drm/drm_fops.c | 3 ++-
drivers/gpu/drm/drm_info.c | 2 +-
drivers/gpu/drm/drm_pci.c | 2 +-
drivers/gpu/drm/drm_platform.c | 2 +-
drivers/gpu/drm/drm_stub.c | 17 ++++++++++++++---
drivers/gpu/drm/drm_sysfs.c | 8 +++++---
drivers/gpu/drm/drm_usb.c | 2 +-
drivers/gpu/drm/i915/i915_gpu_error.c | 2 +-
drivers/gpu/drm/i915/i915_trace.h | 20 ++++++++++----------
drivers/gpu/drm/msm/msm_fbdev.c | 2 +-
drivers/gpu/drm/omapdrm/omap_fbdev.c | 2 +-
drivers/gpu/drm/radeon/atombios_encoders.c | 2 +-
drivers/gpu/drm/radeon/radeon_legacy_encoders.c | 2 +-
drivers/gpu/drm/radeon/radeon_trace.h | 2 +-
drivers/gpu/drm/tegra/bus.c | 2 +-
include/drm/drmP.h | 2 +-
16 files changed, 43 insertions(+), 29 deletions(-)
diff --git a/drivers/gpu/drm/drm_fops.c b/drivers/gpu/drm/drm_fops.c
index fdf35cd..d37695e 100644
--- a/drivers/gpu/drm/drm_fops.c
+++ b/drivers/gpu/drm/drm_fops.c
@@ -217,7 +217,8 @@ static int drm_open_helper(struct inode *inode, struct file *filp,
if (dev->switch_power_state != DRM_SWITCH_POWER_ON && dev->switch_power_state != DRM_SWITCH_POWER_DYNAMIC_OFF)
return -EINVAL;
- DRM_DEBUG("pid = %d, minor = %d\n", task_pid_nr(current), minor->index);
+ DRM_DEBUG("pid = %d, devt = 0x%lx\n", task_pid_nr(current),
+ (long)old_encode_dev(minor->kdev->devt));
priv = kzalloc(sizeof(*priv), GFP_KERNEL);
if (!priv)
diff --git a/drivers/gpu/drm/drm_info.c b/drivers/gpu/drm/drm_info.c
index 7473035..b5a4b0a 100644
--- a/drivers/gpu/drm/drm_info.c
+++ b/drivers/gpu/drm/drm_info.c
@@ -190,7 +190,7 @@ int drm_clients_info(struct seq_file *m, void *data)
list_for_each_entry(priv, &dev->filelist, lhead) {
seq_printf(m, "%c %3d %5d %5d %10u\n",
priv->authenticated ? 'y' : 'n',
- priv->minor->index,
+ drm_minor_get_id(priv->minor),
pid_vnr(priv->pid),
from_kuid_munged(seq_user_ns(m), priv->uid),
priv->magic);
diff --git a/drivers/gpu/drm/drm_pci.c b/drivers/gpu/drm/drm_pci.c
index 9ded847..4e6f5ea 100644
--- a/drivers/gpu/drm/drm_pci.c
+++ b/drivers/gpu/drm/drm_pci.c
@@ -338,7 +338,7 @@ int drm_get_pci_dev(struct pci_dev *pdev, const struct pci_device_id *ent,
DRM_INFO("Initialized %s %d.%d.%d %s for %s on minor %d\n",
driver->name, driver->major, driver->minor, driver->patchlevel,
- driver->date, pci_name(pdev), dev->primary->index);
+ driver->date, pci_name(pdev), dev->minor_base);
/* No locking needed since shadow-attach is single-threaded since it may
* only be called from the per-driver module init hook. */
diff --git a/drivers/gpu/drm/drm_platform.c b/drivers/gpu/drm/drm_platform.c
index 319ff53..7521571 100644
--- a/drivers/gpu/drm/drm_platform.c
+++ b/drivers/gpu/drm/drm_platform.c
@@ -59,7 +59,7 @@ static int drm_get_platform_dev(struct platform_device *platdev,
DRM_INFO("Initialized %s %d.%d.%d %s on minor %d\n",
driver->name, driver->major, driver->minor, driver->patchlevel,
- driver->date, dev->primary->index);
+ driver->date, dev->minor_base);
return 0;
diff --git a/drivers/gpu/drm/drm_stub.c b/drivers/gpu/drm/drm_stub.c
index 0f84bf6..2567ecb 100644
--- a/drivers/gpu/drm/drm_stub.c
+++ b/drivers/gpu/drm/drm_stub.c
@@ -339,7 +339,6 @@ static int drm_minor_alloc(struct drm_device *dev, unsigned int type)
return -ENOMEM;
minor->type = type;
- minor->index = drm_minor_type_to_id(dev, type);
minor->dev = dev;
INIT_LIST_HEAD(&minor->master_list);
@@ -369,7 +368,8 @@ static int drm_minor_register(struct drm_device *dev, unsigned int type)
if (!new_minor)
return 0;
- ret = drm_debugfs_init(new_minor, new_minor->index, drm_debugfs_root);
+ ret = drm_debugfs_init(new_minor, drm_minor_get_id(new_minor),
+ drm_debugfs_root);
if (ret) {
DRM_ERROR("DRM: Failed to initialize /sys/kernel/debug/dri.\n");
return ret;
@@ -381,7 +381,7 @@ static int drm_minor_register(struct drm_device *dev, unsigned int type)
goto err_debugfs;
}
- DRM_DEBUG("new minor assigned %d\n", new_minor->index);
+ DRM_DEBUG("new minor assigned %d\n", drm_minor_get_id(new_minor));
return 0;
err_debugfs:
@@ -459,6 +459,17 @@ void drm_minor_release(struct drm_minor *minor)
}
/**
+ * drm_minor_get_id - Return minor-ID of DRM-minor object
+ * @minor: DRM-minor object
+ *
+ * Returns the minor-ID of the given DRM-minor object.
+ */
+unsigned int drm_minor_get_id(struct drm_minor *minor)
+{
+ return drm_minor_type_to_id(minor->dev, minor->type);
+}
+
+/**
* Called via drm_exit() at module unload time or when pci device is
* unplugged.
*
diff --git a/drivers/gpu/drm/drm_sysfs.c b/drivers/gpu/drm/drm_sysfs.c
index c22c309..9be02d9 100644
--- a/drivers/gpu/drm/drm_sysfs.c
+++ b/drivers/gpu/drm/drm_sysfs.c
@@ -380,7 +380,7 @@ int drm_sysfs_connector_add(struct drm_connector *connector)
connector->kdev = device_create(drm_class, dev->primary->kdev,
0, connector, "card%d-%s",
- dev->primary->index, drm_get_connector_name(connector));
+ dev->minor_base, drm_get_connector_name(connector));
DRM_DEBUG("adding \"%s\" to sysfs\n",
drm_get_connector_name(connector));
@@ -505,6 +505,7 @@ static void drm_sysfs_release(struct device *dev)
*/
int drm_sysfs_device_add(struct drm_minor *minor)
{
+ unsigned int minor_id;
char *minor_str;
int r;
@@ -521,15 +522,16 @@ int drm_sysfs_device_add(struct drm_minor *minor)
goto error;
}
+ minor_id = drm_minor_get_id(minor);
device_initialize(minor->kdev);
- minor->kdev->devt = MKDEV(DRM_MAJOR, minor->index);
+ minor->kdev->devt = MKDEV(DRM_MAJOR, minor_id);
minor->kdev->class = drm_class;
minor->kdev->type = &drm_sysfs_device_minor;
minor->kdev->parent = minor->dev->dev;
minor->kdev->release = drm_sysfs_release;
dev_set_drvdata(minor->kdev, minor);
- r = dev_set_name(minor->kdev, minor_str, minor->index);
+ r = dev_set_name(minor->kdev, minor_str, minor_id);
if (r < 0)
goto error;
diff --git a/drivers/gpu/drm/drm_usb.c b/drivers/gpu/drm/drm_usb.c
index c3406aa..eb02ad3 100644
--- a/drivers/gpu/drm/drm_usb.c
+++ b/drivers/gpu/drm/drm_usb.c
@@ -25,7 +25,7 @@ int drm_get_usb_dev(struct usb_interface *interface,
DRM_INFO("Initialized %s %d.%d.%d %s on minor %d\n",
driver->name, driver->major, driver->minor, driver->patchlevel,
- driver->date, dev->primary->index);
+ driver->date, dev->minor_base);
return 0;
diff --git a/drivers/gpu/drm/i915/i915_gpu_error.c b/drivers/gpu/drm/i915/i915_gpu_error.c
index a707cca..07442fb 100644
--- a/drivers/gpu/drm/i915/i915_gpu_error.c
+++ b/drivers/gpu/drm/i915/i915_gpu_error.c
@@ -914,7 +914,7 @@ void i915_capture_error_state(struct drm_device *dev)
}
DRM_INFO("GPU crash dump saved to /sys/class/drm/card%d/error\n",
- dev->primary->index);
+ dev->minor_base);
DRM_INFO("GPU hangs can indicate a bug anywhere in the entire gfx stack, including userspace.\n");
DRM_INFO("Please file a _new_ bug report on bugs.freedesktop.org against DRI -> DRM/Intel\n");
DRM_INFO("drm/i915 developers can then reassign to the right component if it's not a kernel issue.\n");
diff --git a/drivers/gpu/drm/i915/i915_trace.h b/drivers/gpu/drm/i915/i915_trace.h
index 6e580c9..a03e4e2 100644
--- a/drivers/gpu/drm/i915/i915_trace.h
+++ b/drivers/gpu/drm/i915/i915_trace.h
@@ -207,7 +207,7 @@ TRACE_EVENT(i915_gem_evict,
),
TP_fast_assign(
- __entry->dev = dev->primary->index;
+ __entry->dev = dev->minor_base;
__entry->size = size;
__entry->align = align;
__entry->mappable = mappable;
@@ -227,7 +227,7 @@ TRACE_EVENT(i915_gem_evict_everything,
),
TP_fast_assign(
- __entry->dev = dev->primary->index;
+ __entry->dev = dev->minor_base;
),
TP_printk("dev=%d", __entry->dev)
@@ -245,7 +245,7 @@ TRACE_EVENT(i915_gem_evict_vm,
__entry->vm = vm;
),
- TP_printk("dev=%d, vm=%p", __entry->vm->dev->primary->index, __entry->vm)
+ TP_printk("dev=%d, vm=%p", __entry->vm->dev->minor_base, __entry->vm)
);
TRACE_EVENT(i915_gem_ring_sync_to,
@@ -262,7 +262,7 @@ TRACE_EVENT(i915_gem_ring_sync_to,
),
TP_fast_assign(
- __entry->dev = from->dev->primary->index;
+ __entry->dev = from->dev->minor_base;
__entry->sync_from = from->id;
__entry->sync_to = to->id;
__entry->seqno = seqno;
@@ -286,7 +286,7 @@ TRACE_EVENT(i915_gem_ring_dispatch,
),
TP_fast_assign(
- __entry->dev = ring->dev->primary->index;
+ __entry->dev = ring->dev->minor_base;
__entry->ring = ring->id;
__entry->seqno = seqno;
__entry->flags = flags;
@@ -309,7 +309,7 @@ TRACE_EVENT(i915_gem_ring_flush,
),
TP_fast_assign(
- __entry->dev = ring->dev->primary->index;
+ __entry->dev = ring->dev->minor_base;
__entry->ring = ring->id;
__entry->invalidate = invalidate;
__entry->flush = flush;
@@ -331,7 +331,7 @@ DECLARE_EVENT_CLASS(i915_gem_request,
),
TP_fast_assign(
- __entry->dev = ring->dev->primary->index;
+ __entry->dev = ring->dev->minor_base;
__entry->ring = ring->id;
__entry->seqno = seqno;
),
@@ -356,7 +356,7 @@ TRACE_EVENT(i915_gem_request_complete,
),
TP_fast_assign(
- __entry->dev = ring->dev->primary->index;
+ __entry->dev = ring->dev->minor_base;
__entry->ring = ring->id;
__entry->seqno = ring->get_seqno(ring, false);
),
@@ -388,7 +388,7 @@ TRACE_EVENT(i915_gem_request_wait_begin,
* less desirable.
*/
TP_fast_assign(
- __entry->dev = ring->dev->primary->index;
+ __entry->dev = ring->dev->minor_base;
__entry->ring = ring->id;
__entry->seqno = seqno;
__entry->blocking = mutex_is_locked(&ring->dev->struct_mutex);
@@ -414,7 +414,7 @@ DECLARE_EVENT_CLASS(i915_ring,
),
TP_fast_assign(
- __entry->dev = ring->dev->primary->index;
+ __entry->dev = ring->dev->minor_base;
__entry->ring = ring->id;
),
diff --git a/drivers/gpu/drm/msm/msm_fbdev.c b/drivers/gpu/drm/msm/msm_fbdev.c
index 6c6d7d4..5fc48b9 100644
--- a/drivers/gpu/drm/msm/msm_fbdev.c
+++ b/drivers/gpu/drm/msm/msm_fbdev.c
@@ -83,7 +83,7 @@ static int msm_fbdev_create(struct drm_fb_helper *helper,
/* allocate backing bo */
size = mode_cmd.pitches[0] * mode_cmd.height;
- DBG("allocating %d bytes for fb %d", size, dev->primary->index);
+ DBG("allocating %d bytes for fb %d", size, dev->minor_base);
mutex_lock(&dev->struct_mutex);
fbdev->bo = msm_gem_new(dev, size, MSM_BO_SCANOUT | MSM_BO_WC);
mutex_unlock(&dev->struct_mutex);
diff --git a/drivers/gpu/drm/omapdrm/omap_fbdev.c b/drivers/gpu/drm/omapdrm/omap_fbdev.c
index 002988d..bd9f9a7 100644
--- a/drivers/gpu/drm/omapdrm/omap_fbdev.c
+++ b/drivers/gpu/drm/omapdrm/omap_fbdev.c
@@ -176,7 +176,7 @@ static int omap_fbdev_create(struct drm_fb_helper *helper,
gsize = (union omap_gem_size){
.bytes = PAGE_ALIGN(mode_cmd.pitches[0] * mode_cmd.height),
};
- DBG("allocating %d bytes for fb %d", gsize.bytes, dev->primary->index);
+ DBG("allocating %d bytes for fb %d", gsize.bytes, dev->minor_base);
fbdev->bo = omap_gem_new(dev, gsize, OMAP_BO_SCANOUT | OMAP_BO_WC);
if (!fbdev->bo) {
dev_err(dev->dev, "failed to allocate buffer object\n");
diff --git a/drivers/gpu/drm/radeon/atombios_encoders.c b/drivers/gpu/drm/radeon/atombios_encoders.c
index a42d615..f5cc894 100644
--- a/drivers/gpu/drm/radeon/atombios_encoders.c
+++ b/drivers/gpu/drm/radeon/atombios_encoders.c
@@ -212,7 +212,7 @@ void radeon_atom_backlight_init(struct radeon_encoder *radeon_encoder,
props.max_brightness = RADEON_MAX_BL_LEVEL;
props.type = BACKLIGHT_RAW;
snprintf(bl_name, sizeof(bl_name),
- "radeon_bl%d", dev->primary->index);
+ "radeon_bl%d", dev->minor_base);
bd = backlight_device_register(bl_name, drm_connector->kdev,
pdata, &radeon_atom_backlight_ops, &props);
if (IS_ERR(bd)) {
diff --git a/drivers/gpu/drm/radeon/radeon_legacy_encoders.c b/drivers/gpu/drm/radeon/radeon_legacy_encoders.c
index c89971d..ef82bdb 100644
--- a/drivers/gpu/drm/radeon/radeon_legacy_encoders.c
+++ b/drivers/gpu/drm/radeon/radeon_legacy_encoders.c
@@ -391,7 +391,7 @@ void radeon_legacy_backlight_init(struct radeon_encoder *radeon_encoder,
props.max_brightness = RADEON_MAX_BL_LEVEL;
props.type = BACKLIGHT_RAW;
snprintf(bl_name, sizeof(bl_name),
- "radeon_bl%d", dev->primary->index);
+ "radeon_bl%d", dev->minor_base);
bd = backlight_device_register(bl_name, drm_connector->kdev,
pdata, &radeon_backlight_ops, &props);
if (IS_ERR(bd)) {
diff --git a/drivers/gpu/drm/radeon/radeon_trace.h b/drivers/gpu/drm/radeon/radeon_trace.h
index 0473257..84b56df 100644
--- a/drivers/gpu/drm/radeon/radeon_trace.h
+++ b/drivers/gpu/drm/radeon/radeon_trace.h
@@ -116,7 +116,7 @@ DECLARE_EVENT_CLASS(radeon_fence_request,
),
TP_fast_assign(
- __entry->dev = dev->primary->index;
+ __entry->dev = dev->minor_base;
__entry->seqno = seqno;
),
diff --git a/drivers/gpu/drm/tegra/bus.c b/drivers/gpu/drm/tegra/bus.c
index 71cef5c..7d2aace 100644
--- a/drivers/gpu/drm/tegra/bus.c
+++ b/drivers/gpu/drm/tegra/bus.c
@@ -58,7 +58,7 @@ int drm_host1x_init(struct drm_driver *driver, struct host1x_device *device)
DRM_INFO("Initialized %s %d.%d.%d %s on minor %d\n", driver->name,
driver->major, driver->minor, driver->patchlevel,
- driver->date, drm->primary->index);
+ driver->date, drm->minor_base);
return 0;
diff --git a/include/drm/drmP.h b/include/drm/drmP.h
index cdc5362..5339a9c 100644
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
@@ -1038,7 +1038,6 @@ struct drm_info_node {
* DRM minor structure. This structure represents a drm minor number.
*/
struct drm_minor {
- int index; /**< Minor device number */
int type; /**< Control or render */
struct device *kdev; /**< Linux device */
struct drm_device *dev;
@@ -1670,6 +1669,7 @@ void drm_dev_unref(struct drm_device *dev);
int drm_dev_register(struct drm_device *dev, unsigned long flags);
void drm_dev_unregister(struct drm_device *dev);
+unsigned int drm_minor_get_id(struct drm_minor *minor);
struct drm_minor *drm_minor_acquire(unsigned int minor_id);
void drm_minor_release(struct drm_minor *minor);
--
1.8.5.3
More information about the dri-devel
mailing list