All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marek Szyprowski <m.szyprowski@samsung.com>
To: Tomasz Figa <tfiga@chromium.org>
Cc: dri-devel <dri-devel@lists.freedesktop.org>,
	"list@263.net:IOMMU DRIVERS" <iommu@lists.linux-foundation.org>,
	Joerg Roedel <joro@8bytes.org>,
	iommu@lists.linux-foundation.org, linaro-mm-sig@lists.linaro.org,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Christoph Hellwig <hch@lst.de>,
	Robin Murphy <robin.murphy@arm.com>,
	Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>,
	"list@263.net:IOMMU DRIVERS" <iommu@lists.linux-foundation.org>,
	Joerg Roedel <joro@8bytes.org>,
	linux-arm-kernel@lists.infradead.org,
	David Airlie <airlied@linux.ie>, Daniel Vetter <daniel@ffwll.ch>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	Linux Media Mailing List <linux-media@vger.kernel.org>
Subject: Re: [PATCH v10 30/30] videobuf2: use sgtable-based scatterlist wrappers
Date: Mon, 7 Sep 2020 16:02:17 +0200	[thread overview]
Message-ID: <bdd3503f-d4f1-a1af-d10d-d75a1037ac5a@samsung.com> (raw)
In-Reply-To: <CAAFQd5AZDzG6i00gcAZKM9ZV1tATWufL=+xXUAmgrbTPt8W6Gw@mail.gmail.com>

Hi Tomasz,

On 07.09.2020 15:07, Tomasz Figa wrote:
> On Fri, Sep 4, 2020 at 3:35 PM Marek Szyprowski
> <m.szyprowski@samsung.com> wrote:
>> Use recently introduced common wrappers operating directly on the struct
>> sg_table objects and scatterlist page iterators to make the code a bit
>> more compact, robust, easier to follow and copy/paste safe.
>>
>> No functional change, because the code already properly did all the
>> scatterlist related calls.
>>
>> Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
>> Reviewed-by: Robin Murphy <robin.murphy@arm.com>
>> ---
>>   .../common/videobuf2/videobuf2-dma-contig.c   | 34 ++++++++-----------
>>   .../media/common/videobuf2/videobuf2-dma-sg.c | 32 +++++++----------
>>   .../common/videobuf2/videobuf2-vmalloc.c      | 12 +++----
>>   3 files changed, 31 insertions(+), 47 deletions(-)
>>
> Thanks for the patch! Please see my comments inline.
>
>> diff --git a/drivers/media/common/videobuf2/videobuf2-dma-contig.c b/drivers/media/common/videobuf2/videobuf2-dma-contig.c
>> index ec3446cc45b8..1b242d844dde 100644
>> --- a/drivers/media/common/videobuf2/videobuf2-dma-contig.c
>> +++ b/drivers/media/common/videobuf2/videobuf2-dma-contig.c
>> @@ -58,10 +58,10 @@ static unsigned long vb2_dc_get_contiguous_size(struct sg_table *sgt)
>>          unsigned int i;
>>          unsigned long size = 0;
>>
>> -       for_each_sg(sgt->sgl, s, sgt->nents, i) {
>> +       for_each_sgtable_dma_sg(sgt, s, i) {
>>                  if (sg_dma_address(s) != expected)
>>                          break;
>> -               expected = sg_dma_address(s) + sg_dma_len(s);
>> +               expected += sg_dma_len(s);
>>                  size += sg_dma_len(s);
>>          }
>>          return size;
>> @@ -103,8 +103,7 @@ static void vb2_dc_prepare(void *buf_priv)
>>          if (!sgt)
>>                  return;
>>
>> -       dma_sync_sg_for_device(buf->dev, sgt->sgl, sgt->orig_nents,
>> -                              buf->dma_dir);
>> +       dma_sync_sgtable_for_device(buf->dev, sgt, buf->dma_dir);
>>   }
>>
>>   static void vb2_dc_finish(void *buf_priv)
>> @@ -115,7 +114,7 @@ static void vb2_dc_finish(void *buf_priv)
>>          if (!sgt)
>>                  return;
>>
>> -       dma_sync_sg_for_cpu(buf->dev, sgt->sgl, sgt->orig_nents, buf->dma_dir);
>> +       dma_sync_sgtable_for_cpu(buf->dev, sgt, buf->dma_dir);
>>   }
>>
>>   /*********************************************/
>> @@ -275,8 +274,8 @@ static void vb2_dc_dmabuf_ops_detach(struct dma_buf *dbuf,
>>                   * memory locations do not require any explicit cache
>>                   * maintenance prior or after being used by the device.
>>                   */
>> -               dma_unmap_sg_attrs(db_attach->dev, sgt->sgl, sgt->orig_nents,
>> -                                  attach->dma_dir, DMA_ATTR_SKIP_CPU_SYNC);
>> +               dma_unmap_sgtable(db_attach->dev, sgt, attach->dma_dir,
>> +                                 DMA_ATTR_SKIP_CPU_SYNC);
>>          sg_free_table(sgt);
>>          kfree(attach);
>>          db_attach->priv = NULL;
>> @@ -301,8 +300,8 @@ static struct sg_table *vb2_dc_dmabuf_ops_map(
>>
>>          /* release any previous cache */
>>          if (attach->dma_dir != DMA_NONE) {
>> -               dma_unmap_sg_attrs(db_attach->dev, sgt->sgl, sgt->orig_nents,
>> -                                  attach->dma_dir, DMA_ATTR_SKIP_CPU_SYNC);
>> +               dma_unmap_sgtable(db_attach->dev, sgt, attach->dma_dir,
>> +                                 DMA_ATTR_SKIP_CPU_SYNC);
>>                  attach->dma_dir = DMA_NONE;
>>          }
>>
>> @@ -310,9 +309,8 @@ static struct sg_table *vb2_dc_dmabuf_ops_map(
>>           * mapping to the client with new direction, no cache sync
>>           * required see comment in vb2_dc_dmabuf_ops_detach()
>>           */
>> -       sgt->nents = dma_map_sg_attrs(db_attach->dev, sgt->sgl, sgt->orig_nents,
>> -                                     dma_dir, DMA_ATTR_SKIP_CPU_SYNC);
>> -       if (!sgt->nents) {
>> +       if (dma_map_sgtable(db_attach->dev, sgt, dma_dir,
>> +                           DMA_ATTR_SKIP_CPU_SYNC)) {
>>                  pr_err("failed to map scatterlist\n");
>>                  mutex_unlock(lock);
>>                  return ERR_PTR(-EIO);
> As opposed to dma_map_sg_attrs(), dma_map_sgtable() now returns an
> error code on its own. Is it expected to ignore it and return -EIO?

Those errors are more or less propagated to userspace and -EIO has been 
already widely documented in V4L2 documentation as the error code for 
the most of the V4L2 ioctls. I don't want to change it. A possible 
-EINVAL returned from dma_map_sgtable() was just one of the 'generic' 
error codes, not very descriptive in that case. Probably the main 
problem here is that dma_map_sg() and friend doesn't return any error 
codes...

 > ...

Best regards
-- 
Marek Szyprowski, PhD
Samsung R&D Institute Poland


WARNING: multiple messages have this Message-ID (diff)
From: Marek Szyprowski <m.szyprowski@samsung.com>
To: Tomasz Figa <tfiga@chromium.org>
Cc: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>,
	David Airlie <airlied@linux.ie>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	dri-devel <dri-devel@lists.freedesktop.org>,
	linaro-mm-sig@lists.linaro.org,
	"list@263.net:IOMMU DRIVERS" <iommu@lists.linux-foundation.org>,
	Daniel Vetter <daniel@ffwll.ch>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	Robin Murphy <robin.murphy@arm.com>,
	Christoph Hellwig <hch@lst.de>,
	linux-arm-kernel@lists.infradead.org,
	Linux Media Mailing List <linux-media@vger.kernel.org>
Subject: Re: [PATCH v10 30/30] videobuf2: use sgtable-based scatterlist wrappers
Date: Mon, 7 Sep 2020 16:02:17 +0200	[thread overview]
Message-ID: <bdd3503f-d4f1-a1af-d10d-d75a1037ac5a@samsung.com> (raw)
In-Reply-To: <CAAFQd5AZDzG6i00gcAZKM9ZV1tATWufL=+xXUAmgrbTPt8W6Gw@mail.gmail.com>

Hi Tomasz,

On 07.09.2020 15:07, Tomasz Figa wrote:
> On Fri, Sep 4, 2020 at 3:35 PM Marek Szyprowski
> <m.szyprowski@samsung.com> wrote:
>> Use recently introduced common wrappers operating directly on the struct
>> sg_table objects and scatterlist page iterators to make the code a bit
>> more compact, robust, easier to follow and copy/paste safe.
>>
>> No functional change, because the code already properly did all the
>> scatterlist related calls.
>>
>> Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
>> Reviewed-by: Robin Murphy <robin.murphy@arm.com>
>> ---
>>   .../common/videobuf2/videobuf2-dma-contig.c   | 34 ++++++++-----------
>>   .../media/common/videobuf2/videobuf2-dma-sg.c | 32 +++++++----------
>>   .../common/videobuf2/videobuf2-vmalloc.c      | 12 +++----
>>   3 files changed, 31 insertions(+), 47 deletions(-)
>>
> Thanks for the patch! Please see my comments inline.
>
>> diff --git a/drivers/media/common/videobuf2/videobuf2-dma-contig.c b/drivers/media/common/videobuf2/videobuf2-dma-contig.c
>> index ec3446cc45b8..1b242d844dde 100644
>> --- a/drivers/media/common/videobuf2/videobuf2-dma-contig.c
>> +++ b/drivers/media/common/videobuf2/videobuf2-dma-contig.c
>> @@ -58,10 +58,10 @@ static unsigned long vb2_dc_get_contiguous_size(struct sg_table *sgt)
>>          unsigned int i;
>>          unsigned long size = 0;
>>
>> -       for_each_sg(sgt->sgl, s, sgt->nents, i) {
>> +       for_each_sgtable_dma_sg(sgt, s, i) {
>>                  if (sg_dma_address(s) != expected)
>>                          break;
>> -               expected = sg_dma_address(s) + sg_dma_len(s);
>> +               expected += sg_dma_len(s);
>>                  size += sg_dma_len(s);
>>          }
>>          return size;
>> @@ -103,8 +103,7 @@ static void vb2_dc_prepare(void *buf_priv)
>>          if (!sgt)
>>                  return;
>>
>> -       dma_sync_sg_for_device(buf->dev, sgt->sgl, sgt->orig_nents,
>> -                              buf->dma_dir);
>> +       dma_sync_sgtable_for_device(buf->dev, sgt, buf->dma_dir);
>>   }
>>
>>   static void vb2_dc_finish(void *buf_priv)
>> @@ -115,7 +114,7 @@ static void vb2_dc_finish(void *buf_priv)
>>          if (!sgt)
>>                  return;
>>
>> -       dma_sync_sg_for_cpu(buf->dev, sgt->sgl, sgt->orig_nents, buf->dma_dir);
>> +       dma_sync_sgtable_for_cpu(buf->dev, sgt, buf->dma_dir);
>>   }
>>
>>   /*********************************************/
>> @@ -275,8 +274,8 @@ static void vb2_dc_dmabuf_ops_detach(struct dma_buf *dbuf,
>>                   * memory locations do not require any explicit cache
>>                   * maintenance prior or after being used by the device.
>>                   */
>> -               dma_unmap_sg_attrs(db_attach->dev, sgt->sgl, sgt->orig_nents,
>> -                                  attach->dma_dir, DMA_ATTR_SKIP_CPU_SYNC);
>> +               dma_unmap_sgtable(db_attach->dev, sgt, attach->dma_dir,
>> +                                 DMA_ATTR_SKIP_CPU_SYNC);
>>          sg_free_table(sgt);
>>          kfree(attach);
>>          db_attach->priv = NULL;
>> @@ -301,8 +300,8 @@ static struct sg_table *vb2_dc_dmabuf_ops_map(
>>
>>          /* release any previous cache */
>>          if (attach->dma_dir != DMA_NONE) {
>> -               dma_unmap_sg_attrs(db_attach->dev, sgt->sgl, sgt->orig_nents,
>> -                                  attach->dma_dir, DMA_ATTR_SKIP_CPU_SYNC);
>> +               dma_unmap_sgtable(db_attach->dev, sgt, attach->dma_dir,
>> +                                 DMA_ATTR_SKIP_CPU_SYNC);
>>                  attach->dma_dir = DMA_NONE;
>>          }
>>
>> @@ -310,9 +309,8 @@ static struct sg_table *vb2_dc_dmabuf_ops_map(
>>           * mapping to the client with new direction, no cache sync
>>           * required see comment in vb2_dc_dmabuf_ops_detach()
>>           */
>> -       sgt->nents = dma_map_sg_attrs(db_attach->dev, sgt->sgl, sgt->orig_nents,
>> -                                     dma_dir, DMA_ATTR_SKIP_CPU_SYNC);
>> -       if (!sgt->nents) {
>> +       if (dma_map_sgtable(db_attach->dev, sgt, dma_dir,
>> +                           DMA_ATTR_SKIP_CPU_SYNC)) {
>>                  pr_err("failed to map scatterlist\n");
>>                  mutex_unlock(lock);
>>                  return ERR_PTR(-EIO);
> As opposed to dma_map_sg_attrs(), dma_map_sgtable() now returns an
> error code on its own. Is it expected to ignore it and return -EIO?

Those errors are more or less propagated to userspace and -EIO has been 
already widely documented in V4L2 documentation as the error code for 
the most of the V4L2 ioctls. I don't want to change it. A possible 
-EINVAL returned from dma_map_sgtable() was just one of the 'generic' 
error codes, not very descriptive in that case. Probably the main 
problem here is that dma_map_sg() and friend doesn't return any error 
codes...

 > ...

Best regards
-- 
Marek Szyprowski, PhD
Samsung R&D Institute Poland

_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

WARNING: multiple messages have this Message-ID (diff)
From: Marek Szyprowski <m.szyprowski@samsung.com>
To: Tomasz Figa <tfiga@chromium.org>
Cc: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>,
	David Airlie <airlied@linux.ie>, Joerg Roedel <joro@8bytes.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	dri-devel <dri-devel@lists.freedesktop.org>,
	linaro-mm-sig@lists.linaro.org,
	"list@263.net:IOMMU DRIVERS" <iommu@lists.linux-foundation.org>,
	Daniel Vetter <daniel@ffwll.ch>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	Robin Murphy <robin.murphy@arm.com>,
	Christoph Hellwig <hch@lst.de>,
	linux-arm-kernel@lists.infradead.org,
	Linux Media Mailing List <linux-media@vger.kernel.org>
Subject: Re: [PATCH v10 30/30] videobuf2: use sgtable-based scatterlist wrappers
Date: Mon, 7 Sep 2020 16:02:17 +0200	[thread overview]
Message-ID: <bdd3503f-d4f1-a1af-d10d-d75a1037ac5a@samsung.com> (raw)
In-Reply-To: <CAAFQd5AZDzG6i00gcAZKM9ZV1tATWufL=+xXUAmgrbTPt8W6Gw@mail.gmail.com>

Hi Tomasz,

On 07.09.2020 15:07, Tomasz Figa wrote:
> On Fri, Sep 4, 2020 at 3:35 PM Marek Szyprowski
> <m.szyprowski@samsung.com> wrote:
>> Use recently introduced common wrappers operating directly on the struct
>> sg_table objects and scatterlist page iterators to make the code a bit
>> more compact, robust, easier to follow and copy/paste safe.
>>
>> No functional change, because the code already properly did all the
>> scatterlist related calls.
>>
>> Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
>> Reviewed-by: Robin Murphy <robin.murphy@arm.com>
>> ---
>>   .../common/videobuf2/videobuf2-dma-contig.c   | 34 ++++++++-----------
>>   .../media/common/videobuf2/videobuf2-dma-sg.c | 32 +++++++----------
>>   .../common/videobuf2/videobuf2-vmalloc.c      | 12 +++----
>>   3 files changed, 31 insertions(+), 47 deletions(-)
>>
> Thanks for the patch! Please see my comments inline.
>
>> diff --git a/drivers/media/common/videobuf2/videobuf2-dma-contig.c b/drivers/media/common/videobuf2/videobuf2-dma-contig.c
>> index ec3446cc45b8..1b242d844dde 100644
>> --- a/drivers/media/common/videobuf2/videobuf2-dma-contig.c
>> +++ b/drivers/media/common/videobuf2/videobuf2-dma-contig.c
>> @@ -58,10 +58,10 @@ static unsigned long vb2_dc_get_contiguous_size(struct sg_table *sgt)
>>          unsigned int i;
>>          unsigned long size = 0;
>>
>> -       for_each_sg(sgt->sgl, s, sgt->nents, i) {
>> +       for_each_sgtable_dma_sg(sgt, s, i) {
>>                  if (sg_dma_address(s) != expected)
>>                          break;
>> -               expected = sg_dma_address(s) + sg_dma_len(s);
>> +               expected += sg_dma_len(s);
>>                  size += sg_dma_len(s);
>>          }
>>          return size;
>> @@ -103,8 +103,7 @@ static void vb2_dc_prepare(void *buf_priv)
>>          if (!sgt)
>>                  return;
>>
>> -       dma_sync_sg_for_device(buf->dev, sgt->sgl, sgt->orig_nents,
>> -                              buf->dma_dir);
>> +       dma_sync_sgtable_for_device(buf->dev, sgt, buf->dma_dir);
>>   }
>>
>>   static void vb2_dc_finish(void *buf_priv)
>> @@ -115,7 +114,7 @@ static void vb2_dc_finish(void *buf_priv)
>>          if (!sgt)
>>                  return;
>>
>> -       dma_sync_sg_for_cpu(buf->dev, sgt->sgl, sgt->orig_nents, buf->dma_dir);
>> +       dma_sync_sgtable_for_cpu(buf->dev, sgt, buf->dma_dir);
>>   }
>>
>>   /*********************************************/
>> @@ -275,8 +274,8 @@ static void vb2_dc_dmabuf_ops_detach(struct dma_buf *dbuf,
>>                   * memory locations do not require any explicit cache
>>                   * maintenance prior or after being used by the device.
>>                   */
>> -               dma_unmap_sg_attrs(db_attach->dev, sgt->sgl, sgt->orig_nents,
>> -                                  attach->dma_dir, DMA_ATTR_SKIP_CPU_SYNC);
>> +               dma_unmap_sgtable(db_attach->dev, sgt, attach->dma_dir,
>> +                                 DMA_ATTR_SKIP_CPU_SYNC);
>>          sg_free_table(sgt);
>>          kfree(attach);
>>          db_attach->priv = NULL;
>> @@ -301,8 +300,8 @@ static struct sg_table *vb2_dc_dmabuf_ops_map(
>>
>>          /* release any previous cache */
>>          if (attach->dma_dir != DMA_NONE) {
>> -               dma_unmap_sg_attrs(db_attach->dev, sgt->sgl, sgt->orig_nents,
>> -                                  attach->dma_dir, DMA_ATTR_SKIP_CPU_SYNC);
>> +               dma_unmap_sgtable(db_attach->dev, sgt, attach->dma_dir,
>> +                                 DMA_ATTR_SKIP_CPU_SYNC);
>>                  attach->dma_dir = DMA_NONE;
>>          }
>>
>> @@ -310,9 +309,8 @@ static struct sg_table *vb2_dc_dmabuf_ops_map(
>>           * mapping to the client with new direction, no cache sync
>>           * required see comment in vb2_dc_dmabuf_ops_detach()
>>           */
>> -       sgt->nents = dma_map_sg_attrs(db_attach->dev, sgt->sgl, sgt->orig_nents,
>> -                                     dma_dir, DMA_ATTR_SKIP_CPU_SYNC);
>> -       if (!sgt->nents) {
>> +       if (dma_map_sgtable(db_attach->dev, sgt, dma_dir,
>> +                           DMA_ATTR_SKIP_CPU_SYNC)) {
>>                  pr_err("failed to map scatterlist\n");
>>                  mutex_unlock(lock);
>>                  return ERR_PTR(-EIO);
> As opposed to dma_map_sg_attrs(), dma_map_sgtable() now returns an
> error code on its own. Is it expected to ignore it and return -EIO?

Those errors are more or less propagated to userspace and -EIO has been 
already widely documented in V4L2 documentation as the error code for 
the most of the V4L2 ioctls. I don't want to change it. A possible 
-EINVAL returned from dma_map_sgtable() was just one of the 'generic' 
error codes, not very descriptive in that case. Probably the main 
problem here is that dma_map_sg() and friend doesn't return any error 
codes...

 > ...

Best regards
-- 
Marek Szyprowski, PhD
Samsung R&D Institute Poland


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

WARNING: multiple messages have this Message-ID (diff)
From: Marek Szyprowski <m.szyprowski@samsung.com>
To: Tomasz Figa <tfiga@chromium.org>
Cc: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>,
	David Airlie <airlied@linux.ie>, Joerg Roedel <joro@8bytes.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	dri-devel <dri-devel@lists.freedesktop.org>,
	linaro-mm-sig@lists.linaro.org,
	"list@263.net:IOMMU DRIVERS" <iommu@lists.linux-foundation.org>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	Robin Murphy <robin.murphy@arm.com>,
	Christoph Hellwig <hch@lst.de>,
	linux-arm-kernel@lists.infradead.org,
	Linux Media Mailing List <linux-media@vger.kernel.org>
Subject: Re: [PATCH v10 30/30] videobuf2: use sgtable-based scatterlist wrappers
Date: Mon, 7 Sep 2020 16:02:17 +0200	[thread overview]
Message-ID: <bdd3503f-d4f1-a1af-d10d-d75a1037ac5a@samsung.com> (raw)
In-Reply-To: <CAAFQd5AZDzG6i00gcAZKM9ZV1tATWufL=+xXUAmgrbTPt8W6Gw@mail.gmail.com>

Hi Tomasz,

On 07.09.2020 15:07, Tomasz Figa wrote:
> On Fri, Sep 4, 2020 at 3:35 PM Marek Szyprowski
> <m.szyprowski@samsung.com> wrote:
>> Use recently introduced common wrappers operating directly on the struct
>> sg_table objects and scatterlist page iterators to make the code a bit
>> more compact, robust, easier to follow and copy/paste safe.
>>
>> No functional change, because the code already properly did all the
>> scatterlist related calls.
>>
>> Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
>> Reviewed-by: Robin Murphy <robin.murphy@arm.com>
>> ---
>>   .../common/videobuf2/videobuf2-dma-contig.c   | 34 ++++++++-----------
>>   .../media/common/videobuf2/videobuf2-dma-sg.c | 32 +++++++----------
>>   .../common/videobuf2/videobuf2-vmalloc.c      | 12 +++----
>>   3 files changed, 31 insertions(+), 47 deletions(-)
>>
> Thanks for the patch! Please see my comments inline.
>
>> diff --git a/drivers/media/common/videobuf2/videobuf2-dma-contig.c b/drivers/media/common/videobuf2/videobuf2-dma-contig.c
>> index ec3446cc45b8..1b242d844dde 100644
>> --- a/drivers/media/common/videobuf2/videobuf2-dma-contig.c
>> +++ b/drivers/media/common/videobuf2/videobuf2-dma-contig.c
>> @@ -58,10 +58,10 @@ static unsigned long vb2_dc_get_contiguous_size(struct sg_table *sgt)
>>          unsigned int i;
>>          unsigned long size = 0;
>>
>> -       for_each_sg(sgt->sgl, s, sgt->nents, i) {
>> +       for_each_sgtable_dma_sg(sgt, s, i) {
>>                  if (sg_dma_address(s) != expected)
>>                          break;
>> -               expected = sg_dma_address(s) + sg_dma_len(s);
>> +               expected += sg_dma_len(s);
>>                  size += sg_dma_len(s);
>>          }
>>          return size;
>> @@ -103,8 +103,7 @@ static void vb2_dc_prepare(void *buf_priv)
>>          if (!sgt)
>>                  return;
>>
>> -       dma_sync_sg_for_device(buf->dev, sgt->sgl, sgt->orig_nents,
>> -                              buf->dma_dir);
>> +       dma_sync_sgtable_for_device(buf->dev, sgt, buf->dma_dir);
>>   }
>>
>>   static void vb2_dc_finish(void *buf_priv)
>> @@ -115,7 +114,7 @@ static void vb2_dc_finish(void *buf_priv)
>>          if (!sgt)
>>                  return;
>>
>> -       dma_sync_sg_for_cpu(buf->dev, sgt->sgl, sgt->orig_nents, buf->dma_dir);
>> +       dma_sync_sgtable_for_cpu(buf->dev, sgt, buf->dma_dir);
>>   }
>>
>>   /*********************************************/
>> @@ -275,8 +274,8 @@ static void vb2_dc_dmabuf_ops_detach(struct dma_buf *dbuf,
>>                   * memory locations do not require any explicit cache
>>                   * maintenance prior or after being used by the device.
>>                   */
>> -               dma_unmap_sg_attrs(db_attach->dev, sgt->sgl, sgt->orig_nents,
>> -                                  attach->dma_dir, DMA_ATTR_SKIP_CPU_SYNC);
>> +               dma_unmap_sgtable(db_attach->dev, sgt, attach->dma_dir,
>> +                                 DMA_ATTR_SKIP_CPU_SYNC);
>>          sg_free_table(sgt);
>>          kfree(attach);
>>          db_attach->priv = NULL;
>> @@ -301,8 +300,8 @@ static struct sg_table *vb2_dc_dmabuf_ops_map(
>>
>>          /* release any previous cache */
>>          if (attach->dma_dir != DMA_NONE) {
>> -               dma_unmap_sg_attrs(db_attach->dev, sgt->sgl, sgt->orig_nents,
>> -                                  attach->dma_dir, DMA_ATTR_SKIP_CPU_SYNC);
>> +               dma_unmap_sgtable(db_attach->dev, sgt, attach->dma_dir,
>> +                                 DMA_ATTR_SKIP_CPU_SYNC);
>>                  attach->dma_dir = DMA_NONE;
>>          }
>>
>> @@ -310,9 +309,8 @@ static struct sg_table *vb2_dc_dmabuf_ops_map(
>>           * mapping to the client with new direction, no cache sync
>>           * required see comment in vb2_dc_dmabuf_ops_detach()
>>           */
>> -       sgt->nents = dma_map_sg_attrs(db_attach->dev, sgt->sgl, sgt->orig_nents,
>> -                                     dma_dir, DMA_ATTR_SKIP_CPU_SYNC);
>> -       if (!sgt->nents) {
>> +       if (dma_map_sgtable(db_attach->dev, sgt, dma_dir,
>> +                           DMA_ATTR_SKIP_CPU_SYNC)) {
>>                  pr_err("failed to map scatterlist\n");
>>                  mutex_unlock(lock);
>>                  return ERR_PTR(-EIO);
> As opposed to dma_map_sg_attrs(), dma_map_sgtable() now returns an
> error code on its own. Is it expected to ignore it and return -EIO?

Those errors are more or less propagated to userspace and -EIO has been 
already widely documented in V4L2 documentation as the error code for 
the most of the V4L2 ioctls. I don't want to change it. A possible 
-EINVAL returned from dma_map_sgtable() was just one of the 'generic' 
error codes, not very descriptive in that case. Probably the main 
problem here is that dma_map_sg() and friend doesn't return any error 
codes...

 > ...

Best regards
-- 
Marek Szyprowski, PhD
Samsung R&D Institute Poland

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

  reply	other threads:[~2020-09-07 14:05 UTC|newest]

Thread overview: 158+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CGME20200904133453eucas1p16a41f7340d48b2675ea6527bba165962@eucas1p1.samsung.com>
2020-09-04 13:16 ` [PATCH v10 00/30] DRM: fix struct sg_table nents vs. orig_nents misuse Marek Szyprowski
2020-09-04 13:16   ` Marek Szyprowski
2020-09-04 13:16   ` Marek Szyprowski
2020-09-04 13:16   ` Marek Szyprowski
     [not found]   ` <CGME20200904133453eucas1p2266abd01467aea6af137eba9fa6af9c1@eucas1p2.samsung.com>
2020-09-04 13:16     ` [PATCH v10 01/30] drm: prime: add common helper to check scatterlist contiguity Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
     [not found]   ` <CGME20200904133454eucas1p249ecc981d26cee5cde2a6bbe05324769@eucas1p2.samsung.com>
2020-09-04 13:16     ` [PATCH v10 02/30] drm: prime: use sgtable iterators in drm_prime_sg_to_page_addr_arrays() Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
     [not found]   ` <CGME20200904133455eucas1p27e43b99c981ff756aafcb9599e71bff7@eucas1p2.samsung.com>
2020-09-04 13:16     ` [PATCH v10 03/30] drm: core: fix common struct sg_table related issues Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
     [not found]   ` <CGME20200904133455eucas1p24020a2d7f03e20199f08cfb944782d34@eucas1p2.samsung.com>
2020-09-04 13:16     ` [PATCH v10 04/30] drm: armada: " Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
     [not found]   ` <CGME20200904133456eucas1p10d0fe1628474fcd4803a7af4437be4e1@eucas1p1.samsung.com>
2020-09-04 13:16     ` [PATCH v10 05/30] drm: etnaviv: " Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
2020-09-04 13:37       ` Lucas Stach
2020-09-04 13:37         ` Lucas Stach
2020-09-04 13:37         ` Lucas Stach
2020-09-04 13:37         ` Lucas Stach
     [not found]   ` <CGME20200904133457eucas1p24d73bb3e4aa921cb76dc03b309ad5632@eucas1p2.samsung.com>
2020-09-04 13:16     ` [PATCH v10 06/30] drm: exynos: use common helper for a scatterlist contiguity check Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
     [not found]   ` <CGME20200904133457eucas1p137d219c4f1af06078d7da5fe92c9aed9@eucas1p1.samsung.com>
2020-09-04 13:16     ` [PATCH v10 07/30] drm: exynos: fix common struct sg_table related issues Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
     [not found]   ` <CGME20200904133458eucas1p214dd6899a77591ed50834e9fc85ae157@eucas1p2.samsung.com>
2020-09-04 13:16     ` [PATCH v10 08/30] drm: i915: " Marek Szyprowski
2020-09-04 13:16       ` [Intel-gfx] " Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
     [not found]   ` <CGME20200904133459eucas1p106f61f640aa6d0007e42708a0fd15fb8@eucas1p1.samsung.com>
2020-09-04 13:16     ` [PATCH v10 09/30] drm: lima: " Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
     [not found]   ` <CGME20200904133459eucas1p10b98861f36318ef07dcbc58f7e4ad5d1@eucas1p1.samsung.com>
2020-09-04 13:16     ` [PATCH v10 10/30] drm: mediatek: use common helper for a scatterlist contiguity check Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
     [not found]   ` <CGME20200904133500eucas1p231e3d2b7de8bca0f52339ac520b8acc6@eucas1p2.samsung.com>
2020-09-04 13:16     ` [PATCH v10 11/30] drm: mediatek: use common helper for extracting pages array Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
     [not found]   ` <CGME20200904133501eucas1p2a2bc13658bf8433a10fcb8d5a173d57a@eucas1p2.samsung.com>
2020-09-04 13:16     ` [PATCH v10 12/30] drm: msm: fix common struct sg_table related issues Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
     [not found]   ` <CGME20200904133501eucas1p27e474ceb366abd6c5070565abfc6ae21@eucas1p2.samsung.com>
2020-09-04 13:16     ` [PATCH v10 13/30] drm: omapdrm: use common helper for extracting pages array Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
     [not found]   ` <CGME20200904133502eucas1p136e346bfdcd361d9e0320923f653d843@eucas1p1.samsung.com>
2020-09-04 13:16     ` [PATCH v10 14/30] drm: panfrost: fix common struct sg_table related issues Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
     [not found]   ` <CGME20200904133502eucas1p10c2344eef1f77b82c455215056fd5770@eucas1p1.samsung.com>
2020-09-04 13:16     ` [PATCH v10 15/30] drm: rockchip: use common helper for a scatterlist contiguity check Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
     [not found]   ` <CGME20200904133503eucas1p202bbb31f2dcc8430b2a22ba419738c91@eucas1p2.samsung.com>
2020-09-04 13:16     ` [PATCH v10 16/30] drm: rockchip: fix common struct sg_table related issues Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
     [not found]   ` <CGME20200904133504eucas1p12ddfe8e0904a750bfe21f964821cb832@eucas1p1.samsung.com>
2020-09-04 13:16     ` [PATCH v10 17/30] drm: tegra: " Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
     [not found]   ` <CGME20200904133504eucas1p10e30fbcb69c2c0627ab7a83fb1b69759@eucas1p1.samsung.com>
2020-09-04 13:16     ` [PATCH v10 18/30] drm: v3d: " Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
2020-09-04 13:16       ` Marek Szyprowski
     [not found]   ` <CGME20200904133505eucas1p1a90ac5f422d174fade1152f451eecce7@eucas1p1.samsung.com>
2020-09-04 13:17     ` [PATCH v10 19/30] drm: virtio: " Marek Szyprowski
2020-09-04 13:17       ` Marek Szyprowski
2020-09-04 13:17       ` Marek Szyprowski
2020-09-04 13:17       ` Marek Szyprowski
     [not found]   ` <CGME20200904133505eucas1p2de5392a85883aca8e7774735811eb4c8@eucas1p2.samsung.com>
2020-09-04 13:17     ` [PATCH v10 20/30] drm: vmwgfx: " Marek Szyprowski
2020-09-04 13:17       ` Marek Szyprowski
2020-09-04 13:17       ` Marek Szyprowski
2020-09-04 13:17       ` Marek Szyprowski
     [not found]   ` <CGME20200904133506eucas1p170dd4d393f12bf79c9ba4a3c9532c29f@eucas1p1.samsung.com>
2020-09-04 13:17     ` [PATCH v10 21/30] drm: xen: " Marek Szyprowski
2020-09-04 13:17       ` Marek Szyprowski
2020-09-04 13:17       ` Marek Szyprowski
2020-09-04 13:17       ` Marek Szyprowski
     [not found]   ` <CGME20200904133507eucas1p197261c4a609b4034f9269f9b413ed5e7@eucas1p1.samsung.com>
2020-09-04 13:17     ` [PATCH v10 22/30] xen: gntdev: " Marek Szyprowski
2020-09-04 13:17       ` Marek Szyprowski
2020-09-04 13:17       ` Marek Szyprowski
2020-09-04 13:17       ` Marek Szyprowski
     [not found]   ` <CGME20200904133507eucas1p1d164b469647e3904da7f272413341e4c@eucas1p1.samsung.com>
2020-09-04 13:17     ` [PATCH v10 23/30] drm: host1x: " Marek Szyprowski
2020-09-04 13:17       ` Marek Szyprowski
2020-09-04 13:17       ` Marek Szyprowski
2020-09-04 13:17       ` Marek Szyprowski
     [not found]   ` <CGME20200904133508eucas1p144e8c20b098912e8bf275642f2c709e6@eucas1p1.samsung.com>
2020-09-04 13:17     ` [PATCH v10 24/30] drm: rcar-du: " Marek Szyprowski
2020-09-04 13:17       ` Marek Szyprowski
2020-09-04 13:17       ` Marek Szyprowski
2020-09-04 13:17       ` Marek Szyprowski
     [not found]   ` <CGME20200904133509eucas1p23ae97afc5f53f7d84e7f0183803ec483@eucas1p2.samsung.com>
2020-09-04 13:17     ` [PATCH v10 25/30] dmabuf: " Marek Szyprowski
2020-09-04 13:17       ` Marek Szyprowski
2020-09-04 13:17       ` Marek Szyprowski
2020-09-04 13:17       ` Marek Szyprowski
     [not found]   ` <CGME20200904133509eucas1p136b805a5927a29ab3f3478b3bfdac6c0@eucas1p1.samsung.com>
2020-09-04 13:17     ` [PATCH v10 26/30] staging: tegra-vde: " Marek Szyprowski
2020-09-04 13:17       ` Marek Szyprowski
2020-09-04 13:17       ` Marek Szyprowski
2020-09-04 13:17       ` Marek Szyprowski
2020-09-04 13:17       ` Marek Szyprowski
     [not found]   ` <CGME20200904133510eucas1p1e737f5cbb9b95846806766bd7b813bf9@eucas1p1.samsung.com>
2020-09-04 13:17     ` [PATCH v10 27/30] rapidio: " Marek Szyprowski
2020-09-04 13:17       ` Marek Szyprowski
2020-09-04 13:17       ` Marek Szyprowski
2020-09-04 13:17       ` Marek Szyprowski
     [not found]   ` <CGME20200904133511eucas1p2f7241258a90f27b0aa67e62e74c48727@eucas1p2.samsung.com>
2020-09-04 13:17     ` [PATCH v10 28/30] samples: vfio-mdev/mbochs: " Marek Szyprowski
2020-09-04 13:17       ` Marek Szyprowski
2020-09-04 13:17       ` Marek Szyprowski
2020-09-04 13:17       ` Marek Szyprowski
     [not found]   ` <CGME20200904133511eucas1p2359dd080181340eb4f24b325e75a4c68@eucas1p2.samsung.com>
2020-09-04 13:17     ` [PATCH v10 29/30] media: pci: fix common ALSA DMA-mapping related codes Marek Szyprowski
2020-09-04 13:17       ` Marek Szyprowski
2020-09-04 13:17       ` Marek Szyprowski
2020-09-04 13:17       ` Marek Szyprowski
2020-09-10  9:21       ` Hans Verkuil
2020-09-10  9:21         ` Hans Verkuil
2020-09-10  9:21         ` Hans Verkuil
2020-09-10  9:21         ` Hans Verkuil
     [not found]   ` <CGME20200904133512eucas1p204efa4e252ceb5fb50715239705f9965@eucas1p2.samsung.com>
2020-09-04 13:17     ` [PATCH v10 30/30] videobuf2: use sgtable-based scatterlist wrappers Marek Szyprowski
2020-09-04 13:17       ` Marek Szyprowski
2020-09-04 13:17       ` Marek Szyprowski
2020-09-04 13:17       ` Marek Szyprowski
2020-09-07 13:07       ` Tomasz Figa
2020-09-07 13:07         ` Tomasz Figa
2020-09-07 13:07         ` Tomasz Figa
2020-09-07 13:07         ` Tomasz Figa
2020-09-07 14:02         ` Marek Szyprowski [this message]
2020-09-07 14:02           ` Marek Szyprowski
2020-09-07 14:02           ` Marek Szyprowski
2020-09-07 14:02           ` Marek Szyprowski
2020-09-07 15:51           ` Tomasz Figa
2020-09-07 15:51             ` Tomasz Figa
2020-09-07 15:51             ` Tomasz Figa
2020-09-07 15:51             ` Tomasz Figa
2020-09-10  9:17       ` Hans Verkuil
2020-09-10  9:17         ` Hans Verkuil
2020-09-10  9:17         ` Hans Verkuil
2020-09-10  9:17         ` Hans Verkuil
2020-09-10  9:47         ` Tomasz Figa
2020-09-10  9:47           ` Tomasz Figa
2020-09-10  9:47           ` Tomasz Figa
2020-09-10  9:47           ` Tomasz Figa

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=bdd3503f-d4f1-a1af-d10d-d75a1037ac5a@samsung.com \
    --to=m.szyprowski@samsung.com \
    --cc=airlied@linux.ie \
    --cc=b.zolnierkie@samsung.com \
    --cc=daniel@ffwll.ch \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=hch@lst.de \
    --cc=iommu@lists.linux-foundation.org \
    --cc=joro@8bytes.org \
    --cc=linaro-mm-sig@lists.linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab@kernel.org \
    --cc=robin.murphy@arm.com \
    --cc=tfiga@chromium.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.