|
@@ -695,6 +695,11 @@ enum sev_cmd_id {
|
|
|
/* Second time is the charm; improved versions of the above ioctls. */
|
|
|
KVM_SEV_INIT2,
|
|
|
|
|
|
+ /* SNP-specific commands */
|
|
|
+ KVM_SEV_SNP_LAUNCH_START = 100,
|
|
|
+ KVM_SEV_SNP_LAUNCH_UPDATE,
|
|
|
+ KVM_SEV_SNP_LAUNCH_FINISH,
|
|
|
+
|
|
|
KVM_SEV_NR_MAX,
|
|
|
};
|
|
|
|
|
@@ -709,7 +714,9 @@ struct kvm_sev_cmd {
|
|
|
struct kvm_sev_init {
|
|
|
__u64 vmsa_features;
|
|
|
__u32 flags;
|
|
|
- __u32 pad[9];
|
|
|
+ __u16 ghcb_version;
|
|
|
+ __u16 pad1;
|
|
|
+ __u32 pad2[8];
|
|
|
};
|
|
|
|
|
|
struct kvm_sev_launch_start {
|
|
@@ -820,6 +827,48 @@ struct kvm_sev_receive_update_data {
|
|
|
__u32 pad2;
|
|
|
};
|
|
|
|
|
|
+struct kvm_sev_snp_launch_start {
|
|
|
+ __u64 policy;
|
|
|
+ __u8 gosvw[16];
|
|
|
+ __u16 flags;
|
|
|
+ __u8 pad0[6];
|
|
|
+ __u64 pad1[4];
|
|
|
+};
|
|
|
+
|
|
|
+/* Kept in sync with firmware values for simplicity. */
|
|
|
+#define KVM_SEV_SNP_PAGE_TYPE_NORMAL 0x1
|
|
|
+#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 gfn_start;
|
|
|
+ __u64 uaddr;
|
|
|
+ __u64 len;
|
|
|
+ __u8 type;
|
|
|
+ __u8 pad0;
|
|
|
+ __u16 flags;
|
|
|
+ __u32 pad1;
|
|
|
+ __u64 pad2[4];
|
|
|
+};
|
|
|
+
|
|
|
+#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 vcek_disabled;
|
|
|
+ __u8 host_data[KVM_SEV_SNP_FINISH_DATA_SIZE];
|
|
|
+ __u8 pad0[3];
|
|
|
+ __u16 flags;
|
|
|
+ __u64 pad1[4];
|
|
|
+};
|
|
|
+
|
|
|
#define KVM_X2APIC_API_USE_32BIT_IDS (1ULL << 0)
|
|
|
#define KVM_X2APIC_API_DISABLE_BROADCAST_QUIRK (1ULL << 1)
|
|
|
|
|
@@ -870,5 +919,6 @@ struct kvm_hyperv_eventfd {
|
|
|
#define KVM_X86_SW_PROTECTED_VM 1
|
|
|
#define KVM_X86_SEV_VM 2
|
|
|
#define KVM_X86_SEV_ES_VM 3
|
|
|
+#define KVM_X86_SNP_VM 4
|
|
|
|
|
|
#endif /* _ASM_X86_KVM_H */
|