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

Reply via email to