Re: [PATCH] KVM: SVM: correct the size of spec_ctrl field in VMCB save area

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 7/16/23 23:19, Manali Shukla wrote:
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")

The more appropriate Fixes: tag should the be commit that originally introduced the spec_ctrl field:

d00b99c514b3 ("KVM: SVM: Add support for Virtual SPEC_CTRL")

Although because of 3dd2775b74c9, backports to before that might take some manual work.

Thanks,
Tom

Suggested-by: Tom Lendacky <thomas.lendacky@xxxxxxx>
Signed-off-by: Manali Shukla <manali.shukla@xxxxxxx>
---
  arch/x86/include/asm/svm.h | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/x86/include/asm/svm.h b/arch/x86/include/asm/svm.h
index e7c7379d6ac7..dee9fa91120b 100644
--- a/arch/x86/include/asm/svm.h
+++ b/arch/x86/include/asm/svm.h
@@ -345,7 +345,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 */
@@ -512,7 +512,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



[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux