From patchwork Wed Sep 16 05:14:54 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joonyoung Shim X-Patchwork-Id: 7190821 Return-Path: X-Original-To: patchwork-dri-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 6D0D69F336 for ; Wed, 16 Sep 2015 05:15:02 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 8313D208A2 for ; Wed, 16 Sep 2015 05:15:01 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id 4010420611 for ; Wed, 16 Sep 2015 05:15:00 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id AEE676E4D8; Tue, 15 Sep 2015 22:14:58 -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 5A50D6E4D8 for ; Tue, 15 Sep 2015 22:14:57 -0700 (PDT) Received: from epcpsbgr3.samsung.com (u143.gpu120.samsung.co.kr [203.254.230.143]) by mailout3.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0NUR01P2F7WUVXE0@mailout3.samsung.com> for dri-devel@lists.freedesktop.org; Wed, 16 Sep 2015 14:14:54 +0900 (KST) Received: from epcpsbgm2new.samsung.com ( [172.20.52.115]) by epcpsbgr3.samsung.com (EPCPMTA) with SMTP id 69.6A.24422.ECAF8F55; Wed, 16 Sep 2015 14:14:54 +0900 (KST) X-AuditID: cbfee68f-f793b6d000005f66-96-55f8face11ae Received: from epmmp2 ( [203.254.227.17]) by epcpsbgm2new.samsung.com (EPCPMTA) with SMTP id 41.02.18629.ECAF8F55; Wed, 16 Sep 2015 14:14:54 +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 <0NUR005IX7WUP4D1@mmp2.samsung.com>; Wed, 16 Sep 2015 14:14:54 +0900 (KST) From: Joonyoung Shim To: dri-devel@lists.freedesktop.org Subject: [PATCH] drm/exynos: fix missed calling of drm_prime_gem_destroy() Date: Wed, 16 Sep 2015 14:14:54 +0900 Message-id: <1442380494-32170-1-git-send-email-jy0922.shim@samsung.com> X-Mailer: git-send-email 1.9.1 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrGLMWRmVeSWpSXmKPExsWyRsSkWPfcrx+hBr9mKFhc+fqezWLS/Qks Fi/uXWSxmDH5JZsDi8f97uNMHn1bVjEGMEVx2aSk5mSWpRbp2yVwZbzc0MdesEGo4svGe8wN jFv5uxg5OCQETCR+9Up3MXICmWISF+6tZ+ti5OIQEljBKPGxrZcVImEicfvEKiaIxCxGiT9T 5rFAOD8YJa59+8EOUsUmoCdxZ9txJhBbREBZ4u/EVYwgNrOAp8SKVfPA4sICXhLTp15mA7FZ BFQlJp57B2bzCrhL/Nr+hg1im5zEyWOTWUEWSAjcZpNo+7KWBaJBQOLb5EMsEGfLSmw6wAxR LylxcMUNlgmMggsYGVYxiqYWJBcUJ6UXGesVJ+YWl+al6yXn525iBAbf6X/P+ncw3j1gfYhR gINRiYf3xbMfoUKsiWXFlbmHGE2BNkxklhJNzgeGeF5JvKGxmZGFqYmpsZG5pZmSOO9CqZ/B QgLpiSWp2ampBalF8UWlOanFhxiZODilGhiXXmMOrKpefy7hFEtKcmxzY7XKPYHl13clTC65 scGjXfG0ytxvJ0KYl22cuckwMNQjJeKM/46q3N3f1GT4X+VMmGjEFvMn4Lrq2g8b1+mGPr9l VuMjsGtdyL5T8bmpIesvN337vi717O6DIlt/2Nx/0CLpz8g3zfZ7osTySk+nDzXpP78+++2i xFKckWioxVxUnAgAFMIdIDkCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrCLMWRmVeSWpSXmKPExsVy+t9jQd1zv36EGmxfIm1x5et7NotJ9yew WLy4d5HFYsbkl2wOLB73u48zefRtWcUYwBTVwGiTkZqYklqkkJqXnJ+SmZduq+QdHO8cb2pm YKhraGlhrqSQl5ibaqvk4hOg65aZA7RKSaEsMacUKBSQWFyspG+HaUJoiJuuBUxjhK5vSBBc j5EBGkhYw5jxckMfe8EGoYovG+8xNzBu5e9i5OSQEDCRuH1iFROELSZx4d56ti5GLg4hgVmM En+mzGOBcH4wSlz79oMdpIpNQE/izrbjYB0iAsoSfyeuYgSxmQU8JVasmgcWFxbwkpg+9TIb iM0ioCox8dw7MJtXwF3i1/Y3bBDb5CROHpvMOoGRewEjwypGidSC5ILipPRco7zUcr3ixNzi 0rx0veT83E2M4BB/Jr2D8fAu90OMAhyMSjy8Di9/hAqxJpYVV+YeYpTgYFYS4e3dDxTiTUms rEotyo8vKs1JLT7EaAp0wERmKdHkfGD85ZXEGxqbmBlZGpkbWhgZmyuJ88qufBYqJJCeWJKa nZpakFoE08fEwSnVwLj9Vnbi2W0Nm+/+WtBwmGOP5RrrxSeC7e82JnOx51bzzL4u3+w9X+Aa D3fkJNmAxpQ5CW9b7jx/ovPatET0mBWjbbvJKtWnTnlqN86oXd0ywXzb4aOWUb/Sd75b9DMn R9Cv/OJjK8HaL36/GfM/nJXf/PWCtftW6b4ajoBLN17fDcu9tuDIoyYlluKMREMt5qLiRACT iRqShwIAAA== 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 When obj->import_attach is existed, code calling drm_prime_gem_destroy() was removed from commit 67e93c808b48 ("drm/exynos: stop copying sg table"), and it's a fault. The drm_prime_gem_destroy() is cleanup function which GEM drivers need to call when they use drm_gem_prime_import() to import dma-bufs, so exynos-drm driver using drm_gem_prime_import() needs calling drm_prime_gem_destroy(). Signed-off-by: Joonyoung Shim Reviewed-by: Gustavo Padovan --- drivers/gpu/drm/exynos/exynos_drm_gem.c | 9 +++++---- drivers/gpu/drm/exynos/exynos_drm_gem.h | 2 ++ 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/exynos/exynos_drm_gem.c b/drivers/gpu/drm/exynos/exynos_drm_gem.c index a4fb78e..ce05f13 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_gem.c +++ b/drivers/gpu/drm/exynos/exynos_drm_gem.c @@ -157,11 +157,10 @@ void exynos_drm_gem_destroy(struct exynos_drm_gem_obj *exynos_gem_obj) * once dmabuf's refcount becomes 0. */ if (obj->import_attach) - goto out; - - exynos_drm_free_buf(exynos_gem_obj); + drm_prime_gem_destroy(obj, exynos_gem_obj->sgt); + else + exynos_drm_free_buf(exynos_gem_obj); -out: drm_gem_free_mmap_offset(obj); /* release file pointer to gem object. */ @@ -589,6 +588,8 @@ exynos_drm_gem_prime_import_sg_table(struct drm_device *dev, if (ret < 0) goto err_free_large; + exynos_gem_obj->sgt = sgt; + if (sgt->nents == 1) { /* always physically continuous memory if sgt->nents is 1. */ exynos_gem_obj->flags |= EXYNOS_BO_CONTIG; diff --git a/drivers/gpu/drm/exynos/exynos_drm_gem.h b/drivers/gpu/drm/exynos/exynos_drm_gem.h index cd62f84..97bb48b 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_gem.h +++ b/drivers/gpu/drm/exynos/exynos_drm_gem.h @@ -39,6 +39,7 @@ * - this address could be physical address without IOMMU and * device address with IOMMU. * @pages: Array of backing pages. + * @sgt: Imported sg_table. * * P.S. this object would be transferred to user as kms_bo.handle so * user can access the buffer through kms_bo.handle. @@ -52,6 +53,7 @@ struct exynos_drm_gem_obj { dma_addr_t dma_addr; struct dma_attrs dma_attrs; struct page **pages; + struct sg_table *sgt; }; struct page **exynos_gem_get_pages(struct drm_gem_object *obj, gfp_t gfpmask);