From: "Koenig, Christian" <Christian.Koenig-5C7GfCeVMHo@public.gmane.org>
To: Daniel Vetter <daniel.vetter-/w4YWyX8dFk@public.gmane.org>,
DRI Development
<dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org>
Cc: Kate Stewart
<kstewart-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org>,
Maxime Ripard
<maxime.ripard-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>,
"Xu, Feifei" <Feifei.Xu-5C7GfCeVMHo@public.gmane.org>,
Joonas Lahtinen
<joonas.lahtinen-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>,
Chris Wilson
<chris-Y6uKTt2uX1cEflXRtASbqLVCufUGDwFn@public.gmane.org>,
Eric Anholt <eric-WhKQ6XTQaPysTnJN9+BGXg@public.gmane.org>,
Thomas Zimmermann
<tdz-Rn4VEauK+AKRv+LV9MX5uipxlwaOVQ5f@public.gmane.org>,
Thierry Reding
<thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
Jilayne Lovejoy
<opensource-y0T6pEZso2lBDgjK7y7TUQ@public.gmane.org>,
Daniel Vetter
<daniel.vetter-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
Sumit Semwal
<sumit.semwal-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
"Zhou,
David(ChunMing)" <David1.Zhou-5C7GfCeVMHo@public.gmane.org>,
Mika Kuoppala
<mika.kuoppala-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>,
Russell King <linux-I+IVW8TIWO2tmTQ+vhA3Yw@public.gmane.org>,
"amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org"
<amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org>,
Jonathan Hunter
<jonathanh-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>,
David Airlie <airlied-cv59FeDIM0c@public.gmane.org>,
Tomi Valkeinen <tomi.valkeinen-l0cyMroinI0@public.gmane.org>,
Matthew Auld
<matthew.auld-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
Dave Airlie <airlied-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
Zhi Wang <zhi.a.wang-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>lin
Subject: Re: [PATCH 09/59] drm/prime: Align gem_prime_export with obj_funcs.export
Date: Mon, 17 Jun 2019 09:32:25 +0000 [thread overview]
Message-ID: <ba71d00e-44d2-49d8-82a1-43741f22ffa8@amd.com> (raw)
In-Reply-To: <20190614203615.12639-10-daniel.vetter-/w4YWyX8dFk@public.gmane.org>
Am 14.06.19 um 22:35 schrieb Daniel Vetter:
> The idea is that gem_prime_export is deprecated in favor of
> obj_funcs.export. That's much easier to do if both have matching
> function signatures.
>
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
> Cc: Russell King <linux@armlinux.org.uk>
> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> Cc: Maxime Ripard <maxime.ripard@bootlin.com>
> Cc: Sean Paul <sean@poorly.run>
> Cc: David Airlie <airlied@linux.ie>
> Cc: Daniel Vetter <daniel@ffwll.ch>
> Cc: Zhenyu Wang <zhenyuw@linux.intel.com>
> Cc: Zhi Wang <zhi.a.wang@intel.com>
> Cc: Jani Nikula <jani.nikula@linux.intel.com>
> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
> Cc: Alex Deucher <alexander.deucher@amd.com>
> Cc: "Christian König" <christian.koenig@amd.com>
> Cc: "David (ChunMing) Zhou" <David1.Zhou@amd.com>
> Cc: Thierry Reding <thierry.reding@gmail.com>
> Cc: Jonathan Hunter <jonathanh@nvidia.com>
> Cc: Dave Airlie <airlied@redhat.com>
> Cc: Eric Anholt <eric@anholt.net>
> Cc: "Michel Dänzer" <michel.daenzer@amd.com>
> Cc: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Huang Rui <ray.huang@amd.com>
> Cc: Felix Kuehling <Felix.Kuehling@amd.com>
> Cc: Hawking Zhang <Hawking.Zhang@amd.com>
> Cc: Feifei Xu <Feifei.Xu@amd.com>
> Cc: Jim Qu <Jim.Qu@amd.com>
> Cc: Evan Quan <evan.quan@amd.com>
> Cc: Matthew Auld <matthew.auld@intel.com>
> Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
> Cc: Thomas Zimmermann <tdz@users.sourceforge.net>
> Cc: Kate Stewart <kstewart@linuxfoundation.org>
> Cc: Sumit Semwal <sumit.semwal@linaro.org>
> Cc: Jilayne Lovejoy <opensource@jilayne.com>
> Cc: Thomas Gleixner <tglx@linutronix.de>
> Cc: Mikulas Patocka <mpatocka@redhat.com>
> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Cc: Junwei Zhang <Jerry.Zhang@amd.com>
> Cc: intel-gvt-dev@lists.freedesktop.org
> Cc: intel-gfx@lists.freedesktop.org
> Cc: amd-gfx@lists.freedesktop.org
> Cc: linux-tegra@vger.kernel.org
Acked-by: Christian König <christian.koenig@amd.com>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c | 7 +++----
> drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.h | 3 +--
> drivers/gpu/drm/armada/armada_gem.c | 5 ++---
> drivers/gpu/drm/armada/armada_gem.h | 3 +--
> drivers/gpu/drm/drm_prime.c | 9 ++++-----
> drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c | 5 ++---
> drivers/gpu/drm/i915/gem/selftests/i915_gem_dmabuf.c | 8 ++++----
> drivers/gpu/drm/i915/gvt/dmabuf.c | 2 +-
> drivers/gpu/drm/i915/i915_drv.h | 3 +--
> drivers/gpu/drm/omapdrm/omap_gem.h | 3 +--
> drivers/gpu/drm/omapdrm/omap_gem_dmabuf.c | 5 ++---
> drivers/gpu/drm/radeon/radeon_drv.c | 3 +--
> drivers/gpu/drm/radeon/radeon_prime.c | 5 ++---
> drivers/gpu/drm/tegra/gem.c | 7 +++----
> drivers/gpu/drm/tegra/gem.h | 3 +--
> drivers/gpu/drm/udl/udl_dmabuf.c | 5 ++---
> drivers/gpu/drm/udl/udl_drv.h | 3 +--
> drivers/gpu/drm/vc4/vc4_bo.c | 5 ++---
> drivers/gpu/drm/vc4/vc4_drv.h | 3 +--
> drivers/gpu/drm/vgem/vgem_fence.c | 2 +-
> include/drm/drm_drv.h | 4 ++--
> include/drm/drm_prime.h | 3 +--
> 22 files changed, 39 insertions(+), 57 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c
> index 489041df1f45..4809d4a5d72a 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c
> @@ -345,8 +345,7 @@ const struct dma_buf_ops amdgpu_dmabuf_ops = {
> * Returns:
> * Shared DMA buffer representing the GEM BO from the given device.
> */
> -struct dma_buf *amdgpu_gem_prime_export(struct drm_device *dev,
> - struct drm_gem_object *gobj,
> +struct dma_buf *amdgpu_gem_prime_export(struct drm_gem_object *gobj,
> int flags)
> {
> struct amdgpu_bo *bo = gem_to_amdgpu_bo(gobj);
> @@ -356,9 +355,9 @@ struct dma_buf *amdgpu_gem_prime_export(struct drm_device *dev,
> bo->flags & AMDGPU_GEM_CREATE_VM_ALWAYS_VALID)
> return ERR_PTR(-EPERM);
>
> - buf = drm_gem_prime_export(dev, gobj, flags);
> + buf = drm_gem_prime_export(gobj, flags);
> if (!IS_ERR(buf)) {
> - buf->file->f_mapping = dev->anon_inode->i_mapping;
> + buf->file->f_mapping = gobj->dev->anon_inode->i_mapping;
> buf->ops = &amdgpu_dmabuf_ops;
> }
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.h
> index c7056cbe8685..7f73a4f94204 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.h
> @@ -30,8 +30,7 @@ struct drm_gem_object *
> amdgpu_gem_prime_import_sg_table(struct drm_device *dev,
> struct dma_buf_attachment *attach,
> struct sg_table *sg);
> -struct dma_buf *amdgpu_gem_prime_export(struct drm_device *dev,
> - struct drm_gem_object *gobj,
> +struct dma_buf *amdgpu_gem_prime_export(struct drm_gem_object *gobj,
> int flags);
> struct drm_gem_object *amdgpu_gem_prime_import(struct drm_device *dev,
> struct dma_buf *dma_buf);
> diff --git a/drivers/gpu/drm/armada/armada_gem.c b/drivers/gpu/drm/armada/armada_gem.c
> index 642d0e70d0f8..7e7fcc3f1f7f 100644
> --- a/drivers/gpu/drm/armada/armada_gem.c
> +++ b/drivers/gpu/drm/armada/armada_gem.c
> @@ -485,8 +485,7 @@ static const struct dma_buf_ops armada_gem_prime_dmabuf_ops = {
> };
>
> struct dma_buf *
> -armada_gem_prime_export(struct drm_device *dev, struct drm_gem_object *obj,
> - int flags)
> +armada_gem_prime_export(struct drm_gem_object *obj, int flags)
> {
> DEFINE_DMA_BUF_EXPORT_INFO(exp_info);
>
> @@ -495,7 +494,7 @@ armada_gem_prime_export(struct drm_device *dev, struct drm_gem_object *obj,
> exp_info.flags = O_RDWR;
> exp_info.priv = obj;
>
> - return drm_gem_dmabuf_export(dev, &exp_info);
> + return drm_gem_dmabuf_export(obj->dev, &exp_info);
> }
>
> struct drm_gem_object *
> diff --git a/drivers/gpu/drm/armada/armada_gem.h b/drivers/gpu/drm/armada/armada_gem.h
> index 1ac90792b166..c619381eeeff 100644
> --- a/drivers/gpu/drm/armada/armada_gem.h
> +++ b/drivers/gpu/drm/armada/armada_gem.h
> @@ -35,8 +35,7 @@ struct armada_gem_object *armada_gem_alloc_private_object(struct drm_device *,
> size_t);
> int armada_gem_dumb_create(struct drm_file *, struct drm_device *,
> struct drm_mode_create_dumb *);
> -struct dma_buf *armada_gem_prime_export(struct drm_device *dev,
> - struct drm_gem_object *obj, int flags);
> +struct dma_buf *armada_gem_prime_export(struct drm_gem_object *obj, int flags);
> struct drm_gem_object *armada_gem_prime_import(struct drm_device *,
> struct dma_buf *);
> int armada_gem_map_import(struct armada_gem_object *);
> diff --git a/drivers/gpu/drm/drm_prime.c b/drivers/gpu/drm/drm_prime.c
> index 78f6f10b2060..d545e681cb41 100644
> --- a/drivers/gpu/drm/drm_prime.c
> +++ b/drivers/gpu/drm/drm_prime.c
> @@ -382,9 +382,9 @@ static struct dma_buf *export_and_register_object(struct drm_device *dev,
> if (obj->funcs && obj->funcs->export)
> dmabuf = obj->funcs->export(obj, flags);
> else if (dev->driver->gem_prime_export)
> - dmabuf = dev->driver->gem_prime_export(dev, obj, flags);
> + dmabuf = dev->driver->gem_prime_export(obj, flags);
> else
> - dmabuf = drm_gem_prime_export(dev, obj, flags);
> + dmabuf = drm_gem_prime_export(obj, flags);
> if (IS_ERR(dmabuf)) {
> /* normally the created dma-buf takes ownership of the ref,
> * but if that fails then drop the ref
> @@ -812,17 +812,16 @@ EXPORT_SYMBOL(drm_prime_pages_to_sg);
>
> /**
> * drm_gem_prime_export - helper library implementation of the export callback
> - * @dev: drm_device to export from
> * @obj: GEM object to export
> * @flags: flags like DRM_CLOEXEC and DRM_RDWR
> *
> * This is the implementation of the &drm_gem_object_funcs.export functions for GEM drivers
> * using the PRIME helpers.
> */
> -struct dma_buf *drm_gem_prime_export(struct drm_device *dev,
> - struct drm_gem_object *obj,
> +struct dma_buf *drm_gem_prime_export(struct drm_gem_object *obj,
> int flags)
> {
> + struct drm_device *dev = obj->dev;
> struct dma_buf_export_info exp_info = {
> .exp_name = KBUILD_MODNAME, /* white lie for debug */
> .owner = dev->driver->fops->owner,
> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c b/drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c
> index a93e233cfaa9..50b1b73c303a 100644
> --- a/drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c
> +++ b/drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c
> @@ -204,8 +204,7 @@ static const struct dma_buf_ops i915_dmabuf_ops = {
> .end_cpu_access = i915_gem_end_cpu_access,
> };
>
> -struct dma_buf *i915_gem_prime_export(struct drm_device *dev,
> - struct drm_gem_object *gem_obj, int flags)
> +struct dma_buf *i915_gem_prime_export(struct drm_gem_object *gem_obj, int flags)
> {
> struct drm_i915_gem_object *obj = to_intel_bo(gem_obj);
> DEFINE_DMA_BUF_EXPORT_INFO(exp_info);
> @@ -222,7 +221,7 @@ struct dma_buf *i915_gem_prime_export(struct drm_device *dev,
> return ERR_PTR(ret);
> }
>
> - return drm_gem_dmabuf_export(dev, &exp_info);
> + return drm_gem_dmabuf_export(gem_obj->dev, &exp_info);
> }
>
> static int i915_gem_object_get_pages_dmabuf(struct drm_i915_gem_object *obj)
> diff --git a/drivers/gpu/drm/i915/gem/selftests/i915_gem_dmabuf.c b/drivers/gpu/drm/i915/gem/selftests/i915_gem_dmabuf.c
> index e3a64edef918..d85d1ce273ca 100644
> --- a/drivers/gpu/drm/i915/gem/selftests/i915_gem_dmabuf.c
> +++ b/drivers/gpu/drm/i915/gem/selftests/i915_gem_dmabuf.c
> @@ -20,7 +20,7 @@ static int igt_dmabuf_export(void *arg)
> if (IS_ERR(obj))
> return PTR_ERR(obj);
>
> - dmabuf = i915_gem_prime_export(&i915->drm, &obj->base, 0);
> + dmabuf = i915_gem_prime_export(&obj->base, 0);
> i915_gem_object_put(obj);
> if (IS_ERR(dmabuf)) {
> pr_err("i915_gem_prime_export failed with err=%d\n",
> @@ -44,7 +44,7 @@ static int igt_dmabuf_import_self(void *arg)
> if (IS_ERR(obj))
> return PTR_ERR(obj);
>
> - dmabuf = i915_gem_prime_export(&i915->drm, &obj->base, 0);
> + dmabuf = i915_gem_prime_export(&obj->base, 0);
> if (IS_ERR(dmabuf)) {
> pr_err("i915_gem_prime_export failed with err=%d\n",
> (int)PTR_ERR(dmabuf));
> @@ -219,7 +219,7 @@ static int igt_dmabuf_export_vmap(void *arg)
> if (IS_ERR(obj))
> return PTR_ERR(obj);
>
> - dmabuf = i915_gem_prime_export(&i915->drm, &obj->base, 0);
> + dmabuf = i915_gem_prime_export(&obj->base, 0);
> if (IS_ERR(dmabuf)) {
> pr_err("i915_gem_prime_export failed with err=%d\n",
> (int)PTR_ERR(dmabuf));
> @@ -266,7 +266,7 @@ static int igt_dmabuf_export_kmap(void *arg)
> if (IS_ERR(obj))
> return PTR_ERR(obj);
>
> - dmabuf = i915_gem_prime_export(&i915->drm, &obj->base, 0);
> + dmabuf = i915_gem_prime_export(&obj->base, 0);
> i915_gem_object_put(obj);
> if (IS_ERR(dmabuf)) {
> err = PTR_ERR(dmabuf);
> diff --git a/drivers/gpu/drm/i915/gvt/dmabuf.c b/drivers/gpu/drm/i915/gvt/dmabuf.c
> index 41c8ebc60c63..13044c027f27 100644
> --- a/drivers/gpu/drm/i915/gvt/dmabuf.c
> +++ b/drivers/gpu/drm/i915/gvt/dmabuf.c
> @@ -491,7 +491,7 @@ int intel_vgpu_get_dmabuf(struct intel_vgpu *vgpu, unsigned int dmabuf_id)
>
> obj->gvt_info = dmabuf_obj->info;
>
> - dmabuf = i915_gem_prime_export(dev, &obj->base, DRM_CLOEXEC | DRM_RDWR);
> + dmabuf = i915_gem_prime_export(&obj->base, DRM_CLOEXEC | DRM_RDWR);
> if (IS_ERR(dmabuf)) {
> gvt_vgpu_err("export dma-buf failed\n");
> ret = PTR_ERR(dmabuf);
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index 9dce1c71bb9d..a8af77162567 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -2587,8 +2587,7 @@ int i915_gem_object_set_cache_level(struct drm_i915_gem_object *obj,
> struct drm_gem_object *i915_gem_prime_import(struct drm_device *dev,
> struct dma_buf *dma_buf);
>
> -struct dma_buf *i915_gem_prime_export(struct drm_device *dev,
> - struct drm_gem_object *gem_obj, int flags);
> +struct dma_buf *i915_gem_prime_export(struct drm_gem_object *gem_obj, int flags);
>
> static inline struct i915_gem_context *
> __i915_gem_context_lookup_rcu(struct drm_i915_file_private *file_priv, u32 id)
> diff --git a/drivers/gpu/drm/omapdrm/omap_gem.h b/drivers/gpu/drm/omapdrm/omap_gem.h
> index c1c45fbde155..ee0f217cf59d 100644
> --- a/drivers/gpu/drm/omapdrm/omap_gem.h
> +++ b/drivers/gpu/drm/omapdrm/omap_gem.h
> @@ -76,8 +76,7 @@ u64 omap_gem_mmap_offset(struct drm_gem_object *obj);
> size_t omap_gem_mmap_size(struct drm_gem_object *obj);
>
> /* PRIME Interface */
> -struct dma_buf *omap_gem_prime_export(struct drm_device *dev,
> - struct drm_gem_object *obj, int flags);
> +struct dma_buf *omap_gem_prime_export(struct drm_gem_object *obj, int flags);
> struct drm_gem_object *omap_gem_prime_import(struct drm_device *dev,
> struct dma_buf *buffer);
>
> diff --git a/drivers/gpu/drm/omapdrm/omap_gem_dmabuf.c b/drivers/gpu/drm/omapdrm/omap_gem_dmabuf.c
> index 0f8b597ccd10..7e7ad275e3cf 100644
> --- a/drivers/gpu/drm/omapdrm/omap_gem_dmabuf.c
> +++ b/drivers/gpu/drm/omapdrm/omap_gem_dmabuf.c
> @@ -136,8 +136,7 @@ static const struct dma_buf_ops omap_dmabuf_ops = {
> .mmap = omap_gem_dmabuf_mmap,
> };
>
> -struct dma_buf *omap_gem_prime_export(struct drm_device *dev,
> - struct drm_gem_object *obj, int flags)
> +struct dma_buf *omap_gem_prime_export(struct drm_gem_object *obj, int flags)
> {
> DEFINE_DMA_BUF_EXPORT_INFO(exp_info);
>
> @@ -146,7 +145,7 @@ struct dma_buf *omap_gem_prime_export(struct drm_device *dev,
> exp_info.flags = flags;
> exp_info.priv = obj;
>
> - return drm_gem_dmabuf_export(dev, &exp_info);
> + return drm_gem_dmabuf_export(obj->dev, &exp_info);
> }
>
> /* -----------------------------------------------------------------------------
> diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
> index 3b07aa6e551d..4a6acaa3f843 100644
> --- a/drivers/gpu/drm/radeon/radeon_drv.c
> +++ b/drivers/gpu/drm/radeon/radeon_drv.c
> @@ -130,8 +130,7 @@ int radeon_gem_object_open(struct drm_gem_object *obj,
> struct drm_file *file_priv);
> void radeon_gem_object_close(struct drm_gem_object *obj,
> struct drm_file *file_priv);
> -struct dma_buf *radeon_gem_prime_export(struct drm_device *dev,
> - struct drm_gem_object *gobj,
> +struct dma_buf *radeon_gem_prime_export(struct drm_gem_object *gobj,
> int flags);
> extern int radeon_get_crtc_scanoutpos(struct drm_device *dev, unsigned int crtc,
> unsigned int flags, int *vpos, int *hpos,
> diff --git a/drivers/gpu/drm/radeon/radeon_prime.c b/drivers/gpu/drm/radeon/radeon_prime.c
> index d3a5bea9a2c5..deaffce50a2e 100644
> --- a/drivers/gpu/drm/radeon/radeon_prime.c
> +++ b/drivers/gpu/drm/radeon/radeon_prime.c
> @@ -124,12 +124,11 @@ struct reservation_object *radeon_gem_prime_res_obj(struct drm_gem_object *obj)
> return bo->tbo.resv;
> }
>
> -struct dma_buf *radeon_gem_prime_export(struct drm_device *dev,
> - struct drm_gem_object *gobj,
> +struct dma_buf *radeon_gem_prime_export(struct drm_gem_object *gobj,
> int flags)
> {
> struct radeon_bo *bo = gem_to_radeon_bo(gobj);
> if (radeon_ttm_tt_has_userptr(bo->tbo.ttm))
> return ERR_PTR(-EPERM);
> - return drm_gem_prime_export(dev, gobj, flags);
> + return drm_gem_prime_export(gobj, flags);
> }
> diff --git a/drivers/gpu/drm/tegra/gem.c b/drivers/gpu/drm/tegra/gem.c
> index 4cce11fd8836..fd5e9c3a2789 100644
> --- a/drivers/gpu/drm/tegra/gem.c
> +++ b/drivers/gpu/drm/tegra/gem.c
> @@ -629,20 +629,19 @@ static const struct dma_buf_ops tegra_gem_prime_dmabuf_ops = {
> .vunmap = tegra_gem_prime_vunmap,
> };
>
> -struct dma_buf *tegra_gem_prime_export(struct drm_device *drm,
> - struct drm_gem_object *gem,
> +struct dma_buf *tegra_gem_prime_export(struct drm_gem_object *gem,
> int flags)
> {
> DEFINE_DMA_BUF_EXPORT_INFO(exp_info);
>
> exp_info.exp_name = KBUILD_MODNAME;
> - exp_info.owner = drm->driver->fops->owner;
> + exp_info.owner = gem->dev->driver->fops->owner;
> exp_info.ops = &tegra_gem_prime_dmabuf_ops;
> exp_info.size = gem->size;
> exp_info.flags = flags;
> exp_info.priv = gem;
>
> - return drm_gem_dmabuf_export(drm, &exp_info);
> + return drm_gem_dmabuf_export(gem->dev, &exp_info);
> }
>
> struct drm_gem_object *tegra_gem_prime_import(struct drm_device *drm,
> diff --git a/drivers/gpu/drm/tegra/gem.h b/drivers/gpu/drm/tegra/gem.h
> index 6bd7dd7e55b4..85ebf83c7e43 100644
> --- a/drivers/gpu/drm/tegra/gem.h
> +++ b/drivers/gpu/drm/tegra/gem.h
> @@ -73,8 +73,7 @@ extern const struct vm_operations_struct tegra_bo_vm_ops;
> int __tegra_gem_mmap(struct drm_gem_object *gem, struct vm_area_struct *vma);
> int tegra_drm_mmap(struct file *file, struct vm_area_struct *vma);
>
> -struct dma_buf *tegra_gem_prime_export(struct drm_device *drm,
> - struct drm_gem_object *gem,
> +struct dma_buf *tegra_gem_prime_export(struct drm_gem_object *gem,
> int flags);
> struct drm_gem_object *tegra_gem_prime_import(struct drm_device *drm,
> struct dma_buf *buf);
> diff --git a/drivers/gpu/drm/udl/udl_dmabuf.c b/drivers/gpu/drm/udl/udl_dmabuf.c
> index a28892146f7c..10a60e7e93d6 100644
> --- a/drivers/gpu/drm/udl/udl_dmabuf.c
> +++ b/drivers/gpu/drm/udl/udl_dmabuf.c
> @@ -170,8 +170,7 @@ static const struct dma_buf_ops udl_dmabuf_ops = {
> .release = drm_gem_dmabuf_release,
> };
>
> -struct dma_buf *udl_gem_prime_export(struct drm_device *dev,
> - struct drm_gem_object *obj, int flags)
> +struct dma_buf *udl_gem_prime_export(struct drm_gem_object *obj, int flags)
> {
> DEFINE_DMA_BUF_EXPORT_INFO(exp_info);
>
> @@ -180,7 +179,7 @@ struct dma_buf *udl_gem_prime_export(struct drm_device *dev,
> exp_info.flags = flags;
> exp_info.priv = obj;
>
> - return drm_gem_dmabuf_export(dev, &exp_info);
> + return drm_gem_dmabuf_export(obj->dev, &exp_info);
> }
>
> static int udl_prime_create(struct drm_device *dev,
> diff --git a/drivers/gpu/drm/udl/udl_drv.h b/drivers/gpu/drm/udl/udl_drv.h
> index a928801026c1..9d0790be544f 100644
> --- a/drivers/gpu/drm/udl/udl_drv.h
> +++ b/drivers/gpu/drm/udl/udl_drv.h
> @@ -126,8 +126,7 @@ int udl_gem_mmap(struct drm_file *file_priv, struct drm_device *dev,
> void udl_gem_free_object(struct drm_gem_object *gem_obj);
> struct udl_gem_object *udl_gem_alloc_object(struct drm_device *dev,
> size_t size);
> -struct dma_buf *udl_gem_prime_export(struct drm_device *dev,
> - struct drm_gem_object *obj, int flags);
> +struct dma_buf *udl_gem_prime_export(struct drm_gem_object *obj, int flags);
> struct drm_gem_object *udl_gem_prime_import(struct drm_device *dev,
> struct dma_buf *dma_buf);
>
> diff --git a/drivers/gpu/drm/vc4/vc4_bo.c b/drivers/gpu/drm/vc4/vc4_bo.c
> index 1434bb829267..b0f9eb6632a2 100644
> --- a/drivers/gpu/drm/vc4/vc4_bo.c
> +++ b/drivers/gpu/drm/vc4/vc4_bo.c
> @@ -658,8 +658,7 @@ static void vc4_bo_cache_time_timer(struct timer_list *t)
> schedule_work(&vc4->bo_cache.time_work);
> }
>
> -struct dma_buf *
> -vc4_prime_export(struct drm_device *dev, struct drm_gem_object *obj, int flags)
> +struct dma_buf * vc4_prime_export(struct drm_gem_object *obj, int flags)
> {
> struct vc4_bo *bo = to_vc4_bo(obj);
> struct dma_buf *dmabuf;
> @@ -681,7 +680,7 @@ vc4_prime_export(struct drm_device *dev, struct drm_gem_object *obj, int flags)
> return ERR_PTR(ret);
> }
>
> - dmabuf = drm_gem_prime_export(dev, obj, flags);
> + dmabuf = drm_gem_prime_export(obj, flags);
> if (IS_ERR(dmabuf))
> vc4_bo_dec_usecnt(bo);
>
> diff --git a/drivers/gpu/drm/vc4/vc4_drv.h b/drivers/gpu/drm/vc4/vc4_drv.h
> index 9170a24ec5f5..efd1ec3430f5 100644
> --- a/drivers/gpu/drm/vc4/vc4_drv.h
> +++ b/drivers/gpu/drm/vc4/vc4_drv.h
> @@ -708,8 +708,7 @@ struct vc4_bo *vc4_bo_create(struct drm_device *dev, size_t size,
> int vc4_dumb_create(struct drm_file *file_priv,
> struct drm_device *dev,
> struct drm_mode_create_dumb *args);
> -struct dma_buf *vc4_prime_export(struct drm_device *dev,
> - struct drm_gem_object *obj, int flags);
> +struct dma_buf *vc4_prime_export(struct drm_gem_object *obj, int flags);
> int vc4_create_bo_ioctl(struct drm_device *dev, void *data,
> struct drm_file *file_priv);
> int vc4_create_shader_bo_ioctl(struct drm_device *dev, void *data,
> diff --git a/drivers/gpu/drm/vgem/vgem_fence.c b/drivers/gpu/drm/vgem/vgem_fence.c
> index eb17c0cd3727..72d43d5ec5ab 100644
> --- a/drivers/gpu/drm/vgem/vgem_fence.c
> +++ b/drivers/gpu/drm/vgem/vgem_fence.c
> @@ -108,7 +108,7 @@ static int attach_dmabuf(struct drm_device *dev,
> if (obj->dma_buf)
> return 0;
>
> - dmabuf = dev->driver->gem_prime_export(dev, obj, 0);
> + dmabuf = dev->driver->gem_prime_export(obj, 0);
> if (IS_ERR(dmabuf))
> return PTR_ERR(dmabuf);
>
> diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h
> index 7bc4795319c4..ec1c638927b0 100644
> --- a/include/drm/drm_drv.h
> +++ b/include/drm/drm_drv.h
> @@ -584,8 +584,8 @@ struct drm_driver {
> * Export hook for GEM drivers. Deprecated in favour of
> * &drm_gem_object_funcs.export.
> */
> - struct dma_buf * (*gem_prime_export)(struct drm_device *dev,
> - struct drm_gem_object *obj, int flags);
> + struct dma_buf * (*gem_prime_export)(struct drm_gem_object *obj,
> + int flags);
> /**
> * @gem_prime_import:
> *
> diff --git a/include/drm/drm_prime.h b/include/drm/drm_prime.h
> index ee32b07f3eb0..d89311b822d5 100644
> --- a/include/drm/drm_prime.h
> +++ b/include/drm/drm_prime.h
> @@ -91,8 +91,7 @@ int drm_gem_prime_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma);
> int drm_gem_dmabuf_mmap(struct dma_buf *dma_buf, struct vm_area_struct *vma);
>
> struct sg_table *drm_prime_pages_to_sg(struct page **pages, unsigned int nr_pages);
> -struct dma_buf *drm_gem_prime_export(struct drm_device *dev,
> - struct drm_gem_object *obj,
> +struct dma_buf *drm_gem_prime_export(struct drm_gem_object *obj,
> int flags);
>
> /* helper functions for importing */
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx
next prev parent reply other threads:[~2019-06-17 9:32 UTC|newest]
Thread overview: 155+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-06-14 20:35 [PATCH 00/59] prime doc polish and ... a few cleanups Daniel Vetter
2019-06-14 20:35 ` [PATCH 01/59] drm/todo: Improve drm_gem_object funcs todo Daniel Vetter
2019-06-14 20:44 ` Rob Herring
2019-06-14 22:53 ` Eric Anholt
2019-06-17 14:03 ` Daniel Vetter
2019-06-17 6:02 ` Gerd Hoffmann
2019-06-17 15:47 ` Noralf Trønnes
2019-06-17 16:29 ` Daniel Vetter
2019-06-17 16:54 ` Noralf Trønnes
2019-06-17 21:20 ` Daniel Vetter
2019-06-17 22:12 ` Noralf Trønnes
2019-06-18 14:02 ` [PATCH] drm/todo: Update drm_gem_object_funcs todo even more Daniel Vetter
2019-06-18 14:15 ` Noralf Trønnes
2019-06-18 18:25 ` Eric Engestrom
2019-06-20 12:52 ` Daniel Vetter
2019-06-27 12:15 ` [PATCH 01/59] drm/todo: Improve drm_gem_object funcs todo Thomas Zimmermann
2019-06-14 20:35 ` [PATCH 02/59] drm/gem: Unexport drm_gem_(un)pin/v(un)map Daniel Vetter
2019-06-14 20:35 ` [PATCH 03/59] drm/prime: Update docs Daniel Vetter
2019-06-15 11:41 ` Sam Ravnborg
2019-06-17 16:38 ` Daniel Vetter
2019-06-17 17:01 ` Sam Ravnborg
2019-06-17 17:47 ` Emil Velikov
2019-06-18 9:20 ` [PATCH 1/2] drm/prime: Shuffle functions Daniel Vetter
2019-06-18 9:20 ` [PATCH 2/2] drm/prime: Update docs Daniel Vetter
2019-06-19 9:03 ` Daniel Vetter
2019-06-19 10:21 ` Gerd Hoffmann
2019-06-19 10:50 ` Emil Velikov
2019-06-19 12:43 ` Noralf Trønnes
2019-06-20 12:44 ` Daniel Vetter
2019-06-20 12:46 ` [PATCH] " Daniel Vetter
2019-06-19 10:18 ` [PATCH 1/2] drm/prime: Shuffle functions Gerd Hoffmann
2019-06-19 10:47 ` Emil Velikov
2019-06-19 12:09 ` Noralf Trønnes
2019-06-14 20:35 ` [PATCH 04/59] drm/prime: Unconditionally set up the prime file private Daniel Vetter
2019-06-14 20:35 ` [PATCH 05/59] drm/prime: Make DRIVER_PRIME a no-op Daniel Vetter
2019-06-17 17:53 ` Emil Velikov
2019-06-14 20:35 ` [PATCH 07/59] drm/arm/komeda: Remove DRIVER_HAVE_IRQ Daniel Vetter
2019-06-17 6:26 ` james qian wang (Arm Technology China)
2019-06-17 13:43 ` Daniel Vetter
2019-06-18 4:41 ` james qian wang (Arm Technology China)
2019-06-18 5:04 ` james qian wang (Arm Technology China)
2019-06-17 18:01 ` Emil Velikov
2019-06-19 10:11 ` Liviu Dudau
2019-06-14 20:35 ` [PATCH 08/59] drm/omapdrm: drop fb_debug_enter/leave Daniel Vetter
2019-06-14 20:35 ` [PATCH 10/59] drm/arc: Drop drm_gem_prime_export/import Daniel Vetter
2019-06-14 20:35 ` [PATCH 11/59] drm/arm: " Daniel Vetter
2019-06-17 3:22 ` james qian wang (Arm Technology China)
2019-06-19 10:11 ` Liviu Dudau
2019-06-14 20:35 ` [PATCH 12/59] drm/atmel: " Daniel Vetter
2019-06-14 21:43 ` Sam Ravnborg
2019-06-14 20:35 ` [PATCH 13/59] drm/etnaviv: " Daniel Vetter
2019-06-16 7:02 ` Christian Gmeiner
2019-06-25 16:12 ` Lucas Stach
2019-06-14 20:35 ` [PATCH 14/59] drm/exynos: Drop drm_gem_prime_export Daniel Vetter
2019-06-14 20:35 ` [PATCH 15/59] drm/fsl-dcu: Drop drm_gem_prime_export/import Daniel Vetter
2019-06-17 13:58 ` Stefan Agner
2019-06-14 20:35 ` [PATCH 16/59] drm/hisilicon: " Daniel Vetter
2019-06-14 21:29 ` Sam Ravnborg
2019-06-14 20:35 ` [PATCH 17/59] drm/imx: " Daniel Vetter
2019-06-14 20:35 ` [PATCH 18/59] drm/mcde: " Daniel Vetter
2019-06-15 8:31 ` Linus Walleij
2019-06-14 20:35 ` [PATCH 19/59] drm/mtk: " Daniel Vetter
2019-06-17 1:51 ` CK Hu
2019-06-14 20:35 ` [PATCH 20/59] drm/meson: " Daniel Vetter
2019-06-18 9:48 ` Neil Armstrong
2019-06-14 20:35 ` [PATCH 22/59] drm/mxsfb: " Daniel Vetter
2019-06-17 13:59 ` Stefan Agner
2019-06-14 20:35 ` [PATCH 24/59] drm/pl111: " Daniel Vetter
2019-06-14 20:35 ` [PATCH 25/59] drm/qxl: " Daniel Vetter
2019-06-17 6:03 ` Gerd Hoffmann
2019-06-14 20:35 ` [PATCH 26/59] drm/rcar-du: " Daniel Vetter
2019-06-18 7:35 ` Laurent Pinchart
2019-06-14 20:35 ` [PATCH 27/59] drm/rockchip: " Daniel Vetter
2019-06-15 22:36 ` Heiko Stuebner
2019-06-14 20:35 ` [PATCH 28/59] drm/shmob: " Daniel Vetter
2019-06-18 7:35 ` Laurent Pinchart
2019-06-14 20:35 ` [PATCH 29/59] drm/sti: " Daniel Vetter
2019-06-20 15:08 ` Benjamin Gaignard
2019-06-14 20:35 ` [PATCH 30/59] drm/stm: " Daniel Vetter
2019-06-18 9:55 ` Philippe CORNU
2019-06-14 20:35 ` [PATCH 31/59] drm/tilcdc: " Daniel Vetter
2019-06-14 20:35 ` [PATCH 32/59] drm/tve2000: " Daniel Vetter
2019-06-15 8:34 ` Linus Walleij
2019-06-15 9:14 ` Daniel Vetter
2019-06-14 20:35 ` [PATCH 33/59] drm/vboxvideo: " Daniel Vetter
2019-06-14 20:35 ` [PATCH 34/59] drm/vc3: Drop drm_gem_prime_import Daniel Vetter
2019-06-14 20:35 ` [PATCH 35/59] drm/radeon: " Daniel Vetter
2019-06-14 20:35 ` [PATCH 36/59] drm/vgem: Drop drm_gem_prime_export Daniel Vetter
2019-06-14 20:35 ` [PATCH 37/59] drm/virtio: Drop drm_gem_prime_export/import Daniel Vetter
2019-06-17 6:03 ` Gerd Hoffmann
2019-06-14 20:35 ` [PATCH 38/59] drm/xen: " Daniel Vetter
2019-06-18 5:05 ` [Xen-devel] " Oleksandr Andrushchenko
2019-06-14 20:35 ` [PATCH 39/59] drm/zte: " Daniel Vetter
2019-06-18 13:15 ` Shawn Guo
2019-06-14 20:35 ` [PATCH 40/59] drm/vram-helper: " Daniel Vetter
2019-06-17 6:03 ` Gerd Hoffmann
2019-06-17 8:24 ` Gerd Hoffmann
2019-06-17 13:59 ` Daniel Vetter
2019-06-18 4:49 ` Gerd Hoffmann
2019-06-18 7:59 ` Daniel Vetter
2019-06-19 11:21 ` Gerd Hoffmann
2019-06-19 11:31 ` Daniel Vetter
2019-06-27 8:27 ` Thomas Zimmermann
2019-06-27 9:59 ` Daniel Vetter
2019-06-14 20:35 ` [PATCH 41/59] drm/prime: automatically set gem_obj->resv on import Daniel Vetter
2019-06-14 20:35 ` [PATCH 42/59] drm/etnaviv: Drop resv argument from etnaviv_gem_new_impl Daniel Vetter
2019-06-25 16:10 ` Lucas Stach
2019-06-14 20:35 ` [PATCH 43/59] drm/lima: Drop resv argument from lima_bo_create_struct Daniel Vetter
2019-06-15 10:03 ` Qiang Yu
2019-06-14 20:36 ` [PATCH 44/59] drm/mediatek: Use drm_atomic_helper_wait_for_fences Daniel Vetter
2019-06-17 5:19 ` CK Hu
2019-06-14 20:36 ` [PATCH 46/59] drm/panfrost: don't set gem_obj->resv for prime import anymore Daniel Vetter
2019-06-14 21:05 ` Rob Herring
2019-06-14 20:36 ` [PATCH 47/59] drm/vc4: Don set gem_obj->resv in " Daniel Vetter
2019-06-14 20:36 ` [PATCH 48/59] drm/vgem: Ditch attach trickery in the fence ioctl Daniel Vetter
2019-06-18 12:31 ` Chris Wilson
2019-06-18 13:18 ` Daniel Vetter
2019-06-14 20:36 ` [PATCH 50/59] drm/vc4: Use drm_gem_fb_prepare_fb Daniel Vetter
[not found] ` <20190614203615.12639-1-daniel.vetter-/w4YWyX8dFk@public.gmane.org>
2019-06-14 20:35 ` [PATCH 06/59] drm/prime: Actually remove DRIVER_PRIME everywhere Daniel Vetter
[not found] ` <20190614203615.12639-7-daniel.vetter-/w4YWyX8dFk@public.gmane.org>
2019-06-14 21:36 ` Sam Ravnborg
2019-06-17 15:39 ` [PATCH] " Daniel Vetter
2019-06-17 17:56 ` [PATCH 06/59] " Emil Velikov
2019-06-14 20:35 ` [PATCH 09/59] drm/prime: Align gem_prime_export with obj_funcs.export Daniel Vetter
[not found] ` <20190614203615.12639-10-daniel.vetter-/w4YWyX8dFk@public.gmane.org>
2019-06-17 9:32 ` Koenig, Christian [this message]
2019-06-17 9:53 ` Thierry Reding
2019-06-21 10:37 ` Daniel Vetter
2019-06-14 20:35 ` [PATCH 21/59] drm/msm: Drop drm_gem_prime_export/import Daniel Vetter
2019-06-14 20:35 ` [PATCH 23/59] drm/nouveau: " Daniel Vetter
2019-06-14 20:36 ` [PATCH 45/59] drm/msm: Drop robj from msm_gem_new_impl Daniel Vetter
2019-06-14 20:36 ` [PATCH 49/59] drm/msm: Use drm_gem_fb_prepare_fb Daniel Vetter
2019-06-14 20:36 ` [PATCH 51/59] drm/radeon: Fill out gem_object->resv Daniel Vetter
2019-06-14 20:36 ` [PATCH 52/59] drm/nouveau: " Daniel Vetter
2019-06-14 20:36 ` [PATCH 53/59] drm/amdgpu: " Daniel Vetter
2019-06-14 20:36 ` [PATCH 54/59] drm/prime: Ditch gem_prime_res_obj hook Daniel Vetter
2019-06-14 20:36 ` [PATCH 55/59] drm/todo: remove gem_prime_import/export todo Daniel Vetter
2019-06-14 20:36 ` [PATCH 56/59] drm/todo: Update backlight todo Daniel Vetter
2019-06-14 21:46 ` Sam Ravnborg
2019-06-21 13:11 ` Daniel Thompson
2019-06-14 20:36 ` [PATCH 57/59] drm/todo: Update mmap todo Daniel Vetter
2019-06-14 20:36 ` [PATCH 58/59] drm/todo: Add new debugfs todo Daniel Vetter
2019-06-15 6:23 ` Greg Kroah-Hartman
2019-06-18 15:19 ` drm connectors, tegra, and the web they weave (was Re: [PATCH 58/59] drm/todo: Add new debugfs todo) Greg Kroah-Hartman
2019-06-18 15:25 ` Greg Kroah-Hartman
2019-06-18 17:32 ` Daniel Vetter
2019-06-18 18:01 ` Greg Kroah-Hartman
2019-06-18 21:46 ` Daniel Vetter
2019-06-20 14:50 ` Thierry Reding
2019-06-20 15:11 ` Thierry Reding
2019-06-18 15:37 ` Jon Hunter
2019-06-20 15:16 ` Thierry Reding
2019-06-20 14:57 ` Thierry Reding
2019-06-14 20:36 ` [PATCH 59/59] drm/doc: Document kapi doc expectations Daniel Vetter
2019-06-17 8:52 ` Jani Nikula
2019-06-17 18:21 ` [Intel-gfx] [PATCH 00/59] prime doc polish and ... a few cleanups Emil Velikov
2019-06-18 10:41 ` Emil Velikov
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=ba71d00e-44d2-49d8-82a1-43741f22ffa8@amd.com \
--to=christian.koenig-5c7gfcevmho@public.gmane.org \
--cc=David1.Zhou-5C7GfCeVMHo@public.gmane.org \
--cc=Feifei.Xu-5C7GfCeVMHo@public.gmane.org \
--cc=airlied-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=airlied-cv59FeDIM0c@public.gmane.org \
--cc=amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
--cc=chris-Y6uKTt2uX1cEflXRtASbqLVCufUGDwFn@public.gmane.org \
--cc=daniel.vetter-/w4YWyX8dFk@public.gmane.org \
--cc=daniel.vetter-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
--cc=dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
--cc=eric-WhKQ6XTQaPysTnJN9+BGXg@public.gmane.org \
--cc=jonathanh-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \
--cc=joonas.lahtinen-VuQAYsv1563Yd54FQh9/CA@public.gmane.org \
--cc=kstewart-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org \
--cc=linux-I+IVW8TIWO2tmTQ+vhA3Yw@public.gmane.org \
--cc=matthew.auld-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
--cc=maxime.ripard-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org \
--cc=mika.kuoppala-VuQAYsv1563Yd54FQh9/CA@public.gmane.org \
--cc=opensource-y0T6pEZso2lBDgjK7y7TUQ@public.gmane.org \
--cc=sumit.semwal-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
--cc=tdz-Rn4VEauK+AKRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
--cc=thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=tomi.valkeinen-l0cyMroinI0@public.gmane.org \
--cc=zhi.a.wang-ral2JQCrhuEAvxtiuMwx3w@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 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).