linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Michael Roth <michael.roth@amd.com>
To: <kvm@vger.kernel.org>
Cc: <linux-coco@lists.linux.dev>, <linux-mm@kvack.org>,
	<linux-crypto@vger.kernel.org>, <x86@kernel.org>,
	<linux-kernel@vger.kernel.org>, <tglx@linutronix.de>,
	<mingo@redhat.com>, <jroedel@suse.de>, <thomas.lendacky@amd.com>,
	<hpa@zytor.com>, <ardb@kernel.org>, <pbonzini@redhat.com>,
	<seanjc@google.com>, <vkuznets@redhat.com>, <jmattson@google.com>,
	<luto@kernel.org>, <dave.hansen@linux.intel.com>,
	<slp@redhat.com>, <pgonda@google.com>, <peterz@infradead.org>,
	<srinivas.pandruvada@linux.intel.com>, <rientjes@google.com>,
	<dovmurik@linux.ibm.com>, <tobin@ibm.com>, <bp@alien8.de>,
	<vbabka@suse.cz>, <kirill@shutemov.name>, <ak@linux.intel.com>,
	<tony.luck@intel.com>, <marcorr@google.com>,
	<sathyanarayanan.kuppuswamy@linux.intel.com>,
	<alpergun@google.com>, <jarkko@kernel.org>,
	<ashish.kalra@amd.com>, <nikunj.dadhania@amd.com>,
	<pankaj.gupta@amd.com>, <liam.merwick@oracle.com>,
	<zhi.a.wang@intel.com>, Brijesh Singh <brijesh.singh@amd.com>,
	Jarkko Sakkinen <jarkko@profian.com>
Subject: [PATCH v10 14/50] crypto: ccp: Add support to initialize the AMD-SP for SEV-SNP
Date: Mon, 16 Oct 2023 08:27:43 -0500	[thread overview]
Message-ID: <20231016132819.1002933-15-michael.roth@amd.com> (raw)
In-Reply-To: <20231016132819.1002933-1-michael.roth@amd.com>

From: Brijesh Singh <brijesh.singh@amd.com>

Before SNP VMs can be launched, the platform must be appropriately
configured and initialized. Platform initialization is accomplished via
the SNP_INIT command. Make sure to do a WBINVD and issue DF_FLUSH
command to prepare for the first SNP guest launch after INIT.

During the execution of SNP_INIT command, the firmware configures
and enables SNP security policy enforcement in many system components.
Some system components write to regions of memory reserved by early
x86 firmware (e.g. UEFI). Other system components write to regions
provided by the operation system, hypervisor, or x86 firmware.
Such system components can only write to HV-fixed pages or Default
pages. They will error when attempting to write to other page states
after SNP_INIT enables their SNP enforcement.

Starting in SNP firmware v1.52, the SNP_INIT_EX command takes a list of
system physical address ranges to convert into the HV-fixed page states
during the RMP initialization. If INIT_RMP is 1, hypervisors should
provide all system physical address ranges that the hypervisor will
never assign to a guest until the next RMP re-initialization.
For instance, the memory that UEFI reserves should be included in the
range list. This allows system components that occasionally write to
memory (e.g. logging to UEFI reserved regions) to not fail due to
RMP initialization and SNP enablement.

Note that SNP_INIT(_EX) must not be executed while non-SEV guests are
executing, otherwise it is possible that the system could reset or hang.
The psp_init_on_probe module parameter was added for SEV/SEV-ES support
and the init_ex_path module parameter to allow for time for the
necessary file system to be mounted/available. SNP_INIT(_EX) does not
use the file associated with init_ex_path. So, to avoid running into
issues where SNP_INIT(_EX) is called while there are other running
guests, issue it during module probe regardless of the psp_init_on_probe
setting, but maintain the previous deferrable handling for SEV/SEV-ES
initialization.

Co-developed-by: Ashish Kalra <ashish.kalra@amd.com>
Signed-off-by: Ashish Kalra <ashish.kalra@amd.com>
Co-developed-by: Jarkko Sakkinen <jarkko@profian.com>
Signed-off-by: Jarkko Sakkinen <jarkko@profian.com>
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
[mdr: squash in psp_init_on_probe changes from Tom]
Signed-off-by: Michael Roth <michael.roth@amd.com>
---
 drivers/crypto/ccp/sev-dev.c | 272 +++++++++++++++++++++++++++++++++--
 drivers/crypto/ccp/sev-dev.h |   2 +
 2 files changed, 259 insertions(+), 15 deletions(-)

diff --git a/drivers/crypto/ccp/sev-dev.c b/drivers/crypto/ccp/sev-dev.c
index c2da92f19ccd..fae1fd45eccd 100644
--- a/drivers/crypto/ccp/sev-dev.c
+++ b/drivers/crypto/ccp/sev-dev.c
@@ -29,6 +29,7 @@
 
 #include <asm/smp.h>
 #include <asm/cacheflush.h>
+#include <asm/e820/types.h>
 
 #include "psp-dev.h"
 #include "sev-dev.h"
@@ -37,6 +38,10 @@
 #define SEV_FW_FILE		"amd/sev.fw"
 #define SEV_FW_NAME_SIZE	64
 
+/* Minimum firmware version required for the SEV-SNP support */
+#define SNP_MIN_API_MAJOR	1
+#define SNP_MIN_API_MINOR	51
+
 static DEFINE_MUTEX(sev_cmd_mutex);
 static struct sev_misc_dev *misc_dev;
 
@@ -80,6 +85,14 @@ static void *sev_es_tmr;
 #define NV_LENGTH (32 * 1024)
 static void *sev_init_ex_buffer;
 
+/*
+ * SEV_DATA_RANGE_LIST:
+ *   Array containing range of pages that firmware transitions to HV-fixed
+ *   page state.
+ */
+struct sev_data_range_list *snp_range_list;
+static int __sev_snp_init_locked(int *error);
+
 static inline bool sev_version_greater_or_equal(u8 maj, u8 min)
 {
 	struct sev_device *sev = psp_master->sev_data;
@@ -466,9 +479,9 @@ static inline int __sev_do_init_locked(int *psp_ret)
 		return __sev_init_locked(psp_ret);
 }
 
