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); >