KVM: SVM: correct the size of spec_ctrl field in VMCB save area
authorManali Shukla <manali.shukla@amd.com>
Mon, 17 Jul 2023 04:19:03 +0000 (04:19 +0000)
committerSean Christopherson <seanjc@google.com>
Thu, 17 Aug 2023 18:36:24 +0000 (11:36 -0700)
Correct the spec_ctrl field in the VMCB save area based on the AMD
Programmer's manual.

Originally, the spec_ctrl was listed as u32 with 4 bytes of reserved
area.  The AMD Programmer's Manual now lists the spec_ctrl as 8 bytes
in VMCB save area.

The Public Processor Programming reference for Genoa, shows SPEC_CTRL
as 64b register, but the AMD Programmer's Manual lists SPEC_CTRL as
32b register. This discrepancy will be cleaned up in next revision of
the AMD Programmer's Manual.

Since remaining bits above bit 7 are reserved bits in SPEC_CTRL MSR
and thus, not being used, the spec_ctrl added as u32 in the VMCB save
area is currently not an issue.

Fixes: 3dd2775b74c9 ("KVM: SVM: Create a separate mapping for the SEV-ES save area")
Suggested-by: Tom Lendacky <thomas.lendacky@amd.com>
Signed-off-by: Manali Shukla <manali.shukla@amd.com>
Link: https://lore.kernel.org/r/20230717041903.85480-1-manali.shukla@amd.com
Signed-off-by: Sean Christopherson <seanjc@google.com>
arch/x86/include/asm/svm.h

index 72ebd5e4e97510b97c8354083df5d34e086f9726..19bf955b67e0da097aa7e4187c0feecbf10268e4 100644 (file)
@@ -346,7 +346,7 @@ struct vmcb_save_area {
        u64 last_excp_from;
        u64 last_excp_to;
        u8 reserved_0x298[72];
-       u32 spec_ctrl;          /* Guest version of SPEC_CTRL at 0x2E0 */
+       u64 spec_ctrl;          /* Guest version of SPEC_CTRL at 0x2E0 */
 } __packed;
 
 /* Save area definition for SEV-ES and SEV-SNP guests */
@@ -513,7 +513,7 @@ struct ghcb {
 } __packed;
 
 
-#define EXPECTED_VMCB_SAVE_AREA_SIZE           740
+#define EXPECTED_VMCB_SAVE_AREA_SIZE           744
 #define EXPECTED_GHCB_SAVE_AREA_SIZE           1032
 #define EXPECTED_SEV_ES_SAVE_AREA_SIZE         1648
 #define EXPECTED_VMCB_CONTROL_AREA_SIZE                1024