-static int __sev_platform_init_locked(int *error)
+static int ___sev_platform_init_locked(int *error, bool probe)
 {
-	int rc = 0, psp_ret = SEV_RET_NO_FW_CALL;
+	int rc, psp_ret = SEV_RET_NO_FW_CALL;
 	struct psp_device *psp = psp_master;
 	struct sev_device *sev;
 
@@ -480,6 +493,34 @@ static int __sev_platform_init_locked(int *error)
 	if (sev->state == SEV_STATE_INIT)
 		return 0;
 
+	/*
+	 * Legacy guests cannot be running while SNP_INIT(_EX) is executing,
+	 * so perform SEV-SNP initialization at probe time.
+	 */
+	rc = __sev_snp_init_locked(error);
+	if (rc && rc != -ENODEV) {
+		/*
+		 * Don't abort the probe if SNP INIT failed,
+		 * continue to initialize the legacy SEV firmware.
+		 */
+		dev_err(sev->dev, "SEV-SNP: failed to INIT rc %d, error %#x\n", rc, *error);
+	}
+
+	/* Delay SEV/SEV-ES support initialization */
+	if (probe && !psp_init_on_probe)
+		return 0;
+
+	if (!sev_es_tmr) {
+		/* Obtain the TMR memory area for SEV-ES use */
+		sev_es_tmr = sev_fw_alloc(SEV_ES_TMR_SIZE);
+		if (sev_es_tmr)
+			/* Must flush the cache before giving it to the firmware */
+			clflush_cache_range(sev_es_tmr, SEV_ES_TMR_SIZE);
+		else
+			dev_warn(sev->dev,
+				 "SEV: TMR allocation failed, SEV-ES support unavailable\n");
+		}
+
 	if (sev_init_ex_buffer) {
 		rc = sev_read_init_ex_file();
 		if (rc)
@@ -522,6 +563,11 @@ static int __sev_platform_init_locked(int *error)
 	return 0;
 }
 
+static int __sev_platform_init_locked(int *error)
+{
+	return ___sev_platform_init_locked(error, false);
+}
+
 int sev_platform_init(int *error)
 {
 	int rc;
@@ -534,6 +580,17 @@ int sev_platform_init(int *error)
 }
 EXPORT_SYMBOL_GPL(sev_platform_init);
 
+static int sev_platform_init_on_probe(int *error)
+{
+	int rc;
+
+	mutex_lock(&sev_cmd_mutex);
+	rc = ___sev_platform_init_locked(error, true);
+	mutex_unlock(&sev_cmd_mutex);
+
+	return rc;
+}
+
 static int __sev_platform_shutdown_locked(int *error)
 {
 	struct sev_device *sev = psp_master->sev_data;
@@ -838,6 +895,191 @@ static int sev_update_firmware(struct device *dev)
 	return ret;
 }
 
+static void snp_set_hsave_pa(void *arg)
+{
+	wrmsrl(MSR_VM_HSAVE_PA, 0);
+}
+
+static int snp_filter_reserved_mem_regions(struct resource *rs, void *arg)
+{
+	struct sev_data_range_list *range_list = arg;
+	struct sev_data_range *range = &range_list->ranges[range_list->num_elements];
+	size_t size;
+
+	if ((range_list->num_elements * sizeof(struct sev_data_range) +
+	     sizeof(struct sev_data_range_list)) > PAGE_SIZE)
+		return -E2BIG;
+
+	switch (rs->desc) {
+	case E820_TYPE_RESERVED:
+	case E820_TYPE_PMEM:
+	case E820_TYPE_ACPI:
+		range->base = rs->start & PAGE_MASK;
+		size = (rs->end + 1) - rs->start;
+		range->page_count = size >> PAGE_SHIFT;
+		range_list->num_elements++;
+		break;
+	default:
+		break;
+	}
+
+	return 0;
+}
+
+static int __sev_snp_init_locked(int *error)
+{
+	struct psp_device *psp = psp_master;
+	struct sev_data_snp_init_ex data;
+	struct sev_device *sev;
+	int rc = 0;
+
+	if (!cpu_feature_enabled(X86_FEATURE_SEV_SNP))
+		return -ENODEV;
+
+	if (!psp || !psp->sev_data)
+		return -ENODEV;
+
+	sev = psp->sev_data;
+
+	if (sev->snp_initialized)
+		return 0;
+
+	if (!sev_version_greater_or_equal(SNP_MIN_API_MAJOR, SNP_MIN_API_MINOR)) {
+		dev_dbg(sev->dev, "SEV-SNP support requires firmware version >= %d:%d\n",
+			SNP_MIN_API_MAJOR, SNP_MIN_API_MINOR);
+		return 0;
+	}
+
+	/*
+	 * The SNP_INIT requires the MSR_VM_HSAVE_PA must be set to 0h
+	 * across all cores.
+	 */
+	on_each_cpu(snp_set_hsave_pa, NULL, 1);
+
+	/*
+	 * Starting in SNP firmware v1.52, the SNP_INIT_EX command takes a list of
+	 * system physical address ranges to convert into the HV-fixed page states
+	 * during the RMP initialization.  For instance, the memory that UEFI
+	 * reserves should be included in the range list. This allows system
+	 * components that occasionally write to memory (e.g. logging to UEFI
+	 * reserved regions) to not fail due to RMP initialization and SNP enablement.
+	 */
+	if (sev_version_greater_or_equal(SNP_MIN_API_MAJOR, 52)) {
+		/*
+		 * Firmware checks that the pages containing the ranges enumerated
+		 * in the RANGES structure are either in the Default page state or in the
+		 * firmware page state.
+		 */
+		snp_range_list = kzalloc(PAGE_SIZE, GFP_KERNEL);
+		if (!snp_range_list) {
+			dev_err(sev->dev,
+				"SEV: SNP_INIT_EX range list memory allocation failed\n");
+			return -ENOMEM;
+		}
+
+		/*
+		 * Retrieve all reserved memory regions setup by UEFI from the e820 memory map
+		 * to be setup as HV-fixed pages.
+		 */
+
+		rc = walk_iomem_res_desc(IORES_DESC_NONE, IORESOURCE_MEM, 0, ~0,
+					 snp_range_list, snp_filter_reserved_mem_regions);
+		if (rc) {
+			dev_err(sev->dev,
+				"SEV: SNP_INIT_EX walk_iomem_res_desc failed rc = %d\n", rc);
+			return rc;
+		}
+
+		memset(&data, 0, sizeof(data));
+		data.init_rmp = 1;
+		data.list_paddr_en = 1;
+		data.list_paddr = __psp_pa(snp_range_list);
+
+		/*
+		 * Before invoking SNP_INIT_EX with INIT_RMP=1, make sure that
+		 * all dirty cache lines containing the RMP are flushed.
+		 *
+		 * NOTE: that includes writes via RMPUPDATE instructions, which
+		 * are also cacheable writes.
+		 */
+		wbinvd_on_all_cpus();
+
+		rc = __sev_do_cmd_locked(SEV_CMD_SNP_INIT_EX, &data, error);
+		if (rc)
+			return rc;
+	} else {
+		/*
+		 * SNP_INIT is equivalent to SNP_INIT_EX with INIT_RMP=1, so
+		 * just as with that case, make sure all dirty cache lines
+		 * containing the RMP are flushed.
+		 */
+		wbinvd_on_all_cpus();
+
+		rc = __sev_do_cmd_locked(SEV_CMD_SNP_INIT, NULL, error);
+		if (rc)
+			return rc;
+	}
+
+	/* Prepare for first SNP guest launch after INIT */
+	wbinvd_on_all_cpus();
+	rc = __sev_do_cmd_locked(SEV_CMD_SNP_DF_FLUSH, NULL, error);
+	if (rc)
+		return rc;
+
+	sev->snp_initialized = true;
+	dev_dbg(sev->dev, "SEV-SNP firmware initialized\n");
+
+	return rc;
+}
+
+static int __sev_snp_shutdown_locked(int *error)
+{
+	struct sev_device *sev = psp_master->sev_data;
+	struct sev_data_snp_shutdown_ex data;
+	int ret;
+
+	if (!sev->snp_initialized)
+		return 0;
+
+	memset(&data, 0, sizeof(data));
+	data.length = sizeof(data);
+	data.iommu_snp_shutdown = 1;
+
+	wbinvd_on_all_cpus();
+
+retry:
+	ret = __sev_do_cmd_locked(SEV_CMD_SNP_SHUTDOWN_EX, &data, error);
+	/* SHUTDOWN may require DF_FLUSH */
+	if (*error == SEV_RET_DFFLUSH_REQUIRED) {
+		ret = __sev_do_cmd_locked(SEV_CMD_SNP_DF_FLUSH, NULL, NULL);
+		if (ret) {
+			dev_err(sev->dev, "SEV-SNP DF_FLUSH failed\n");
+			return ret;
+		}
+		goto retry;
+	}
+	if (ret) {
+		dev_err(sev->dev, "SEV-SNP firmware shutdown failed\n");
+		return ret;
+	}
+
+	sev->snp_initialized = false;
+	dev_dbg(sev->dev, "SEV-SNP firmware shutdown\n");
+
+	return ret;
+}
+
+static int sev_snp_shutdown(int *error)
+{
+	int rc;
+
+	mutex_lock(&sev_cmd_mutex);
+	rc = __sev_snp_shutdown_locked(error);
+	mutex_unlock(&sev_cmd_mutex);
+
+	return rc;
+}
+
 static int sev_ioctl_do_pek_import(struct sev_issue_cmd *argp, bool writable)
 {
 	struct sev_device *sev = psp_master->sev_data;
@@ -1285,6 +1527,8 @@ int sev_dev_init(struct psp_device *psp)
 
 static void sev_firmware_shutdown(struct sev_device *sev)
 {
+	int error;
+
 	sev_platform_shutdown(NULL);
 
 	if (sev_es_tmr) {
@@ -1301,6 +1545,13 @@ static void sev_firmware_shutdown(struct sev_device *sev)
 			   get_order(NV_LENGTH));
 		sev_init_ex_buffer = NULL;
 	}
+
+	if (snp_range_list) {
+		kfree(snp_range_list);
+		snp_range_list = NULL;
+	}
+
+	sev_snp_shutdown(&error);
 }
 
 void sev_dev_destroy(struct psp_device *psp)
@@ -1356,24 +1607,15 @@ void sev_pci_init(void)
 		}
 	}
 
-	/* Obtain the TMR memory area for SEV-ES use */
-	sev_es_tmr = sev_fw_alloc(SEV_ES_TMR_SIZE);
-	if (sev_es_tmr)
-		/* Must flush the cache before giving it to the firmware */
-		clflush_cache_range(sev_es_tmr, SEV_ES_TMR_SIZE);
-	else
-		dev_warn(sev->dev,
-			 "SEV: TMR allocation failed, SEV-ES support unavailable\n");
-
-	if (!psp_init_on_probe)
-		return;
-
 	/* Initialize the platform */
-	rc = sev_platform_init(&error);
+	rc = sev_platform_init_on_probe(&error);
 	if (rc)
 		dev_err(sev->dev, "SEV: failed to INIT error %#x, rc %d\n",
 			error, rc);
 
+	dev_info(sev->dev, "SEV%s API:%d.%d build:%d\n", sev->snp_initialized ?
+		"-SNP" : "", sev->api_major, sev->api_minor, sev->build);
+
 	return;
 
 err:
diff --git a/drivers/crypto/ccp/sev-dev.h b/drivers/crypto/ccp/sev-dev.h
index 778c95155e74..85506325051a 100644
--- a/drivers/crypto/ccp/sev-dev.h
+++ b/drivers/crypto/ccp/sev-dev.h
@@ -52,6 +52,8 @@ struct sev_device {
 	u8 build;
 
 	void *cmd_buf;
+
+	bool snp_initialized;
 };
 
 int sev_dev_init(struct psp_device *psp);
-- 
2.25.1



  parent reply	other threads:[~2023-10-16 13:31 UTC|newest]

Thread overview: 158+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-16 13:27 [PATCH v10 00/50] Add AMD Secure Nested Paging (SEV-SNP) Hypervisor Support Michael Roth
2023-10-16 13:27 ` [PATCH v10 01/50] KVM: SVM: INTERCEPT_RDTSCP is never intercepted anyway Michael Roth
2023-10-16 15:12   ` Greg KH
2023-10-16 15:14     ` Paolo Bonzini
2023-10-16 15:21       ` Michael Roth
2023-10-16 13:27 ` [PATCH v10 02/50] KVM: SVM: Fix TSC_AUX virtualization setup Michael Roth
2023-10-16 13:27 ` [PATCH v10 03/50] KVM: SEV: Do not intercept accesses to MSR_IA32_XSS for SEV-ES guests Michael Roth
2023-12-13 12:50   ` Paolo Bonzini
2023-12-13 17:30     ` Sean Christopherson
2023-12-13 17:40       ` Paolo Bonzini
2023-10-16 13:27 ` [PATCH v10 04/50] x86/cpufeatures: Add SEV-SNP CPU feature Michael Roth
2023-12-13 12:51   ` Paolo Bonzini
2023-12-13 13:13     ` Borislav Petkov
2023-12-13 13:31       ` Paolo Bonzini
2023-12-13 13:36         ` Borislav Petkov
2023-12-13 13:40           ` Paolo Bonzini
2023-12-13 13:49             ` Borislav Petkov
2023-12-13 14:18               ` Paolo Bonzini
2023-12-13 15:41                 ` Borislav Petkov
2023-12-13 17:35                   ` Paolo Bonzini
2023-12-13 18:53                     ` Borislav Petkov
2023-10-16 13:27 ` [PATCH v10 05/50] x86/speculation: Do not enable Automatic IBRS if SEV SNP is enabled Michael Roth
2023-10-25 17:33   ` Borislav Petkov
2023-10-27 21:50   ` Dave Hansen
2023-12-13 12:52   ` Paolo Bonzini
2023-10-16 13:27 ` [PATCH v10 06/50] x86/sev: Add the host SEV-SNP initialization support Michael Roth
2023-10-25 18:19   ` Tom Lendacky
2023-11-07 16:31   ` Borislav Petkov
2023-11-07 18:32     ` Tom Lendacky
2023-11-07 19:13       ` Borislav Petkov
2023-11-08  8:21       ` Jeremi Piotrowski
2023-11-08 15:19         ` Tom Lendacky
2023-11-07 19:00     ` Kalra, Ashish
2023-11-07 19:19       ` Borislav Petkov
2023-11-07 20:27         ` Borislav Petkov
2023-11-07 21:21           ` Kalra, Ashish
2023-11-07 21:27             ` Borislav Petkov
2023-11-07 22:08               ` Borislav Petkov
2023-11-07 22:33                 ` Kalra, Ashish
2023-11-08  6:14                   ` Borislav Petkov
2023-11-08  9:11                     ` Jeremi Piotrowski
2023-11-08 19:53                     ` Kalra, Ashish
2023-12-08 17:09       ` Jeremi Piotrowski
2023-12-08 23:21         ` Kalra, Ashish
2023-12-20  7:07     ` Michael Roth
2023-10-16 13:27 ` [PATCH v10 07/50] x86/sev: Add RMP entry lookup helpers Michael Roth
2023-11-14 14:24   ` Borislav Petkov
2023-12-19  3:31     ` Michael Roth
2024-01-09 22:07       ` Borislav Petkov
2023-10-16 13:27 ` [PATCH v10 08/50] x86/fault: Add helper for dumping RMP entries Michael Roth
2023-11-15 16:08   ` Borislav Petkov
2023-12-19  6:08     ` Michael Roth
2023-10-16 13:27 ` [PATCH v10 09/50] x86/traps: Define RMP violation #PF error code Michael Roth
2023-10-16 14:14   ` Dave Hansen
2023-10-16 14:55     ` Michael Roth
2023-10-16 13:27 ` [PATCH v10 10/50] x86/fault: Report RMP page faults for kernel addresses Michael Roth
2023-11-21 15:23   ` Borislav Petkov
2023-10-16 13:27 ` [PATCH v10 11/50] x86/sev: Add helper functions for RMPUPDATE and PSMASH instruction Michael Roth
2023-11-21 16:21   ` Borislav Petkov
2023-12-19 16:20     ` Michael Roth
2023-10-16 13:27 ` [PATCH v10 12/50] x86/sev: Invalidate pages from the direct map when adding them to the RMP table Michael Roth
2023-11-24 14:20   ` Borislav Petkov
2023-10-16 13:27 ` [PATCH v10 13/50] crypto: ccp: Define the SEV-SNP commands Michael Roth
2023-11-24 14:36   ` Borislav Petkov
2023-10-16 13:27 ` Michael Roth [this message]
2023-11-27  9:59   ` [PATCH v10 14/50] crypto: ccp: Add support to initialize the AMD-SP for SEV-SNP Borislav Petkov
2023-11-30  2:13     ` Kalra, Ashish
2023-12-06 17:08       ` Borislav Petkov
2023-12-06 20:35         ` Kalra, Ashish
2023-12-09 16:20           ` Borislav Petkov
2023-12-11 21:11             ` Kalra, Ashish
2023-12-12  6:52               ` Borislav Petkov
2023-10-16 13:27 ` [PATCH v10 15/50] crypto: ccp: Provide API to issue SEV and SNP commands Michael Roth
2023-12-06 20:21   ` Borislav Petkov
2023-10-16 13:27 ` [PATCH v10 16/50] x86/sev: Introduce snp leaked pages list Michael Roth
2023-12-06 20:42   ` Borislav Petkov
2023-12-08 20:54     ` Kalra, Ashish
2023-12-07 16:20   ` Vlastimil Babka
2023-12-08 22:10     ` Kalra, Ashish
2023-12-11 13:08       ` Vlastimil Babka
2023-12-12 23:26         ` Kalra, Ashish
2023-10-16 13:27 ` [PATCH v10 17/50] crypto: ccp: Handle the legacy TMR allocation when SNP is enabled Michael Roth
2023-12-08 13:05   ` Borislav Petkov
2023-12-19 23:46     ` Michael Roth
2023-10-16 13:27 ` [PATCH v10 18/50] crypto: ccp: Handle the legacy SEV command " Michael Roth
2023-12-09 15:36   ` Borislav Petkov
2023-12-29 21:38     ` Michael Roth
2023-10-16 13:27 ` [PATCH v10 19/50] crypto: ccp: Add the SNP_PLATFORM_STATUS command Michael Roth
2023-12-12 16:45   ` Borislav Petkov
2023-10-16 13:27 ` [PATCH v10 20/50] KVM: SEV: Select CONFIG_KVM_SW_PROTECTED_VM when CONFIG_KVM_AMD_SEV=y Michael Roth
2023-12-13 12:54   ` Paolo Bonzini
2023-12-29 21:41     ` Michael Roth
2023-12-18 10:13   ` Borislav Petkov
2023-12-29 21:40     ` Michael Roth
2023-10-16 13:27 ` [PATCH v10 21/50] KVM: SEV: Add support to handle AP reset MSR protocol Michael Roth
2023-12-12 17:02   ` Borislav Petkov
2023-10-16 13:27 ` [PATCH v10 22/50] KVM: SEV: Add GHCB handling for Hypervisor Feature Support requests Michael Roth
2023-12-18 10:23   ` Borislav Petkov
2023-10-16 13:27 ` [PATCH v10 23/50] KVM: SEV: Make AVIC backing, VMSA and VMCB memory allocation SNP safe Michael Roth
2023-12-11 13:24   ` Vlastimil Babka
2023-12-12  0:00     ` Kalra, Ashish
2023-12-13 13:31   ` Paolo Bonzini
2023-12-13 18:45   ` Paolo Bonzini
2023-12-18 14:57   ` Borislav Petkov
2023-10-16 13:27 ` [PATCH v10 24/50] KVM: SEV: Add initial SEV-SNP support Michael Roth
2023-12-18 17:43   ` Borislav Petkov
2023-10-16 13:27 ` [PATCH v10 25/50] KVM: SEV: Add KVM_SNP_INIT command Michael Roth
2023-10-16 13:27 ` [PATCH v10 26/50] KVM: SEV: Add KVM_SEV_SNP_LAUNCH_START command Michael Roth
2023-10-16 13:27 ` [PATCH v10 27/50] KVM: Add HVA range operator Michael Roth
2023-10-16 13:27 ` [PATCH v10 28/50] KVM: SEV: Add KVM_SEV_SNP_LAUNCH_UPDATE command Michael Roth
2023-10-16 13:27 ` [PATCH v10 29/50] KVM: SEV: Add KVM_SEV_SNP_LAUNCH_FINISH command Michael Roth
2023-10-16 13:27 ` [PATCH v10 30/50] KVM: SEV: Add support to handle GHCB GPA register VMGEXIT Michael Roth
2023-10-16 13:28 ` [PATCH v10 31/50] KVM: SEV: Add KVM_EXIT_VMGEXIT Michael Roth
2023-10-16 13:28 ` [PATCH v10 32/50] KVM: SEV: Add support to handle MSR based Page State Change VMGEXIT Michael Roth
2023-10-16 13:28 ` [PATCH v10 33/50] KVM: SEV: Add support to handle " Michael Roth
2023-10-16 13:28 ` [PATCH v10 34/50] KVM: x86: Export the kvm_zap_gfn_range() for the SNP use Michael Roth
2023-10-16 13:28 ` [PATCH v10 35/50] KVM: SEV: Add support to handle RMP nested page faults Michael Roth
2023-10-16 13:28 ` [PATCH v10 36/50] KVM: SEV: Use a VMSA physical address variable for populating VMCB Michael Roth
2023-10-16 13:28 ` [PATCH v10 37/50] KVM: SEV: Support SEV-SNP AP Creation NAE event Michael Roth
2023-10-16 13:28 ` [PATCH v10 38/50] KVM: SEV: Add support for GHCB-based termination requests Michael Roth
2023-10-19 12:20   ` Liam Merwick
2023-10-16 13:28 ` [PATCH v10 39/50] KVM: SEV: Implement gmem hook for initializing private pages Michael Roth
2023-10-16 13:28 ` [PATCH v10 40/50] KVM: SEV: Implement gmem hook for invalidating " Michael Roth
2023-10-16 13:28 ` [PATCH v10 41/50] KVM: x86: Add gmem hook for determining max NPT mapping level Michael Roth
2023-10-16 13:28 ` [PATCH v10 42/50] KVM: SEV: Avoid WBINVD for HVA-based MMU notifications for SNP Michael Roth
2023-10-16 13:28 ` [PATCH v10 43/50] KVM: SVM: Add module parameter to enable the SEV-SNP Michael Roth
2023-10-16 13:28 ` [PATCH v10 44/50] iommu/amd: Add IOMMU_SNP_SHUTDOWN support Michael Roth
2023-10-16 13:28 ` [PATCH v10 45/50] iommu/amd: Report all cases inhibiting SNP enablement Michael Roth
2023-10-16 13:28 ` [PATCH v10 46/50] crypto: ccp: Add the SNP_{SET,GET}_EXT_CONFIG command Michael Roth
2023-10-16 23:11   ` Dionna Amalie Glaze
2023-10-16 13:28 ` [PATCH v10 47/50] x86/sev: Add KVM commands for per-instance certs Michael Roth
2023-10-16 13:28 ` [PATCH v10 48/50] KVM: SEV: Provide support for SNP_GUEST_REQUEST NAE event Michael Roth
2023-10-16 23:18   ` Dionna Amalie Glaze
2023-10-17 16:27     ` Sean Christopherson
2023-10-18  2:28       ` Alexey Kardashevskiy
2023-10-18 13:48         ` Sean Christopherson
2023-10-18 20:27           ` Kalra, Ashish
2023-10-18 20:38             ` Sean Christopherson
2023-10-18 21:27               ` Kalra, Ashish
2023-10-18 21:43                 ` Sean Christopherson
2023-10-19  2:48           ` Alexey Kardashevskiy
2023-10-19 14:57             ` Sean Christopherson
2023-10-19 23:55               ` Alexey Kardashevskiy
2023-10-20  0:13                 ` Sean Christopherson
2023-10-20  0:43                   ` Alexey Kardashevskiy
2023-10-20 15:13                     ` Sean Christopherson
2023-10-20 18:37             ` Tom Lendacky
2023-11-10 22:07           ` Michael Roth
2023-11-10 22:47             ` Sean Christopherson
2023-11-16  5:31               ` Dionna Amalie Glaze
2023-12-05  0:30                 ` Dan Williams
2023-12-05  0:48                   ` Dionna Amalie Glaze
2023-12-05 20:06                     ` Dan Williams
2023-12-05 22:04                       ` Dionna Amalie Glaze
2023-12-05 23:11                         ` Dan Williams
2023-12-06  0:43                           ` Dionna Amalie Glaze
2023-10-16 13:28 ` [PATCH v10 49/50] crypto: ccp: Add debug support for decrypting pages Michael Roth
2023-10-16 13:28 ` [PATCH v10 50/50] crypto: ccp: Add panic notifier for SEV/SNP firmware shutdown on kdump Michael Roth

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20231016132819.1002933-15-michael.roth@amd.com \
    --to=michael.roth@amd.com \
    --cc=ak@linux.intel.com \
    --cc=alpergun@google.com \
    --cc=ardb@kernel.org \
    --cc=ashish.kalra@amd.com \
    --cc=bp@alien8.de \
    --cc=brijesh.singh@amd.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=dovmurik@linux.ibm.com \
    --cc=hpa@zytor.com \
    --cc=jarkko@kernel.org \
    --cc=jarkko@profian.com \
    --cc=jmattson@google.com \
    --cc=jroedel@suse.de \
    --cc=kirill@shutemov.name \
    --cc=kvm@vger.kernel.org \
    --cc=liam.merwick@oracle.com \
    --cc=linux-coco@lists.linux.dev \
    --cc=linux-crypto@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=luto@kernel.org \
    --cc=marcorr@google.com \
    --cc=mingo@redhat.com \
    --cc=nikunj.dadhania@amd.com \
    --cc=pankaj.gupta@amd.com \
    --cc=pbonzini@redhat.com \
    --cc=peterz@infradead.org \
    --cc=pgonda@google.com \
    --cc=rientjes@google.com \
    --cc=sathyanarayanan.kuppuswamy@linux.intel.com \
    --cc=seanjc@google.com \
    --cc=slp@redhat.com \
    --cc=srinivas.pandruvada@linux.intel.com \
    --cc=tglx@linutronix.de \
    --cc=thomas.lendacky@amd.com \
    --cc=tobin@ibm.com \
    --cc=tony.luck@intel.com \
    --cc=vbabka@suse.cz \
    --cc=vkuznets@redhat.com \
    --cc=x86@kernel.org \
    --cc=zhi.a.wang@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox