From: Rob Clark <robdclark@gmail.com>
To: dri-devel@lists.freedesktop.org
Subject: [PATCH 10/16] drm: allow FB's in drm_mode_object_find
Date: Tue, 18 Mar 2014 17:22:47 -0400 [thread overview]
Message-ID: <1395177773-800-11-git-send-email-robdclark@gmail.com> (raw)
In-Reply-To: <1395177773-800-1-git-send-email-robdclark@gmail.com>
We do actually want to permit FB's in atomic case, since FB will be
looked up like any other object property value in a few code paths
(like property value validation).
So split out into an internal function without the WARN_ON() which
we can use in those special cases.
Signed-off-by: Rob Clark <robdclark@gmail.com>
---
drivers/gpu/drm/drm_crtc.c | 33 ++++++++++++++++++++++-----------
include/drm/drm_crtc.h | 6 ------
2 files changed, 22 insertions(+), 17 deletions(-)
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
index d5a2469..fbe4b74 100644
--- a/drivers/gpu/drm/drm_crtc.c
+++ b/drivers/gpu/drm/drm_crtc.c
@@ -459,6 +459,21 @@ static void drm_mode_object_put(struct drm_device *dev,
mutex_unlock(&dev->mode_config.idr_mutex);
}
+static struct drm_mode_object *_object_find(struct drm_device *dev,
+ uint32_t id, uint32_t type)
+{
+ struct drm_mode_object *obj = NULL;
+
+ mutex_lock(&dev->mode_config.idr_mutex);
+ obj = idr_find(&dev->mode_config.crtc_idr, id);
+ if (!obj || (type != DRM_MODE_OBJECT_ANY && obj->type != type) ||
+ (obj->id != id))
+ obj = NULL;
+ mutex_unlock(&dev->mode_config.idr_mutex);
+
+ return obj;
+}
+
/**
* drm_mode_object_find - look up a drm object with static lifetime
* @dev: drm device
@@ -471,23 +486,19 @@ static void drm_mode_object_put(struct drm_device *dev,
struct drm_mode_object *drm_mode_object_find(struct drm_device *dev,
uint32_t id, uint32_t type)
{
- struct drm_mode_object *obj = NULL;
-
/* Framebuffers are reference counted and need their own lookup
* function.*/
WARN_ON(type == DRM_MODE_OBJECT_FB);
-
- mutex_lock(&dev->mode_config.idr_mutex);
- obj = idr_find(&dev->mode_config.crtc_idr, id);
- if (!obj || (type != DRM_MODE_OBJECT_ANY && obj->type != type) ||
- (obj->id != id))
- obj = NULL;
- mutex_unlock(&dev->mode_config.idr_mutex);
-
- return obj;
+ return _object_find(dev, id, type);
}
EXPORT_SYMBOL(drm_mode_object_find);
+static struct drm_mode_object *
+drm_property_get_obj(struct drm_property *property, uint64_t value)
+{
+ return _object_find(property->dev, value, property->values[0]);
+}
+
/**
* drm_framebuffer_init - initialize a framebuffer
* @dev: DRM device
diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h
index ec21952..b8cd088 100644
--- a/include/drm/drm_crtc.h
+++ b/include/drm/drm_crtc.h
@@ -1298,12 +1298,6 @@ extern int drm_mode_crtc_set_gamma_size(struct drm_crtc *crtc,
extern struct drm_mode_object *drm_mode_object_find(struct drm_device *dev,
uint32_t id, uint32_t type);
-static inline struct drm_mode_object *
-drm_property_get_obj(struct drm_property *property, uint64_t value)
-{
- return drm_mode_object_find(property->dev, value, property->values[0]);
-}
-
/* IOCTLs */
extern int drm_mode_getresources(struct drm_device *dev,
void *data, struct drm_file *file_priv);
--
1.8.5.3
next prev parent reply other threads:[~2014-03-18 21:23 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-18 21:22 [PATCH 00/16] Atomic/nuclear modeset/pageflip Rob Clark
2014-03-18 21:22 ` [PATCH 01/16] drm: fix typo Rob Clark
2014-03-18 21:22 ` [PATCH 02/16] drm: add atomic fxns Rob Clark
2014-03-18 21:22 ` [PATCH 03/16] drm: convert crtc to ww_mutex Rob Clark
2014-03-18 21:22 ` [PATCH 04/16] drm: add object property type Rob Clark
2014-03-18 21:22 ` [PATCH 05/16] drm: add signed-range " Rob Clark
2014-03-18 21:22 ` [PATCH 06/16] drm: helpers to find mode objects Rob Clark
2014-03-18 21:22 ` [PATCH 07/16] drm: split propvals out and blob property support Rob Clark
2014-03-18 21:22 ` [PATCH 08/16] drm: Allow drm_mode_object_find() to look up an object of any type Rob Clark
2014-03-18 21:22 ` [PATCH 09/16] drm: Refactor object property check code Rob Clark
2014-03-18 21:22 ` Rob Clark [this message]
2014-03-18 21:22 ` [PATCH 11/16] drm: convert plane to properties/state Rob Clark
2014-03-18 21:22 ` [PATCH 12/16] drm: convert crtc " Rob Clark
2014-03-18 21:22 ` [PATCH 13/16] drm: push locking down into restore_fbdev_mode Rob Clark
2014-03-18 21:22 ` [PATCH 14/16] drm: Atomic modeset ioctl Rob Clark
2014-03-18 21:22 ` [PATCH 15/16] drm/msm: add atomic support Rob Clark
2014-03-18 21:22 ` [PATCH 16/16] drm: spiff out FB refcnting traces Rob Clark
2014-03-19 11:07 ` [PATCH 00/16] Atomic/nuclear modeset/pageflip Daniel Vetter
2014-03-19 12:23 ` Rob Clark
2014-03-19 13:39 ` Daniel Vetter
2014-03-20 22:34 ` Greg Hackmann
2014-03-21 0:28 ` Rob Clark
2014-03-26 21:21 ` Greg Hackmann
2014-03-26 10:08 ` Daniel Vetter
2014-03-26 21:33 ` Greg Hackmann
2014-03-26 22:33 ` Daniel Vetter
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=1395177773-800-11-git-send-email-robdclark@gmail.com \
--to=robdclark@gmail.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox