From patchwork Wed Jan 23 09:39:47 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thierry Reding X-Patchwork-Id: 1029814 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-tegra-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="TsxiJ5BJ"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43l0cs6D88z9s9G for ; Wed, 23 Jan 2019 20:39:57 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727263AbfAWJj5 (ORCPT ); Wed, 23 Jan 2019 04:39:57 -0500 Received: from mail-wm1-f68.google.com ([209.85.128.68]:33001 "EHLO mail-wm1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726207AbfAWJj5 (ORCPT ); Wed, 23 Jan 2019 04:39:57 -0500 Received: by mail-wm1-f68.google.com with SMTP id r24so10513149wmh.0 for ; Wed, 23 Jan 2019 01:39:55 -0800 (PST) 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 :mime-version:content-transfer-encoding; bh=IpG077bBS8wO4pLbl1c8VJYrVjm/XU2DdyZbsHoLosY=; b=TsxiJ5BJ8rBuuCVAUe6RkHuDX+CQF36rSQRzglPrHZp+fuudyhk7UHVqEUu7ljIMYB kzNINY13Y4Dnzl5/l6zw6lp+N61ukcyW/RFzk1AorW1lPrLsMJF1mHDuZwdHfM4UObQR fJHImigGNPWwR2eeSGPUCDXTwdlLJ0PE/ImCioOSXdZcWwcksg5MvvLKLDFPq2+dC2dr /WTE+QAJu7xSAOtlvzvjX4B7lu1Xl6Vk0R+GT+fffP9q5IDiyhtHDlS7OrB31XP3MGy5 KLtvwLFa1wopSGDcnlBf2gJQjoEFRq0oCO0BTWDnaJuYjMlDnle9NAb/ZpDkar6j/Iz2 5ryg== 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:mime-version:content-transfer-encoding; bh=IpG077bBS8wO4pLbl1c8VJYrVjm/XU2DdyZbsHoLosY=; b=QVzH1Lrlkr0wCJla3WXTZKLzagVj1RvjVFa2CIdqhNCjap3z4g3TSDCPpEbwFZ4lgx Iq83V6kdrmmXbEFUnX4UGHUi/WGuSQJ+vhpZiUkkEXiPP6eZFwbT96WdUosHwJyBUwvO LimpJnAhM+0Kd4QQb5XGUNOpUYgmxWOoLUoeRwLeJJogS33RS7hHMWO494k5RdPcuFC2 zurTwUWq1X7U1aI1py1CONmjfxKfCURxmjFjuUz3cGQqxd4m+2L4y0l3AN5er6msDyKh o955wLazMCAhGUiIpdSylGNoiMZqNe7ZuFrzZjeS2KL15XW7V6GVNr2YCIuFFr6pdjth VVZw== X-Gm-Message-State: AJcUukeYgUAOQuUXVkjEZ4zQdEUA/2RGQD0CJ3kHh+njicUZHJwpSK8Y lwV9PJWXSWOpxxZSKdaEHLo= X-Google-Smtp-Source: ALg8bN5a59SS80sUiL0WB9Uw0iWJ24KEYW4fWWhhm9a54M/xDMb0GZk+gFgbC3z2WPrEbwzJoHE6RA== X-Received: by 2002:a1c:bbd6:: with SMTP id l205mr1844960wmf.97.1548236394816; Wed, 23 Jan 2019 01:39:54 -0800 (PST) Received: from localhost (pD9E51040.dip0.t-ipconnect.de. [217.229.16.64]) by smtp.gmail.com with ESMTPSA id k128sm74380785wmd.37.2019.01.23.01.39.54 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 23 Jan 2019 01:39:54 -0800 (PST) From: Thierry Reding To: Thierry Reding Cc: Mikko Perttunen , Dmitry Osipenko , dri-devel@lists.freedesktop.org, linux-tegra@vger.kernel.org Subject: [PATCH 1/5] drm/tegra: Store parent pointer in Tegra DRM clients Date: Wed, 23 Jan 2019 10:39:47 +0100 Message-Id: <20190123093951.24908-2-thierry.reding@gmail.com> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20190123093951.24908-1-thierry.reding@gmail.com> References: <20190123093951.24908-1-thierry.reding@gmail.com> MIME-Version: 1.0 Sender: linux-tegra-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-tegra@vger.kernel.org From: Thierry Reding Tegra DRM clients need access to their parent, so store a pointer to it upon registration. Signed-off-by: Thierry Reding --- drivers/gpu/drm/tegra/drm.c | 2 ++ drivers/gpu/drm/tegra/drm.h | 1 + 2 files changed, 3 insertions(+) diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c index 4b70ce664c41..61dcbd218ffc 100644 --- a/drivers/gpu/drm/tegra/drm.c +++ b/drivers/gpu/drm/tegra/drm.c @@ -1041,6 +1041,7 @@ int tegra_drm_register_client(struct tegra_drm *tegra, { mutex_lock(&tegra->clients_lock); list_add_tail(&client->list, &tegra->clients); + client->drm = tegra; mutex_unlock(&tegra->clients_lock); return 0; @@ -1051,6 +1052,7 @@ int tegra_drm_unregister_client(struct tegra_drm *tegra, { mutex_lock(&tegra->clients_lock); list_del_init(&client->list); + client->drm = NULL; mutex_unlock(&tegra->clients_lock); return 0; diff --git a/drivers/gpu/drm/tegra/drm.h b/drivers/gpu/drm/tegra/drm.h index f1763b4d5b5f..2c809755bca7 100644 --- a/drivers/gpu/drm/tegra/drm.h +++ b/drivers/gpu/drm/tegra/drm.h @@ -88,6 +88,7 @@ int tegra_drm_submit(struct tegra_drm_context *context, struct tegra_drm_client { struct host1x_client base; struct list_head list; + struct tegra_drm *drm; unsigned int version; const struct tegra_drm_client_ops *ops; From patchwork Wed Jan 23 09:39:48 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thierry Reding X-Patchwork-Id: 1029815 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-tegra-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="jOayTkBJ"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43l0cv2XL0z9s4s for ; Wed, 23 Jan 2019 20:39:59 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727264AbfAWJj7 (ORCPT ); Wed, 23 Jan 2019 04:39:59 -0500 Received: from mail-wr1-f67.google.com ([209.85.221.67]:37323 "EHLO mail-wr1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727064AbfAWJj6 (ORCPT ); Wed, 23 Jan 2019 04:39:58 -0500 Received: by mail-wr1-f67.google.com with SMTP id s12so1581369wrt.4 for ; Wed, 23 Jan 2019 01:39:57 -0800 (PST) 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 :mime-version:content-transfer-encoding; bh=+pwOb4E7QMv2s1mLGij/09z6WnnFIjoClRTuOR97cPc=; b=jOayTkBJrn2YPqgEXRvB/d3hcTy9ezINXm6xXg3NgJ+4H6WCtOvXZyJNgoKioXSZJC /03DV6jipaPXjPAJduZdC2XNsok5l05ss/Fj5G9jzHYG6YaAokD/Afwp4fZrVdjsY0be TiKTnJ4CrZtKYhmEzE/i7XM6N/H8ZUtOz86AXlUvgBzXhmTjBmRFHyntw12Kw40DJt53 pMJgslWJb4jJyb9ddyJM1/c9m02+802vH4UQtVRWcDzd7szGn6BDAE6uzJr7Q08iKuOZ beQBJfPZLsLg1J94ak2aF1oklkJitd4Y7WmJ3YwyT4FIf+gRiZyQ11GkG1Jt2Sxc0+s9 V82w== 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:mime-version:content-transfer-encoding; bh=+pwOb4E7QMv2s1mLGij/09z6WnnFIjoClRTuOR97cPc=; b=iLF1xp2Hy7XtreznYmSEe0Tp8EOoV2jDYb81uNs70ttXkBlNHTX8HMk7Xdj+jNRM8C jl9ccuKYrNnGax7dOxQcXp4J6aM7LCedg0xCl8oagd5rDhMo8EBmeiT6RG5BHuar+Z7j SumLgBOSHta5Az/GM5LLv/Zy42N4gkqk785QvO26qaqWhG63QMRu8l/5VZwH6RuTfgii 7GpZ4aU/Xi1ARGZgRCssOzhgs2JyqOAINPLYpR1QfY7D9h8AsKMZhKGajaCncTgpCvfw Cxn5GqZkxq8Gx46jsQnuoNyekAHCfeQAqBWXOysa8Lw3awa5psQkkQYxRyxYt6p7mAy9 bbRg== X-Gm-Message-State: AJcUukcl301EpMhsntgG21KEQdI12Y4Om6tz7HxvaKGWJxA3E/ge8VZq uMsxUjPI0hTRecKASUFR4dA= X-Google-Smtp-Source: ALg8bN7FVGzjzh+eVUH90YgYrss3el0UIKGORmur2bIWzkl36h65/jebh15RwGGNzmBTE0SJsPeWUg== X-Received: by 2002:adf:ab51:: with SMTP id r17mr1879997wrc.62.1548236396536; Wed, 23 Jan 2019 01:39:56 -0800 (PST) Received: from localhost (pD9E51040.dip0.t-ipconnect.de. [217.229.16.64]) by smtp.gmail.com with ESMTPSA id p139sm113458172wmd.31.2019.01.23.01.39.55 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 23 Jan 2019 01:39:55 -0800 (PST) From: Thierry Reding To: Thierry Reding Cc: Mikko Perttunen , Dmitry Osipenko , dri-devel@lists.freedesktop.org, linux-tegra@vger.kernel.org Subject: [PATCH 2/5] drm/tegra: vic: Load firmware on demand Date: Wed, 23 Jan 2019 10:39:48 +0100 Message-Id: <20190123093951.24908-3-thierry.reding@gmail.com> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20190123093951.24908-1-thierry.reding@gmail.com> References: <20190123093951.24908-1-thierry.reding@gmail.com> MIME-Version: 1.0 Sender: linux-tegra-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-tegra@vger.kernel.org From: Thierry Reding Loading the firmware requires an allocation of IOVA space to make sure that the VIC's Falcon microcontroller can read the firmware if address translation via the SMMU is enabled. However, the allocation currently happens at a time where the geometry of an IOMMU domain may not have been initialized yet. This happens for example on Tegra186 and later where an ARM SMMU is used. Domains which are created by the ARM SMMU driver postpone the geometry setup until a device is attached to the domain. This is because IOMMU domains aren't attached to a specific IOMMU instance at allocation time and hence the input address space, which defines the geometry, is not known yet. Work around this by postponing the firmware load until it is needed at the time where a channel is opened to the VIC. At this time the shared IOMMU domain's geometry has been properly initialized. As a byproduct this allows the Tegra DRM to be created in the absence of VIC firmware, since the VIC initialization no longer fails if the firmware can't be found. Signed-off-by: Thierry Reding --- drivers/gpu/drm/tegra/vic.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/tegra/vic.c b/drivers/gpu/drm/tegra/vic.c index d47983deb1cf..afbdc33f49bc 100644 --- a/drivers/gpu/drm/tegra/vic.c +++ b/drivers/gpu/drm/tegra/vic.c @@ -181,13 +181,6 @@ static int vic_init(struct host1x_client *client) vic->domain = tegra->domain; } - if (!vic->falcon.data) { - vic->falcon.data = tegra; - err = falcon_load_firmware(&vic->falcon); - if (err < 0) - goto detach; - } - vic->channel = host1x_channel_request(client->dev); if (!vic->channel) { err = -ENOMEM; @@ -256,6 +249,16 @@ static int vic_open_channel(struct tegra_drm_client *client, if (err < 0) return err; + if (!vic->falcon.data) { + vic->falcon.data = client->drm; + + err = falcon_load_firmware(&vic->falcon); + if (err < 0) { + pm_runtime_put(vic->dev); + return err; + } + } + err = vic_boot(vic); if (err < 0) { pm_runtime_put(vic->dev); From patchwork Wed Jan 23 09:39:49 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thierry Reding X-Patchwork-Id: 1029816 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-tegra-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="H6AnJVcJ"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43l0cw2GxQz9s9G for ; Wed, 23 Jan 2019 20:40:00 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727064AbfAWJkA (ORCPT ); Wed, 23 Jan 2019 04:40:00 -0500 Received: from mail-wm1-f68.google.com ([209.85.128.68]:33004 "EHLO mail-wm1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726207AbfAWJj7 (ORCPT ); Wed, 23 Jan 2019 04:39:59 -0500 Received: by mail-wm1-f68.google.com with SMTP id r24so10513245wmh.0 for ; Wed, 23 Jan 2019 01:39:58 -0800 (PST) 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 :mime-version:content-transfer-encoding; bh=BvPmDgG4ulHqAQ+1bGKSPFPNzolLo9NaU9Nj+6RSRPw=; b=H6AnJVcJj5OcaX/wVT6jicj4bAzA5VTzioS+QBdGjVVAxYG9T0Yu0HFQKwrHUdJnU4 is5ExlsfJLkwnaTQDrdbefsYiCT4wX7lCa2HboXJBU96ksuwUj9rq5k2AXlOU2AEgy+q 4UHoUYrgn8vQobn4gmfZcT7xC2uVMwpJZmFnIfYzbQghoH9I7QqCGUDklnIFFUzztLIh xSb2S9Ka7W/FTrVbtGbvvWpupHObF2qt8pVDbHr5mUDpNzNWkPlwkhRCQxTp+X7o4e4Q u+W0wnHAaH1qlUe5Efry8qVKRfJDoOa5pVjLdyZn6QKHgm/XUGeqyzAIzSkgXKblYMKn QqYg== 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:mime-version:content-transfer-encoding; bh=BvPmDgG4ulHqAQ+1bGKSPFPNzolLo9NaU9Nj+6RSRPw=; b=W15t8eOGg+iu7p4kO6d875T3s1zaM1CHECxk/82xbtY4yW643dm+WuQXUK3CKczeAl yS6wRbh1wH5fnmFeukN0y9MpvsmvdlmRPvWadhztfYD6yOeH3zERLSl/dA+mtcGulW2d 4nJZrIAZ4BgzdX5pBSLziYkBjXAhpPrlVmtur3LaA/+qjpY0OUi9qZTx25821Hy6kgAL JpmmCALtl9n6inMc5BlTRdZfQjzmCnsruRX7Sx3FAQXTgfOKjY6Ux2yG8S19b2V/qu57 Xe9+NjW6mb6ClXjIll1K3TIw00Kz3XllZ65efgBruUTjr9IYXDIfIidFqe3sQOz5H9Fn eE7w== X-Gm-Message-State: AJcUukd6ME4ZlTzCnL6podERxbub0wi6HGKwKqczk8a64TrSEK4IEmEv OfrXDnAXa+l8UzTJunk+ym8= X-Google-Smtp-Source: ALg8bN5dd0S89GxPjnP24X/L/oxhR3dlkFeIvwqOLvP56+O+POOEamWNxAtMvljc+6zZRSSs63LXvA== X-Received: by 2002:a1c:1688:: with SMTP id 130mr1891566wmw.86.1548236397934; Wed, 23 Jan 2019 01:39:57 -0800 (PST) Received: from localhost (pD9E51040.dip0.t-ipconnect.de. [217.229.16.64]) by smtp.gmail.com with ESMTPSA id y13sm80982074wrn.73.2019.01.23.01.39.57 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 23 Jan 2019 01:39:57 -0800 (PST) From: Thierry Reding To: Thierry Reding Cc: Mikko Perttunen , Dmitry Osipenko , dri-devel@lists.freedesktop.org, linux-tegra@vger.kernel.org Subject: [PATCH 3/5] drm/tegra: Setup shared IOMMU domain after initialization Date: Wed, 23 Jan 2019 10:39:49 +0100 Message-Id: <20190123093951.24908-4-thierry.reding@gmail.com> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20190123093951.24908-1-thierry.reding@gmail.com> References: <20190123093951.24908-1-thierry.reding@gmail.com> MIME-Version: 1.0 Sender: linux-tegra-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-tegra@vger.kernel.org From: Thierry Reding Move initialization of the shared IOMMU domain after the host1x device has been initialized. At this point all the Tegra DRM clients have been attached to the shared IOMMU domain. This is important because Tegra186 and later use an ARM SMMU, for which the driver defers setting up the geometry for a domain until a device is attached to it. This is to ensure that the domain is properly set up for a specific ARM SMMU instance, which is unknown at allocation time. Signed-off-by: Thierry Reding Reviewed-by: Dmitry Osipenko --- drivers/gpu/drm/tegra/drm.c | 54 ++++++++++++++++++++----------------- 1 file changed, 29 insertions(+), 25 deletions(-) diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c index 61dcbd218ffc..271c7a5fc954 100644 --- a/drivers/gpu/drm/tegra/drm.c +++ b/drivers/gpu/drm/tegra/drm.c @@ -92,10 +92,6 @@ static int tegra_drm_load(struct drm_device *drm, unsigned long flags) return -ENOMEM; if (iommu_present(&platform_bus_type)) { - u64 carveout_start, carveout_end, gem_start, gem_end; - struct iommu_domain_geometry *geometry; - unsigned long order; - tegra->domain = iommu_domain_alloc(&platform_bus_type); if (!tegra->domain) { err = -ENOMEM; @@ -105,27 +101,6 @@ static int tegra_drm_load(struct drm_device *drm, unsigned long flags) 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; - carveout_start = gem_end + 1; - carveout_end = geometry->aperture_end; - - order = __ffs(tegra->domain->pgsize_bitmap); - init_iova_domain(&tegra->carveout.domain, 1UL << order, - carveout_start >> order); - - tegra->carveout.shift = iova_shift(&tegra->carveout.domain); - tegra->carveout.limit = carveout_end >> tegra->carveout.shift; - - drm_mm_init(&tegra->mm, gem_start, gem_end - gem_start + 1); - mutex_init(&tegra->mm_lock); - - DRM_DEBUG("IOMMU apertures:\n"); - DRM_DEBUG(" GEM: %#llx-%#llx\n", gem_start, gem_end); - DRM_DEBUG(" Carveout: %#llx-%#llx\n", carveout_start, - carveout_end); } mutex_init(&tegra->clients_lock); @@ -159,6 +134,35 @@ static int tegra_drm_load(struct drm_device *drm, unsigned long flags) if (err < 0) goto fbdev; + if (tegra->domain) { + u64 carveout_start, carveout_end, gem_start, gem_end; + dma_addr_t start, end; + unsigned long order; + + start = tegra->domain->geometry.aperture_start; + end = tegra->domain->geometry.aperture_end; + + gem_start = start; + gem_end = end - CARVEOUT_SZ; + carveout_start = gem_end + 1; + carveout_end = end; + + order = __ffs(tegra->domain->pgsize_bitmap); + init_iova_domain(&tegra->carveout.domain, 1UL << order, + carveout_start >> order); + + tegra->carveout.shift = iova_shift(&tegra->carveout.domain); + tegra->carveout.limit = carveout_end >> tegra->carveout.shift; + + drm_mm_init(&tegra->mm, gem_start, gem_end - gem_start + 1); + mutex_init(&tegra->mm_lock); + + DRM_DEBUG("IOMMU apertures:\n"); + DRM_DEBUG(" GEM: %#llx-%#llx\n", gem_start, gem_end); + DRM_DEBUG(" Carveout: %#llx-%#llx\n", carveout_start, + carveout_end); + } + if (tegra->hub) { err = tegra_display_hub_prepare(tegra->hub); if (err < 0) From patchwork Wed Jan 23 09:39:50 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thierry Reding X-Patchwork-Id: 1029817 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-tegra-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="Bsg7dHCl"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43l0cy5xf4z9s9G for ; Wed, 23 Jan 2019 20:40:02 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727266AbfAWJkC (ORCPT ); Wed, 23 Jan 2019 04:40:02 -0500 Received: from mail-wm1-f65.google.com ([209.85.128.65]:55211 "EHLO mail-wm1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726207AbfAWJkC (ORCPT ); Wed, 23 Jan 2019 04:40:02 -0500 Received: by mail-wm1-f65.google.com with SMTP id a62so1269017wmh.4 for ; Wed, 23 Jan 2019 01:40:00 -0800 (PST) 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 :mime-version:content-transfer-encoding; bh=cUH3hZoO0g/LZ+pZUMo8PX/7722b7rvBvBxyOPDoCcc=; b=Bsg7dHClEumIlK7NQ90RfSh3oKFnQjzi1DpXim7CEZogTl5jO7wEb4YvkHIYiXncOp p5Yclo1Yy2UL/5hPGOuTOPMIYfmvB8l9bMJVgNsLyheh9qmrfPW8TS/stGYbCrksG66u wG3dzQpWNDd6BXBqVX27RRI4mWWbXRcSHJCpDFXqBKu5P1qtoWVfT+GqU0zQr+wESClw 9KVsGP/ScNWGfKYik2WM2yZChoU7Ui2qBU3gYm/2ye0HF0Q2OPXOnUJKWjA633TjgTeO Ns+d/ctJB0GlRzc+BnPmO1Th6Ug24ptAT98od76gG2K4RDxROkSbQLKdEuSrG4l9GjfM WZGQ== 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:mime-version:content-transfer-encoding; bh=cUH3hZoO0g/LZ+pZUMo8PX/7722b7rvBvBxyOPDoCcc=; b=HuPxiGEBUmkORyPv0nbcAs4ybQiRyvqbGWboVGajL8eb/HzIQlrg8Rg3ewvVh5bC5n ceaBQLd9J9Vo4HODgV0Z+yq2VqFCjrjZt+SIWWw2fH1oAwKUaIBH/cfolrkTI/mXCtOq ssvXz2Z5Ohif3zkmlxZn7VB3qL9mG2wbl3NUkvaj/p6ZGnEZNnRkNoERNJrRO+r65rDE G5e5sAo20p0LcdkL8UmSt5Ia2+24QHvTrtjW26Y5b1WOpJ3DCGf+FPrAB7zglqEdU4Fn 2uh24z3q30vr3FsFBLWDdzDLsR7pROAG0LgWbOOfRZTDJ3R6V6HkgXN2v1WJAfIW6UCu EBaQ== X-Gm-Message-State: AJcUukfxUyqhZjwmRnrxq5SX8s6UiXIGnIDSewBaCe2e+q/+zA6/mqj8 tVwTVWUyF0Zlzdml1gW1yUQ= X-Google-Smtp-Source: ALg8bN7yzEsHes0VDsRw07KZi9RcP9Vz+FDVPEv5AkJ3TLD9sYzAr9A67oX0STPfjCYHGdOHtHmNig== X-Received: by 2002:a1c:5a42:: with SMTP id o63mr1957199wmb.88.1548236399590; Wed, 23 Jan 2019 01:39:59 -0800 (PST) Received: from localhost (pD9E51040.dip0.t-ipconnect.de. [217.229.16.64]) by smtp.gmail.com with ESMTPSA id x20sm77813081wme.6.2019.01.23.01.39.58 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 23 Jan 2019 01:39:58 -0800 (PST) From: Thierry Reding To: Thierry Reding Cc: Mikko Perttunen , Dmitry Osipenko , dri-devel@lists.freedesktop.org, linux-tegra@vger.kernel.org Subject: [PATCH 4/5] drm/tegra: Restrict IOVA space to DMA mask Date: Wed, 23 Jan 2019 10:39:50 +0100 Message-Id: <20190123093951.24908-5-thierry.reding@gmail.com> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20190123093951.24908-1-thierry.reding@gmail.com> References: <20190123093951.24908-1-thierry.reding@gmail.com> MIME-Version: 1.0 Sender: linux-tegra-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-tegra@vger.kernel.org From: Thierry Reding On Tegra186 and later, the ARM SMMU provides an input address space that is 48 bits wide. However, memory clients can only address up to 40 bits. If the geometry is used as-is, allocations of IOVA space can end up in a region that cannot be addressed by the memory clients. To fix this, restrict the IOVA space to the DMA mask of the host1x device. Note that, technically, the IOVA space needs to be restricted to the intersection of the DMA masks for all clients that are attached to the IOMMU domain. In practice using the DMA mask of the host1x device is sufficient because all host1x clients share the same DMA mask. Signed-off-by: Thierry Reding --- drivers/gpu/drm/tegra/drm.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c index 271c7a5fc954..0c5f1e6a0446 100644 --- a/drivers/gpu/drm/tegra/drm.c +++ b/drivers/gpu/drm/tegra/drm.c @@ -136,11 +136,12 @@ static int tegra_drm_load(struct drm_device *drm, unsigned long flags) if (tegra->domain) { u64 carveout_start, carveout_end, gem_start, gem_end; + u64 dma_mask = dma_get_mask(&device->dev); dma_addr_t start, end; unsigned long order; - start = tegra->domain->geometry.aperture_start; - end = tegra->domain->geometry.aperture_end; + start = tegra->domain->geometry.aperture_start & dma_mask; + end = tegra->domain->geometry.aperture_end & dma_mask; gem_start = start; gem_end = end - CARVEOUT_SZ; From patchwork Wed Jan 23 09:39:51 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thierry Reding X-Patchwork-Id: 1029818 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-tegra-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="W+MpxFir"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43l0cz4hLQz9s9h for ; Wed, 23 Jan 2019 20:40:03 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726207AbfAWJkD (ORCPT ); Wed, 23 Jan 2019 04:40:03 -0500 Received: from mail-wm1-f67.google.com ([209.85.128.67]:35154 "EHLO mail-wm1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726804AbfAWJkC (ORCPT ); Wed, 23 Jan 2019 04:40:02 -0500 Received: by mail-wm1-f67.google.com with SMTP id t200so1282373wmt.0 for ; Wed, 23 Jan 2019 01:40:01 -0800 (PST) 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 :mime-version:content-transfer-encoding; bh=0S5b4a+9SaKfxqWDQqRsQruhZWip5+9qaZC2ybeTNek=; b=W+MpxFirSfonXw+6hrYmxO2ghotbKXRqQAaUvE9norSg5EIzybb1Q15JWlNyiSIswv 6AJySleLwSpVoaAro2a8omGWxLXoMCGbMgm8h+Uw84N1hlZrPFzErQvXPI6bdOkBby16 RG6FHLEeYZ27hsLRU+ZGSy9jnkT3iv0e4H8XZJub1N5imjD0GZzJEFWVfwyf0fcWyAs/ P8I6X3mAC2zmaIZLdcc3rD0zu6sgnnnE0M3ghpTsOAfXx6XFFFtkhRwl5CPbTXOT0jZw EJPc8gljDc49VFrOSPcmd7JocODklromatJC24MpUuA4IyVGytluEILCjCMaxqjkrjnf nvig== 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:mime-version:content-transfer-encoding; bh=0S5b4a+9SaKfxqWDQqRsQruhZWip5+9qaZC2ybeTNek=; b=o46TKQ7n31DSFKksqyaNf++J5D+qazW2GpBIGPg6YNfZoGFx5ynJanHI0ZVCm0jfYH RXFOkFw01sHnRn4YzD1Wg6rT3OOiJDIZ10SkmO6NH3orB7+/3IJnFMkoTqYHXAa1kJpK Hb8nBDhHYvDTzP4h9gjFC31LLuqG+GGn0CkvD2M9Pn3TD8U8Kw50Hkxyf6xuoGXsUspC yOJs74lN65iPC8ayQZ7Z/8/APShME104LPR8TBdiwK46wgMPmrhEGf2PgqbHs6ckaigO khaobW2EcDj3h8CVzG3gS/QN7uMydHTtt/5NdIs1iK/NycjhOl5Blmbozz9KS0M+lwkX XeQA== X-Gm-Message-State: AJcUukfcshRD46R2SDO6a6P6QetCZAKs+rqGC27EpvmwA3nzbUKaVy0d gBXzDFkppFR2SRgp8it7eHvGrRsNHPE= X-Google-Smtp-Source: ALg8bN7d+AkVRcZ7PG7Wr7/OZIccRgeeq3vQbnyDFwJLw/d4IboUKr/KntlpkeKsUH7PWequbfh0HA== X-Received: by 2002:a1c:9a4c:: with SMTP id c73mr2044401wme.35.1548236400954; Wed, 23 Jan 2019 01:40:00 -0800 (PST) Received: from localhost (pD9E51040.dip0.t-ipconnect.de. [217.229.16.64]) by smtp.gmail.com with ESMTPSA id b18sm84356890wrw.83.2019.01.23.01.40.00 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 23 Jan 2019 01:40:00 -0800 (PST) From: Thierry Reding To: Thierry Reding Cc: Mikko Perttunen , Dmitry Osipenko , dri-devel@lists.freedesktop.org, linux-tegra@vger.kernel.org Subject: [PATCH 5/5] gpu: host1x: Supports 40-bit addressing on Tegra186 Date: Wed, 23 Jan 2019 10:39:51 +0100 Message-Id: <20190123093951.24908-6-thierry.reding@gmail.com> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20190123093951.24908-1-thierry.reding@gmail.com> References: <20190123093951.24908-1-thierry.reding@gmail.com> MIME-Version: 1.0 Sender: linux-tegra-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-tegra@vger.kernel.org From: Thierry Reding The host1x and clients instantiated on Tegra186 support addressing 40 bits of memory. Signed-off-by: Thierry Reding --- drivers/gpu/host1x/dev.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/host1x/dev.c b/drivers/gpu/host1x/dev.c index 419d8929a98f..32fad4da7936 100644 --- a/drivers/gpu/host1x/dev.c +++ b/drivers/gpu/host1x/dev.c @@ -127,7 +127,7 @@ static const struct host1x_info host1x06_info = { .nb_bases = 16, .init = host1x06_init, .sync_offset = 0x0, - .dma_mask = DMA_BIT_MASK(34), + .dma_mask = DMA_BIT_MASK(40), .has_hypervisor = true, };