Hi Inki, The below fix doesn't affect the FB dev buffer allocation. IMO the scenario where u-boot allocates the buffer is not disturbed. Please review the implementation. Regards, Rahul Sharma. On 7 May 2014 17:21, Rahul Sharma <rahul.sharma@xxxxxxxxxxx> wrote: > From: Rahul Sharma <Rahul.Sharma@xxxxxxxxxxx> > > Allow to allocate non-contigous buffers when iommu is enabled. > Currently, it tries to allocates contigous buffer which consistently > fail for large buffers and then fall back to non contigous. Apart > from being slow, this implementation is also very noisy and fills > the screen with alloc fail logs. > > Change-Id: I523e95aa308122ed2edc55e065ae6eb8be996541 > Signed-off-by: Rahul Sharma <Rahul.Sharma@xxxxxxxxxxx> > --- > drivers/gpu/drm/exynos/exynos_drm_gem.c | 22 ++++++++++------------ > 1 file changed, 10 insertions(+), 12 deletions(-) > > diff --git a/drivers/gpu/drm/exynos/exynos_drm_gem.c b/drivers/gpu/drm/exynos/exynos_drm_gem.c > index 5d88924..7136945 100644 > --- a/drivers/gpu/drm/exynos/exynos_drm_gem.c > +++ b/drivers/gpu/drm/exynos/exynos_drm_gem.c > @@ -624,22 +624,20 @@ int exynos_drm_gem_dumb_create(struct drm_file *file_priv, > args->pitch = args->width * ((args->bpp + 7) / 8); > args->size = args->pitch * args->height; > > - exynos_gem_obj = exynos_drm_gem_create(dev, EXYNOS_BO_CONTIG | > - EXYNOS_BO_WC, args->size); > - /* > - * If physically contiguous memory allocation fails and if IOMMU is > - * supported then try to get buffer from non physically contiguous > - * memory area. > - */ > - if (IS_ERR(exynos_gem_obj) && is_drm_iommu_supported(dev)) { > - dev_warn(dev->dev, "contiguous FB allocation failed, falling back to non-contiguous\n"); > + if (is_drm_iommu_supported(dev)) { > + exynos_gem_obj = exynos_drm_gem_create(dev, > + EXYNOS_BO_NONCONTIG | EXYNOS_BO_WC, > + args->size); > + } else { > exynos_gem_obj = exynos_drm_gem_create(dev, > - EXYNOS_BO_NONCONTIG | EXYNOS_BO_WC, > - args->size); > + EXYNOS_BO_CONTIG | EXYNOS_BO_WC, > + args->size); > } > > - if (IS_ERR(exynos_gem_obj)) > + if (IS_ERR(exynos_gem_obj)) { > + dev_warn(dev->dev, "FB allocation failed.\n"); > return PTR_ERR(exynos_gem_obj); > + } > > ret = exynos_drm_gem_handle_create(&exynos_gem_obj->base, file_priv, > &args->handle); > -- > 1.7.9.5 > -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html