All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Terje Bergström" <tbergstrom-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
To: Thierry Reding
	<thierry.reding-RM9K5IK7kjKj5M59NBduVrNAH6kLmebB@public.gmane.org>
Cc: Arto Merilainen
	<amerilainen-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>,
	"airlied-cv59FeDIM0c@public.gmane.org"
	<airlied-cv59FeDIM0c@public.gmane.org>,
	"dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org"
	<dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org>,
	"linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	"linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
Subject: Re: [PATCHv5,RESEND 3/8] gpu: host1x: Add channel support
Date: Mon, 11 Mar 2013 11:21:05 +0200	[thread overview]
Message-ID: <513DA201.9010707@nvidia.com> (raw)
In-Reply-To: <20130311071851.GA6033-RM9K5IK7kjIQXX3q8xo1gnVAuStQJXxyR5q1nwbD4aMs9pC9oP6+/A@public.gmane.org>

On 11.03.2013 09:18, Thierry Reding wrote:
> This sound a bit over-engineered at this point in time. DRM is currently
> the only user. Is anybody working on any non-DRM drivers that would use
> this?

Well, this contains beginning of that:

http://nv-tegra.nvidia.com/gitweb/?p=linux-2.6.git;a=blob;f=drivers/media/video/tegra_v4l2_camera.c;h=644d0be5380367aca4c826c49724c03aad08387c;hb=l4t/l4t-r16-r2

I don't want to give these guys any excuse not to port it over to host1x
code base. :-)

> Even that aside, I don't think host1x_mem_handle is a good choice of
> name here. The objects are much more than handles. They are in fact
> buffer objects, which can optionally be attached to a handle. I also
> think that using a void * to store the handle specific data isn't such a
> good idea.

Naming if not an issue for me - we can easily agree on using _bo.

> So how about the following proposal, which I think might satisfy both of
> us:
> 
> 	struct host1x_bo;
> 
> 	struct host1x_bo_ops {
> 		struct host1x_bo *(*get)(struct host1x_bo *bo);
> 		void (*put)(struct host1x_bo *bo);
> 		dma_addr_t (*pin)(struct host1x_bo *bo, struct sg_table **sgt);
> 		...
> 	};
> 
> 	struct host1x_bo *host1x_bo_get(struct host1x_bo *bo);
> 	void host1x_bo_put(struct host1x_bo *bo);
> 	dma_addr_t host1x_bo_pin(struct host1x_bo *bo, struct sg_table **sgt);
> 	...
> 
> 	struct host1x_bo {
> 		const struct host1x_bo_ops *ops;
> 		...
> 	};
> 
> 	struct tegra_drm_bo {
> 		struct host1x_bo base;
> 		...
> 	};
> 
> That way you can get rid of the host1x_memmgr_create_handle() helper and
> instead embed host1x_bo into driver-/framework-specific structures with
> the necessary initialization.

This would make sense. We'll get back when we have enough of
implementation done to understand it all. One consequence is that we
cannot use drm_gem_cma_create() anymore. We'll have to introduce a
function that does the same as drm_gem_cma_create(), but it takes a
pre-allocated drm_gem_cma_object pointer. That way we can allocate the
struct, and use DRM CMA just to initialize the drm_gem_cma_object.

Other way would be just taking a copy of DRM CMA helper, but I'd like to
defer that to the next step when we implement IOMMU aware allocator.

> It also allows you to interact directly with the objects instead of
> having to go through the memmgr API. The memory manager doesn't really
> exist anymore so keeping the name in the API is only confusing. Your
> current proposal deals with memory handles directly already so it's
> really just making the naming more consistent.

The memmgr APIs are currently just a shortcut wrapper to the ops, so in
that sense the memmgr does not really exist. I think it might still make
sense to keep static inline wrappers for calling the ops within, but we
could rename them to host1x_bo_somethingandother. Then it'd follow the
pattern we are using for the hw ops in the latest set.

Terje

WARNING: multiple messages have this Message-ID (diff)
From: "Terje Bergström" <tbergstrom@nvidia.com>
To: Thierry Reding <thierry.reding@avionic-design.de>
Cc: Arto Merilainen <amerilainen@nvidia.com>,
	"airlied@linux.ie" <airlied@linux.ie>,
	"dri-devel@lists.freedesktop.org"
	<dri-devel@lists.freedesktop.org>,
	"linux-tegra@vger.kernel.org" <linux-tegra@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCHv5,RESEND 3/8] gpu: host1x: Add channel support
Date: Mon, 11 Mar 2013 11:21:05 +0200	[thread overview]
Message-ID: <513DA201.9010707@nvidia.com> (raw)
In-Reply-To: <20130311071851.GA6033@avionic-0098.mockup.avionic-design.de>

On 11.03.2013 09:18, Thierry Reding wrote:
> This sound a bit over-engineered at this point in time. DRM is currently
> the only user. Is anybody working on any non-DRM drivers that would use
> this?

Well, this contains beginning of that:

http://nv-tegra.nvidia.com/gitweb/?p=linux-2.6.git;a=blob;f=drivers/media/video/tegra_v4l2_camera.c;h=644d0be5380367aca4c826c49724c03aad08387c;hb=l4t/l4t-r16-r2

I don't want to give these guys any excuse not to port it over to host1x
code base. :-)

> Even that aside, I don't think host1x_mem_handle is a good choice of
> name here. The objects are much more than handles. They are in fact
> buffer objects, which can optionally be attached to a handle. I also
> think that using a void * to store the handle specific data isn't such a
> good idea.

Naming if not an issue for me - we can easily agree on using _bo.

> So how about the following proposal, which I think might satisfy both of
> us:
> 
> 	struct host1x_bo;
> 
> 	struct host1x_bo_ops {
> 		struct host1x_bo *(*get)(struct host1x_bo *bo);
> 		void (*put)(struct host1x_bo *bo);
> 		dma_addr_t (*pin)(struct host1x_bo *bo, struct sg_table **sgt);
> 		...
> 	};
> 
> 	struct host1x_bo *host1x_bo_get(struct host1x_bo *bo);
> 	void host1x_bo_put(struct host1x_bo *bo);
> 	dma_addr_t host1x_bo_pin(struct host1x_bo *bo, struct sg_table **sgt);
> 	...
> 
> 	struct host1x_bo {
> 		const struct host1x_bo_ops *ops;
> 		...
> 	};
> 
> 	struct tegra_drm_bo {
> 		struct host1x_bo base;
> 		...
> 	};
> 
> That way you can get rid of the host1x_memmgr_create_handle() helper and
> instead embed host1x_bo into driver-/framework-specific structures with
> the necessary initialization.

This would make sense. We'll get back when we have enough of
implementation done to understand it all. One consequence is that we
cannot use drm_gem_cma_create() anymore. We'll have to introduce a
function that does the same as drm_gem_cma_create(), but it takes a
pre-allocated drm_gem_cma_object pointer. That way we can allocate the
struct, and use DRM CMA just to initialize the drm_gem_cma_object.

Other way would be just taking a copy of DRM CMA helper, but I'd like to
defer that to the next step when we implement IOMMU aware allocator.

> It also allows you to interact directly with the objects instead of
> having to go through the memmgr API. The memory manager doesn't really
> exist anymore so keeping the name in the API is only confusing. Your
> current proposal deals with memory handles directly already so it's
> really just making the naming more consistent.

The memmgr APIs are currently just a shortcut wrapper to the ops, so in
that sense the memmgr does not really exist. I think it might still make
sense to keep static inline wrappers for calling the ops within, but we
could rename them to host1x_bo_somethingandother. Then it'd follow the
pattern we are using for the hw ops in the latest set.

Terje

  parent reply	other threads:[~2013-03-11  9:21 UTC|newest]

Thread overview: 95+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-15 11:43 [PATCHv5,RESEND 0/8] Support for Tegra 2D hardware Terje Bergstrom
2013-01-15 11:43 ` Terje Bergstrom
2013-01-15 11:43 ` [PATCHv5,RESEND 1/8] gpu: host1x: Add host1x driver Terje Bergstrom
2013-01-15 11:43   ` Terje Bergstrom
2013-02-04  9:09   ` Thierry Reding
2013-02-04  9:09     ` Thierry Reding
     [not found]     ` <20130204090941.GA27443-RM9K5IK7kjIQXX3q8xo1gnVAuStQJXxyR5q1nwbD4aMs9pC9oP6+/A@public.gmane.org>
2013-02-05  3:30       ` Terje Bergström
2013-02-05  3:30         ` Terje Bergström
     [not found]         ` <51107CC0.9060900-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-02-05  7:43           ` Thierry Reding
2013-02-05  7:43             ` Thierry Reding
2013-02-06 20:13             ` Terje Bergström
2013-01-15 11:43 ` [PATCHv5,RESEND 2/8] gpu: host1x: Add syncpoint wait and interrupts Terje Bergstrom
2013-01-15 11:43   ` Terje Bergstrom
     [not found]   ` <1358250244-9678-3-git-send-email-tbergstrom-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-02-04 10:30     ` Thierry Reding
2013-02-04 10:30       ` Thierry Reding
     [not found]       ` <20130204103032.GB27443-RM9K5IK7kjIQXX3q8xo1gnVAuStQJXxyR5q1nwbD4aMs9pC9oP6+/A@public.gmane.org>
2013-02-05  4:29         ` Terje Bergström
2013-02-05  4:29           ` Terje Bergström
     [not found]           ` <51108A94.3060501-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-02-05  8:42             ` Thierry Reding
2013-02-05  8:42               ` Thierry Reding
     [not found]               ` <20130205084255.GB20437-RM9K5IK7kjIQXX3q8xo1gnVAuStQJXxyR5q1nwbD4aMs9pC9oP6+/A@public.gmane.org>
2013-02-06 20:29                 ` Terje Bergström
2013-02-06 20:29                   ` Terje Bergström
     [not found]                   ` <5112BD26.5060800-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-02-06 20:38                     ` Thierry Reding
2013-02-06 20:38                       ` Thierry Reding
     [not found]                       ` <20130206203854.GA1012-RM9K5IK7kjIQXX3q8xo1gnVAuStQJXxyR5q1nwbD4aMs9pC9oP6+/A@public.gmane.org>
2013-02-06 20:41                         ` Terje Bergström
2013-02-06 20:41                           ` Terje Bergström
2013-01-15 11:43 ` [PATCHv5,RESEND 3/8] gpu: host1x: Add channel support Terje Bergstrom
2013-01-15 11:43   ` Terje Bergstrom
     [not found]   ` <1358250244-9678-4-git-send-email-tbergstrom-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-02-25 15:24     ` Thierry Reding
2013-02-25 15:24       ` Thierry Reding
2013-02-26  9:48       ` Terje Bergström
     [not found]         ` <512C84E2.5090201-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-02-27  8:56           ` Thierry Reding
2013-02-27  8:56             ` Thierry Reding
2013-03-08 16:16           ` Terje Bergström
2013-03-08 16:16             ` Terje Bergström
     [not found]             ` <513A0ED0.4070701-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-03-08 20:43               ` Thierry Reding
2013-03-08 20:43                 ` Thierry Reding
     [not found]                 ` <20130308204301.GA30742-RM9K5IK7kjIQXX3q8xo1gnVAuStQJXxyR5q1nwbD4aMs9pC9oP6+/A@public.gmane.org>
2013-03-11  6:29                   ` Terje Bergström
2013-03-11  6:29                     ` Terje Bergström
     [not found]                     ` <513D79E7.5000801-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-03-11  7:18                       ` Thierry Reding
2013-03-11  7:18                         ` Thierry Reding
     [not found]                         ` <20130311071851.GA6033-RM9K5IK7kjIQXX3q8xo1gnVAuStQJXxyR5q1nwbD4aMs9pC9oP6+/A@public.gmane.org>
2013-03-11  9:21                           ` Terje Bergström [this message]
2013-03-11  9:21                             ` Terje Bergström
     [not found]                             ` <513DA201.9010707-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-03-11  9:41                               ` Thierry Reding
2013-03-11  9:41                                 ` Thierry Reding
2013-01-15 11:44 ` [PATCHv5,RESEND 4/8] gpu: host1x: Add debug support Terje Bergstrom
2013-01-15 11:44   ` Terje Bergstrom
2013-02-04 11:03   ` Thierry Reding
     [not found]     ` <20130204110339.GA28134-RM9K5IK7kjIQXX3q8xo1gnVAuStQJXxyR5q1nwbD4aMs9pC9oP6+/A@public.gmane.org>
2013-02-05  4:41       ` Terje Bergström
2013-02-05  4:41         ` Terje Bergström
2013-02-05  9:15         ` Thierry Reding
2013-02-05  9:15           ` Thierry Reding
     [not found]           ` <20130205091555.GC20437-RM9K5IK7kjIQXX3q8xo1gnVAuStQJXxyR5q1nwbD4aMs9pC9oP6+/A@public.gmane.org>
2013-02-06 20:58             ` Terje Bergström
2013-02-06 20:58               ` Terje Bergström
     [not found]               ` <5112C3EB.7020205-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-02-08  6:54                 ` Thierry Reding
2013-02-08  6:54                   ` Thierry Reding
2013-01-15 11:44 ` [PATCHv5,RESEND 5/8] drm: tegra: Move drm to live under host1x Terje Bergstrom
2013-01-15 11:44   ` Terje Bergstrom
     [not found]   ` <1358250244-9678-6-git-send-email-tbergstrom-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-02-04 11:08     ` Thierry Reding
2013-02-04 11:08       ` Thierry Reding
     [not found]       ` <20130204110804.GA595-RM9K5IK7kjIQXX3q8xo1gnVAuStQJXxyR5q1nwbD4aMs9pC9oP6+/A@public.gmane.org>
2013-02-05  4:45         ` Terje Bergström
2013-02-05  4:45           ` Terje Bergström
     [not found]           ` <51108E70.5000602-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-02-05  9:26             ` Thierry Reding
2013-02-05  9:26               ` Thierry Reding
2013-01-15 11:44 ` [PATCHv5,RESEND 6/8] gpu: host1x: Remove second host1x driver Terje Bergstrom
2013-01-15 11:44   ` Terje Bergstrom
     [not found]   ` <1358250244-9678-7-git-send-email-tbergstrom-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-02-04 11:23     ` Thierry Reding
2013-02-04 11:23       ` Thierry Reding
2013-01-15 11:44 ` [PATCHv5,RESEND 7/8] ARM: tegra: Add board data and 2D clocks Terje Bergstrom
2013-01-15 11:44   ` Terje Bergstrom
     [not found]   ` <1358250244-9678-8-git-send-email-tbergstrom-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-02-04 11:26     ` Thierry Reding
2013-02-04 11:26       ` Thierry Reding
     [not found]       ` <20130204112622.GC595-RM9K5IK7kjIQXX3q8xo1gnVAuStQJXxyR5q1nwbD4aMs9pC9oP6+/A@public.gmane.org>
2013-02-04 17:06         ` Stephen Warren
2013-02-04 17:06           ` Stephen Warren
2013-02-05  4:47         ` Terje Bergström
2013-02-05  4:47           ` Terje Bergström
     [not found] ` <1358250244-9678-1-git-send-email-tbergstrom-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-01-15 11:44   ` [PATCHv5,RESEND 8/8] drm: tegra: Add gr2d device Terje Bergstrom
2013-01-15 11:44     ` Terje Bergstrom
     [not found]     ` <1358250244-9678-9-git-send-email-tbergstrom-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-02-04 12:56       ` Thierry Reding
2013-02-04 12:56         ` Thierry Reding
2013-02-05  5:17         ` Terje Bergström
     [not found]           ` <511095F9.6040607-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-02-05  9:54             ` Thierry Reding
2013-02-05  9:54               ` Thierry Reding
     [not found]               ` <20130205095403.GF20437-RM9K5IK7kjIQXX3q8xo1gnVAuStQJXxyR5q1nwbD4aMs9pC9oP6+/A@public.gmane.org>
2013-02-06 21:23                 ` Terje Bergström
2013-02-06 21:23                   ` Terje Bergström
     [not found]                   ` <5112C9C5.8080205-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-02-08  7:07                     ` Thierry Reding
2013-02-08  7:07                       ` Thierry Reding
     [not found]                       ` <20130208070734.GB15429-RM9K5IK7kjIQXX3q8xo1gnVAuStQJXxyR5q1nwbD4aMs9pC9oP6+/A@public.gmane.org>
2013-02-11  0:42                         ` Terje Bergström
2013-02-11  0:42                           ` Terje Bergström
     [not found]                           ` <51183E8D.1090607-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-02-11  6:44                             ` Thierry Reding
2013-02-11  6:44                               ` Thierry Reding
     [not found]                               ` <20130211064452.GA16676-RM9K5IK7kjIQXX3q8xo1gnVAuStQJXxyR5q1nwbD4aMs9pC9oP6+/A@public.gmane.org>
2013-02-11 15:40                                 ` Terje Bergström
2013-02-11 15:40                                   ` Terje Bergström
2013-01-22  9:03   ` [PATCHv5,RESEND 0/8] Support for Tegra 2D hardware Terje Bergström
2013-01-22  9:03     ` Terje Bergström
2013-02-01 11:29   ` Terje Bergström

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=513DA201.9010707@nvidia.com \
    --to=tbergstrom-ddmlm1+adcrqt0dzr+alfa@public.gmane.org \
    --cc=airlied-cv59FeDIM0c@public.gmane.org \
    --cc=amerilainen-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \
    --cc=dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=thierry.reding-RM9K5IK7kjKj5M59NBduVrNAH6kLmebB@public.gmane.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.