From patchwork Mon Apr 23 06:57:45 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thierry Reding X-Patchwork-Id: 10356243 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 422D3601D3 for ; Mon, 23 Apr 2018 06:57:56 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 3366128992 for ; Mon, 23 Apr 2018 06:57:56 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 28578289C9; Mon, 23 Apr 2018 06:57:56 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.1 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id D5FE128992 for ; Mon, 23 Apr 2018 06:57:55 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 67AA06E110; Mon, 23 Apr 2018 06:57:54 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-wr0-x241.google.com (mail-wr0-x241.google.com [IPv6:2a00:1450:400c:c0c::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id A0BE26E110 for ; Mon, 23 Apr 2018 06:57:50 +0000 (UTC) Received: by mail-wr0-x241.google.com with SMTP id v60-v6so37965019wrc.7 for ; Sun, 22 Apr 2018 23:57:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=ME/6bow10ZG6XxX0f5KS+P5hfA0BEAE4RMXTRtf9iBE=; b=rnQj1O/NTsnAhsA22N2DhYDKoPwbxNWPj3jfjFMpFN5EgX4x0Yjo29yGMWezL7YZdc Hj0/EIDBNZr4IaLrlY8hOdJqzRGVfI1nNSXr3ulA/Mq+KAdkFmwrdCUbEoLnZdAXChlC 3Y/brS+heVhkX4AHWGxtp0EO5EscFVpmw9Mj+AE6ijC8HN/ZTkzXqcnb80H56gpWRMLN Q9WiIefEq2e1teBYgdODM9WLacJTT5Z74GEzO3GOJlU58FDlVejYveTRYHxXrUu66dWk QrWbUDDgQ7CQsYMSInbdpCg5D1RCPzwmRHlN6sBKbxryi7nBGjw+0e5dFykV/Bqa1IZ7 rbZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=ME/6bow10ZG6XxX0f5KS+P5hfA0BEAE4RMXTRtf9iBE=; b=IUj9rwmQ3Y21IrRtqGWZKH1BZ6f/qF1x3JcCFvh4nV5aPMMvLfZ75zfN2moM6lyp1K O7vOXrqiYhHKHZEBC/RYwnaLVtPdc0IzE2G5o1W5BhjVKnVdiyn1OemtiBLeEdqRImOr WuubdY4PQXCcM2U6y4wAyNM4zs46tUzNBa/9tCAea6ckVf6cfdwhC5oLA88/iUcWct30 ULBQJ7W5jc1ZMi7xsDj4rK0qAO63TcyJPvBBcPP0UnXss6tYxLo8xaVCyVDZNnYfSYA2 fX626ZguGN7Sz84IoAd7E5ez+CxvLAzKZa0aclVMrxdPa0NXKo7d7T/yCjjLwiHLzz3C mWIw== X-Gm-Message-State: ALQs6tA3WE9nmPkpn1CoR/FbhZ5I7iK3KQ5W9Dj1pCyQqR606UBDDYzp F+zwzKynYByP/ByObhRc/vGQQg== X-Google-Smtp-Source: AIpwx4/1QjEXHTjmvXZxodNESxnDPl/TpM1mamZAsPawj5YmTktGqAFsQxBPyN87kE9kqvDW3/z2ow== X-Received: by 10.28.8.212 with SMTP id 203mr9160554wmi.9.1524466669092; Sun, 22 Apr 2018 23:57:49 -0700 (PDT) Received: from localhost (p200300E41F041C0032947E635CB49D15.dip0.t-ipconnect.de. [2003:e4:1f04:1c00:3294:7e63:5cb4:9d15]) by smtp.gmail.com with ESMTPSA id r8sm16934206wmg.44.2018.04.22.23.57.48 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sun, 22 Apr 2018 23:57:48 -0700 (PDT) From: Thierry Reding To: Thierry Reding Subject: [PATCH 2/2] drm/tegra: Acquire a reference to the IOVA cache Date: Mon, 23 Apr 2018 08:57:45 +0200 Message-Id: <20180423065745.26102-2-thierry.reding@gmail.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180423065745.26102-1-thierry.reding@gmail.com> References: <20180423065745.26102-1-thierry.reding@gmail.com> X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-tegra@vger.kernel.org, Dmitry Osipenko , dri-devel@lists.freedesktop.org, Mikko Perttunen MIME-Version: 1.0 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP From: Thierry Reding The IOVA API uses a memory cache to allocate IOVA nodes from. To make sure that this cache is available, obtain a reference to it and release the reference when the cache is no longer needed. On 64-bit ARM this is hidden by the fact that the DMA mapping API gets that reference and never releases it. On 32-bit ARM, however, the DMA mapping API doesn't do that, so allocation of IOVA nodes fails. Signed-off-by: Thierry Reding Reviewed-by: Dmitry Osipenko Tested-by: Dmitry Osipenko --- drivers/gpu/drm/tegra/drm.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c index 4a696fa274a3..0540b0741df6 100644 --- a/drivers/gpu/drm/tegra/drm.c +++ b/drivers/gpu/drm/tegra/drm.c @@ -115,6 +115,10 @@ static int tegra_drm_load(struct drm_device *drm, unsigned long flags) goto free; } + err = iova_cache_get(); + if (err < 0) + goto domain; + geometry = &tegra->domain->geometry; gem_start = geometry->aperture_start; gem_end = geometry->aperture_end - CARVEOUT_SZ; @@ -205,11 +209,12 @@ static int tegra_drm_load(struct drm_device *drm, unsigned long flags) tegra_drm_fb_free(drm); config: drm_mode_config_cleanup(drm); - +domain: if (tegra->domain) { mutex_destroy(&tegra->mm_lock); drm_mm_takedown(&tegra->mm); put_iova_domain(&tegra->carveout.domain); + iova_cache_put(); iommu_domain_free(tegra->domain); } free: @@ -236,6 +241,7 @@ static void tegra_drm_unload(struct drm_device *drm) mutex_destroy(&tegra->mm_lock); drm_mm_takedown(&tegra->mm); put_iova_domain(&tegra->carveout.domain); + iova_cache_put(); iommu_domain_free(tegra->domain); }