From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: sagar.a.kamble@intel.com
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH v3 11/12] drm: Set property to return invalid for unsupported arguments for bitmask property
Date: Thu, 6 Feb 2014 18:21:21 +0200 [thread overview]
Message-ID: <20140206162121.GT3891@intel.com> (raw)
In-Reply-To: <1391699093-12625-12-git-send-email-sagar.a.kamble@intel.com>
On Thu, Feb 06, 2014 at 08:34:52PM +0530, sagar.a.kamble@intel.com wrote:
> From: Sagar Kamble <sagar.a.kamble@intel.com>
>
> DRM will not propagate the set_property call for bitmask drm
> properties if they are not supported by underlying driver.
>
> Signed-off-by: Sagar Kamble <sagar.a.kamble@intel.com>
> Tested-by: Sagar Kamble <sagar.a.kamble@intel.com>
> ---
> drivers/gpu/drm/drm_crtc.c | 18 ++++++++++++++++++
> 1 file changed, 18 insertions(+)
>
> diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
> index 4f5e408..4c92741 100644
> --- a/drivers/gpu/drm/drm_crtc.c
> +++ b/drivers/gpu/drm/drm_crtc.c
> @@ -3420,6 +3420,8 @@ int drm_mode_obj_set_property_ioctl(struct drm_device *dev, void *data,
> struct drm_mode_object *arg_obj;
> struct drm_mode_object *prop_obj;
> struct drm_property *property;
> + struct drm_property_enum *prop_enum;
> + bool supported_val = false;
> int ret = -EINVAL;
> int i;
>
> @@ -3451,6 +3453,22 @@ int drm_mode_obj_set_property_ioctl(struct drm_device *dev, void *data,
> }
> property = obj_to_property(prop_obj);
>
> + if (property->flags | DRM_MODE_PROP_BITMASK) {
> + if (!list_empty(&property->enum_blob_list)) {
> + list_for_each_entry(prop_enum,
> + &property->enum_blob_list, head) {
> + if (BIT(prop_enum->value) == arg->value) {
> + supported_val = true;
> + break;
> + }
> + }
> + }
> + if (!supported_val) {
> + ret = -EINVAL;
> + goto out;
> + }
> + }
> +
> if (!drm_property_change_is_valid(property, arg->value))
drm_property_change_is_valid() should take care of this, except I think
my original patch to pass the supported_bits information is a bit buggy.
It will allocate the values[] array based on all possible rotation bits,
but then it will populate it sparsely based on the supported_bits.
Apparently that needs to be changed to allocate only the required amount
of space in values[]. I think that should make
drm_property_change_is_valid() correctly detect the valid bits.
Actually I think even my buggy patch should mostly work, it'll just
always accept DRM_ROTATE_0 even if that wasnt't one of the
supported_bits. That's because since values[] is zeroed initially.
Oh, I see your patch does actually a bit more than that. It would reject
any bitmask property change with multiple bits set. That's not what we
want, as the driver is the only one that can decide which combination(s)
of bits are in fact valid.
--
Ville Syrjälä
Intel OTC
next prev parent reply other threads:[~2014-02-06 16:21 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-06 15:04 [PATCH v3 00/12] Enabling 180 degree rotation for sprite and crtc planes sagar.a.kamble
2014-02-06 15:04 ` [PATCH v3 01/12] drm: Move DRM_ROTATE bits out of omapdrm into drm_crtc.h sagar.a.kamble
2014-02-06 16:51 ` Daniel Vetter
2014-02-06 15:04 ` [PATCH v3 02/12] drm: Add support_bits parameter to drm_property_create_bitmask() sagar.a.kamble
2014-02-06 15:04 ` [PATCH v3 03/12] drm: Add drm_mode_create_rotation_property() sagar.a.kamble
2014-02-06 15:04 ` [PATCH v3 04/12] drm/omap: Switch omapdrm over to drm_mode_create_rotation_property() sagar.a.kamble
2014-02-06 15:04 ` [PATCH v3 05/12] drm: Add drm_rect rotation functions sagar.a.kamble
2014-02-06 15:04 ` [PATCH v3 06/12] drm: Add drm_rotation_simplify() sagar.a.kamble
2014-02-06 15:04 ` [PATCH v3 07/12] drm/i915: Add 180 degree sprite rotation support sagar.a.kamble
2014-02-06 15:04 ` [PATCH v3 08/12] drm/i915: Make intel_plane_restore() return an error sagar.a.kamble
2014-02-06 15:04 ` [PATCH v3 09/12] drm/i915: Add rotation property for sprites sagar.a.kamble
2014-02-06 15:04 ` [PATCH v3 10/12] drm/i915: Add 180 degree primary plane rotation support sagar.a.kamble
2014-02-06 15:56 ` Ville Syrjälä
2014-02-06 15:04 ` [PATCH v3 11/12] drm: Set property to return invalid for unsupported arguments for bitmask property sagar.a.kamble
2014-02-06 16:21 ` Ville Syrjälä [this message]
2014-02-06 15:04 ` [PATCH v3 12/12] drm/i915: Removing rotate and inverse rotate calls from update_plane sagar.a.kamble
2014-02-06 15:55 ` Ville Syrjälä
2014-02-06 16:29 ` [PATCH v3 00/12] Enabling 180 degree rotation for sprite and crtc planes Ville Syrjälä
2014-02-06 17:13 ` 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=20140206162121.GT3891@intel.com \
--to=ville.syrjala@linux.intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=sagar.a.kamble@intel.com \
/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