From patchwork Tue Oct 13 07:00:53 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joonyoung Shim X-Patchwork-Id: 7381621 Return-Path: X-Original-To: patchwork-dri-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 28A4ABF90C for ; Tue, 13 Oct 2015 07:01:14 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id C629C2075F for ; Tue, 13 Oct 2015 07:01:12 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id CC976206CC for ; Tue, 13 Oct 2015 07:01:10 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 667096E8EB; Tue, 13 Oct 2015 00:01:09 -0700 (PDT) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mailout3.samsung.com (mailout3.samsung.com [203.254.224.33]) by gabe.freedesktop.org (Postfix) with ESMTPS id E51146E3E3 for ; Tue, 13 Oct 2015 00:01:07 -0700 (PDT) Received: from epcpsbgr5.samsung.com (u145.gpu120.samsung.co.kr [203.254.230.145]) by mailout3.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0NW50325CCTJCY40@mailout3.samsung.com> for dri-devel@lists.freedesktop.org; Tue, 13 Oct 2015 16:00:55 +0900 (KST) Received: from epcpsbgm2new.samsung.com ( [172.20.52.115]) by epcpsbgr5.samsung.com (EPCPMTA) with SMTP id 8C.9A.05385.72CAC165; Tue, 13 Oct 2015 16:00:55 +0900 (KST) X-AuditID: cbfee691-f79d66d000001509-de-561cac273d09 Received: from epmmp2 ( [203.254.227.17]) by epcpsbgm2new.samsung.com (EPCPMTA) with SMTP id FB.50.18629.72CAC165; Tue, 13 Oct 2015 16:00:55 +0900 (KST) Received: from localhost.localdomain ([10.252.81.123]) by mmp2.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0NW500D04CTI4DN1@mmp2.samsung.com>; Tue, 13 Oct 2015 16:00:54 +0900 (KST) From: Joonyoung Shim To: dri-devel@lists.freedesktop.org Subject: [PATCH 8/9] drm/exynos: use DMA_ERROR_CODE Date: Tue, 13 Oct 2015 16:00:53 +0900 Message-id: <1444719654-10639-9-git-send-email-jy0922.shim@samsung.com> X-Mailer: git-send-email 1.9.1 In-reply-to: <1444719654-10639-1-git-send-email-jy0922.shim@samsung.com> References: <1444719654-10639-1-git-send-email-jy0922.shim@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrLLMWRmVeSWpSXmKPExsWyRsSkWFd9jUyYwfvf/BZXvr5ns5h0fwKL xYt7F1ksZkx+yebA4nG/+ziTR9+WVYwBTFFcNimpOZllqUX6dglcGXuOFhdcF62Y1/aavYHx v2AXIyeHhICJxNu7sxghbDGJC/fWs3UxcnEICaxglPg1Zz4rTNGTyXOZIBKzGCVmvL/HCOH8 YJSY/KeNCaSKTUBP4s6242C2iICyxN+Jq8DGMgt4SqxYNQ8ozsEhLGAs8XanP0iYRUBV4tGb O+wgNq+Au8Tpi0+hlslJnDw2GczmFPCQeHpwKxuILQRUc+JoFyvIXgmB92wS2788ZoIYJCDx bfIhFpD5EgKyEpsOMEPMkZQ4uOIGywRG4QWMDKsYRVMLkguKk9KLTPWKE3OLS/PS9ZLzczcx AkP19L9nE3cw3j9gfYhRgINRiYf3RaRMmBBrYllxZe4hRlOgDROZpUST84ERkVcSb2hsZmRh amJqbGRuaaYkzqsj/TNYSCA9sSQ1OzW1ILUovqg0J7X4ECMTB6dUA+Mkrm9HZz/aO61L4Lr3 4S8rJ04oWrmbf7f+zgnu0qU79BdybqwO0C96cfnNfZM1vq1rhYLqIx5mZwqavD773DNHsO+e vNuyQAvjZuMJgh8a3Gf7/rJ8deeEscG82XZ5DDydGWt3/LQovP5JZvr1Y7f4TjWdOnOQZa7S BsWm7GTfhBmyPTKFTGuUWIozEg21mIuKEwFDEmCwUAIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFupikeLIzCtJLcpLzFFi42I5/e+xoK76Gpkwg9+XuS2ufH3PZjHp/gQW ixf3LrJYzJj8ks2BxeN+93Emj74tqxgDmKIaGG0yUhNTUosUUvOS81My89JtlbyD453jTc0M DHUNLS3MlRTyEnNTbZVcfAJ03TJzgFYpKZQl5pQChQISi4uV9O0wTQgNcdO1gGmM0PUNCYLr MTJAAwlrGDP2HC0uuC5aMa/tNXsD43/BLkZODgkBE4knk+cyQdhiEhfurWfrYuTiEBKYxSgx 4/09RgjnB6PE5D9tYFVsAnoSd7YdB7NFBJQl/k5cxQhiMwt4SqxYNQ8ozsEhLGAs8XanP0iY RUBV4tGbO+wgNq+Au8Tpi09ZIZbJSZw8NhnM5hTwkHh6cCsbiC0EVHPiaBfrBEbeBYwMqxgl UguSC4qT0nON8lLL9YoTc4tL89L1kvNzNzGC4+GZ9A7Gw7vcDzEKcDAq8fC+iJQJE2JNLCuu zD3EKMHBrCTCm9QCFOJNSaysSi3Kjy8qzUktPsRoCnTYRGYp0eR8YKzmlcQbGpuYGVkamRta GBmbK4nz3jjEECYkkJ5YkpqdmlqQWgTTx8TBKdXAGMF96JvTf5OMG/vrJm/ed03yXZ4nD+PP /97PSwKvHb1mKp8u0/Z17txyuwD3cxoFPydyGmy9/rTpJYco+0GWtKdLuo5USu4tPOqt9ESx 7Ofv+U1vk4Q9tE34XkYffzllc6LJgjD2FPVPbMtqPac9+Z0T/y1qypLj7bdsaxi3tUvLh0/6 bmYsr8RSnJFoqMVcVJwIAHYXAdmdAgAA DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Cc: sw0312.kim@samsung.com X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_MED, T_RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP The dma_addr of gem will be DMA_ERROR_CODE if gem is created and will keep DMA_ERROR_CODE if gem has EXYNOS_BO_NONCONTIG flag on non-iommu. Signed-off-by: Joonyoung Shim --- drivers/gpu/drm/exynos/exynos_drm_gem.c | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/drivers/gpu/drm/exynos/exynos_drm_gem.c b/drivers/gpu/drm/exynos/exynos_drm_gem.c index 96a69468283b..01c5e0854016 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_gem.c +++ b/drivers/gpu/drm/exynos/exynos_drm_gem.c @@ -44,7 +44,9 @@ static int exynos_drm_get_pages(struct exynos_drm_gem *exynos_gem) goto err; } - exynos_gem->dma_addr = sg_dma_address(sgt->sgl); + if (is_drm_iommu_supported(dev)) + exynos_gem->dma_addr = sg_dma_address(sgt->sgl); + exynos_gem->sgt = sgt; exynos_gem->pages = pages; @@ -127,11 +129,6 @@ static int exynos_drm_alloc_buf(struct exynos_drm_gem *exynos_gem) struct drm_device *dev = exynos_gem->base.dev; int ret; - if (exynos_gem->dma_addr) { - DRM_DEBUG_KMS("already allocated.\n"); - return 0; - } - if (!is_drm_iommu_supported(dev)) { if (!(exynos_gem->flags & EXYNOS_BO_NONCONTIG)) return exynos_drm_alloc_dma(exynos_gem); @@ -150,11 +147,6 @@ static void exynos_drm_free_buf(struct exynos_drm_gem *exynos_gem) { struct drm_device *dev = exynos_gem->base.dev; - if (!exynos_gem->dma_addr) { - DRM_DEBUG_KMS("dma_addr is invalid.\n"); - return; - } - if (!is_drm_iommu_supported(dev)) { if (!(exynos_gem->flags & EXYNOS_BO_NONCONTIG)) return exynos_drm_free_dma(exynos_gem); @@ -256,6 +248,8 @@ static struct exynos_drm_gem *exynos_drm_gem_init(struct drm_device *dev, return ERR_PTR(ret); } + exynos_gem->dma_addr = DMA_ERROR_CODE; + DRM_DEBUG_KMS("created file object = 0x%x\n", (unsigned int)obj->filp); return exynos_gem; @@ -594,18 +588,18 @@ exynos_drm_gem_prime_import_sg_table(struct drm_device *dev, return ERR_PTR(ret); } - exynos_gem->dma_addr = sg_dma_address(sgt->sgl); - /* * Always physically continuous memory if sgt->nents is 1. It * doesn't care if IOMMU is supported but EXYNOS_BO_NONCONTIG * flag will be cleared. It will mean the memory is continuous * for device. EXYNOS_BO_NONCONTIG flag will be set if not both. */ - if (sgt->nents == 1 || is_drm_iommu_supported(dev)) + if (sgt->nents == 1 || is_drm_iommu_supported(dev)) { exynos_gem->flags &= ~EXYNOS_BO_NONCONTIG; - else + exynos_gem->dma_addr = sg_dma_address(sgt->sgl); + } else { exynos_gem->flags |= EXYNOS_BO_NONCONTIG; + } npages = exynos_gem->size >> PAGE_SHIFT; exynos_gem->pages = drm_malloc_ab(npages, sizeof(struct page *));