Message ID | 20240530111643.1091816-23-pankaj.gupta@amd.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Add AMD Secure Nested Paging (SEV-SNP) support | expand |
On Thu, May 30, 2024 at 1:17 PM Pankaj Gupta <pankaj.gupta@amd.com> wrote: > > From: Dov Murik <dovmurik@linux.ibm.com> > > Move the declaration of PaddedSevHashTable before SevSnpGuest so > we can add a new such field to the latter. > No functional change intended. > > Signed-off-by: Dov Murik <dovmurik@linux.ibm.com> > Signed-off-by: Michael Roth <michael.roth@amd.com> > Signed-off-by: Pankaj Gupta <pankaj.gupta@amd.com> > --- > target/i386/sev.c | 56 +++++++++++++++++++++++------------------------ > 1 file changed, 28 insertions(+), 28 deletions(-) > > diff --git a/target/i386/sev.c b/target/i386/sev.c > index 831745c02a..1b29fdbc9a 100644 > --- a/target/i386/sev.c > +++ b/target/i386/sev.c > @@ -45,6 +45,34 @@ OBJECT_DECLARE_TYPE(SevCommonState, SevCommonStateClass, SEV_COMMON) > OBJECT_DECLARE_TYPE(SevGuestState, SevGuestStateClass, SEV_GUEST) > OBJECT_DECLARE_TYPE(SevSnpGuestState, SevSnpGuestStateClass, SEV_SNP_GUEST) > > +/* hard code sha256 digest size */ > +#define HASH_SIZE 32 > + > +typedef struct QEMU_PACKED SevHashTableEntry { > + QemuUUID guid; > + uint16_t len; > + uint8_t hash[HASH_SIZE]; > +} SevHashTableEntry; > + > +typedef struct QEMU_PACKED SevHashTable { > + QemuUUID guid; > + uint16_t len; > + SevHashTableEntry cmdline; > + SevHashTableEntry initrd; > + SevHashTableEntry kernel; > +} SevHashTable; > + > +/* > + * Data encrypted by sev_encrypt_flash() must be padded to a multiple of > + * 16 bytes. > + */ > +typedef struct QEMU_PACKED PaddedSevHashTable { > + SevHashTable ht; > + uint8_t padding[ROUND_UP(sizeof(SevHashTable), 16) - sizeof(SevHashTable)]; > +} PaddedSevHashTable; > + > +QEMU_BUILD_BUG_ON(sizeof(PaddedSevHashTable) % 16 != 0); Please move also the following lines (SevInfoBlock, SevHashTableDescriptor and the GUIDs) as they are related. Paolo
diff --git a/target/i386/sev.c b/target/i386/sev.c index 831745c02a..1b29fdbc9a 100644 --- a/target/i386/sev.c +++ b/target/i386/sev.c @@ -45,6 +45,34 @@ OBJECT_DECLARE_TYPE(SevCommonState, SevCommonStateClass, SEV_COMMON) OBJECT_DECLARE_TYPE(SevGuestState, SevGuestStateClass, SEV_GUEST) OBJECT_DECLARE_TYPE(SevSnpGuestState, SevSnpGuestStateClass, SEV_SNP_GUEST) +/* hard code sha256 digest size */ +#define HASH_SIZE 32 + +typedef struct QEMU_PACKED SevHashTableEntry { + QemuUUID guid; + uint16_t len; + uint8_t hash[HASH_SIZE]; +} SevHashTableEntry; + +typedef struct QEMU_PACKED SevHashTable { + QemuUUID guid; + uint16_t len; + SevHashTableEntry cmdline; + SevHashTableEntry initrd; + SevHashTableEntry kernel; +} SevHashTable; + +/* + * Data encrypted by sev_encrypt_flash() must be padded to a multiple of + * 16 bytes. + */ +typedef struct QEMU_PACKED PaddedSevHashTable { + SevHashTable ht; + uint8_t padding[ROUND_UP(sizeof(SevHashTable), 16) - sizeof(SevHashTable)]; +} PaddedSevHashTable; + +QEMU_BUILD_BUG_ON(sizeof(PaddedSevHashTable) % 16 != 0); + struct SevCommonState { X86ConfidentialGuest parent_obj; @@ -154,34 +182,6 @@ typedef struct QEMU_PACKED SevHashTableDescriptor { uint32_t size; } SevHashTableDescriptor; -/* hard code sha256 digest size */ -#define HASH_SIZE 32 - -typedef struct QEMU_PACKED SevHashTableEntry { - QemuUUID guid; - uint16_t len; - uint8_t hash[HASH_SIZE]; -} SevHashTableEntry; - -typedef struct QEMU_PACKED SevHashTable { - QemuUUID guid; - uint16_t len; - SevHashTableEntry cmdline; - SevHashTableEntry initrd; - SevHashTableEntry kernel; -} SevHashTable; - -/* - * Data encrypted by sev_encrypt_flash() must be padded to a multiple of - * 16 bytes. - */ -typedef struct QEMU_PACKED PaddedSevHashTable { - SevHashTable ht; - uint8_t padding[ROUND_UP(sizeof(SevHashTable), 16) - sizeof(SevHashTable)]; -} PaddedSevHashTable; - -QEMU_BUILD_BUG_ON(sizeof(PaddedSevHashTable) % 16 != 0); - static Error *sev_mig_blocker; static const char *const sev_fw_errlist[] = {