From patchwork Fri Jan 27 11:27:53 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Price X-Patchwork-Id: 49244 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp782194wrn; Fri, 27 Jan 2023 03:31:09 -0800 (PST) X-Google-Smtp-Source: AMrXdXvcSy3ho3rJpn19plANhYQpEEY1jclNKu7A5R4N6jrPS3fe21Ien672e7IqJtCfMAD5BDJD X-Received: by 2002:a05:6a20:4e02:b0:b8:915c:477a with SMTP id gk2-20020a056a204e0200b000b8915c477amr37936272pzb.8.1674819069649; Fri, 27 Jan 2023 03:31:09 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674819069; cv=none; d=google.com; s=arc-20160816; b=sdmhjvBtXdt8GMuIYV1M2hjT85DdxqjBKJmr/PBar/QUGB4y/Vj6jZ6wRH6LGRRk8Y eFK8KGtQ84qEKoLE5GvMJmdhVThIMjDBv19d1zZOonEREpwbjosGfq3IHhG5ctvxBu4l JwkvwvU3Xxtq7DPw1DTnC8WiJqetKFeFoYHaYu5aVULlVv0jpZ+aeu+aS68Q7vZljhOt H0LN0xcuQkljPNukHm24xvOi9soZXOWseaynFfg51x3LRVDKIjW2iJJiEsg96GM6MNNs wckiiu2hQnL3nP4+y0Tzvx7Oi8iNZWGwGdsVuFt0ZnCU5gEdUxDopzUtIuJN4KAUd2kM yJwQ== 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; bh=5xk0N7bSs3HcJnNyEjihvhYrR9lCqNYvFM1Yxd4QulQ=; b=D3zSddgO3fcsCpp0kChIdLt8DSQRUgCWQx9H2ZRJys15t3nEbLSAvLF4R32605OURo jxccNIoj97nXgENQ/UjRDg2BxOcvsIXeKg3MbYeYsh4QVyMdgA6+y82Ps166/NIokZPW clZUX4z2UZ2a5L+kMUmLFPgKyz+g+2P9FxAbqcazCBvx5dH/hDlN7FoJyBXYro0OCSVb 5G4crvvcxX6CIGkM9i5HzTuiU/Os0Xs4wO9Z++OSEVO5X9QjG/06vdaG1y/Dlrh5Tlpc gVamkyaIZ5VJlXm6IwxvebIIfChnmrdIAb7HqoxHjzWs8qzUA2wATLv7RcMKjnrcpRsV hPFw== ARC-Authentication-Results: i=1; mx.google.com; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id e20-20020aa79814000000b0059261b044b1si1868152pfl.217.2023.01.27.03.30.57; Fri, 27 Jan 2023 03:31:09 -0800 (PST) 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; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233477AbjA0Lal (ORCPT + 99 others); Fri, 27 Jan 2023 06:30:41 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41798 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233484AbjA0L35 (ORCPT ); Fri, 27 Jan 2023 06:29:57 -0500 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 6164378AE3 for ; Fri, 27 Jan 2023 03:29:05 -0800 (PST) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 0D1D41682; Fri, 27 Jan 2023 03:29:17 -0800 (PST) Received: from e122027.cambridge.arm.com (e122027.cambridge.arm.com [10.1.35.16]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id A49D33F64C; Fri, 27 Jan 2023 03:28:32 -0800 (PST) From: Steven Price To: kvmarm@lists.linux.dev, linux-arm-kernel@lists.infradead.org Cc: Steven Price , Catalin Marinas , Ard Biesheuvel , Marc Zyngier , Will Deacon , Suzuki K Poulose , James Morse , Oliver Upton , Zenghui Yu , linux-kernel@vger.kernel.org, Joey Gouly , Alexandru Elisei , Christoffer Dall , Fuad Tabba , linux-coco@lists.linux.dev Subject: [RFC PATCH 09/14] arm64: Enforce bounce buffers for realm DMA Date: Fri, 27 Jan 2023 11:27:53 +0000 Message-Id: <20230127112758.37891-10-steven.price@arm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230127112758.37891-1-steven.price@arm.com> References: <20230127112248.136810-1-suzuki.poulose@arm.com> <20230127112758.37891-1-steven.price@arm.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_NONE 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756175080608329595?= X-GMAIL-MSGID: =?utf-8?q?1756175080608329595?= Within a realm guest it's not possible for a device emulated by the VMM to access arbitrary guest memory. So force the use of bounce buffers to ensure that the memory the emulated devices are accessing is in memory which is explicitly shared with the host. Co-developed-by: Suzuki K Poulose Signed-off-by: Suzuki K Poulose Signed-off-by: Steven Price --- arch/arm64/kernel/rsi.c | 2 ++ arch/arm64/mm/init.c | 8 +++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/arch/arm64/kernel/rsi.c b/arch/arm64/kernel/rsi.c index 49d36dfe0064..1a07eefdd2e9 100644 --- a/arch/arm64/kernel/rsi.c +++ b/arch/arm64/kernel/rsi.c @@ -5,6 +5,8 @@ #include #include +#include + #include struct realm_config __attribute((aligned(PAGE_SIZE))) config; diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c index fa9088add624..32a4710ad861 100644 --- a/arch/arm64/mm/init.c +++ b/arch/arm64/mm/init.c @@ -472,7 +472,13 @@ void __init bootmem_init(void) */ void __init mem_init(void) { - swiotlb_init(max_pfn > PFN_DOWN(arm64_dma_phys_limit), SWIOTLB_VERBOSE); + if (is_realm_world()) { + swiotlb_init(true, SWIOTLB_VERBOSE | SWIOTLB_FORCE); + swiotlb_update_mem_attributes(); + } else { + swiotlb_init(max_pfn > PFN_DOWN(arm64_dma_phys_limit), + SWIOTLB_VERBOSE); + } /* this will put all unused low memory onto the freelists */ memblock_free_all();