dri-devel.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: "Noralf Trønnes" <noralf@tronnes.org>
Cc: daniel.vetter@ffwll.ch, tomi.valkeinen@ti.com,
	hoegsberg@gmail.com, abrodkin@synopsys.com,
	dri-devel@lists.freedesktop.org, liviu.dudau@arm.com,
	jsarha@ti.com
Subject: Re: [PATCH v4 06/11] drm/cma-helper: Add drm_gem_cma_print_info()
Date: Sat, 04 Nov 2017 09:54:01 +0200	[thread overview]
Message-ID: <1969968.BfxHIkR5gY@avalon> (raw)
In-Reply-To: <20171030162945.58063-7-noralf@tronnes.org>

Hi Noralf,

Than you for the patch.

On Monday, 30 October 2017 18:29:40 EET Noralf Trønnes wrote:
> Add drm_gem_cma_print_info() for debugfs printing
> struct drm_gem_cma_object specific info.
> 
> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
> ---
>  drivers/gpu/drm/drm_gem_cma_helper.c | 19 +++++++++++++++++++
>  include/drm/drm_gem_cma_helper.h     |  5 ++++-
>  2 files changed, 23 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/drm_gem_cma_helper.c
> b/drivers/gpu/drm/drm_gem_cma_helper.c index 020e7668dfab..89dc7f04fae6
> 100644
> --- a/drivers/gpu/drm/drm_gem_cma_helper.c
> +++ b/drivers/gpu/drm/drm_gem_cma_helper.c
> @@ -423,6 +423,25 @@ void drm_gem_cma_describe(struct drm_gem_cma_object
> *cma_obj, EXPORT_SYMBOL_GPL(drm_gem_cma_describe);
>  #endif
> 
> +/**
> + * drm_gem_cma_print_info() - Print &drm_gem_cma_object info for debugfs
> + * @p: DRM printer
> + * @indent: Tab indentation level
> + * @gem: GEM object
> + *
> + * This function can be used as the &drm_driver->gem_print_info callback.
> + * It prints paddr and vaddr for use in e.g. debugfs output.
> + */
> +void drm_gem_cma_print_info(struct drm_printer *p, unsigned int indent,
> +			    const struct drm_gem_object *obj)
> +{
> +	struct drm_gem_cma_object *cma_obj = to_drm_gem_cma_obj(obj);
> +
> +	drm_printf_indent(p, indent, "paddr=%pad\n", &cma_obj->paddr);
> +	drm_printf_indent(p, indent, "vaddr=%p\n", cma_obj->vaddr);
> +}
> +EXPORT_SYMBOL(drm_gem_cma_print_info);
> +
>  /**
>   * drm_gem_cma_prime_get_sg_table - provide a scatter/gather table of
> pinned *     pages for a CMA GEM object
> diff --git a/include/drm/drm_gem_cma_helper.h
> b/include/drm/drm_gem_cma_helper.h index 58a739bf15f1..bc47e6eba271 100644
> --- a/include/drm/drm_gem_cma_helper.h
> +++ b/include/drm/drm_gem_cma_helper.h
> @@ -21,7 +21,7 @@ struct drm_gem_cma_object {
>  };
> 
>  static inline struct drm_gem_cma_object *
> -to_drm_gem_cma_obj(struct drm_gem_object *gem_obj)
> +to_drm_gem_cma_obj(const struct drm_gem_object *gem_obj)

This will happily return a non-const pointer to the drm_gem_cma_object based 
on a const pointer to the contained drm_gem_object, thus creating const-safety 
problems.

There was an attempt to fix the problem in the container_of() macro itself 
(see https://lkml.org/lkml/2017/5/19/381) but the patch seems to have fallen 
through the cracks. It would require turning this inline function into a 
macro.

I don't think we need to wait for the container_of() patch to land, but it 
would be useful to turn the inline function into a macro already to 
automatically benefit from the change, instead of introducting a const-safety 
problem that we will all forget about until it breaks something in the future.

>  {
>  	return container_of(gem_obj, struct drm_gem_cma_object, base);
>  }
> @@ -94,6 +94,9 @@ unsigned long drm_gem_cma_get_unmapped_area(struct file
> *filp, void drm_gem_cma_describe(struct drm_gem_cma_object *obj, struct
> seq_file *m); #endif
> 
> +void drm_gem_cma_print_info(struct drm_printer *p, unsigned int indent,
> +			    const struct drm_gem_object *obj);
> +
>  struct sg_table *drm_gem_cma_prime_get_sg_table(struct drm_gem_object
> *obj);
>  struct drm_gem_object *
>  drm_gem_cma_prime_import_sg_table(struct drm_device *dev,


-- 
Regards,

Laurent Pinchart

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

  reply	other threads:[~2017-11-04  7:53 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-10-30 16:29 [PATCH v4 00/11] drm/framebuffer: Add framebuffer debugfs file Noralf Trønnes
2017-10-30 16:29 ` [PATCH v4 01/11] drm/vma-manager: drm_vma_node_start() constify argument Noralf Trønnes
2017-11-02  4:29   ` Laurent Pinchart
2017-10-30 16:29 ` [PATCH v4 02/11] drm/framebuffer: drm_framebuffer_read_refcount() " Noralf Trønnes
2017-11-02  4:30   ` Laurent Pinchart
2017-10-30 16:29 ` [PATCH v4 03/11] drm/print: Add drm_printf_indent() Noralf Trønnes
2017-11-02  4:32   ` Laurent Pinchart
2017-10-30 16:29 ` [PATCH v4 04/11] drm/framebuffer: Add framebuffer debugfs file Noralf Trønnes
2017-11-02  4:43   ` Laurent Pinchart
2017-11-02 14:12     ` Noralf Trønnes
2017-10-30 16:29 ` [PATCH v4 05/11] drm/atomic: Use drm_framebuffer_print_info() Noralf Trønnes
2017-11-02  4:44   ` Laurent Pinchart
2017-10-30 16:29 ` [PATCH v4 06/11] drm/cma-helper: Add drm_gem_cma_print_info() Noralf Trønnes
2017-11-04  7:54   ` Laurent Pinchart [this message]
2017-10-30 16:29 ` [PATCH v4 07/11] drm/arc: Use drm_gem_cma_print_info() Noralf Trønnes
2017-10-31 16:17   ` Alexey Brodkin
2017-10-31 18:15     ` Ville Syrjälä
2017-11-04  7:55   ` Laurent Pinchart
2017-10-30 16:29 ` [PATCH v4 08/11] drm/arm/hdlcd: " Noralf Trønnes
2017-10-31  9:49   ` Liviu Dudau
2017-11-04  7:55   ` Laurent Pinchart
2017-10-30 16:29 ` [PATCH v4 09/11] drm/tilcdc: " Noralf Trønnes
2017-10-31 15:09   ` Jyri Sarha
2017-11-04  7:56   ` Laurent Pinchart
2017-10-30 16:29 ` [PATCH v4 10/11] drm/tinydrm: " Noralf Trønnes
2017-11-04  7:56   ` Laurent Pinchart
2017-10-30 16:29 ` [PATCH v4 11/11] drm/cma-helper: Remove drm_fb_cma_debugfs_show() Noralf Trønnes
2017-10-31 10:35   ` Daniel Vetter
2017-11-04  7:58   ` Laurent Pinchart

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=1969968.BfxHIkR5gY@avalon \
    --to=laurent.pinchart@ideasonboard.com \
    --cc=abrodkin@synopsys.com \
    --cc=daniel.vetter@ffwll.ch \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=hoegsberg@gmail.com \
    --cc=jsarha@ti.com \
    --cc=liviu.dudau@arm.com \
    --cc=noralf@tronnes.org \
    --cc=tomi.valkeinen@ti.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;
as well as URLs for NNTP newsgroup(s).