Commit 046f773b authored by Brijesh Singh's avatar Brijesh Singh Committed by Borislav Petkov

KVM: SVM: Define sev_features and VMPL field in the VMSA

The hypervisor uses the sev_features field (offset 3B0h) in the Save State
Area to control the SEV-SNP guest features such as SNPActive, vTOM,
ReflectVC etc. An SEV-SNP guest can read the sev_features field through
the SEV_STATUS MSR.

While at it, update dump_vmcb() to log the VMPL level.

See APM2 Table 15-34 and B-4 for more details.
Signed-off-by: default avatarBrijesh Singh <brijesh.singh@amd.com>
Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
Reviewed-by: default avatarVenu Busireddy <venu.busireddy@oracle.com>
Link: https://lore.kernel.org/r/20220307213356.2797205-2-brijesh.singh@amd.com
parent 31231092
...@@ -282,7 +282,8 @@ struct vmcb_save_area { ...@@ -282,7 +282,8 @@ struct vmcb_save_area {
struct vmcb_seg ldtr; struct vmcb_seg ldtr;
struct vmcb_seg idtr; struct vmcb_seg idtr;
struct vmcb_seg tr; struct vmcb_seg tr;
u8 reserved_1[43]; u8 reserved_1[42];
u8 vmpl;
u8 cpl; u8 cpl;
u8 reserved_2[4]; u8 reserved_2[4];
u64 efer; u64 efer;
...@@ -347,7 +348,8 @@ struct vmcb_save_area { ...@@ -347,7 +348,8 @@ struct vmcb_save_area {
u64 sw_exit_info_1; u64 sw_exit_info_1;
u64 sw_exit_info_2; u64 sw_exit_info_2;
u64 sw_scratch; u64 sw_scratch;
u8 reserved_11[56]; u64 sev_features;
u8 reserved_11[48];
u64 xcr0; u64 xcr0;
u8 valid_bitmap[16]; u8 valid_bitmap[16];
u64 x87_state_gpa; u64 x87_state_gpa;
......
...@@ -3117,8 +3117,8 @@ static void dump_vmcb(struct kvm_vcpu *vcpu) ...@@ -3117,8 +3117,8 @@ static void dump_vmcb(struct kvm_vcpu *vcpu)
"tr:", "tr:",
save01->tr.selector, save01->tr.attrib, save01->tr.selector, save01->tr.attrib,
save01->tr.limit, save01->tr.base); save01->tr.limit, save01->tr.base);
pr_err("cpl: %d efer: %016llx\n", pr_err("vmpl: %d cpl: %d efer: %016llx\n",
save->cpl, save->efer); save->vmpl, save->cpl, save->efer);
pr_err("%-15s %016llx %-13s %016llx\n", pr_err("%-15s %016llx %-13s %016llx\n",
"cr0:", save->cr0, "cr2:", save->cr2); "cr0:", save->cr0, "cr2:", save->cr2);
pr_err("%-15s %016llx %-13s %016llx\n", pr_err("%-15s %016llx %-13s %016llx\n",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment