Message ID | 20220307213356.2797205-30-brijesh.singh@amd.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | Add AMD Secure Nested Paging (SEV-SNP) Guest Support | expand |
On Mon, Mar 07 2022 at 15:33, Brijesh Singh wrote: > > +/* > + * AMD SEV Confidential computing blob structure. The structure is > + * defined in OVMF UEFI firmware header: > + * https://github.com/tianocore/edk2/blob/master/OvmfPkg/Include/Guid/ConfidentialComputingSevSnpBlob.h > + */ > +#define CC_BLOB_SEV_HDR_MAGIC 0x45444d41 > +struct cc_blob_sev_info { > + u32 magic; > + u16 version; > + u16 reserved; > + u64 secrets_phys; > + u32 secrets_len; > + u32 rsvd1; > + u64 cpuid_phys; > + u32 cpuid_len; > + u32 rsvd2; > +}; Shouldn't this be packed? Thanks, tglx
On Wed, Apr 06, 2022 at 11:19:10PM +0200, Thomas Gleixner wrote: > On Mon, Mar 07 2022 at 15:33, Brijesh Singh wrote: > > > > +/* > > + * AMD SEV Confidential computing blob structure. The structure is > > + * defined in OVMF UEFI firmware header: > > + * https://github.com/tianocore/edk2/blob/master/OvmfPkg/Include/Guid/ConfidentialComputingSevSnpBlob.h > > + */ > > +#define CC_BLOB_SEV_HDR_MAGIC 0x45444d41 > > +struct cc_blob_sev_info { > > + u32 magic; > > + u16 version; > > + u16 reserved; > > + u64 secrets_phys; > > + u32 secrets_len; > > + u32 rsvd1; > > + u64 cpuid_phys; > > + u32 cpuid_len; > > + u32 rsvd2; > > +}; > > Shouldn't this be packed? Done. Thx.
On 4/6/22 16:19, Thomas Gleixner wrote: > On Mon, Mar 07 2022 at 15:33, Brijesh Singh wrote: >> >> +/* >> + * AMD SEV Confidential computing blob structure. The structure is >> + * defined in OVMF UEFI firmware header: >> + * https://github.com/tianocore/edk2/blob/master/OvmfPkg/Include/Guid/ConfidentialComputingSevSnpBlob.h >> + */ >> +#define CC_BLOB_SEV_HDR_MAGIC 0x45444d41 >> +struct cc_blob_sev_info { >> + u32 magic; >> + u16 version; >> + u16 reserved; >> + u64 secrets_phys; >> + u32 secrets_len; >> + u32 rsvd1; >> + u64 cpuid_phys; >> + u32 cpuid_len; >> + u32 rsvd2; >> +}; > > Shouldn't this be packed? > Yep, to avoid any additional compiler alignment we should pack it. thanks
On April 7, 2022 7:57:22 AM PDT, Brijesh Singh <brijesh.singh@amd.com> wrote: > > >On 4/6/22 16:19, Thomas Gleixner wrote: >> On Mon, Mar 07 2022 at 15:33, Brijesh Singh wrote: >>> >>> +/* >>> + * AMD SEV Confidential computing blob structure. The structure is >>> + * defined in OVMF UEFI firmware header: >>> + * https://github.com/tianocore/edk2/blob/master/OvmfPkg/Include/Guid/ConfidentialComputingSevSnpBlob.h >>> + */ >>> +#define CC_BLOB_SEV_HDR_MAGIC 0x45444d41 >>> +struct cc_blob_sev_info { >>> + u32 magic; >>> + u16 version; >>> + u16 reserved; >>> + u64 secrets_phys; >>> + u32 secrets_len; >>> + u32 rsvd1; >>> + u64 cpuid_phys; >>> + u32 cpuid_len; >>> + u32 rsvd2; >>> +}; >> >> Shouldn't this be packed? >> > >Yep, to avoid any additional compiler alignment we should pack it. > >thanks It shouldn't be *necessary*, any more than it is necessary for kernel-user space structures, since EFI is a C-based ABI. On x86 it doesn't hurt, either, though, so might as well.
diff --git a/arch/x86/include/asm/sev.h b/arch/x86/include/asm/sev.h index a3203b2caaca..1a7e21bb6eea 100644 --- a/arch/x86/include/asm/sev.h +++ b/arch/x86/include/asm/sev.h @@ -42,6 +42,24 @@ struct es_em_ctxt { struct es_fault_info fi; }; +/* + * AMD SEV Confidential computing blob structure. The structure is + * defined in OVMF UEFI firmware header: + * https://github.com/tianocore/edk2/blob/master/OvmfPkg/Include/Guid/ConfidentialComputingSevSnpBlob.h + */ +#define CC_BLOB_SEV_HDR_MAGIC 0x45444d41 +struct cc_blob_sev_info { + u32 magic; + u16 version; + u16 reserved; + u64 secrets_phys; + u32 secrets_len; + u32 rsvd1; + u64 cpuid_phys; + u32 cpuid_len; + u32 rsvd2; +}; + void do_vc_no_ghcb(struct pt_regs *regs, unsigned long exit_code); static inline u64 lower_bits(u64 val, unsigned int bits) diff --git a/arch/x86/include/uapi/asm/bootparam.h b/arch/x86/include/uapi/asm/bootparam.h index b25d3f82c2f3..1ac5acca72ce 100644 --- a/arch/x86/include/uapi/asm/bootparam.h +++ b/arch/x86/include/uapi/asm/bootparam.h @@ -10,6 +10,7 @@ #define SETUP_EFI 4 #define SETUP_APPLE_PROPERTIES 5 #define SETUP_JAILHOUSE 6 +#define SETUP_CC_BLOB 7 #define SETUP_INDIRECT (1<<31) diff --git a/include/linux/efi.h b/include/linux/efi.h index ccd4d3f91c98..984aa688997a 100644 --- a/include/linux/efi.h +++ b/include/linux/efi.h @@ -390,6 +390,7 @@ void efi_native_runtime_setup(void); #define EFI_CERT_SHA256_GUID EFI_GUID(0xc1c41626, 0x504c, 0x4092, 0xac, 0xa9, 0x41, 0xf9, 0x36, 0x93, 0x43, 0x28) #define EFI_CERT_X509_GUID EFI_GUID(0xa5c059a1, 0x94e4, 0x4aa7, 0x87, 0xb5, 0xab, 0x15, 0x5c, 0x2b, 0xf0, 0x72) #define EFI_CERT_X509_SHA256_GUID EFI_GUID(0x3bd2a492, 0x96c0, 0x4079, 0xb4, 0x20, 0xfc, 0xf9, 0x8e, 0xf1, 0x03, 0xed) +#define EFI_CC_BLOB_GUID EFI_GUID(0x067b1f5f, 0xcf26, 0x44c5, 0x85, 0x54, 0x93, 0xd7, 0x77, 0x91, 0x2d, 0x42) /* * This GUID is used to pass to the kernel proper the struct screen_info