diff mbox

drm/exynos: fix gem buffer allocation type checking

Message ID 1356605824-15995-1-git-send-email-inki.dae@samsung.com (mailing list archive)
State New, archived
Headers show

Commit Message

Inki Dae Dec. 27, 2012, 10:57 a.m. UTC
This patch fixes gem buffer allocation type checking.
EXYNOS_BO_CONTIG has 0 so the checking should be fixed
to 'if (!(flags & EXYNOS_BO_NONCONTIG))'

Signed-off-by: Inki Dae <inki.dae@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
---
 drivers/gpu/drm/exynos/exynos_drm_buf.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

Comments

Prathyush K Dec. 27, 2012, 11:28 a.m. UTC | #1
On Thu, Dec 27, 2012 at 4:27 PM, Inki Dae <inki.dae@samsung.com> wrote:

> This patch fixes gem buffer allocation type checking.
> EXYNOS_BO_CONTIG has 0 so the checking should be fixed
> to 'if (!(flags & EXYNOS_BO_NONCONTIG))'
>
> Signed-off-by: Inki Dae <inki.dae@samsung.com>
> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
> ---
>  drivers/gpu/drm/exynos/exynos_drm_buf.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_buf.c
> b/drivers/gpu/drm/exynos/exynos_drm_buf.c
> index 74592d1..911f7fd 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_buf.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_buf.c
> @@ -38,7 +38,7 @@ static int lowlevel_buffer_allocate(struct drm_device
> *dev,
>          * region will be allocated else physically contiguous
>          * as possible.
>          */
> -       if (flags & EXYNOS_BO_CONTIG)
> +       if (!(flags & EXYNOS_BO_NONCONTIG))
>                 dma_set_attr(DMA_ATTR_FORCE_CONTIGUOUS, &buf->dma_attrs);
>
>
Hi Mr. Dae,

If iommu is supported, we would have called arm_iommu_attach_device.
So dma_alloc_attrs will always call arm_iommu_alloc_attrs.

If iommu is not supported, dma_alloc_attrs will call arm_dma_alloc which
will
anyway allocate a contiguous buffer if possible.

With this code, we are forcing the root framebuffer (fbdev) to be
contiguous since fbdev
allocation does not pass noncontig flag.

Why do we need to force the allocation of a contiguous buffer when iommu is
supported?

Regards,
Prathyush


>         /*
> --
> 1.7.4.1
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
>
Inki Dae Dec. 27, 2012, 12:13 p.m. UTC | #2
2012/12/27 Prathyush K <prathyush@chromium.org>

>
>
>
> On Thu, Dec 27, 2012 at 4:27 PM, Inki Dae <inki.dae@samsung.com> wrote:
>
>> This patch fixes gem buffer allocation type checking.
>> EXYNOS_BO_CONTIG has 0 so the checking should be fixed
>> to 'if (!(flags & EXYNOS_BO_NONCONTIG))'
>>
>> Signed-off-by: Inki Dae <inki.dae@samsung.com>
>> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
>> ---
>>  drivers/gpu/drm/exynos/exynos_drm_buf.c |    2 +-
>>  1 files changed, 1 insertions(+), 1 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/exynos/exynos_drm_buf.c
>> b/drivers/gpu/drm/exynos/exynos_drm_buf.c
>> index 74592d1..911f7fd 100644
>> --- a/drivers/gpu/drm/exynos/exynos_drm_buf.c
>> +++ b/drivers/gpu/drm/exynos/exynos_drm_buf.c
>> @@ -38,7 +38,7 @@ static int lowlevel_buffer_allocate(struct drm_device
>> *dev,
>>          * region will be allocated else physically contiguous
>>          * as possible.
>>          */
>> -       if (flags & EXYNOS_BO_CONTIG)
>> +       if (!(flags & EXYNOS_BO_NONCONTIG))
>>                 dma_set_attr(DMA_ATTR_FORCE_CONTIGUOUS, &buf->dma_attrs);
>>
>>
> Hi Mr. Dae,
>
> If iommu is supported, we would have called arm_iommu_attach_device.
> So dma_alloc_attrs will always call arm_iommu_alloc_attrs.
>
> If iommu is not supported, dma_alloc_attrs will call arm_dma_alloc which
> will
> anyway allocate a contiguous buffer if possible.
>
> With this code, we are forcing the root framebuffer (fbdev) to be
> contiguous since fbdev
> allocation does not pass noncontig flag.
>
>
we could use noncontig flag simply like below,

          if (iommu is supported)
                  exynos_drm_gem_create(dev, EXYNOS_BO_NONCONTIG, size);
          else
                  exynos_drm_gem_create(dev, EXYNOS_BO_CONTIG, size);



> Why do we need to force the allocation of a contiguous buffer when iommu
> is supported?
>
>
Simply saying, the reason is that we want to pass boot logo drew by boot
loader without iommu to kernel side without memory copy.


> Regards,
> Prathyush
>
>
>>         /*
>> --
>> 1.7.4.1
>>
>> _______________________________________________
>> dri-devel mailing list
>> dri-devel@lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/dri-devel
>>
>
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
>
>
diff mbox

Patch

diff --git a/drivers/gpu/drm/exynos/exynos_drm_buf.c b/drivers/gpu/drm/exynos/exynos_drm_buf.c
index 74592d1..911f7fd 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_buf.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_buf.c
@@ -38,7 +38,7 @@  static int lowlevel_buffer_allocate(struct drm_device *dev,
 	 * region will be allocated else physically contiguous
 	 * as possible.
 	 */
-	if (flags & EXYNOS_BO_CONTIG)
+	if (!(flags & EXYNOS_BO_NONCONTIG))
 		dma_set_attr(DMA_ATTR_FORCE_CONTIGUOUS, &buf->dma_attrs);
 
 	/*