* [PATCH] drm/plane: drop num_overlay_planes
@ 2017-10-12 23:58 Dave Airlie
2017-10-16 9:08 ` Daniel Vetter
0 siblings, 1 reply; 2+ messages in thread
From: Dave Airlie @ 2017-10-12 23:58 UTC (permalink / raw)
To: dri-devel; +Cc: intel-gfx
From: Dave Airlie <airlied@redhat.com>
In order to implement plane leasing we need to count things,
just make the code consistent with the counting code currently
used for counting crtcs/encoders/connectors and drop the need
for num_overlay_planes.
Signed-off-by: Dave Airlie <airlied@redhat.com>
---
drivers/gpu/drm/drm_mode_config.c | 1 -
drivers/gpu/drm/drm_plane.c | 45 +++++++++++++--------------------------
include/drm/drm_mode_config.h | 13 -----------
3 files changed, 15 insertions(+), 44 deletions(-)
diff --git a/drivers/gpu/drm/drm_mode_config.c b/drivers/gpu/drm/drm_mode_config.c
index 74f6ff5df656..919e78d45ab0 100644
--- a/drivers/gpu/drm/drm_mode_config.c
+++ b/drivers/gpu/drm/drm_mode_config.c
@@ -385,7 +385,6 @@ void drm_mode_config_init(struct drm_device *dev)
dev->mode_config.num_connector = 0;
dev->mode_config.num_crtc = 0;
dev->mode_config.num_encoder = 0;
- dev->mode_config.num_overlay_plane = 0;
dev->mode_config.num_total_plane = 0;
}
EXPORT_SYMBOL(drm_mode_config_init);
diff --git a/drivers/gpu/drm/drm_plane.c b/drivers/gpu/drm/drm_plane.c
index 6af02c7b5da3..faa34afa708a 100644
--- a/drivers/gpu/drm/drm_plane.c
+++ b/drivers/gpu/drm/drm_plane.c
@@ -241,8 +241,6 @@ int drm_universal_plane_init(struct drm_device *dev, struct drm_plane *plane,
list_add_tail(&plane->head, &config->plane_list);
plane->index = config->num_total_plane++;
- if (plane->type == DRM_PLANE_TYPE_OVERLAY)
- config->num_overlay_plane++;
drm_object_attach_property(&plane->base,
config->plane_type_property,
@@ -353,8 +351,6 @@ void drm_plane_cleanup(struct drm_plane *plane)
list_del(&plane->head);
dev->mode_config.num_total_plane--;
- if (plane->type == DRM_PLANE_TYPE_OVERLAY)
- dev->mode_config.num_overlay_plane--;
WARN_ON(plane->state && !plane->funcs->atomic_destroy_state);
if (plane->state && plane->funcs->atomic_destroy_state)
@@ -462,43 +458,32 @@ int drm_mode_getplane_res(struct drm_device *dev, void *data,
struct drm_mode_config *config;
struct drm_plane *plane;
uint32_t __user *plane_ptr;
- int copied = 0;
- unsigned num_planes;
+ int count = 0;
if (!drm_core_check_feature(dev, DRIVER_MODESET))
return -EINVAL;
config = &dev->mode_config;
- if (file_priv->universal_planes)
- num_planes = config->num_total_plane;
- else
- num_planes = config->num_overlay_plane;
-
/*
* This ioctl is called twice, once to determine how much space is
* needed, and the 2nd time to fill it.
*/
- if (num_planes &&
- (plane_resp->count_planes >= num_planes)) {
- plane_ptr = (uint32_t __user *)(unsigned long)plane_resp->plane_id_ptr;
-
- /* Plane lists are invariant, no locking needed. */
- drm_for_each_plane(plane, dev) {
- /*
- * Unless userspace set the 'universal planes'
- * capability bit, only advertise overlays.
- */
- if (plane->type != DRM_PLANE_TYPE_OVERLAY &&
- !file_priv->universal_planes)
- continue;
-
- if (put_user(plane->base.id, plane_ptr + copied))
- return -EFAULT;
- copied++;
- }
+ drm_for_each_plane(plane, dev) {
+ /*
+ * Unless userspace set the 'universal planes'
+ * capability bit, only advertise overlays.
+ */
+ if (plane->type != DRM_PLANE_TYPE_OVERLAY &&
+ !file_priv->universal_planes)
+ continue;
+
+ if (count < config->num_total_plane &&
+ put_user(plane->base.id, plane_ptr + count))
+ return -EFAULT;
+ count++;
}
- plane_resp->count_planes = num_planes;
+ plane_resp->count_planes = count;
return 0;
}
diff --git a/include/drm/drm_mode_config.h b/include/drm/drm_mode_config.h
index 1b37368416c8..0b4ac2ebc610 100644
--- a/include/drm/drm_mode_config.h
+++ b/include/drm/drm_mode_config.h
@@ -429,19 +429,6 @@ struct drm_mode_config {
*/
struct list_head encoder_list;
- /**
- * @num_overlay_plane:
- *
- * Number of overlay planes on this device, excluding primary and cursor
- * planes.
- *
- * Track number of overlay planes separately from number of total
- * planes. By default we only advertise overlay planes to userspace; if
- * userspace sets the "universal plane" capability bit, we'll go ahead
- * and expose all planes. This is invariant over the lifetime of a
- * device and hence doesn't need any locks.
- */
- int num_overlay_plane;
/**
* @num_total_plane:
*
--
2.14.2
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] drm/plane: drop num_overlay_planes
2017-10-12 23:58 [PATCH] drm/plane: drop num_overlay_planes Dave Airlie
@ 2017-10-16 9:08 ` Daniel Vetter
0 siblings, 0 replies; 2+ messages in thread
From: Daniel Vetter @ 2017-10-16 9:08 UTC (permalink / raw)
To: Dave Airlie; +Cc: intel-gfx, dri-devel
On Fri, Oct 13, 2017 at 09:58:01AM +1000, Dave Airlie wrote:
> From: Dave Airlie <airlied@redhat.com>
>
> In order to implement plane leasing we need to count things,
> just make the code consistent with the counting code currently
> used for counting crtcs/encoders/connectors and drop the need
> for num_overlay_planes.
>
> Signed-off-by: Dave Airlie <airlied@redhat.com>
Pls check for intel CI to double-check this, every time I touched this
code I broke something :-/
> ---
> drivers/gpu/drm/drm_mode_config.c | 1 -
> drivers/gpu/drm/drm_plane.c | 45 +++++++++++++--------------------------
> include/drm/drm_mode_config.h | 13 -----------
> 3 files changed, 15 insertions(+), 44 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_mode_config.c b/drivers/gpu/drm/drm_mode_config.c
> index 74f6ff5df656..919e78d45ab0 100644
> --- a/drivers/gpu/drm/drm_mode_config.c
> +++ b/drivers/gpu/drm/drm_mode_config.c
> @@ -385,7 +385,6 @@ void drm_mode_config_init(struct drm_device *dev)
> dev->mode_config.num_connector = 0;
> dev->mode_config.num_crtc = 0;
> dev->mode_config.num_encoder = 0;
> - dev->mode_config.num_overlay_plane = 0;
> dev->mode_config.num_total_plane = 0;
> }
> EXPORT_SYMBOL(drm_mode_config_init);
> diff --git a/drivers/gpu/drm/drm_plane.c b/drivers/gpu/drm/drm_plane.c
> index 6af02c7b5da3..faa34afa708a 100644
> --- a/drivers/gpu/drm/drm_plane.c
> +++ b/drivers/gpu/drm/drm_plane.c
> @@ -241,8 +241,6 @@ int drm_universal_plane_init(struct drm_device *dev, struct drm_plane *plane,
>
> list_add_tail(&plane->head, &config->plane_list);
> plane->index = config->num_total_plane++;
> - if (plane->type == DRM_PLANE_TYPE_OVERLAY)
> - config->num_overlay_plane++;
>
> drm_object_attach_property(&plane->base,
> config->plane_type_property,
> @@ -353,8 +351,6 @@ void drm_plane_cleanup(struct drm_plane *plane)
>
> list_del(&plane->head);
> dev->mode_config.num_total_plane--;
> - if (plane->type == DRM_PLANE_TYPE_OVERLAY)
> - dev->mode_config.num_overlay_plane--;
>
> WARN_ON(plane->state && !plane->funcs->atomic_destroy_state);
> if (plane->state && plane->funcs->atomic_destroy_state)
> @@ -462,43 +458,32 @@ int drm_mode_getplane_res(struct drm_device *dev, void *data,
> struct drm_mode_config *config;
> struct drm_plane *plane;
> uint32_t __user *plane_ptr;
> - int copied = 0;
> - unsigned num_planes;
> + int count = 0;
>
> if (!drm_core_check_feature(dev, DRIVER_MODESET))
> return -EINVAL;
>
> config = &dev->mode_config;
>
> - if (file_priv->universal_planes)
> - num_planes = config->num_total_plane;
> - else
> - num_planes = config->num_overlay_plane;
> -
> /*
> * This ioctl is called twice, once to determine how much space is
> * needed, and the 2nd time to fill it.
> */
> - if (num_planes &&
> - (plane_resp->count_planes >= num_planes)) {
> - plane_ptr = (uint32_t __user *)(unsigned long)plane_resp->plane_id_ptr;
> -
> - /* Plane lists are invariant, no locking needed. */
> - drm_for_each_plane(plane, dev) {
> - /*
> - * Unless userspace set the 'universal planes'
> - * capability bit, only advertise overlays.
> - */
> - if (plane->type != DRM_PLANE_TYPE_OVERLAY &&
> - !file_priv->universal_planes)
> - continue;
> -
> - if (put_user(plane->base.id, plane_ptr + copied))
> - return -EFAULT;
> - copied++;
> - }
> + drm_for_each_plane(plane, dev) {
> + /*
> + * Unless userspace set the 'universal planes'
> + * capability bit, only advertise overlays.
> + */
> + if (plane->type != DRM_PLANE_TYPE_OVERLAY &&
> + !file_priv->universal_planes)
> + continue;
> +
> + if (count < config->num_total_plane &&
Shouldn't this check be count < plane_resp->count_planes? I think we don't
have nasty igts yet to check all these, but since we iirc query first with
num_planes = 0 and nothing allocated this should blow up.
Otherwise looks like a nice cleanup, with the bug fixed:
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> + put_user(plane->base.id, plane_ptr + count))
> + return -EFAULT;
> + count++;
> }
> - plane_resp->count_planes = num_planes;
> + plane_resp->count_planes = count;
>
> return 0;
> }
> diff --git a/include/drm/drm_mode_config.h b/include/drm/drm_mode_config.h
> index 1b37368416c8..0b4ac2ebc610 100644
> --- a/include/drm/drm_mode_config.h
> +++ b/include/drm/drm_mode_config.h
> @@ -429,19 +429,6 @@ struct drm_mode_config {
> */
> struct list_head encoder_list;
>
> - /**
> - * @num_overlay_plane:
> - *
> - * Number of overlay planes on this device, excluding primary and cursor
> - * planes.
> - *
> - * Track number of overlay planes separately from number of total
> - * planes. By default we only advertise overlay planes to userspace; if
> - * userspace sets the "universal plane" capability bit, we'll go ahead
> - * and expose all planes. This is invariant over the lifetime of a
> - * device and hence doesn't need any locks.
> - */
> - int num_overlay_plane;
> /**
> * @num_total_plane:
> *
> --
> 2.14.2
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2017-10-16 9:08 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-10-12 23:58 [PATCH] drm/plane: drop num_overlay_planes Dave Airlie
2017-10-16 9:08 ` Daniel Vetter
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).