* [PATCH 1/2] KVM: SVM: Drop the module param to control SEV-ES DebugSwap
2026-01-09 3:30 [PATCH 0/2] KVM: SVM: Drop SEV-ES DebugSwap module param Sean Christopherson
@ 2026-01-09 3:31 ` Sean Christopherson
2026-01-11 17:39 ` Tom Lendacky
2026-01-09 3:31 ` [PATCH 2/2] KVM: SVM: Tag sev_supported_vmsa_features as read-only after init Sean Christopherson
2026-01-15 18:03 ` [PATCH 0/2] KVM: SVM: Drop SEV-ES DebugSwap module param Sean Christopherson
2 siblings, 1 reply; 6+ messages in thread
From: Sean Christopherson @ 2026-01-09 3:31 UTC (permalink / raw)
To: Sean Christopherson, Paolo Bonzini; +Cc: kvm, linux-kernel, Tom Lendacky
Rip out the DebugSwap module param, as the sequence of events that led to
its inclusion was one big mistake, the param no longer serves any purpose.
Commit d1f85fbe836e ("KVM: SEV: Enable data breakpoints in SEV-ES") goofed
by not adding a way for the userspace VMM to control the feature.
Functionally, that was fine, but it broke attestation signatures because
SEV_FEATURES are included in the signature.
Commit 5abf6dceb066 ("SEV: disable SEV-ES DebugSwap by default") fixed that
issue, but the underlying flaw of userspace not having a way to control
SEV_FEATURES was still there.
That flaw was addressed by commit 4f5defae7089 ("KVM: SEV: introduce
KVM_SEV_INIT2 operation"), and so then 4dd5ecacb9a4 ("KVM: SEV: allow
SEV-ES DebugSwap again") re-enabled DebugSwap by default.
Now that the dust has settled, the module param doesn't serve any
meaningful purpose.
Cc: Tom Lendacky <thomas.lendacky@amd.com>
Signed-off-by: Sean Christopherson <seanjc@google.com>
---
arch/x86/kvm/svm/sev.c | 11 +++--------
1 file changed, 3 insertions(+), 8 deletions(-)
diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c
index f59c65abe3cf..9b92f0cccfe6 100644
--- a/arch/x86/kvm/svm/sev.c
+++ b/arch/x86/kvm/svm/sev.c
@@ -53,9 +53,6 @@ module_param_named(sev_es, sev_es_enabled, bool, 0444);
static bool sev_snp_enabled = true;
module_param_named(sev_snp, sev_snp_enabled, bool, 0444);
-/* enable/disable SEV-ES DebugSwap support */
-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;
@@ -3150,12 +3147,10 @@ void __init sev_hardware_setup(void)
sev_es_enabled = sev_es_supported;
sev_snp_enabled = sev_snp_supported;
- if (!sev_es_enabled || !cpu_feature_enabled(X86_FEATURE_DEBUG_SWAP) ||
- !cpu_feature_enabled(X86_FEATURE_NO_NESTED_DATA_BP))
- sev_es_debug_swap_enabled = false;
-
sev_supported_vmsa_features = 0;
- if (sev_es_debug_swap_enabled)
+
+ if (sev_es_enabled && cpu_feature_enabled(X86_FEATURE_DEBUG_SWAP) &&
+ cpu_feature_enabled(X86_FEATURE_NO_NESTED_DATA_BP))
sev_supported_vmsa_features |= SVM_SEV_FEAT_DEBUG_SWAP;
if (sev_snp_enabled && tsc_khz && cpu_feature_enabled(X86_FEATURE_SNP_SECURE_TSC))
--
2.52.0.457.g6b5491de43-goog
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH 1/2] KVM: SVM: Drop the module param to control SEV-ES DebugSwap
2026-01-09 3:31 ` [PATCH 1/2] KVM: SVM: Drop the module param to control SEV-ES DebugSwap Sean Christopherson
@ 2026-01-11 17:39 ` Tom Lendacky
0 siblings, 0 replies; 6+ messages in thread
From: Tom Lendacky @ 2026-01-11 17:39 UTC (permalink / raw)
To: Sean Christopherson, Paolo Bonzini; +Cc: kvm, linux-kernel
On 1/8/26 21:31, Sean Christopherson wrote:
> Rip out the DebugSwap module param, as the sequence of events that led to
> its inclusion was one big mistake, the param no longer serves any purpose.
>
> Commit d1f85fbe836e ("KVM: SEV: Enable data breakpoints in SEV-ES") goofed
> by not adding a way for the userspace VMM to control the feature.
> Functionally, that was fine, but it broke attestation signatures because
> SEV_FEATURES are included in the signature.
>
> Commit 5abf6dceb066 ("SEV: disable SEV-ES DebugSwap by default") fixed that
> issue, but the underlying flaw of userspace not having a way to control
> SEV_FEATURES was still there.
>
> That flaw was addressed by commit 4f5defae7089 ("KVM: SEV: introduce
> KVM_SEV_INIT2 operation"), and so then 4dd5ecacb9a4 ("KVM: SEV: allow
> SEV-ES DebugSwap again") re-enabled DebugSwap by default.
>
> Now that the dust has settled, the module param doesn't serve any
> meaningful purpose.
>
> Cc: Tom Lendacky <thomas.lendacky@amd.com>
> Signed-off-by: Sean Christopherson <seanjc@google.com>
Reviewed-by: Tom Lendacky <thomas.lendacky@amd.com>
> ---
> arch/x86/kvm/svm/sev.c | 11 +++--------
> 1 file changed, 3 insertions(+), 8 deletions(-)
>
> diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c
> index f59c65abe3cf..9b92f0cccfe6 100644
> --- a/arch/x86/kvm/svm/sev.c
> +++ b/arch/x86/kvm/svm/sev.c
> @@ -53,9 +53,6 @@ module_param_named(sev_es, sev_es_enabled, bool, 0444);
> static bool sev_snp_enabled = true;
> module_param_named(sev_snp, sev_snp_enabled, bool, 0444);
>
> -/* enable/disable SEV-ES DebugSwap support */
> -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;
> @@ -3150,12 +3147,10 @@ void __init sev_hardware_setup(void)
> sev_es_enabled = sev_es_supported;
> sev_snp_enabled = sev_snp_supported;
>
> - if (!sev_es_enabled || !cpu_feature_enabled(X86_FEATURE_DEBUG_SWAP) ||
> - !cpu_feature_enabled(X86_FEATURE_NO_NESTED_DATA_BP))
> - sev_es_debug_swap_enabled = false;
> -
> sev_supported_vmsa_features = 0;
> - if (sev_es_debug_swap_enabled)
> +
> + if (sev_es_enabled && cpu_feature_enabled(X86_FEATURE_DEBUG_SWAP) &&
> + cpu_feature_enabled(X86_FEATURE_NO_NESTED_DATA_BP))
> sev_supported_vmsa_features |= SVM_SEV_FEAT_DEBUG_SWAP;
>
> if (sev_snp_enabled && tsc_khz && cpu_feature_enabled(X86_FEATURE_SNP_SECURE_TSC))
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 2/2] KVM: SVM: Tag sev_supported_vmsa_features as read-only after init
2026-01-09 3:30 [PATCH 0/2] KVM: SVM: Drop SEV-ES DebugSwap module param Sean Christopherson
2026-01-09 3:31 ` [PATCH 1/2] KVM: SVM: Drop the module param to control SEV-ES DebugSwap Sean Christopherson
@ 2026-01-09 3:31 ` Sean Christopherson
2026-01-11 17:40 ` Tom Lendacky
2026-01-15 18:03 ` [PATCH 0/2] KVM: SVM: Drop SEV-ES DebugSwap module param Sean Christopherson
2 siblings, 1 reply; 6+ messages in thread
From: Sean Christopherson @ 2026-01-09 3:31 UTC (permalink / raw)
To: Sean Christopherson, Paolo Bonzini; +Cc: kvm, linux-kernel, Tom Lendacky
Tag sev_supported_vmsa_features with __ro_after_init as it's configured by
sev_hardware_setup() and never written after initial configuration (and if
it were, that'd be a blatant bug).
Opportunistically relocate the variable out of the module params area now
that sev_es_debug_swap_enabled is gone (which largely motivated its
original location).
Signed-off-by: Sean Christopherson <seanjc@google.com>
---
arch/x86/kvm/svm/sev.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c
index 9b92f0cccfe6..28150506b18c 100644
--- a/arch/x86/kvm/svm/sev.c
+++ b/arch/x86/kvm/svm/sev.c
@@ -53,8 +53,6 @@ module_param_named(sev_es, sev_es_enabled, bool, 0444);
static bool sev_snp_enabled = true;
module_param_named(sev_snp, sev_snp_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);
@@ -81,6 +79,8 @@ module_param_named(ciphertext_hiding_asids, nr_ciphertext_hiding_asids, uint, 04
static u64 snp_supported_policy_bits __ro_after_init;
+static u64 sev_supported_vmsa_features __ro_after_init;
+
#define INITIAL_VMSA_GPA 0xFFFFFFFFF000
static u8 sev_enc_bit;
--
2.52.0.457.g6b5491de43-goog
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 2/2] KVM: SVM: Tag sev_supported_vmsa_features as read-only after init
2026-01-09 3:31 ` [PATCH 2/2] KVM: SVM: Tag sev_supported_vmsa_features as read-only after init Sean Christopherson
@ 2026-01-11 17:40 ` Tom Lendacky
0 siblings, 0 replies; 6+ messages in thread
From: Tom Lendacky @ 2026-01-11 17:40 UTC (permalink / raw)
To: Sean Christopherson, Paolo Bonzini; +Cc: kvm, linux-kernel
On 1/8/26 21:31, Sean Christopherson wrote:
> Tag sev_supported_vmsa_features with __ro_after_init as it's configured by
> sev_hardware_setup() and never written after initial configuration (and if
> it were, that'd be a blatant bug).
>
> Opportunistically relocate the variable out of the module params area now
> that sev_es_debug_swap_enabled is gone (which largely motivated its
> original location).
>
> Signed-off-by: Sean Christopherson <seanjc@google.com>
Reviewed-by: Tom Lendacky <thomas.lendacky@amd.com>
> ---
> arch/x86/kvm/svm/sev.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c
> index 9b92f0cccfe6..28150506b18c 100644
> --- a/arch/x86/kvm/svm/sev.c
> +++ b/arch/x86/kvm/svm/sev.c
> @@ -53,8 +53,6 @@ module_param_named(sev_es, sev_es_enabled, bool, 0444);
> static bool sev_snp_enabled = true;
> module_param_named(sev_snp, sev_snp_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);
>
> @@ -81,6 +79,8 @@ module_param_named(ciphertext_hiding_asids, nr_ciphertext_hiding_asids, uint, 04
>
> static u64 snp_supported_policy_bits __ro_after_init;
>
> +static u64 sev_supported_vmsa_features __ro_after_init;
> +
> #define INITIAL_VMSA_GPA 0xFFFFFFFFF000
>
> static u8 sev_enc_bit;
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 0/2] KVM: SVM: Drop SEV-ES DebugSwap module param
2026-01-09 3:30 [PATCH 0/2] KVM: SVM: Drop SEV-ES DebugSwap module param Sean Christopherson
2026-01-09 3:31 ` [PATCH 1/2] KVM: SVM: Drop the module param to control SEV-ES DebugSwap Sean Christopherson
2026-01-09 3:31 ` [PATCH 2/2] KVM: SVM: Tag sev_supported_vmsa_features as read-only after init Sean Christopherson
@ 2026-01-15 18:03 ` Sean Christopherson
2 siblings, 0 replies; 6+ messages in thread
From: Sean Christopherson @ 2026-01-15 18:03 UTC (permalink / raw)
To: Sean Christopherson, Paolo Bonzini; +Cc: kvm, linux-kernel, Tom Lendacky
On Thu, 08 Jan 2026 19:30:59 -0800, Sean Christopherson wrote:
> Remove sev_es_debug_swap_enabled as it's no longer needed/useful, and
> mark sev_supported_vmsa_features as read-only after init.
>
> Sean Christopherson (2):
> KVM: SVM: Drop the module param to control SEV-ES DebugSwap
> KVM: SVM: Tag sev_supported_vmsa_features as read-only after init
>
> [...]
Applied to kvm-x86 svm, thanks!
[1/2] KVM: SVM: Drop the module param to control SEV-ES DebugSwap
https://github.com/kvm-x86/linux/commit/9587dd7a7ebd
[2/2] KVM: SVM: Tag sev_supported_vmsa_features as read-only after init
https://github.com/kvm-x86/linux/commit/d23051f59a5b
--
https://github.com/kvm-x86/linux/tree/next
^ permalink raw reply [flat|nested] 6+ messages in thread