Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1631728 > unrolled thread
| Started by | Laura Abbott <labbott@redhat.com> |
|---|---|
| First post | 2017-04-26 23:20 +0200 |
| Last post | 2017-05-02 11:20 +0200 |
| Articles | 2 — 2 participants |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
[RFC PATCHv2 2/3] drm/prime: Introduce drm_gem_prime_import_platform Laura Abbott <labbott@redhat.com> - 2017-04-26 23:20 +0200
Re: [RFC PATCHv2 2/3] drm/prime: Introduce drm_gem_prime_import_platform Daniel Vetter <daniel@ffwll.ch> - 2017-05-02 11:20 +0200
| From | Laura Abbott <labbott@redhat.com> |
|---|---|
| Date | 2017-04-26 23:20 +0200 |
| Subject | [RFC PATCHv2 2/3] drm/prime: Introduce drm_gem_prime_import_platform |
| Message-ID | <tACvT-7Jf-5@gated-at.bofh.it> |
The existing drm_gem_prime_import function uses the underlying
struct device of a drm_device for attaching to a dma_buf. Some drivers
(notably vgem) may not have an underlying device structure. Offer
an alternate function to attach using a platform device associated
with drm_device.
Signed-off-by: Laura Abbott <labbott@redhat.com>
---
New approach for v2
---
drivers/gpu/drm/drm_prime.c | 23 ++++++++++++++++++++---
include/drm/drmP.h | 5 +++++
2 files changed, 25 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/drm_prime.c b/drivers/gpu/drm/drm_prime.c
index 25aa455..5486248 100644
--- a/drivers/gpu/drm/drm_prime.c
+++ b/drivers/gpu/drm/drm_prime.c
@@ -601,8 +601,9 @@ EXPORT_SYMBOL(drm_gem_prime_handle_to_fd);
* This is the implementation of the gem_prime_import functions for GEM drivers
* using the PRIME helpers.
*/
-struct drm_gem_object *drm_gem_prime_import(struct drm_device *dev,
- struct dma_buf *dma_buf)
+static struct drm_gem_object *__drm_gem_prime_import(struct drm_device *dev,
+ struct dma_buf *dma_buf,
+ struct device *attach_dev)
{
struct dma_buf_attachment *attach;
struct sg_table *sgt;
@@ -624,7 +625,7 @@ struct drm_gem_object *drm_gem_prime_import(struct drm_device *dev,
if (!dev->driver->gem_prime_import_sg_table)
return ERR_PTR(-EINVAL);
- attach = dma_buf_attach(dma_buf, dev->dev);
+ attach = dma_buf_attach(dma_buf, attach_dev);
if (IS_ERR(attach))
return ERR_CAST(attach);
@@ -654,8 +655,24 @@ struct drm_gem_object *drm_gem_prime_import(struct drm_device *dev,
return ERR_PTR(ret);
}
+
+struct drm_gem_object *drm_gem_prime_import(struct drm_device *dev,
+ struct dma_buf *dma_buf)
+{
+ return __drm_gem_prime_import(dev, dma_buf, dev->dev);
+}
EXPORT_SYMBOL(drm_gem_prime_import);
+struct drm_gem_object *drm_gem_prime_import_platform(struct drm_device *dev,
+ struct dma_buf *dma_buf)
+{
+ if (WARN_ON_ONCE(!dev->platformdev))
+ return NULL;
+
+ return __drm_gem_prime_import(dev, dma_buf, &dev->platformdev->dev);
+}
+EXPORT_SYMBOL(drm_gem_prime_import_platform);
+
/**
* drm_gem_prime_fd_to_handle - PRIME import function for GEM drivers
* @dev: dev to export the buffer from
diff --git a/include/drm/drmP.h b/include/drm/drmP.h
index 6105c05..f4ac30f 100644
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
@@ -769,6 +769,11 @@ extern int drm_gem_prime_handle_to_fd(struct drm_device *dev,
int *prime_fd);
extern struct drm_gem_object *drm_gem_prime_import(struct drm_device *dev,
struct dma_buf *dma_buf);
+
+extern struct drm_gem_object *drm_gem_prime_import_platform(
+ struct drm_device *dev,
+ struct dma_buf *dma_buf);
+
extern int drm_gem_prime_fd_to_handle(struct drm_device *dev,
struct drm_file *file_priv, int prime_fd, uint32_t *handle);
struct dma_buf *drm_gem_dmabuf_export(struct drm_device *dev,
--
2.7.4
[toc] | [next] | [standalone]
| From | Daniel Vetter <daniel@ffwll.ch> |
|---|---|
| Date | 2017-05-02 11:20 +0200 |
| Subject | Re: [RFC PATCHv2 2/3] drm/prime: Introduce drm_gem_prime_import_platform |
| Message-ID | <tCC8q-4Fn-21@gated-at.bofh.it> |
| In reply to | #1631728 |
On Wed, Apr 26, 2017 at 02:12:29PM -0700, Laura Abbott wrote:
> The existing drm_gem_prime_import function uses the underlying
> struct device of a drm_device for attaching to a dma_buf. Some drivers
> (notably vgem) may not have an underlying device structure. Offer
> an alternate function to attach using a platform device associated
> with drm_device.
>
> Signed-off-by: Laura Abbott <labbott@redhat.com>
> ---
> New approach for v2
This conflicts with patches already in drm-misc.git/drm-misc-next. Can you
pls rebase (and then also pls add the missing kerneldoc for the new
drm_gem_prime_import_platform function, plus links between the two any
why they exists/when to use each)?
Noticed this when I tried to apply them.
Pls keep Chris' r-b on the patch when resending.
Thanks, Daniel
> ---
> drivers/gpu/drm/drm_prime.c | 23 ++++++++++++++++++++---
> include/drm/drmP.h | 5 +++++
> 2 files changed, 25 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_prime.c b/drivers/gpu/drm/drm_prime.c
> index 25aa455..5486248 100644
> --- a/drivers/gpu/drm/drm_prime.c
> +++ b/drivers/gpu/drm/drm_prime.c
> @@ -601,8 +601,9 @@ EXPORT_SYMBOL(drm_gem_prime_handle_to_fd);
> * This is the implementation of the gem_prime_import functions for GEM drivers
> * using the PRIME helpers.
> */
> -struct drm_gem_object *drm_gem_prime_import(struct drm_device *dev,
> - struct dma_buf *dma_buf)
> +static struct drm_gem_object *__drm_gem_prime_import(struct drm_device *dev,
> + struct dma_buf *dma_buf,
> + struct device *attach_dev)
> {
> struct dma_buf_attachment *attach;
> struct sg_table *sgt;
> @@ -624,7 +625,7 @@ struct drm_gem_object *drm_gem_prime_import(struct drm_device *dev,
> if (!dev->driver->gem_prime_import_sg_table)
> return ERR_PTR(-EINVAL);
>
> - attach = dma_buf_attach(dma_buf, dev->dev);
> + attach = dma_buf_attach(dma_buf, attach_dev);
> if (IS_ERR(attach))
> return ERR_CAST(attach);
>
> @@ -654,8 +655,24 @@ struct drm_gem_object *drm_gem_prime_import(struct drm_device *dev,
>
> return ERR_PTR(ret);
> }
> +
> +struct drm_gem_object *drm_gem_prime_import(struct drm_device *dev,
> + struct dma_buf *dma_buf)
> +{
> + return __drm_gem_prime_import(dev, dma_buf, dev->dev);
> +}
> EXPORT_SYMBOL(drm_gem_prime_import);
>
> +struct drm_gem_object *drm_gem_prime_import_platform(struct drm_device *dev,
> + struct dma_buf *dma_buf)
> +{
> + if (WARN_ON_ONCE(!dev->platformdev))
> + return NULL;
> +
> + return __drm_gem_prime_import(dev, dma_buf, &dev->platformdev->dev);
> +}
> +EXPORT_SYMBOL(drm_gem_prime_import_platform);
> +
> /**
> * drm_gem_prime_fd_to_handle - PRIME import function for GEM drivers
> * @dev: dev to export the buffer from
> diff --git a/include/drm/drmP.h b/include/drm/drmP.h
> index 6105c05..f4ac30f 100644
> --- a/include/drm/drmP.h
> +++ b/include/drm/drmP.h
> @@ -769,6 +769,11 @@ extern int drm_gem_prime_handle_to_fd(struct drm_device *dev,
> int *prime_fd);
> extern struct drm_gem_object *drm_gem_prime_import(struct drm_device *dev,
> struct dma_buf *dma_buf);
> +
> +extern struct drm_gem_object *drm_gem_prime_import_platform(
> + struct drm_device *dev,
> + struct dma_buf *dma_buf);
> +
> extern int drm_gem_prime_fd_to_handle(struct drm_device *dev,
> struct drm_file *file_priv, int prime_fd, uint32_t *handle);
> struct dma_buf *drm_gem_dmabuf_export(struct drm_device *dev,
> --
> 2.7.4
>
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web