Message ID | 1377239706-17804-1-git-send-email-vikas.sajjan@linaro.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
adding linux-samsung-soc mailing list and Dave Airlie. On Fri, Aug 23, 2013 at 12:05 PM, Vikas Sajjan <vikas.sajjan@linaro.org> wrote: > To address the case where physically contiguous memory MAY NOT be a mandatory > requirement for framebuffer for the application calling exynos_drm_gem_dumb_create, > the patch adds a feature to get non physically contiguous memory for framebuffer, > if physically contiguous memory allocation fails and if IOMMU is supported. > > Signed-off-by: Vikas Sajjan <vikas.sajjan@linaro.org> > Signed-off-by: Arun Kumar <arun.kk@samsung.com> > --- > drivers/gpu/drm/exynos/exynos_drm_gem.c | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > > diff --git a/drivers/gpu/drm/exynos/exynos_drm_gem.c b/drivers/gpu/drm/exynos/exynos_drm_gem.c > index 2eabe1a..66d1b40 100644 > --- a/drivers/gpu/drm/exynos/exynos_drm_gem.c > +++ b/drivers/gpu/drm/exynos/exynos_drm_gem.c > @@ -17,6 +17,7 @@ > #include "exynos_drm_drv.h" > #include "exynos_drm_gem.h" > #include "exynos_drm_buf.h" > +#include "exynos_drm_iommu.h" > > static unsigned int convert_to_vm_err_msg(int msg) > { > @@ -666,6 +667,18 @@ int exynos_drm_gem_dumb_create(struct drm_file *file_priv, > > 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"); > + exynos_gem_obj = exynos_drm_gem_create(dev, > + EXYNOS_BO_NONCONTIG | EXYNOS_BO_WC, > + args->size); > + } > + > if (IS_ERR(exynos_gem_obj)) > return PTR_ERR(exynos_gem_obj); > > -- > 1.7.9.5 > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/dri-devel
Applied. Thanks, Inki Dae > -----Original Message----- > From: Vikas Sajjan [mailto:vikas.sajjan@linaro.org] > Sent: Friday, August 23, 2013 3:35 PM > To: dri-devel@lists.freedesktop.org; inki.dae@samsung.com > Cc: kgene.kim@samsung.com; s.nawrocki@samsung.com; robdclark@gmail.com; > tomasz.figa@gmail.com; laurent.pinchart@ideasonboard.com; > patches@linaro.org; linaro-dev@lists.linaro.org > Subject: [PATCH] drm/exynos: Add fallback option to get non physically > contiguous memory for gem_dumb_create > > To address the case where physically contiguous memory MAY NOT be a > mandatory > requirement for framebuffer for the application calling > exynos_drm_gem_dumb_create, > the patch adds a feature to get non physically contiguous memory for > framebuffer, > if physically contiguous memory allocation fails and if IOMMU is supported. > > Signed-off-by: Vikas Sajjan <vikas.sajjan@linaro.org> > Signed-off-by: Arun Kumar <arun.kk@samsung.com> > --- > drivers/gpu/drm/exynos/exynos_drm_gem.c | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > > diff --git a/drivers/gpu/drm/exynos/exynos_drm_gem.c > b/drivers/gpu/drm/exynos/exynos_drm_gem.c > index 2eabe1a..66d1b40 100644 > --- a/drivers/gpu/drm/exynos/exynos_drm_gem.c > +++ b/drivers/gpu/drm/exynos/exynos_drm_gem.c > @@ -17,6 +17,7 @@ > #include "exynos_drm_drv.h" > #include "exynos_drm_gem.h" > #include "exynos_drm_buf.h" > +#include "exynos_drm_iommu.h" > > static unsigned int convert_to_vm_err_msg(int msg) > { > @@ -666,6 +667,18 @@ int exynos_drm_gem_dumb_create(struct drm_file > *file_priv, > > 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"); > + exynos_gem_obj = exynos_drm_gem_create(dev, > + EXYNOS_BO_NONCONTIG | EXYNOS_BO_WC, > + args->size); > + } > + > if (IS_ERR(exynos_gem_obj)) > return PTR_ERR(exynos_gem_obj); > > -- > 1.7.9.5
Thanks. On 27 August 2013 08:14, Inki Dae <inki.dae@samsung.com> wrote: > Applied. > > Thanks, > Inki Dae > >> -----Original Message----- >> From: Vikas Sajjan [mailto:vikas.sajjan@linaro.org] >> Sent: Friday, August 23, 2013 3:35 PM >> To: dri-devel@lists.freedesktop.org; inki.dae@samsung.com >> Cc: kgene.kim@samsung.com; s.nawrocki@samsung.com; robdclark@gmail.com; >> tomasz.figa@gmail.com; laurent.pinchart@ideasonboard.com; >> patches@linaro.org; linaro-dev@lists.linaro.org >> Subject: [PATCH] drm/exynos: Add fallback option to get non physically >> contiguous memory for gem_dumb_create >> >> To address the case where physically contiguous memory MAY NOT be a >> mandatory >> requirement for framebuffer for the application calling >> exynos_drm_gem_dumb_create, >> the patch adds a feature to get non physically contiguous memory for >> framebuffer, >> if physically contiguous memory allocation fails and if IOMMU is > supported. >> >> Signed-off-by: Vikas Sajjan <vikas.sajjan@linaro.org> >> Signed-off-by: Arun Kumar <arun.kk@samsung.com> >> --- >> drivers/gpu/drm/exynos/exynos_drm_gem.c | 13 +++++++++++++ >> 1 file changed, 13 insertions(+) >> >> diff --git a/drivers/gpu/drm/exynos/exynos_drm_gem.c >> b/drivers/gpu/drm/exynos/exynos_drm_gem.c >> index 2eabe1a..66d1b40 100644 >> --- a/drivers/gpu/drm/exynos/exynos_drm_gem.c >> +++ b/drivers/gpu/drm/exynos/exynos_drm_gem.c >> @@ -17,6 +17,7 @@ >> #include "exynos_drm_drv.h" >> #include "exynos_drm_gem.h" >> #include "exynos_drm_buf.h" >> +#include "exynos_drm_iommu.h" >> >> static unsigned int convert_to_vm_err_msg(int msg) >> { >> @@ -666,6 +667,18 @@ int exynos_drm_gem_dumb_create(struct drm_file >> *file_priv, >> >> 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"); >> + exynos_gem_obj = exynos_drm_gem_create(dev, >> + EXYNOS_BO_NONCONTIG | EXYNOS_BO_WC, >> + args->size); >> + } >> + >> if (IS_ERR(exynos_gem_obj)) >> return PTR_ERR(exynos_gem_obj); >> >> -- >> 1.7.9.5 >
One more thing, changed the subject to "Consider fallback option to allocation fail". The subject is too long :) Thanks, Inki Dae > -----Original Message----- > From: linux-samsung-soc-owner@vger.kernel.org [mailto:linux-samsung-soc- > owner@vger.kernel.org] On Behalf Of Vikas Sajjan > Sent: Tuesday, August 27, 2013 12:05 PM > To: Inki Dae > Cc: DRI mailing list; kgene.kim; Sylwester Nawrocki; Rob Clark; Tomasz > Figa; Laurent Pinchart; Patch Tracking; linaro-dev@lists.linaro.org; sunil > joshi; linux-samsung-soc@vger.kernel.org > Subject: Re: [PATCH] drm/exynos: Add fallback option to get non physically > contiguous memory for gem_dumb_create > > Thanks. > > On 27 August 2013 08:14, Inki Dae <inki.dae@samsung.com> wrote: > > Applied. > > > > Thanks, > > Inki Dae > > > >> -----Original Message----- > >> From: Vikas Sajjan [mailto:vikas.sajjan@linaro.org] > >> Sent: Friday, August 23, 2013 3:35 PM > >> To: dri-devel@lists.freedesktop.org; inki.dae@samsung.com > >> Cc: kgene.kim@samsung.com; s.nawrocki@samsung.com; robdclark@gmail.com; > >> tomasz.figa@gmail.com; laurent.pinchart@ideasonboard.com; > >> patches@linaro.org; linaro-dev@lists.linaro.org > >> Subject: [PATCH] drm/exynos: Add fallback option to get non physically > >> contiguous memory for gem_dumb_create > >> > >> To address the case where physically contiguous memory MAY NOT be a > >> mandatory > >> requirement for framebuffer for the application calling > >> exynos_drm_gem_dumb_create, > >> the patch adds a feature to get non physically contiguous memory for > >> framebuffer, > >> if physically contiguous memory allocation fails and if IOMMU is > > supported. > >> > >> Signed-off-by: Vikas Sajjan <vikas.sajjan@linaro.org> > >> Signed-off-by: Arun Kumar <arun.kk@samsung.com> > >> --- > >> drivers/gpu/drm/exynos/exynos_drm_gem.c | 13 +++++++++++++ > >> 1 file changed, 13 insertions(+) > >> > >> diff --git a/drivers/gpu/drm/exynos/exynos_drm_gem.c > >> b/drivers/gpu/drm/exynos/exynos_drm_gem.c > >> index 2eabe1a..66d1b40 100644 > >> --- a/drivers/gpu/drm/exynos/exynos_drm_gem.c > >> +++ b/drivers/gpu/drm/exynos/exynos_drm_gem.c > >> @@ -17,6 +17,7 @@ > >> #include "exynos_drm_drv.h" > >> #include "exynos_drm_gem.h" > >> #include "exynos_drm_buf.h" > >> +#include "exynos_drm_iommu.h" > >> > >> static unsigned int convert_to_vm_err_msg(int msg) > >> { > >> @@ -666,6 +667,18 @@ int exynos_drm_gem_dumb_create(struct drm_file > >> *file_priv, > >> > >> 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"); > >> + exynos_gem_obj = exynos_drm_gem_create(dev, > >> + EXYNOS_BO_NONCONTIG | EXYNOS_BO_WC, > >> + args->size); > >> + } > >> + > >> if (IS_ERR(exynos_gem_obj)) > >> return PTR_ERR(exynos_gem_obj); > >> > >> -- > >> 1.7.9.5 > > > > > > -- > Thanks and Regards > Vikas Sajjan > -- > To unsubscribe from this list: send the line "unsubscribe linux-samsung- > soc" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html
OK. On 27 August 2013 09:44, Inki Dae <inki.dae@samsung.com> wrote: > > One more thing, changed the subject to "Consider fallback option to > allocation fail". The subject is too long :) > > Thanks, > Inki Dae > > >> -----Original Message----- >> From: linux-samsung-soc-owner@vger.kernel.org [mailto:linux-samsung-soc- >> owner@vger.kernel.org] On Behalf Of Vikas Sajjan >> Sent: Tuesday, August 27, 2013 12:05 PM >> To: Inki Dae >> Cc: DRI mailing list; kgene.kim; Sylwester Nawrocki; Rob Clark; Tomasz >> Figa; Laurent Pinchart; Patch Tracking; linaro-dev@lists.linaro.org; sunil >> joshi; linux-samsung-soc@vger.kernel.org >> Subject: Re: [PATCH] drm/exynos: Add fallback option to get non physically >> contiguous memory for gem_dumb_create >> >> Thanks. >> >> On 27 August 2013 08:14, Inki Dae <inki.dae@samsung.com> wrote: >> > Applied. >> > >> > Thanks, >> > Inki Dae >> > >> >> -----Original Message----- >> >> From: Vikas Sajjan [mailto:vikas.sajjan@linaro.org] >> >> Sent: Friday, August 23, 2013 3:35 PM >> >> To: dri-devel@lists.freedesktop.org; inki.dae@samsung.com >> >> Cc: kgene.kim@samsung.com; s.nawrocki@samsung.com; robdclark@gmail.com; >> >> tomasz.figa@gmail.com; laurent.pinchart@ideasonboard.com; >> >> patches@linaro.org; linaro-dev@lists.linaro.org >> >> Subject: [PATCH] drm/exynos: Add fallback option to get non physically >> >> contiguous memory for gem_dumb_create >> >> >> >> To address the case where physically contiguous memory MAY NOT be a >> >> mandatory >> >> requirement for framebuffer for the application calling >> >> exynos_drm_gem_dumb_create, >> >> the patch adds a feature to get non physically contiguous memory for >> >> framebuffer, >> >> if physically contiguous memory allocation fails and if IOMMU is >> > supported. >> >> >> >> Signed-off-by: Vikas Sajjan <vikas.sajjan@linaro.org> >> >> Signed-off-by: Arun Kumar <arun.kk@samsung.com> >> >> --- >> >> drivers/gpu/drm/exynos/exynos_drm_gem.c | 13 +++++++++++++ >> >> 1 file changed, 13 insertions(+) >> >> >> >> diff --git a/drivers/gpu/drm/exynos/exynos_drm_gem.c >> >> b/drivers/gpu/drm/exynos/exynos_drm_gem.c >> >> index 2eabe1a..66d1b40 100644 >> >> --- a/drivers/gpu/drm/exynos/exynos_drm_gem.c >> >> +++ b/drivers/gpu/drm/exynos/exynos_drm_gem.c >> >> @@ -17,6 +17,7 @@ >> >> #include "exynos_drm_drv.h" >> >> #include "exynos_drm_gem.h" >> >> #include "exynos_drm_buf.h" >> >> +#include "exynos_drm_iommu.h" >> >> >> >> static unsigned int convert_to_vm_err_msg(int msg) >> >> { >> >> @@ -666,6 +667,18 @@ int exynos_drm_gem_dumb_create(struct drm_file >> >> *file_priv, >> >> >> >> 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"); >> >> + exynos_gem_obj = exynos_drm_gem_create(dev, >> >> + EXYNOS_BO_NONCONTIG | > EXYNOS_BO_WC, >> >> + args->size); >> >> + } >> >> + >> >> if (IS_ERR(exynos_gem_obj)) >> >> return PTR_ERR(exynos_gem_obj); >> >> >> >> -- >> >> 1.7.9.5 >> > >> >> >> >> -- >> Thanks and Regards >> Vikas Sajjan >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-samsung- >> soc" in >> the body of a message to majordomo@vger.kernel.org >> More majordomo info at http://vger.kernel.org/majordomo-info.html >
diff --git a/drivers/gpu/drm/exynos/exynos_drm_gem.c b/drivers/gpu/drm/exynos/exynos_drm_gem.c index 2eabe1a..66d1b40 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_gem.c +++ b/drivers/gpu/drm/exynos/exynos_drm_gem.c @@ -17,6 +17,7 @@ #include "exynos_drm_drv.h" #include "exynos_drm_gem.h" #include "exynos_drm_buf.h" +#include "exynos_drm_iommu.h" static unsigned int convert_to_vm_err_msg(int msg) { @@ -666,6 +667,18 @@ int exynos_drm_gem_dumb_create(struct drm_file *file_priv, 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"); + exynos_gem_obj = exynos_drm_gem_create(dev, + EXYNOS_BO_NONCONTIG | EXYNOS_BO_WC, + args->size); + } + if (IS_ERR(exynos_gem_obj)) return PTR_ERR(exynos_gem_obj);