From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id D5DD5C77B73 for ; Wed, 19 Apr 2023 22:19:19 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 573A7900027; Wed, 19 Apr 2023 18:18:57 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 4FE28900003; Wed, 19 Apr 2023 18:18:57 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 37772900027; Wed, 19 Apr 2023 18:18:57 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 24BFA900003 for ; Wed, 19 Apr 2023 18:18:57 -0400 (EDT) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id D715DAC35C for ; Wed, 19 Apr 2023 22:18:56 +0000 (UTC) X-FDA: 80699556672.24.7411E86 Received: from mail-pf1-f172.google.com (mail-pf1-f172.google.com [209.85.210.172]) by imf23.hostedemail.com (Postfix) with ESMTP id 1716C140021 for ; Wed, 19 Apr 2023 22:18:54 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=rivosinc-com.20221208.gappssmtp.com header.s=20221208 header.b="c61/p77d"; spf=pass (imf23.hostedemail.com: domain of atishp@rivosinc.com designates 209.85.210.172 as permitted sender) smtp.mailfrom=atishp@rivosinc.com; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1681942735; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=wI5JEqEayPS5t0DearmNB32dGieY2Rp85qRqyRU4954=; b=Il+de08NDlYZYLWv/IsvSUiI9l93ujB7iQXgjz1llRUNkmOPy1bKsSRSlNAZU3GVIaHX2m L7gvM4vaNiVL4BXUyV4GRkBkaRzPDhmmb17idMm7SHc2GFXE35TKZf5TBFuxnzNn6AsFhP B/69P5YwqNp3Yp6FBvOxUjDFA+1dNNM= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=pass header.d=rivosinc-com.20221208.gappssmtp.com header.s=20221208 header.b="c61/p77d"; spf=pass (imf23.hostedemail.com: domain of atishp@rivosinc.com designates 209.85.210.172 as permitted sender) smtp.mailfrom=atishp@rivosinc.com; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1681942735; a=rsa-sha256; cv=none; b=R21nMEC3I6wBe1UcY+1eRD3FKVmXBHVso3u/d7eAWVvOMEzclz+J/FQKAzdZdF8Mh1YngK p0lGiEBEZ7EayZ3vu1znkgmjqFOEp+/c//Mwv2iCZJp/QIjq5BCrx34gzJknz9J9rreA/c WIpJ/7C2oLkRzPiw9i5s7eTpSeEdvuk= Received: by mail-pf1-f172.google.com with SMTP id d2e1a72fcca58-63d4595d60fso2916522b3a.0 for ; Wed, 19 Apr 2023 15:18:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20221208.gappssmtp.com; s=20221208; t=1681942734; x=1684534734; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=wI5JEqEayPS5t0DearmNB32dGieY2Rp85qRqyRU4954=; b=c61/p77dAtF7ITFaJtJ2ThSiNokGE55QUnDMhiyOWQfpvPZA4LwEm0dNNepuTh8/vI ETC0NUKHH0B7ioWMNIOCRl7AjZHuiWQCd9YRt/w8gX3X03F0aRKluujbAxJMyKQ218iz HyGwjvHTZ57PibWhtCDK2NRKMiLlH7ybE/Z877P0tsYOxOH43juir+xqANUqGBHB7/WR aQibBdjDGfMJsGQ2duTavnD7648VTHs+6zw4IzdBl5zGyzuHnyd08ri5ZAx79ZyGdHPQ +HVr9NAcGBE4GY7Q3b9IwiUkw1Xx2A9JUqYVhhUubWWiX//8s8ew3EPoW97k6emKoi+z u1mQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1681942734; x=1684534734; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=wI5JEqEayPS5t0DearmNB32dGieY2Rp85qRqyRU4954=; b=OID5OwM4TjJ9l6z+W8UbsoyRJsxMPKWm1jefMNZ7NXu+UGWsMsxLwYEqDXDp1x1Gu8 P7Kf57jNEbNV0uMuyB+Q9W5LZmxVVUDsSz0xL6bNdlo39LDOunaAz8J3GJsUYE6eA6yj lJ9FlGj58CY2ReZUVTeIOYOrhcYvaI55k/z3T/hWhOwWNgPAhXNKga7fqG1GKhCCeI99 JIZeRF0eLsa8k+ZTI2vNwSTTfIWM2CSDqUAB9C3AaXCVZ4tL7gqi2P+0FJVU8287JfTt 0++U/3EeHt0iTYymYvHMQcITGwmj1AH73doGN8vfIH0/Vfy4znXBWdxor2Da+zUGJyZJ fsuw== X-Gm-Message-State: AAQBX9cgguiQi7upcUTqa1rLGR/sm2/IBC57i7FOaT1QrvOcWj9/oRtz ZN0waymmDlpae7FiVDiRG1ztQA== X-Google-Smtp-Source: AKy350bHPqgey3c6g8HqkR9B9xlgHTWq+fR92XQNeVK1lT0G63M1RyCGum2kegw8LaA3eJtSnsnKXQ== X-Received: by 2002:a17:90a:6002:b0:246:865d:419a with SMTP id y2-20020a17090a600200b00246865d419amr3928528pji.6.1681942733866; Wed, 19 Apr 2023 15:18:53 -0700 (PDT) Received: from atishp.ba.rivosinc.com ([66.220.2.162]) by smtp.gmail.com with ESMTPSA id jn11-20020a170903050b00b00196807b5189sm11619190plb.292.2023.04.19.15.18.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 Apr 2023 15:18:53 -0700 (PDT) From: Atish Patra To: linux-kernel@vger.kernel.org Cc: Rajnesh Kanwal , Atish Patra , Alexandre Ghiti , Andrew Jones , Andrew Morton , Anup Patel , Atish Patra , =?UTF-8?q?Bj=C3=B6rn=20T=C3=B6pel?= , Suzuki K Poulose , Will Deacon , Marc Zyngier , Sean Christopherson , linux-coco@lists.linux.dev, Dylan Reid , abrestic@rivosinc.com, Samuel Ortiz , Christoph Hellwig , Conor Dooley , Greg Kroah-Hartman , Guo Ren , Heiko Stuebner , Jiri Slaby , kvm-riscv@lists.infradead.org, kvm@vger.kernel.org, linux-mm@kvack.org, linux-riscv@lists.infradead.org, Mayuresh Chitale , Palmer Dabbelt , Paolo Bonzini , Paul Walmsley , Uladzislau Rezki Subject: [RFC 38/48] RISC-V: Add CoVE guest config and helper functions Date: Wed, 19 Apr 2023 15:17:06 -0700 Message-Id: <20230419221716.3603068-39-atishp@rivosinc.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230419221716.3603068-1-atishp@rivosinc.com> References: <20230419221716.3603068-1-atishp@rivosinc.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Stat-Signature: q6p7ajzkr8jfdb9adrdiosp7w9z4ij8j X-Rspam-User: X-Rspamd-Queue-Id: 1716C140021 X-Rspamd-Server: rspam06 X-HE-Tag: 1681942734-961185 X-HE-Meta: U2FsdGVkX1/UuT4LTFJnELDLQEyfO6C6xYIj2ThrnqJhHm7ZnGrraHVp5PRsH+56M+bYSf1vSMJyHiI4aFR4Igmf6wFpjEiiHQopIFwOlDafWEeuk117ybHs1qjfXjykTjZ89aPe+G9oK4zbgCY5iSTwzbGeyUV8QGTOZMasO0zTCfRA5Cke7npbxU3Pf+9h/USQTids9jN3SFCjPnGGoNmI5djw5h9JgPQGpNioZyZd/v011Ca70jt/mzPfqAdLoWeiaipN+DbXsvduYno1+uFkNYJPnsmbwTsy+lvImk77LNX1Y9meClgrqafuxrH4h0lLdWuFBWLmjLa/izjuKRxnzU3N9CrWrDMzS94Eg+o5Y71jEmk5Brdpom2qokaf7TRaCMls+I9P/zNAhqW8HJwwCXOmFF8J/F+9fRM+AZRAAoQ3LDmo4BTndhgr/tALrFkr53qg0EkfRo5uDLP8Olez/wvSde+HY3LKCJJfr5pQlcLOt2sHWnp1qhU6zkrOOaGgLBo+XpfAktjVLQffMImdQZxj3fundCo/7DlFKCBWBgeKCO5bVl4ZixUnZEScEen4XUe96wGZLSikR2VcdUHRPrIkJ7yi2UJju31aW1559jqSfX8sE5Qr/kNDdj2P9oqm284p14tS8CvEVAAXLs9kP3U3rT+Rhe1qdo/A3FsUnwmNrE+t4yTHVAbD+5iE94hk8p5XlwdtFuuiSxlR6c+1RYi0t8V+DzLGvabSnisr2MSkKE9OB3U5eAag4CJGj4EKIE4rBxEfeSy1MoKXSh9KUiYY+VVBdMDasmdRD+T+MCeISBWUCj7SLIj7Jctt2l3LYcXuovdmZgolEb1x6tijUZqdQyWAyuEUDBHhvpd8lThFxOw4h59cmL56MDRgT9lmVcn1HEZdFxgMtHef+FkHVM/Fs6KDgNciVxYXr0EGboN4LA8ULChvGoxTzDG+/4NsUIIUa1jwLON2Cnb W8PI41f/ YExcQAOBRPfkgFlfLl4T82DvNs7jCXZ0pSiqGthlUlJOCYcwjADIG3T/n22JeXozWk6120J44iM8Ny2sKejih4FJ8nqnuVEe5qn3CSj+1ieCz+peTgSOFD9G/uI1uETaJiS01I5ZcFejdVddsvgVvtkjC6+WsoW37HllKs09k8gGiQslp3mDZoBZhoESR+eztPbbONQlhTF9peDSgf0rqT0p/wSqAdL451NNNPqmrnuiPUdd9Ro1RZx+EU3ttOMTlQe6m1Ks4N1EFEmSkmKwWThgB4TJknfxu7ECfVO+voDCEUffS0IV85Ty17ExGSmVnBbrE9JgzwimpHJXinJ2gSHZ4IBVVZlQSw6G2o53d4+FQngFuSFqHzrU5RcPutAvrl91FU4elTnIiltPpbXV+NyrtHwhric0kj9UxBHUR2Hm+gdrXnh8AcpFFwQRLwH1eoSLDK3Oa28zMJS/PQcSixxu/Ig== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: From: Rajnesh Kanwal Introduce a separate config for the guest running in CoVE so that it can be enabled separately if required. However, the default config will enable both CoVE host & guest configs in order to make single image work as both host & guest. Introduce a helper function to detect if a guest is TVM or not at run time. The TSM only enables the CoVE guest SBI extension for TVMs. Signed-off-by: Rajnesh Kanwal Co-developed-by: Atish Patra Signed-off-by: Atish Patra --- arch/riscv/Kbuild | 2 ++ arch/riscv/Kconfig | 6 ++++++ arch/riscv/cove/Makefile | 2 ++ arch/riscv/cove/core.c | 28 ++++++++++++++++++++++++++++ arch/riscv/include/asm/cove.h | 27 +++++++++++++++++++++++++++ arch/riscv/kernel/setup.c | 2 ++ 6 files changed, 67 insertions(+) create mode 100644 arch/riscv/cove/Makefile create mode 100644 arch/riscv/cove/core.c create mode 100644 arch/riscv/include/asm/cove.h diff --git a/arch/riscv/Kbuild b/arch/riscv/Kbuild index afa83e3..ecd661e 100644 --- a/arch/riscv/Kbuild +++ b/arch/riscv/Kbuild @@ -1,5 +1,7 @@ # SPDX-License-Identifier: GPL-2.0-only +obj-$(CONFIG_RISCV_COVE_GUEST) += cove/ + obj-y += kernel/ mm/ net/ obj-$(CONFIG_BUILTIN_DTB) += boot/dts/ obj-y += errata/ diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index 8462941..49c3006 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -512,6 +512,12 @@ config RISCV_COVE_HOST That means the platform should be capable of running TEE VM (TVM) using KVM and TEE Security Manager (TSM). +config RISCV_COVE_GUEST + bool "Guest Support for Confidential VM Extension(CoVE)" + default n + help + Enables support for running TVMs on platforms supporting CoVE. + endmenu # "Confidential VM Extension(CoVE) Support" endmenu # "Platform type" diff --git a/arch/riscv/cove/Makefile b/arch/riscv/cove/Makefile new file mode 100644 index 0000000..03a0cac --- /dev/null +++ b/arch/riscv/cove/Makefile @@ -0,0 +1,2 @@ +# SPDX-License-Identifier: GPL-2.0 +obj-$(CONFIG_RISCV_COVE_GUEST) += core.o diff --git a/arch/riscv/cove/core.c b/arch/riscv/cove/core.c new file mode 100644 index 0000000..7218fe7 --- /dev/null +++ b/arch/riscv/cove/core.c @@ -0,0 +1,28 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Confidential Computing Platform Capability checks + * + * Copyright (c) 2023 Rivos Inc. + * + * Authors: + * Rajnesh Kanwal + */ + +#include +#include +#include +#include + +static bool is_tvm; + +bool is_cove_guest(void) +{ + return is_tvm; +} +EXPORT_SYMBOL_GPL(is_cove_guest); + +void riscv_cove_sbi_init(void) +{ + if (sbi_probe_extension(SBI_EXT_COVG) > 0) + is_tvm = true; +} diff --git a/arch/riscv/include/asm/cove.h b/arch/riscv/include/asm/cove.h new file mode 100644 index 0000000..c4d609d --- /dev/null +++ b/arch/riscv/include/asm/cove.h @@ -0,0 +1,27 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * TVM helper functions + * + * Copyright (c) 2023 Rivos Inc. + * + * Authors: + * Rajnesh Kanwal + */ + +#ifndef __RISCV_COVE_H__ +#define __RISCV_COVE_H__ + +#ifdef CONFIG_RISCV_COVE_GUEST +void riscv_cove_sbi_init(void); +bool is_cove_guest(void); +#else /* CONFIG_RISCV_COVE_GUEST */ +static inline bool is_cove_guest(void) +{ + return false; +} +static inline void riscv_cove_sbi_init(void) +{ +} +#endif /* CONFIG_RISCV_COVE_GUEST */ + +#endif /* __RISCV_COVE_H__ */ diff --git a/arch/riscv/kernel/setup.c b/arch/riscv/kernel/setup.c index 7b2b065..20b0280 100644 --- a/arch/riscv/kernel/setup.c +++ b/arch/riscv/kernel/setup.c @@ -35,6 +35,7 @@ #include #include #include +#include #include "head.h" @@ -272,6 +273,7 @@ void __init setup_arch(char **cmdline_p) early_ioremap_setup(); sbi_init(); + riscv_cove_sbi_init(); jump_label_init(); parse_early_param(); -- 2.25.1