From mboxrd@z Thu Jan 1 00:00:00 1970 From: Inki Dae Subject: Re: [PATCH] exynos-drm: Fix display manager failing to start without IOMMU problem Date: Thu, 11 Aug 2016 07:59:57 +0900 Message-ID: <57ABB1ED.1080301@samsung.com> References: <1470850251-9150-1-git-send-email-shuahkh@osg.samsung.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-reply-to: <1470850251-9150-1-git-send-email-shuahkh@osg.samsung.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Shuah Khan , jy0922.shim@samsung.com, sw0312.kim@samsung.com, kyungmin.park@samsung.com, airlied@linux.ie, kgene@kernel.org, k.kozlowski@samsung.com Cc: linux-samsung-soc@vger.kernel.org, linux-arm-kernel@lists.infradead.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org List-Id: linux-samsung-soc@vger.kernel.org SGkgU2h1YWgsCgoyMDE264WEIDA47JuUIDEx7J28IDAyOjMw7JeQIFNodWFoIEtoYW4g7J20KOqw gCkg7JO0IOq4gDoKPiBGaXggZXh5bm9zX2RybV9nZW1fY3JlYXRlX2lvY3RsKCkgYXR0ZW1wdHMg dG8gYWxsb2NhdGUgbm9uLWNvbnRpZ3VvdXMgR0VNCj4gbWVtb3J5IHdpdGhvdXQgSU9NTVUuIElu IHRoaXMgY2FzZSwgdGhlcmUgaXMgbm8gcG9pbnQgaW4gYXR0ZW1wdGluZyB0bwoKRFJNIGdlbSBj YW4gYmUgdXNlZCBmb3IgTm9uLURSTSBkcml2ZXJzIHN1Y2ggYXMgR1BVLCBWNEwyIGJhc2VkIE11 bHRpbWVkaWEgZGV2aWNlIGFuZCBvdGhlciBETUEgZGV2aWNlcy4KRXZlbiB0aG91Z2ggSU9NTVUg c3VwcG9ydCBpcyBkaXNhYmxlZCwgb3RoZXIgZnJhbWV3b3JrIGJhc2VkIERNQSBkcml2ZXJzIGNh biB1c2UgSU9NTVUgLSBpLmUuLCBHUFUgZHJpdmVyIC0KYW5kIHRoZXkgY2FuIHVzZSBub24tY29u dGlndW91cyBHRU0gYnVmZmVyIHRocm91Z2ggVU1NLiAoRE1BQlVGKSAKClNvIEdFTSBhbGxvY2F0 aW9uIHR5cGUgaXMgbm90IGRlcGVuZGVudCBvbiBJT01NVS4KClRoYW5rcywKSW5raSBEYWUKCj4g YWxsb2NhdGUgbm9uLWNvbnRpZ3VvdXMgbWVtb3J5LCBvbmx5IHRvIHJldHVybiBlcnJvciBkdXJp bmcgdGhlIG5leHQgc3RlcAo+IGZyb20gZXh5bm9zX2RybV9mcmFtZWJ1ZmZlcl9pbml0KCkgd2hp Y2ggbGVhZHMgdG8gZGlzcGxheSBtYW5hZ2VyIGZhaWxpbmcKPiB0byBzdGFydC4KPiAKPiBDaGVj ayBpZiBub24tY29udGlndW91cyBHRU0gbWVtb3J5IGlzIHJlcXVlc3RlZCB3aXRob3V0IElPTU1V LiBJZiBzbywKPiBhbGxvY2F0ZSBjb250aWd1b3VzIEdFTSBtZW1vcnkgdG8gaGVscCBkaXNwbGF5 IG1hbmFnZXIgc3RhcnQuCj4gCj4gU2lnbmVkLW9mZi1ieTogU2h1YWggS2hhbiA8c2h1YWhraEBv c2cuc2Ftc3VuZy5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2Ry bV9nZW0uYyB8IDE0ICsrKysrKysrKysrKysrCj4gIDEgZmlsZSBjaGFuZ2VkLCAxNCBpbnNlcnRp b25zKCspCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2Ry bV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9nZW0uYwo+IGluZGV4 IDRjNGNiMGUuLjQ3MTkxMTYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9l eHlub3NfZHJtX2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJt X2dlbS5jCj4gQEAgLTI2Niw2ICsyNjYsMjAgQEAgaW50IGV4eW5vc19kcm1fZ2VtX2NyZWF0ZV9p b2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAJc3RydWN0IGV4eW5v c19kcm1fZ2VtICpleHlub3NfZ2VtOwo+ICAJaW50IHJldDsKPiAgCj4gKwkvKgo+ICsJICogQ2hl Y2sgaWYgbm9uLWNvbnRpZ3VvdXMgR0VNIG1lbW9yeSBpcyByZXF1ZXN0ZWQgd2l0aG91dCBJT01N VS4KPiArCSAqIElmIHNvLCBhbGxvY2F0ZSBjb250aWd1b3VzIEdFTSBtZW1vcnkuCj4gKwkgKgo+ ICsJICogVGhlcmUgaXMgbm8gcG9pbnQgaW4gYXR0ZW1wdGluZyB0byBhbGxvY2F0ZSBub24tY29u dGlndW91cyBtZW1vcnksCj4gKwkgKiBvbmx5IHRvIHJldHVybiBlcnJvciBmcm9tIGV4eW5vc19k cm1fZnJhbWVidWZmZXJfaW5pdCgpIHdoaWNoIGxlYWRzCj4gKwkgKiB0byBkaXNwbGF5IG1hbmFn ZXIgZmFpbGluZyB0byBzdGFydC4KPiArCSovCj4gKwlpZiAoIWlzX2RybV9pb21tdV9zdXBwb3J0 ZWQoZGV2KSAmJgo+ICsJICAgIChhcmdzLT5mbGFncyAmIEVYWU5PU19CT19OT05DT05USUcpKSB7 Cj4gKwkJYXJncy0+ZmxhZ3MgJj0gfkVYWU5PU19CT19OT05DT05USUc7Cj4gKwkJYXJncy0+Zmxh Z3MgfD0gRVhZTk9TX0JPX0NPTlRJRzsKPiArCX0KPiArCj4gIAlleHlub3NfZ2VtID0gZXh5bm9z X2RybV9nZW1fY3JlYXRlKGRldiwgYXJncy0+ZmxhZ3MsIGFyZ3MtPnNpemUpOwo+ICAJaWYgKElT X0VSUihleHlub3NfZ2VtKSkKPiAgCQlyZXR1cm4gUFRSX0VSUihleHlub3NfZ2VtKTsKPiAKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1h aWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 From: inki.dae@samsung.com (Inki Dae) Date: Thu, 11 Aug 2016 07:59:57 +0900 Subject: [PATCH] exynos-drm: Fix display manager failing to start without IOMMU problem In-Reply-To: <1470850251-9150-1-git-send-email-shuahkh@osg.samsung.com> References: <1470850251-9150-1-git-send-email-shuahkh@osg.samsung.com> Message-ID: <57ABB1ED.1080301@samsung.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Hi Shuah, 2016? 08? 11? 02:30? Shuah Khan ?(?) ? ?: > Fix exynos_drm_gem_create_ioctl() attempts to allocate non-contiguous GEM > memory without IOMMU. In this case, there is no point in attempting to DRM gem can be used for Non-DRM drivers such as GPU, V4L2 based Multimedia device and other DMA devices. Even though IOMMU support is disabled, other framework based DMA drivers can use IOMMU - i.e., GPU driver - and they can use non-contiguous GEM buffer through UMM. (DMABUF) So GEM allocation type is not dependent on IOMMU. Thanks, Inki Dae > allocate non-contiguous memory, only to return error during the next step > from exynos_drm_framebuffer_init() which leads to display manager failing > to start. > > Check if non-contiguous GEM memory is requested without IOMMU. If so, > allocate contiguous GEM memory to help display manager start. > > Signed-off-by: Shuah Khan > --- > drivers/gpu/drm/exynos/exynos_drm_gem.c | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) > > diff --git a/drivers/gpu/drm/exynos/exynos_drm_gem.c b/drivers/gpu/drm/exynos/exynos_drm_gem.c > index 4c4cb0e..4719116 100644 > --- a/drivers/gpu/drm/exynos/exynos_drm_gem.c > +++ b/drivers/gpu/drm/exynos/exynos_drm_gem.c > @@ -266,6 +266,20 @@ int exynos_drm_gem_create_ioctl(struct drm_device *dev, void *data, > struct exynos_drm_gem *exynos_gem; > int ret; > > + /* > + * Check if non-contiguous GEM memory is requested without IOMMU. > + * If so, allocate contiguous GEM memory. > + * > + * There is no point in attempting to allocate non-contiguous memory, > + * only to return error from exynos_drm_framebuffer_init() which leads > + * to display manager failing to start. > + */ > + if (!is_drm_iommu_supported(dev) && > + (args->flags & EXYNOS_BO_NONCONTIG)) { > + args->flags &= ~EXYNOS_BO_NONCONTIG; > + args->flags |= EXYNOS_BO_CONTIG; > + } > + > exynos_gem = exynos_drm_gem_create(dev, args->flags, args->size); > if (IS_ERR(exynos_gem)) > return PTR_ERR(exynos_gem); > From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933681AbcHJXAD (ORCPT ); Wed, 10 Aug 2016 19:00:03 -0400 Received: from mailout4.samsung.com ([203.254.224.34]:35960 "EHLO mailout4.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752859AbcHJXAA (ORCPT ); Wed, 10 Aug 2016 19:00:00 -0400 MIME-version: 1.0 Content-type: text/plain; charset=utf-8 X-AuditID: cbfee68e-f79cb6d000006cfe-e7-57abb1edf8fc Content-transfer-encoding: 8BIT Message-id: <57ABB1ED.1080301@samsung.com> Date: Thu, 11 Aug 2016 07:59:57 +0900 From: Inki Dae User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 To: Shuah Khan , jy0922.shim@samsung.com, sw0312.kim@samsung.com, kyungmin.park@samsung.com, airlied@linux.ie, kgene@kernel.org, k.kozlowski@samsung.com Cc: dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] exynos-drm: Fix display manager failing to start without IOMMU problem References: <1470850251-9150-1-git-send-email-shuahkh@osg.samsung.com> In-reply-to: <1470850251-9150-1-git-send-email-shuahkh@osg.samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrLIsWRmVeSWpSXmKPExsWyRsSkUPftxtXhBgeuqlv0njvJZHHl63s2 ixf3LrJYvH5haNH/+DWzxdmmN+wWmx5fY7W4vGsOm8WM8/uYLKZ++cBiMWPySzYHbo9NqzrZ PLZ/e8Dqcb/7OJPH5iX1Hlv677J79G1ZxejxeZNcAHsUl01Kak5mWWqRvl0CV8aUG0tYCrYJ VHT1TmRqYNzC28XIySEhYCLR8rCPFcIWk7hwbz1bFyMXh5DACkaJ15f2s8IUrd00kQ3EFhKY xSix/V48iM0rICjxY/I9li5GDg5mAXmJI5eyIUx1iSlTciHGPGCUWDillwWiXEvi+o4nYGNY BFQl3vZPYQSx2YDsiSvus4H0igpESHSfqATpFRHYyigxfd5VFhCHWaCHUWLH2ZnsIA3CArES a/5+ZIfYMIdR4tT8p2BTOQXcJRZ97gL7QELgL7vE3C0TWCHWCUh8m3wI7FIJAVmJTQeYIR6T lDi44gbLBEaxWUj+mYXwzyyEfxYwMq9iFE0tSC4oTkovMtIrTswtLs1L10vOz93ECIzV0/+e 9e1gvHnA+hCjAAejEg+vR+bqcCHWxLLiytxDjKZAN0xklhJNzgcmhLySeENjMyMLUxNTYyNz SzMlcd4EqZ/BQgLpiSWp2ampBalF8UWlOanFhxiZODilGhjdw1bfe+U2IdyGn83kq9j54gbR TWYLCrjOeHxVmHL50mnNreZ34phkkk7tebmd607muQLGZ4XXFZT6phjE8967/0XlnPHFzZW6 BUa9X3YY8vEba19IYVaSOJhwb8PCDa9EMrNy03+vse7Rsk07ZmK/ffmT/qIvj5R4Yz6b/Up5 px3Dl2LP/U+JpTgj0VCLuag4EQDceDrk0AIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFupileLIzCtJLcpLzFFi42I5/e+xoO7bjavDDb4uULToPXeSyeLK1/ds Fi/uXWSxeP3C0KL/8Wtmi7NNb9gtNj2+xmpxedccNosZ5/cxWUz98oHFYsbkl2wO3B6bVnWy eWz/9oDV4373cSaPzUvqPbb032X36NuyitHj8ya5APaoBkabjNTElNQihdS85PyUzLx0WyXv 4HjneFMzA0NdQ0sLcyWFvMTcVFslF58AXbfMHKAblRTKEnNKgUIBicXFSvp2mCaEhrjpWsA0 Ruj6hgTB9RgZoIGENYwZU24sYSnYJlDR1TuRqYFxC28XIyeHhICJxNpNE9kgbDGJC/fWg9lC ArMYJbbfiwexeQUEJX5MvsfSxcjBwSwgL3HkUjaEqS4xZUpuFyMXUPUDRomFU3pZIMq1JK7v eAI2hkVAVeJt/xRGEJsNyJ644j4bSK+oQIRE94lKkF4Rga2MEtPnXWUBcZgFehgldpydyQ7S ICwQK7Hm70d2iA1zGCVOzX8KNpVTwF1i0ecutgmMQFci3DcL4b5ZCPctYGRexSiRWpBcUJyU nmuUl1quV5yYW1yal66XnJ+7iRGcDp5J72A8vMv9EKMAB6MSD69H5upwIdbEsuLK3EOMEhzM SiK839YChXhTEiurUovy44tKc1KLDzGaAj04kVlKNDkfmKrySuINjU3MjCyNzA0tjIzNlcR5 H/9fFyYkkJ5YkpqdmlqQWgTTx8TBKdXAGHJnhscvrRC5zdxpMyN/JEV+3Jpy0enunb9rZVzd uAsUBPqeH7s6uy/0JEvAVH7urQnFt349VL0VEyclHSZ6U43ltB73qbL/D3zfKQuvrg30N+Nk tGG7bSh276rtzlkz5y6MPnWqsOljeA17Ru6unsj7b4Mfl+teyVyh1eZctimSxelmxLRmJZbi jERDLeai4kQA7jcklx0DAAA= DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Shuah, 2016년 08월 11일 02:30에 Shuah Khan 이(가) 쓴 글: > Fix exynos_drm_gem_create_ioctl() attempts to allocate non-contiguous GEM > memory without IOMMU. In this case, there is no point in attempting to DRM gem can be used for Non-DRM drivers such as GPU, V4L2 based Multimedia device and other DMA devices. Even though IOMMU support is disabled, other framework based DMA drivers can use IOMMU - i.e., GPU driver - and they can use non-contiguous GEM buffer through UMM. (DMABUF) So GEM allocation type is not dependent on IOMMU. Thanks, Inki Dae > allocate non-contiguous memory, only to return error during the next step > from exynos_drm_framebuffer_init() which leads to display manager failing > to start. > > Check if non-contiguous GEM memory is requested without IOMMU. If so, > allocate contiguous GEM memory to help display manager start. > > Signed-off-by: Shuah Khan > --- > drivers/gpu/drm/exynos/exynos_drm_gem.c | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) > > diff --git a/drivers/gpu/drm/exynos/exynos_drm_gem.c b/drivers/gpu/drm/exynos/exynos_drm_gem.c > index 4c4cb0e..4719116 100644 > --- a/drivers/gpu/drm/exynos/exynos_drm_gem.c > +++ b/drivers/gpu/drm/exynos/exynos_drm_gem.c > @@ -266,6 +266,20 @@ int exynos_drm_gem_create_ioctl(struct drm_device *dev, void *data, > struct exynos_drm_gem *exynos_gem; > int ret; > > + /* > + * Check if non-contiguous GEM memory is requested without IOMMU. > + * If so, allocate contiguous GEM memory. > + * > + * There is no point in attempting to allocate non-contiguous memory, > + * only to return error from exynos_drm_framebuffer_init() which leads > + * to display manager failing to start. > + */ > + if (!is_drm_iommu_supported(dev) && > + (args->flags & EXYNOS_BO_NONCONTIG)) { > + args->flags &= ~EXYNOS_BO_NONCONTIG; > + args->flags |= EXYNOS_BO_CONTIG; > + } > + > exynos_gem = exynos_drm_gem_create(dev, args->flags, args->size); > if (IS_ERR(exynos_gem)) > return PTR_ERR(exynos_gem); >