Received: by 2002:a6b:fb09:0:0:0:0:0 with SMTP id h9csp4753945iog; Wed, 22 Jun 2022 05:20:10 -0700 (PDT) X-Google-Smtp-Source: AGRyM1tirG4hT+PIUySfKRqge+tb5Al+3l1QUKccS6IC1Jp7+ECVt/BRgdv5K+dJ45OG2zuW9/b0 X-Received: by 2002:a05:6402:2682:b0:42e:1c85:7ddc with SMTP id w2-20020a056402268200b0042e1c857ddcmr3706635edd.143.1655900409909; Wed, 22 Jun 2022 05:20:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1655900409; cv=none; d=google.com; s=arc-20160816; b=z0s2YrhlnAwtJEaFbssFR6QaexWw9WX2Q6M9i2W7dUmGMjcyw8DVxmNM0RGnhMF1yc kmWm4M6iBckM99hLhVzEuIK+4Rl46lUhrqgIkzxcAaVNAJIeGCn7VOX0cLHSs9poQd3l IuxWoPUdKaXpSrF8boxXc1n/Z3hJ51oKLMX//NfI+sACR86Gzp4UwW9O5l+gvnxMV4x+ i58MlPP38kzOK+YyhRfpeU0V8Og29ZK/6a5gutvVxkQ+Lm6AKXZ0Qs9VScWxqs/ef2GK A6dj7nGmI0xPJTNDmxYQlZK4Xdblv0YSeg009fNV9ciNotxtI04XEN0vu/N7lVypxtvQ wnPA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=jqNVkhlKQgqXtLeAWprMxZosE+nkqym2SEmCMhLQNlc=; b=bpHyYDhAv10hwrXalxDiiTDWK0uijg+oycT8hZhMy6ioxcnxYDu+uHitDk8efDn59N ufEy4EaC54V0MIsVAJuXlBkABrmHC8ArUUT5iQp+ApLc9zC5IqeBJ+/qtjiALL+YK9zV zSaKw9AZV62a3qmdhW781yxBrr6yK+1E6cHyIyOGMrMKPCEyvUz8HPqmassrh8tfQ/by EFdNLHa2HHutegm5dg02zViivldzqxQ3JSLCKSUQtKNXYKlOVVeAJWWWlfn6pnut9kpM 9B3SxQBrZXYZhxHcCue//2iqEW1mcQ7tY78DWeoQQcxiTAs4f61B+uhlrM5JZcNasgkb /90w== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@kapsi.fi header.s=20161220 header.b=mn3CrmN0; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id u23-20020a1709060b1700b00722f74fff57si884388ejg.313.2022.06.22.05.19.39; Wed, 22 Jun 2022 05:20:09 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=fail header.i=@kapsi.fi header.s=20161220 header.b=mn3CrmN0; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1357744AbiFVLiS (ORCPT + 99 others); Wed, 22 Jun 2022 07:38:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48268 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1355718AbiFVLhx (ORCPT ); Wed, 22 Jun 2022 07:37:53 -0400 Received: from mail.kapsi.fi (mail.kapsi.fi [IPv6:2001:67c:1be8::25]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 23FBD3B3FB; Wed, 22 Jun 2022 04:37:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=kapsi.fi; s=20161220; h=Content-Transfer-Encoding:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To:Content-Type:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=jqNVkhlKQgqXtLeAWprMxZosE+nkqym2SEmCMhLQNlc=; b=mn3CrmN0z0NwQ0iOxoQ+6IgzlH QJYgFjCaU6qmHjIav62mRC2tIuUvguRVCr74FNAcMghvD2dY54jQWA6kzkQaP4/VI3DcHgYmv793n W73D8Sji2BG29TDWlHCO3cM/VYvPmktocY3zb++HZsbMwOBTbt8qkC2L+eTJGBlruDwvs3wLChyTg 1uLLxIFhm+utzzbfNyoSeu5IjXJNeFkaYbEQ8Tn9Zg0bw4MOKQg0ZPwZk2twxB68dSR/CyKKD0vC/ AlyB3/RSYqoXvGp5/lH3YIul6YKxitUGaIfzlf5egITzbuTkg1O+ek31kvYDc1BbJtLVSHOrcJB0y dt3YZ58g==; Received: from 91-158-25-70.elisa-laajakaista.fi ([91.158.25.70] helo=toshino.localdomain) by mail.kapsi.fi with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1o3yg3-0001Xl-Pu; Wed, 22 Jun 2022 14:37:42 +0300 From: Mikko Perttunen To: thierry.reding@gmail.com, jonathanh@nvidia.com, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, digetx@gmail.com Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org, Mikko Perttunen Subject: [PATCH v2 06/13] gpu: host1x: Program virtualization tables Date: Wed, 22 Jun 2022 14:37:26 +0300 Message-Id: <20220622113733.1710471-7-cyndis@kapsi.fi> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220622113733.1710471-1-cyndis@kapsi.fi> References: <20220622113733.1710471-1-cyndis@kapsi.fi> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SA-Exim-Connect-IP: 91.158.25.70 X-SA-Exim-Mail-From: cyndis@kapsi.fi X-SA-Exim-Scanned: No (on mail.kapsi.fi); SAEximRunCond expanded to false X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Mikko Perttunen Program virtualization tables specifying which VMs have access to which Host1x hardware resources. Programming these has become mandatory in Tegra234. For now, since the driver does not operate as a Host1x hypervisor, we basically allow access to everything to everyone. Signed-off-by: Mikko Perttunen --- drivers/gpu/host1x/dev.c | 21 ++++++++++++++++++--- drivers/gpu/host1x/dev.h | 8 ++++++++ 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/host1x/dev.c b/drivers/gpu/host1x/dev.c index 8c6ce8014c09..5a57165ab0f6 100644 --- a/drivers/gpu/host1x/dev.c +++ b/drivers/gpu/host1x/dev.c @@ -217,7 +217,7 @@ static const struct of_device_id host1x_of_match[] = { }; MODULE_DEVICE_TABLE(of, host1x_of_match); -static void host1x_setup_sid_table(struct host1x *host) +static void host1x_setup_virtualization_tables(struct host1x *host) { const struct host1x_info *info = host->info; unsigned int i; @@ -231,6 +231,21 @@ static void host1x_setup_sid_table(struct host1x *host) host1x_hypervisor_writel(host, entry->offset, entry->base); host1x_hypervisor_writel(host, entry->limit, entry->base + 4); } + + for (i = 0; i < info->streamid_vm_table.count; i++) { + /* Allow access to all stream IDs to all VMs. */ + host1x_hypervisor_writel(host, 0xff, info->streamid_vm_table.base + 4 * i); + } + + for (i = 0; i < info->classid_vm_table.count; i++) { + /* Allow access to all classes to all VMs. */ + host1x_hypervisor_writel(host, 0xff, info->classid_vm_table.base + 4 * i); + } + + for (i = 0; i < info->mmio_vm_table.count; i++) { + /* Use VM1 (that's us) as originator VMID for engine MMIO accesses. */ + host1x_hypervisor_writel(host, 0x1, info->mmio_vm_table.base + 4 * i); + } } static bool host1x_wants_iommu(struct host1x *host1x) @@ -602,7 +617,7 @@ static int __maybe_unused host1x_runtime_suspend(struct device *dev) return 0; resume_host1x: - host1x_setup_sid_table(host); + host1x_setup_virtualization_tables(host); host1x_syncpt_restore(host); host1x_intr_start(host); @@ -632,7 +647,7 @@ static int __maybe_unused host1x_runtime_resume(struct device *dev) goto disable_clk; } - host1x_setup_sid_table(host); + host1x_setup_virtualization_tables(host); host1x_syncpt_restore(host); host1x_intr_start(host); diff --git a/drivers/gpu/host1x/dev.h b/drivers/gpu/host1x/dev.h index 85edcc6e0fc7..920e5548cfbc 100644 --- a/drivers/gpu/host1x/dev.h +++ b/drivers/gpu/host1x/dev.h @@ -90,6 +90,11 @@ struct host1x_sid_entry { unsigned int limit; }; +struct host1x_table_desc { + unsigned int base; + unsigned int count; +}; + struct host1x_info { unsigned int nb_channels; /* host1x: number of channels supported */ unsigned int nb_pts; /* host1x: number of syncpoints supported */ @@ -103,6 +108,9 @@ struct host1x_info { bool has_common; /* has common registers separate from hypervisor */ unsigned int num_sid_entries; const struct host1x_sid_entry *sid_table; + struct host1x_table_desc streamid_vm_table; + struct host1x_table_desc classid_vm_table; + struct host1x_table_desc mmio_vm_table; /* * On T20-T148, the boot chain may setup DC to increment syncpoints * 26/27 on VBLANK. As such we cannot use these syncpoints until -- 2.36.1