kvm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v9 0/2] Add SEV-SNP CipherTextHiding feature support
@ 2025-08-20 20:49 Ashish Kalra
  2025-08-20 20:50 ` [PATCH v9 1/2] KVM: SEV: Introduce new min,max sev_es and sev_snp asid variables Ashish Kalra
  2025-08-20 20:50 ` [PATCH v9 2/2] KVM: SEV: Add SEV-SNP CipherTextHiding support Ashish Kalra
  0 siblings, 2 replies; 10+ messages in thread
From: Ashish Kalra @ 2025-08-20 20:49 UTC (permalink / raw)
  To: corbet, seanjc, pbonzini, tglx, mingo, bp, dave.hansen, x86, hpa,
	thomas.lendacky, herbert
  Cc: akpm, rostedt, paulmck, michael.roth, linux-doc, linux-kernel,
	kvm

From: Ashish Kalra <ashish.kalra@amd.com>

Ciphertext hiding prevents host accesses from reading the ciphertext
of SNP guest private memory. Instead of reading ciphertext, the host
will see constant default values (0xff).

The SEV ASID space is split into SEV and SEV-ES/SNP ASID ranges.
Enabling ciphertext hiding further splits the SEV-ES/SEV-SNP ASID space
into separate ASID ranges for SEV-ES and SEV-SNP guests.

Add new module parameter to the KVM module to enable ciphertext hiding
support and a user configurable system-wide maximum SNP ASID value. If
the module parameter value is '-1' then the complete SEV-ES/SEV-SNP
space is allocated to SEV-SNP guests.

Based on linux-next.

Depends on the CCP driver patch-series for SEV-SNP ciphertext hiding 
feature support:
https://lore.kernel.org/lkml/e1740fa2-f26c-4c3b-b139-b31dd654bea6@amd.com/T/#m1100d65b99cbb022c8a2d04ec88082d3ba68a219

v9:
- Drop the special case of the module paramter value of -1.
Make the param a uint and cap it at that maximum possible value.

v8:
- Change module parameter to enable ciphertext hiding to use '-1' 
instead of the string "max" to assign complete SEV-ES/SEV-SNP ASID
space to SEV-SNP guests, this simplifies the implementation and moves
most error checking to the module loader itself.

v7:
- Fix comments.
- Move the check for module parameter ciphertext_hiding_asids inside
check_and_enable_sev_snp_ciphertext_hiding(), this keeps all the logic
related to the parameter in a single function.

v6:
- Fix module parameter ciphertext_hiding_asids=0 case.
- Coalesce multiple cases of handling invalid module parameter
ciphertext_hiding_asids into a single branch/label.
- Fix commit logs.
- Fix Documentation.

v5:
- Add pre-patch to cache SEV platform status and use this cached
information to set api_major/api_minor/build.
- Since the SEV platform status and SNP platform status differ, 
remove the state field from sev_device structure and instead track
SEV platform state from cached SEV platform status.
- If SNP is enabled then cached SNP platform status is used for 
api_major/api_minor/build.
- Fix using sev_do_cmd() instead of __sev_do_cmd_locked().
- Fix commit logs.
- Fix kernel-parameters documentation. 
- Modify KVM module parameter to enable CipherTextHiding to support
"max" option to allow complete SEV-ES+ ASID space to be allocated
to SEV-SNP guests.
- Do not enable ciphertext hiding if module parameter to specify
maximum SNP ASID is invalid.

v4:
- Fix buffer allocation for SNP_FEATURE_INFO command to correctly
handle page boundary check requirements.
- Return correct length for SNP_FEATURE_INFO command from
sev_cmd_buffer_len().
- Switch to using SNP platform status instead of SEV platform status if
SNP is enabled and cache SNP platform status and feature information.
Modify sev_get_api_version() accordingly.
- Fix commit logs.
- Expand the comments on why both the feature info and the platform
status fields have to be checked for CipherTextHiding feature 
detection and enablement.
- Add new preperation patch for CipherTextHiding feature which
introduces new {min,max}_{sev_es,snp}_asid variables along with
existing {min,max}_sev_asid variable to simplify partitioning of the
SEV and SEV-ES+ ASID space.
- Switch to single KVM module parameter to enable CipherTextHiding
feature and the maximum SNP ASID usable for SNP guests when 
CipherTextHiding feature is enabled.

v3:
- rebase to linux-next.
- rebase on top of support to move SEV-SNP initialization to
KVM module from CCP driver.
- Split CipherTextHiding support between CCP driver and KVM module
with KVM module calling into CCP driver to initialize SNP with
CipherTextHiding enabled and MAX ASID usable for SNP guest if
KVM is enabling CipherTextHiding feature.
- Move module parameters to enable CipherTextHiding feature and
MAX ASID usable for SNP guests from CCP driver to KVM module
which allows KVM to be responsible for enabling CipherTextHiding
feature if end-user requests it.

v2:
- Fix and add more description to commit logs.
- Rename sev_cache_snp_platform_status_and_discover_features() to 
snp_get_platform_data().
- Add check in snp_get_platform_data to guard against being called
after SNP_INIT_EX.
- Fix comments for new structure field definitions being added.
- Fix naming for new structure being added.
- Add new vm-type parameter to sev_asid_new().
- Fix identation.
- Rename CCP module parameters psp_cth_enabled to cipher_text_hiding and 
psp_max_snp_asid to max_snp_asid.
- Rename max_snp_asid to snp_max_snp_asid. 

Ashish Kalra (2):
  KVM: SEV: Introduce new min,max sev_es and sev_snp asid variables
  KVM: SEV: Add SEV-SNP CipherTextHiding support

 .../admin-guide/kernel-parameters.txt         | 19 ++++++
 arch/x86/kvm/svm/sev.c                        | 68 ++++++++++++++++---
 2 files changed, 77 insertions(+), 10 deletions(-)

-- 
2.34.1


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH v9 1/2] KVM: SEV: Introduce new min,max sev_es and sev_snp asid variables
  2025-08-20 20:49 [PATCH v9 0/2] Add SEV-SNP CipherTextHiding feature support Ashish Kalra
@ 2025-08-20 20:50 ` Ashish Kalra
  2025-08-20 20:50 ` [PATCH v9 2/2] KVM: SEV: Add SEV-SNP CipherTextHiding support Ashish Kalra
  1 sibling, 0 replies; 10+ messages in thread
From: Ashish Kalra @ 2025-08-20 20:50 UTC (permalink / raw)
  To: corbet, seanjc, pbonzini, tglx, mingo, bp, dave.hansen, x86, hpa,
	thomas.lendacky, herbert
  Cc: akpm, rostedt, paulmck, michael.roth, linux-doc, linux-kernel,
	kvm

From: Ashish Kalra <ashish.kalra@amd.com>

Introduce new min, max sev_es_asid and sev_snp_asid variables.

The new {min,max}_{sev_es,snp}_asid variables along with existing
{min,max}_sev_asid variable simplifies partitioning of the
SEV and SEV-ES+ ASID space.

Suggested-by: Sean Christopherson <seanjc@google.com>
Reviewed-by: Tom Lendacky <thomas.lendacky@amd.com>
Signed-off-by: Ashish Kalra <ashish.kalra@amd.com>
---
 arch/x86/kvm/svm/sev.c | 36 +++++++++++++++++++++++++++---------
 1 file changed, 27 insertions(+), 9 deletions(-)

diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c
index 0635bd71c10e..cd9ce100627e 100644
--- a/arch/x86/kvm/svm/sev.c
+++ b/arch/x86/kvm/svm/sev.c
@@ -85,6 +85,10 @@ static DECLARE_RWSEM(sev_deactivate_lock);
 static DEFINE_MUTEX(sev_bitmap_lock);
 unsigned int max_sev_asid;
 static unsigned int min_sev_asid;
+static unsigned int max_sev_es_asid;
+static unsigned int min_sev_es_asid;
+static unsigned int max_snp_asid;
+static unsigned int min_snp_asid;
 static unsigned long sev_me_mask;
 static unsigned int nr_asids;
 static unsigned long *sev_asid_bitmap;
@@ -173,20 +177,31 @@ static void sev_misc_cg_uncharge(struct kvm_sev_info *sev)
 	misc_cg_uncharge(type, sev->misc_cg, 1);
 }
 
-static int sev_asid_new(struct kvm_sev_info *sev)
+static int sev_asid_new(struct kvm_sev_info *sev, unsigned long vm_type)
 {
 	/*
 	 * SEV-enabled guests must use asid from min_sev_asid to max_sev_asid.
 	 * SEV-ES-enabled guest can use from 1 to min_sev_asid - 1.
-	 * Note: min ASID can end up larger than the max if basic SEV support is
-	 * effectively disabled by disallowing use of ASIDs for SEV guests.
 	 */
-	unsigned int min_asid = sev->es_active ? 1 : min_sev_asid;
-	unsigned int max_asid = sev->es_active ? min_sev_asid - 1 : max_sev_asid;
-	unsigned int asid;
+	unsigned int min_asid, max_asid, asid;
 	bool retry = true;
 	int ret;
 
+	if (vm_type == KVM_X86_SNP_VM) {
+		min_asid = min_snp_asid;
+		max_asid = max_snp_asid;
+	} else if (sev->es_active) {
+		min_asid = min_sev_es_asid;
+		max_asid = max_sev_es_asid;
+	} else {
+		min_asid = min_sev_asid;
+		max_asid = max_sev_asid;
+	}
+
+	/*
+	 * The min ASID can end up larger than the max if basic SEV support is
+	 * effectively disabled by disallowing use of ASIDs for SEV guests.
+	 */
 	if (min_asid > max_asid)
 		return -ENOTTY;
 
@@ -440,7 +455,7 @@ static int __sev_guest_init(struct kvm *kvm, struct kvm_sev_cmd *argp,
 	if (vm_type == KVM_X86_SNP_VM)
 		sev->vmsa_features |= SVM_SEV_FEAT_SNP_ACTIVE;
 
-	ret = sev_asid_new(sev);
+	ret = sev_asid_new(sev, vm_type);
 	if (ret)
 		goto e_no_asid;
 
@@ -3038,6 +3053,9 @@ void __init sev_hardware_setup(void)
 	if (min_sev_asid == 1)
 		goto out;
 
+	min_sev_es_asid = min_snp_asid = 1;
+	max_sev_es_asid = max_snp_asid = min_sev_asid - 1;
+
 	sev_es_asid_count = min_sev_asid - 1;
 	WARN_ON_ONCE(misc_cg_set_capacity(MISC_CG_RES_SEV_ES, sev_es_asid_count));
 	sev_es_supported = true;
@@ -3061,11 +3079,11 @@ void __init sev_hardware_setup(void)
 	if (boot_cpu_has(X86_FEATURE_SEV_ES))
 		pr_info("SEV-ES %s (ASIDs %u - %u)\n",
 			str_enabled_disabled(sev_es_supported),
-			min_sev_asid > 1 ? 1 : 0, min_sev_asid - 1);
+			min_sev_es_asid, max_sev_es_asid);
 	if (boot_cpu_has(X86_FEATURE_SEV_SNP))
 		pr_info("SEV-SNP %s (ASIDs %u - %u)\n",
 			str_enabled_disabled(sev_snp_supported),
-			min_sev_asid > 1 ? 1 : 0, min_sev_asid - 1);
+			min_snp_asid, max_snp_asid);
 
 	sev_enabled = sev_supported;
 	sev_es_enabled = sev_es_supported;
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH v9 2/2] KVM: SEV: Add SEV-SNP CipherTextHiding support
  2025-08-20 20:49 [PATCH v9 0/2] Add SEV-SNP CipherTextHiding feature support Ashish Kalra
  2025-08-20 20:50 ` [PATCH v9 1/2] KVM: SEV: Introduce new min,max sev_es and sev_snp asid variables Ashish Kalra
@ 2025-08-20 20:50 ` Ashish Kalra
  2025-08-20 22:45   ` Randy Dunlap
  1 sibling, 1 reply; 10+ messages in thread
From: Ashish Kalra @ 2025-08-20 20:50 UTC (permalink / raw)
  To: corbet, seanjc, pbonzini, tglx, mingo, bp, dave.hansen, x86, hpa,
	thomas.lendacky, herbert
  Cc: akpm, rostedt, paulmck, michael.roth, linux-doc, linux-kernel,
	kvm

From: Ashish Kalra <ashish.kalra@amd.com>

Ciphertext hiding prevents host accesses from reading the ciphertext of
SNP guest private memory. Instead of reading ciphertext, the host reads
will see constant default values (0xff).

The SEV ASID space is split into SEV and SEV-ES/SEV-SNP ASID ranges.
Enabling ciphertext hiding further splits the SEV-ES/SEV-SNP ASID space
into separate ASID ranges for SEV-ES and SEV-SNP guests.

Add a new off-by-default kvm-amd module parameter to enable ciphertext
hiding and allow the admin to configure the SEV-ES and SEV-SNP ASID
ranges. Simply cap the maximum SEV-SNP ASID as appropriate, i.e. don't
reject loading KVM or disable ciphertest hiding for a too-big value, as
KVM's general approach for module params is to sanitize inputs based on
hardware/kernel support, not burn the world down. This also allows the
admin to use -1u to assign all SEV-ES/SNP ASIDs to SNP without needing
dedicated handling in KVM.

Suggested-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Ashish Kalra <ashish.kalra@amd.com>
Co-developed-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Sean Christopherson <seanjc@google.com>
---
 .../admin-guide/kernel-parameters.txt         | 19 +++++++++++
 arch/x86/kvm/svm/sev.c                        | 32 ++++++++++++++++++-
 2 files changed, 50 insertions(+), 1 deletion(-)

diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
index 729728280438..fd59d129ad8a 100644
--- a/Documentation/admin-guide/kernel-parameters.txt
+++ b/Documentation/admin-guide/kernel-parameters.txt
@@ -2957,6 +2957,25 @@
 			(enabled). Disable by KVM if hardware lacks support
 			for NPT.
 
+	kvm-amd.ciphertext_hiding_asids=
+			[KVM,AMD] Ciphertext hiding prevents disallowed accesses
+			to SNP private memory from reading ciphertext.  Instead,
+			reads will see constant default values (0xff).
+
+			If ciphertext hiding is enabled, the joint SEV-ES and SEV-SNP
+			ASID space is paritioned into separate SEV-ES and SEV-SNP
+			ASID ranges, with the SEV-SNP ASID range starting at 1.
+			For SEV-ES/SEV-SNP guests the maximum ASID is MIN_SEV_ASID-1,
+			where MIN_SEV_ASID value is discovered by CPUID
+			Fn8000_001F[EDX].
+
+			A non-zero value enables SEV-SNP ciphertext hiding and
+			adjusts the ASID ranges for SEV-ES and SEV-SNP guests.
+			KVM caps the number of SEV-SNP ASIDs at the maximum
+			possible value, e.g. specifying -1u will assign all
+			joint SEV-ES and SEV-SNP ASIDs to SEV-SNP and make
+			SEV-ES unusable.
+
 	kvm-arm.mode=
 			[KVM,ARM,EARLY] Select one of KVM/arm64's modes of
 			operation.
diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c
index cd9ce100627e..5cad79ad1002 100644
--- a/arch/x86/kvm/svm/sev.c
+++ b/arch/x86/kvm/svm/sev.c
@@ -59,6 +59,9 @@ static bool sev_es_debug_swap_enabled = true;
 module_param_named(debug_swap, sev_es_debug_swap_enabled, bool, 0444);
 static u64 sev_supported_vmsa_features;
 
+static unsigned int nr_ciphertext_hiding_asids;
+module_param_named(ciphertext_hiding_asids, nr_ciphertext_hiding_asids, uint, 0444);
+
 #define AP_RESET_HOLD_NONE		0
 #define AP_RESET_HOLD_NAE_EVENT		1
 #define AP_RESET_HOLD_MSR_PROTO		2
@@ -201,6 +204,9 @@ static int sev_asid_new(struct kvm_sev_info *sev, unsigned long vm_type)
 	/*
 	 * The min ASID can end up larger than the max if basic SEV support is
 	 * effectively disabled by disallowing use of ASIDs for SEV guests.
+	 * Similarly for SEV-ES guests the min ASID can end up larger than the
+	 * max when ciphertext hiding is enabled, effectively disabling SEV-ES
+	 * support.
 	 */
 	if (min_asid > max_asid)
 		return -ENOTTY;
@@ -3064,10 +3070,32 @@ void __init sev_hardware_setup(void)
 out:
 	if (sev_enabled) {
 		init_args.probe = true;
+
+		if (sev_is_snp_ciphertext_hiding_supported())
+			init_args.max_snp_asid = min(nr_ciphertext_hiding_asids,
+						     min_sev_asid - 1);
+
 		if (sev_platform_init(&init_args))
 			sev_supported = sev_es_supported = sev_snp_supported = false;
 		else if (sev_snp_supported)
 			sev_snp_supported = is_sev_snp_initialized();
+
+		if (sev_snp_supported)
+			nr_ciphertext_hiding_asids = init_args.max_snp_asid;
+
+		/*
+		 * If ciphertext hiding is enabled, the joint SEV-ES/SEV-SNP
+		 * ASID range is partitioned into separate SEV-ES and SEV-SNP
+		 * ASID ranges, with the SEV-SNP range being [1..max_snp_asid]
+		 * and the SEV-ES range being [max_snp_asid..max_sev_es_asid].
+		 * Note, SEV-ES may effectively be disabled if all ASIDs from
+		 * the joint range are assigned to SEV-SNP.
+		 */
+		if (nr_ciphertext_hiding_asids) {
+			max_snp_asid = nr_ciphertext_hiding_asids;
+			min_sev_es_asid = max_snp_asid + 1;
+			pr_info("SEV-SNP ciphertext hiding enabled\n");
+		}
 	}
 
 	if (boot_cpu_has(X86_FEATURE_SEV))
@@ -3078,7 +3106,9 @@ void __init sev_hardware_setup(void)
 			min_sev_asid, max_sev_asid);
 	if (boot_cpu_has(X86_FEATURE_SEV_ES))
 		pr_info("SEV-ES %s (ASIDs %u - %u)\n",
-			str_enabled_disabled(sev_es_supported),
+			sev_es_supported ? min_sev_es_asid <= max_sev_es_asid ? "enabled" :
+										"unusable" :
+										"disabled",
 			min_sev_es_asid, max_sev_es_asid);
 	if (boot_cpu_has(X86_FEATURE_SEV_SNP))
 		pr_info("SEV-SNP %s (ASIDs %u - %u)\n",
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH v9 2/2] KVM: SEV: Add SEV-SNP CipherTextHiding support
  2025-08-20 20:50 ` [PATCH v9 2/2] KVM: SEV: Add SEV-SNP CipherTextHiding support Ashish Kalra
@ 2025-08-20 22:45   ` Randy Dunlap
  2025-08-20 23:23     ` Kalra, Ashish
  0 siblings, 1 reply; 10+ messages in thread
From: Randy Dunlap @ 2025-08-20 22:45 UTC (permalink / raw)
  To: Ashish Kalra, corbet, seanjc, pbonzini, tglx, mingo, bp,
	dave.hansen, x86, hpa, thomas.lendacky, herbert
  Cc: akpm, rostedt, paulmck, michael.roth, linux-doc, linux-kernel,
	kvm



On 8/20/25 1:50 PM, Ashish Kalra wrote:
> @@ -3064,10 +3070,32 @@ void __init sev_hardware_setup(void)
>  out:
>  	if (sev_enabled) {
>  		init_args.probe = true;
> +
> +		if (sev_is_snp_ciphertext_hiding_supported())
> +			init_args.max_snp_asid = min(nr_ciphertext_hiding_asids,
> +						     min_sev_asid - 1);
> +
>  		if (sev_platform_init(&init_args))
>  			sev_supported = sev_es_supported = sev_snp_supported = false;
>  		else if (sev_snp_supported)
>  			sev_snp_supported = is_sev_snp_initialized();
> +
> +		if (sev_snp_supported)
> +			nr_ciphertext_hiding_asids = init_args.max_snp_asid;
> +
> +		/*
> +		 * If ciphertext hiding is enabled, the joint SEV-ES/SEV-SNP
> +		 * ASID range is partitioned into separate SEV-ES and SEV-SNP
> +		 * ASID ranges, with the SEV-SNP range being [1..max_snp_asid]
> +		 * and the SEV-ES range being [max_snp_asid..max_sev_es_asid].

		                              [max_snp_asid + 1..max_sev_es_asid]
?

> +		 * Note, SEV-ES may effectively be disabled if all ASIDs from
> +		 * the joint range are assigned to SEV-SNP.
> +		 */
-- 
~Randy


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v9 2/2] KVM: SEV: Add SEV-SNP CipherTextHiding support
  2025-08-20 22:45   ` Randy Dunlap
@ 2025-08-20 23:23     ` Kalra, Ashish
  2025-08-21 10:30       ` Kim Phillips
  0 siblings, 1 reply; 10+ messages in thread
From: Kalra, Ashish @ 2025-08-20 23:23 UTC (permalink / raw)
  To: Randy Dunlap, corbet, seanjc, pbonzini, tglx, mingo, bp,
	dave.hansen, x86, hpa, thomas.lendacky, herbert
  Cc: akpm, rostedt, paulmck, michael.roth, linux-doc, linux-kernel,
	kvm



On 8/20/2025 5:45 PM, Randy Dunlap wrote:
> 
> 
> On 8/20/25 1:50 PM, Ashish Kalra wrote:
>> @@ -3064,10 +3070,32 @@ void __init sev_hardware_setup(void)
>>  out:
>>  	if (sev_enabled) {
>>  		init_args.probe = true;
>> +
>> +		if (sev_is_snp_ciphertext_hiding_supported())
>> +			init_args.max_snp_asid = min(nr_ciphertext_hiding_asids,
>> +						     min_sev_asid - 1);
>> +
>>  		if (sev_platform_init(&init_args))
>>  			sev_supported = sev_es_supported = sev_snp_supported = false;
>>  		else if (sev_snp_supported)
>>  			sev_snp_supported = is_sev_snp_initialized();
>> +
>> +		if (sev_snp_supported)
>> +			nr_ciphertext_hiding_asids = init_args.max_snp_asid;
>> +
>> +		/*
>> +		 * If ciphertext hiding is enabled, the joint SEV-ES/SEV-SNP
>> +		 * ASID range is partitioned into separate SEV-ES and SEV-SNP
>> +		 * ASID ranges, with the SEV-SNP range being [1..max_snp_asid]
>> +		 * and the SEV-ES range being [max_snp_asid..max_sev_es_asid].
> 
> 		                              [max_snp_asid + 1..max_sev_es_asid]
> ?

Yes.

Thanks,
Ashish

> 
>> +		 * Note, SEV-ES may effectively be disabled if all ASIDs from
>> +		 * the joint range are assigned to SEV-SNP.
>> +		 */

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v9 2/2] KVM: SEV: Add SEV-SNP CipherTextHiding support
  2025-08-20 23:23     ` Kalra, Ashish
@ 2025-08-21 10:30       ` Kim Phillips
  2025-08-21 10:58         ` Kalra, Ashish
  0 siblings, 1 reply; 10+ messages in thread
From: Kim Phillips @ 2025-08-21 10:30 UTC (permalink / raw)
  To: Kalra, Ashish, Randy Dunlap, corbet, seanjc, pbonzini, tglx,
	mingo, bp, dave.hansen, x86, hpa, thomas.lendacky, herbert
  Cc: akpm, rostedt, paulmck, michael.roth, linux-doc, linux-kernel,
	kvm

On 8/20/25 6:23 PM, Kalra, Ashish wrote:
> On 8/20/2025 5:45 PM, Randy Dunlap wrote:
>> On 8/20/25 1:50 PM, Ashish Kalra wrote:
>>> @@ -3064,10 +3070,32 @@ void __init sev_hardware_setup(void)
>>>   out:
>>>   	if (sev_enabled) {
>>>   		init_args.probe = true;
>>> +
>>> +		if (sev_is_snp_ciphertext_hiding_supported())
>>> +			init_args.max_snp_asid = min(nr_ciphertext_hiding_asids,
>>> +						     min_sev_asid - 1);
>>> +
>>>   		if (sev_platform_init(&init_args))
>>>   			sev_supported = sev_es_supported = sev_snp_supported = false;
>>>   		else if (sev_snp_supported)
>>>   			sev_snp_supported = is_sev_snp_initialized();
>>> +
>>> +		if (sev_snp_supported)
>>> +			nr_ciphertext_hiding_asids = init_args.max_snp_asid;
>>> +
>>> +		/*
>>> +		 * If ciphertext hiding is enabled, the joint SEV-ES/SEV-SNP
>>> +		 * ASID range is partitioned into separate SEV-ES and SEV-SNP
>>> +		 * ASID ranges, with the SEV-SNP range being [1..max_snp_asid]
>>> +		 * and the SEV-ES range being [max_snp_asid..max_sev_es_asid].
>> 		                              [max_snp_asid + 1..max_sev_es_asid]
>> ?
> Yes.

So why wouldn't you have left Sean's original 
"(max_snp_asid..max_sev_es_asid]" as-is?

Kim


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v9 2/2] KVM: SEV: Add SEV-SNP CipherTextHiding support
  2025-08-21 10:30       ` Kim Phillips
@ 2025-08-21 10:58         ` Kalra, Ashish
  2025-08-21 11:06           ` Kim Phillips
  0 siblings, 1 reply; 10+ messages in thread
From: Kalra, Ashish @ 2025-08-21 10:58 UTC (permalink / raw)
  To: Kim Phillips, Randy Dunlap, corbet, seanjc, pbonzini, tglx, mingo,
	bp, dave.hansen, x86, hpa, thomas.lendacky, herbert
  Cc: akpm, rostedt, paulmck, michael.roth, linux-doc, linux-kernel,
	kvm



On 8/21/2025 5:30 AM, Kim Phillips wrote:
> On 8/20/25 6:23 PM, Kalra, Ashish wrote:
>> On 8/20/2025 5:45 PM, Randy Dunlap wrote:
>>> On 8/20/25 1:50 PM, Ashish Kalra wrote:
>>>> @@ -3064,10 +3070,32 @@ void __init sev_hardware_setup(void)
>>>>   out:
>>>>       if (sev_enabled) {
>>>>           init_args.probe = true;
>>>> +
>>>> +        if (sev_is_snp_ciphertext_hiding_supported())
>>>> +            init_args.max_snp_asid = min(nr_ciphertext_hiding_asids,
>>>> +                             min_sev_asid - 1);
>>>> +
>>>>           if (sev_platform_init(&init_args))
>>>>               sev_supported = sev_es_supported = sev_snp_supported = false;
>>>>           else if (sev_snp_supported)
>>>>               sev_snp_supported = is_sev_snp_initialized();
>>>> +
>>>> +        if (sev_snp_supported)
>>>> +            nr_ciphertext_hiding_asids = init_args.max_snp_asid;
>>>> +
>>>> +        /*
>>>> +         * If ciphertext hiding is enabled, the joint SEV-ES/SEV-SNP
>>>> +         * ASID range is partitioned into separate SEV-ES and SEV-SNP
>>>> +         * ASID ranges, with the SEV-SNP range being [1..max_snp_asid]
>>>> +         * and the SEV-ES range being [max_snp_asid..max_sev_es_asid].
>>>                                       [max_snp_asid + 1..max_sev_es_asid]
>>> ?
>> Yes.
> 
> So why wouldn't you have left Sean's original "(max_snp_asid..max_sev_es_asid]" as-is?
> 
> Kim
> 

Because that i believe is a typo and the correct SEV-ES range is [max_snp_asid + 1..max_sev_es_asid].

Ashish

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v9 2/2] KVM: SEV: Add SEV-SNP CipherTextHiding support
  2025-08-21 10:58         ` Kalra, Ashish
@ 2025-08-21 11:06           ` Kim Phillips
  2025-08-21 14:16             ` Sean Christopherson
  0 siblings, 1 reply; 10+ messages in thread
From: Kim Phillips @ 2025-08-21 11:06 UTC (permalink / raw)
  To: Kalra, Ashish, Randy Dunlap, corbet, seanjc, pbonzini, tglx,
	mingo, bp, dave.hansen, x86, hpa, thomas.lendacky, herbert
  Cc: akpm, rostedt, paulmck, michael.roth, linux-doc, linux-kernel,
	kvm

On 8/21/25 5:58 AM, Kalra, Ashish wrote:
> On 8/21/2025 5:30 AM, Kim Phillips wrote:
>> On 8/20/25 6:23 PM, Kalra, Ashish wrote:
>>> On 8/20/2025 5:45 PM, Randy Dunlap wrote:
>>>> On 8/20/25 1:50 PM, Ashish Kalra wrote:
>>>>> @@ -3064,10 +3070,32 @@ void __init sev_hardware_setup(void)
>>>>>    out:
>>>>>        if (sev_enabled) {
>>>>>            init_args.probe = true;
>>>>> +
>>>>> +        if (sev_is_snp_ciphertext_hiding_supported())
>>>>> +            init_args.max_snp_asid = min(nr_ciphertext_hiding_asids,
>>>>> +                             min_sev_asid - 1);
>>>>> +
>>>>>            if (sev_platform_init(&init_args))
>>>>>                sev_supported = sev_es_supported = sev_snp_supported = false;
>>>>>            else if (sev_snp_supported)
>>>>>                sev_snp_supported = is_sev_snp_initialized();
>>>>> +
>>>>> +        if (sev_snp_supported)
>>>>> +            nr_ciphertext_hiding_asids = init_args.max_snp_asid;
>>>>> +
>>>>> +        /*
>>>>> +         * If ciphertext hiding is enabled, the joint SEV-ES/SEV-SNP
>>>>> +         * ASID range is partitioned into separate SEV-ES and SEV-SNP
>>>>> +         * ASID ranges, with the SEV-SNP range being [1..max_snp_asid]
>>>>> +         * and the SEV-ES range being [max_snp_asid..max_sev_es_asid].
>>>>                                        [max_snp_asid + 1..max_sev_es_asid]
>>>> ?
>>> Yes.
>> So why wouldn't you have left Sean's original "(max_snp_asid..max_sev_es_asid]" as-is?
>>
>> Kim
>>
> Because that i believe is a typo and the correct SEV-ES range is [max_snp_asid + 1..max_sev_es_asid].

It's not, though.

[max_snp_asid..max_sev_es_asid]

and

(max_snp_asid..max_sev_es_asid]

are two completely different things.


You also modified Sean's Documentation/ changes.  A consistent "joint 
SEV-ES+SEV-SNP" is preferred.

Thanks,

Kim

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v9 2/2] KVM: SEV: Add SEV-SNP CipherTextHiding support
  2025-08-21 11:06           ` Kim Phillips
@ 2025-08-21 14:16             ` Sean Christopherson
  2025-08-21 15:21               ` Kalra, Ashish
  0 siblings, 1 reply; 10+ messages in thread
From: Sean Christopherson @ 2025-08-21 14:16 UTC (permalink / raw)
  To: Kim Phillips
  Cc: Ashish Kalra, Randy Dunlap, corbet, pbonzini, tglx, mingo, bp,
	dave.hansen, x86, hpa, thomas.lendacky, herbert, akpm, rostedt,
	paulmck, michael.roth, linux-doc, linux-kernel, kvm

On Thu, Aug 21, 2025, Kim Phillips wrote:
> On 8/21/25 5:58 AM, Kalra, Ashish wrote:
> > On 8/21/2025 5:30 AM, Kim Phillips wrote:
> > > On 8/20/25 6:23 PM, Kalra, Ashish wrote:
> > > > On 8/20/2025 5:45 PM, Randy Dunlap wrote:
> > > > > On 8/20/25 1:50 PM, Ashish Kalra wrote:
> > > > > > +        /*
> > > > > > +         * If ciphertext hiding is enabled, the joint SEV-ES/SEV-SNP
> > > > > > +         * ASID range is partitioned into separate SEV-ES and SEV-SNP
> > > > > > +         * ASID ranges, with the SEV-SNP range being [1..max_snp_asid]
> > > > > > +         * and the SEV-ES range being [max_snp_asid..max_sev_es_asid].
> > > > >                                        [max_snp_asid + 1..max_sev_es_asid]
> > > > > ?
> > > > Yes.
> > > So why wouldn't you have left Sean's original "(max_snp_asid..max_sev_es_asid]" as-is?
> > > 
> > > Kim
> > > 
> > Because that i believe is a typo and the correct SEV-ES range is
> > [max_snp_asid + 1..max_sev_es_asid].
> 
> It's not, though.
> 
> [max_snp_asid..max_sev_es_asid]
> 
> and
> 
> (max_snp_asid..max_sev_es_asid]
> 
> are two completely different things.

Yeah, inclusive versus exclusive (I'm quite proud that I remembered which was
which, _and_ that I got it right :-D).

> You also modified Sean's Documentation/ changes.  A consistent "joint
> SEV-ES+SEV-SNP" is preferred.

FWIW, I don't have a strong preference on the exact verbiage, so long as it's
consistent.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v9 2/2] KVM: SEV: Add SEV-SNP CipherTextHiding support
  2025-08-21 14:16             ` Sean Christopherson
@ 2025-08-21 15:21               ` Kalra, Ashish
  0 siblings, 0 replies; 10+ messages in thread
From: Kalra, Ashish @ 2025-08-21 15:21 UTC (permalink / raw)
  To: Sean Christopherson, Kim Phillips
  Cc: Randy Dunlap, corbet, pbonzini, tglx, mingo, bp, dave.hansen, x86,
	hpa, thomas.lendacky, herbert, akpm, rostedt, paulmck,
	michael.roth, linux-doc, linux-kernel, kvm



On 8/21/2025 9:16 AM, Sean Christopherson wrote:
> On Thu, Aug 21, 2025, Kim Phillips wrote:
>> On 8/21/25 5:58 AM, Kalra, Ashish wrote:
>>> On 8/21/2025 5:30 AM, Kim Phillips wrote:
>>>> On 8/20/25 6:23 PM, Kalra, Ashish wrote:
>>>>> On 8/20/2025 5:45 PM, Randy Dunlap wrote:
>>>>>> On 8/20/25 1:50 PM, Ashish Kalra wrote:
>>>>>>> +        /*
>>>>>>> +         * If ciphertext hiding is enabled, the joint SEV-ES/SEV-SNP
>>>>>>> +         * ASID range is partitioned into separate SEV-ES and SEV-SNP
>>>>>>> +         * ASID ranges, with the SEV-SNP range being [1..max_snp_asid]
>>>>>>> +         * and the SEV-ES range being [max_snp_asid..max_sev_es_asid].
>>>>>>                                        [max_snp_asid + 1..max_sev_es_asid]
>>>>>> ?
>>>>> Yes.
>>>> So why wouldn't you have left Sean's original "(max_snp_asid..max_sev_es_asid]" as-is?
>>>>
>>>> Kim
>>>>
>>> Because that i believe is a typo and the correct SEV-ES range is
>>> [max_snp_asid + 1..max_sev_es_asid].
>>
>> It's not, though.
>>
>> [max_snp_asid..max_sev_es_asid]
>>
>> and
>>
>> (max_snp_asid..max_sev_es_asid]
>>
>> are two completely different things.
> 
> Yeah, inclusive versus exclusive (I'm quite proud that I remembered which was
> which, _and_ that I got it right :-D).
>

Thanks for that explanation.
 
>> You also modified Sean's Documentation/ changes.  A consistent "joint
>> SEV-ES+SEV-SNP" is preferred.
> 
> FWIW, I don't have a strong preference on the exact verbiage, so long as it's
> consistent.

I have consistently modified all "SEV-ES+SEV-SNP" to "SEV-ES and SEV-SNP" inline/Documentation and commit logs.

I will post a revision fixing the comment above (if it is needed, unless this can be fixed during merge).

Thanks,
Ashish 

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2025-08-21 15:21 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-20 20:49 [PATCH v9 0/2] Add SEV-SNP CipherTextHiding feature support Ashish Kalra
2025-08-20 20:50 ` [PATCH v9 1/2] KVM: SEV: Introduce new min,max sev_es and sev_snp asid variables Ashish Kalra
2025-08-20 20:50 ` [PATCH v9 2/2] KVM: SEV: Add SEV-SNP CipherTextHiding support Ashish Kalra
2025-08-20 22:45   ` Randy Dunlap
2025-08-20 23:23     ` Kalra, Ashish
2025-08-21 10:30       ` Kim Phillips
2025-08-21 10:58         ` Kalra, Ashish
2025-08-21 11:06           ` Kim Phillips
2025-08-21 14:16             ` Sean Christopherson
2025-08-21 15:21               ` Kalra, Ashish

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).