From: Santosh Shukla Define the new VMCB fields that will be used to save and restore the satate of the following fetch and op IBS related MSRs. * MSRC001_1030 [IBS Fetch Control] * MSRC001_1031 [IBS Fetch Linear Address] * MSRC001_1033 [IBS Execution Control] * MSRC001_1034 [IBS Op Logical Address] * MSRC001_1035 [IBS Op Data] * MSRC001_1036 [IBS Op Data 2] * MSRC001_1037 [IBS Op Data 3] * MSRC001_1038 [IBS DC Linear Address] * MSRC001_103B [IBS Branch Target Address] * MSRC001_103C [IBS Fetch Control Extended] Signed-off-by: Santosh Shukla Signed-off-by: Manali Shukla --- arch/x86/include/asm/svm.h | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/arch/x86/include/asm/svm.h b/arch/x86/include/asm/svm.h index ffc27f676243..269a8327ab2a 100644 --- a/arch/x86/include/asm/svm.h +++ b/arch/x86/include/asm/svm.h @@ -359,6 +359,17 @@ struct vmcb_save_area { u64 last_excp_to; u8 reserved_0x298[72]; u64 spec_ctrl; /* Guest version of SPEC_CTRL at 0x2E0 */ + u8 reserved_0x2e8[1168]; + u64 ibs_fetch_ctl; + u64 ibs_fetch_linear_addr; + u64 ibs_op_ctl; + u64 ibs_op_rip; + u64 ibs_op_data; + u64 ibs_op_data2; + u64 ibs_op_data3; + u64 ibs_dc_linear_addr; + u64 ibs_br_target; + u64 ibs_fetch_extd_ctl; } __packed; /* Save area definition for SEV-ES and SEV-SNP guests */ @@ -541,7 +552,7 @@ struct vmcb { }; } __packed; -#define EXPECTED_VMCB_SAVE_AREA_SIZE 744 +#define EXPECTED_VMCB_SAVE_AREA_SIZE 1992 #define EXPECTED_GHCB_SAVE_AREA_SIZE 1032 #define EXPECTED_SEV_ES_SAVE_AREA_SIZE 1648 #define EXPECTED_VMCB_CONTROL_AREA_SIZE 1024 @@ -567,6 +578,7 @@ static inline void __unused_size_checks(void) BUILD_BUG_RESERVED_OFFSET(vmcb_save_area, 0x180); BUILD_BUG_RESERVED_OFFSET(vmcb_save_area, 0x248); BUILD_BUG_RESERVED_OFFSET(vmcb_save_area, 0x298); + BUILD_BUG_RESERVED_OFFSET(vmcb_save_area, 0x2e8); BUILD_BUG_RESERVED_OFFSET(sev_es_save_area, 0xc8); BUILD_BUG_RESERVED_OFFSET(sev_es_save_area, 0xcc); -- 2.43.0