From patchwork Wed Jan 29 14:02:00 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Herrmann X-Patchwork-Id: 3551281 Return-Path: X-Original-To: patchwork-dri-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 1D2FD9F381 for ; Wed, 29 Jan 2014 14:03:38 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 6F2472017A for ; Wed, 29 Jan 2014 14:03:36 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id B4BE920125 for ; Wed, 29 Jan 2014 14:03:34 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id C1885436FC for ; Wed, 29 Jan 2014 06:03:34 -0800 (PST) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-ee0-f47.google.com (mail-ee0-f47.google.com [74.125.83.47]) by gabe.freedesktop.org (Postfix) with ESMTP id D3E8E43704 for ; Wed, 29 Jan 2014 06:02:39 -0800 (PST) Received: by mail-ee0-f47.google.com with SMTP id d49so918141eek.6 for ; Wed, 29 Jan 2014 06:02:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=DDuT3Q82RBisWPlw0BYCPqQ39ujHbCGKrZPIpBWwG5Q=; b=jbKFRTJu5LxfOYvEaOn8BXb8zDdjgMw1Bqq+62AkjgaXKQaKtPaO3ndVB2euoOwFN/ vfCTc7YUQIAjImkhvhdm9M0bik9rOoNvdXjpxt22NB751iTLCG24VjdxHzgcQxRqbVUC bLnb0Twmgjt4qmw/HYIr7JLKfzS9KYWpXNit3zhE2NWF+TR16yQ0OlKkCkPZHYyB+V0v E1RmAvm3wCwEYo+tBF3L3xB3F7HEKIpcnI5TIPOvt0HtenJceIBqjq5YejFfFasLTSxZ qqcGQaeWBmYdjmURdpal0/umkpzJdbY8rtENW0H/MoPUnil/Tc4g1c6hx+OLoAYxZEw1 NcVw== X-Received: by 10.15.49.193 with SMTP id j41mr9843342eew.10.1391004158890; Wed, 29 Jan 2014 06:02:38 -0800 (PST) Received: from david-ub.localdomain (stgt-5f71657e.pool.mediaWays.net. [95.113.101.126]) by mx.google.com with ESMTPSA id o13sm9094881eex.19.2014.01.29.06.02.36 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 29 Jan 2014 06:02:37 -0800 (PST) From: David Herrmann To: dri-devel@lists.freedesktop.org Subject: [PATCH 13/13] drm: remove redundant minor->index Date: Wed, 29 Jan 2014 15:02:00 +0100 Message-Id: <1391004120-687-14-git-send-email-dh.herrmann@gmail.com> X-Mailer: git-send-email 1.8.5.3 In-Reply-To: <1391004120-687-1-git-send-email-dh.herrmann@gmail.com> References: <1391004120-687-1-git-send-email-dh.herrmann@gmail.com> Cc: Daniel Vetter X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: dri-devel-bounces+patchwork-dri-devel=patchwork.kernel.org@lists.freedesktop.org Errors-To: dri-devel-bounces+patchwork-dri-devel=patchwork.kernel.org@lists.freedesktop.org X-Spam-Status: No, score=-4.6 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_MED, RP_MATCHES_RCVD, T_DKIM_INVALID, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP 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 --- 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);