Message ID | 20210826222627.3556-3-michael.roth@amd.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Add AMD Secure Nested Paging (SEV-SNP) support | expand |
Hi Michael, On 27/08/2021 1:26, Michael Roth wrote: > From: Brijesh Singh <brijesh.singh@amd.com> > > Sync the kvm.h with the kernel to include the SNP specific commands. > > Signed-off-by: Brijesh Singh <brijesh.singh@amd.com> > Signed-off-by: Michael Roth <michael.roth@amd.com> > --- > linux-headers/linux/kvm.h | 50 +++++++++++++++++++++++++++++++++++++++ > 1 file changed, 50 insertions(+) > In previous review round I commented: ------ What about psp-sev.h ? I see that kernel patch "[PATCH Part2 RFC v4 11/40] crypto:ccp: Define the SEV-SNP commands" adds some new PSP return codes. The QEMU user-friendly string list sev_fw_errlist (in sev.c) should be updated accordingly. ------- -Dov
On Fri, Sep 03, 2021 at 11:36:43PM +0300, Dov Murik wrote: > Hi Michael, > > On 27/08/2021 1:26, Michael Roth wrote: > > From: Brijesh Singh <brijesh.singh@amd.com> > > > > Sync the kvm.h with the kernel to include the SNP specific commands. > > > > Signed-off-by: Brijesh Singh <brijesh.singh@amd.com> > > Signed-off-by: Michael Roth <michael.roth@amd.com> > > --- > > linux-headers/linux/kvm.h | 50 +++++++++++++++++++++++++++++++++++++++ > > 1 file changed, 50 insertions(+) > > > > In previous review round I commented: > > ------ > What about psp-sev.h ? I see that kernel patch "[PATCH Part2 RFC v4 > 11/40] crypto:ccp: Define the SEV-SNP commands" adds some new PSP return > codes. > > The QEMU user-friendly string list sev_fw_errlist (in sev.c) should be > updated accordingly. > ------- Sorry I missed that one, will include the header in the next round and update the QEMU bits as suggested. > > > -Dov
diff --git a/linux-headers/linux/kvm.h b/linux-headers/linux/kvm.h index bcaf66cc4d..486c12b4f7 100644 --- a/linux-headers/linux/kvm.h +++ b/linux-headers/linux/kvm.h @@ -1712,6 +1712,12 @@ enum sev_cmd_id { /* Guest Migration Extension */ KVM_SEV_SEND_CANCEL, + /* SNP specific commands */ + KVM_SEV_SNP_INIT, + KVM_SEV_SNP_LAUNCH_START, + KVM_SEV_SNP_LAUNCH_UPDATE, + KVM_SEV_SNP_LAUNCH_FINISH, + KVM_SEV_NR_MAX, }; @@ -1808,6 +1814,50 @@ struct kvm_sev_receive_update_data { __u32 trans_len; }; +struct kvm_snp_init { + __u64 flags; +}; + +struct kvm_sev_snp_launch_start { + __u64 policy; + __u64 ma_uaddr; + __u8 ma_en; + __u8 imi_en; + __u8 gosvw[16]; + __u8 pad[6]; +}; + +#define KVM_SEV_SNP_PAGE_TYPE_NORMAL 0x1 +#define KVM_SEV_SNP_PAGE_TYPE_VMSA 0x2 +#define KVM_SEV_SNP_PAGE_TYPE_ZERO 0x3 +#define KVM_SEV_SNP_PAGE_TYPE_UNMEASURED 0x4 +#define KVM_SEV_SNP_PAGE_TYPE_SECRETS 0x5 +#define KVM_SEV_SNP_PAGE_TYPE_CPUID 0x6 + +struct kvm_sev_snp_launch_update { + __u64 start_gfn; + __u64 uaddr; + __u32 len; + __u8 imi_page; + __u8 page_type; + __u8 vmpl3_perms; + __u8 vmpl2_perms; + __u8 vmpl1_perms; +}; + +#define KVM_SEV_SNP_ID_BLOCK_SIZE 96 +#define KVM_SEV_SNP_ID_AUTH_SIZE 4096 +#define KVM_SEV_SNP_FINISH_DATA_SIZE 32 + +struct kvm_sev_snp_launch_finish { + __u64 id_block_uaddr; + __u64 id_auth_uaddr; + __u8 id_block_en; + __u8 auth_key_en; + __u8 host_data[KVM_SEV_SNP_FINISH_DATA_SIZE]; + __u8 pad[6]; +}; + #define KVM_DEV_ASSIGN_ENABLE_IOMMU (1 << 0) #define KVM_DEV_ASSIGN_PCI_2_3 (1 << 1) #define KVM_DEV_ASSIGN_MASK_INTX (1 << 2)