]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
KVM: SVM: Update dump_vmcb with shadow stack save area additions
authorJohn Allen <john.allen@amd.com>
Fri, 19 Sep 2025 22:32:44 +0000 (15:32 -0700)
committerSean Christopherson <seanjc@google.com>
Tue, 23 Sep 2025 16:28:23 +0000 (09:28 -0700)
Add shadow stack VMCB fields to dump_vmcb. PL0_SSP, PL1_SSP, PL2_SSP,
PL3_SSP, and U_CET are part of the SEV-ES save area and are encrypted,
but can be decrypted and dumped if the guest policy allows debugging.

Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com>
Signed-off-by: John Allen <john.allen@amd.com>
Link: https://lore.kernel.org/r/20250919223258.1604852-38-seanjc@google.com
Signed-off-by: Sean Christopherson <seanjc@google.com>
arch/x86/kvm/svm/svm.c

index b977ea4a46e7a34e6b6b3cfb110f9d01a0caae45..bea8bfea74f948ed154aea361f46bfe43bd6b483 100644 (file)
@@ -3410,6 +3410,10 @@ static void dump_vmcb(struct kvm_vcpu *vcpu)
               "rip:", save->rip, "rflags:", save->rflags);
        pr_err("%-15s %016llx %-13s %016llx\n",
               "rsp:", save->rsp, "rax:", save->rax);
+       pr_err("%-15s %016llx %-13s %016llx\n",
+              "s_cet:", save->s_cet, "ssp:", save->ssp);
+       pr_err("%-15s %016llx\n",
+              "isst_addr:", save->isst_addr);
        pr_err("%-15s %016llx %-13s %016llx\n",
               "star:", save01->star, "lstar:", save01->lstar);
        pr_err("%-15s %016llx %-13s %016llx\n",
@@ -3434,6 +3438,13 @@ static void dump_vmcb(struct kvm_vcpu *vcpu)
                pr_err("%-15s %016llx\n",
                       "sev_features", vmsa->sev_features);
 
+               pr_err("%-15s %016llx %-13s %016llx\n",
+                      "pl0_ssp:", vmsa->pl0_ssp, "pl1_ssp:", vmsa->pl1_ssp);
+               pr_err("%-15s %016llx %-13s %016llx\n",
+                      "pl2_ssp:", vmsa->pl2_ssp, "pl3_ssp:", vmsa->pl3_ssp);
+               pr_err("%-15s %016llx\n",
+                      "u_cet:", vmsa->u_cet);
+
                pr_err("%-15s %016llx %-13s %016llx\n",
                       "rax:", vmsa->rax, "rbx:", vmsa->rbx);
                pr_err("%-15s %016llx %-13s %016llx\n",