aboutsummaryrefslogtreecommitdiffstats
path: root/include/uapi/linux
diff options
context:
space:
mode:
authorBrijesh Singh <brijesh.singh@amd.com>2017-12-04 11:57:33 -0500
committerBrijesh Singh <brijesh.singh@amd.com>2017-12-04 14:21:53 -0500
commitdc48bae01e5a23ae67758e8fe31cdc439202b190 (patch)
treeaa3328b76cd28a8a1c6a8da2a5b3765af7fd1c15 /include/uapi/linux
parente9df09428996fcdc43e2b0db2a0e8b38198931c4 (diff)
KVM: Define SEV key management command id
Define Secure Encrypted Virtualization (SEV) key management command id and structure. The command definition is available in SEV KM spec 0.14 (http://support.amd.com/TechDocs/55766_SEV-KM API_Specification.pdf) and Documentation/virtual/kvm/amd-memory-encryption.txt. Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Ingo Molnar <mingo@redhat.com> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: Paolo Bonzini <pbonzini@redhat.com> Cc: "Radim Krčmář" <rkrcmar@redhat.com> Cc: Joerg Roedel <joro@8bytes.org> Cc: Borislav Petkov <bp@suse.de> Cc: Tom Lendacky <thomas.lendacky@amd.com> Cc: Jonathan Corbet <corbet@lwn.net> Cc: x86@kernel.org Cc: kvm@vger.kernel.org Cc: linux-kernel@vger.kernel.org Improvements-by: Borislav Petkov <bp@suse.de> Signed-off-by: Brijesh Singh <brijesh.singh@amd.com> Reviewed-by: Borislav Petkov <bp@suse.de>
Diffstat (limited to 'include/uapi/linux')
-rw-r--r--include/uapi/linux/kvm.h80
1 files changed, 80 insertions, 0 deletions
diff --git a/include/uapi/linux/kvm.h b/include/uapi/linux/kvm.h
index c8c65190907d..571431d3384b 100644
--- a/include/uapi/linux/kvm.h
+++ b/include/uapi/linux/kvm.h
@@ -1369,6 +1369,86 @@ struct kvm_enc_region {
1369#define KVM_MEMORY_ENCRYPT_REG_REGION _IOR(KVMIO, 0xbb, struct kvm_enc_region) 1369#define KVM_MEMORY_ENCRYPT_REG_REGION _IOR(KVMIO, 0xbb, struct kvm_enc_region)
1370#define KVM_MEMORY_ENCRYPT_UNREG_REGION _IOR(KVMIO, 0xbc, struct kvm_enc_region) 1370#define KVM_MEMORY_ENCRYPT_UNREG_REGION _IOR(KVMIO, 0xbc, struct kvm_enc_region)
1371 1371
1372/* Secure Encrypted Virtualization command */
1373enum sev_cmd_id {
1374 /* Guest initialization commands */
1375 KVM_SEV_INIT = 0,
1376 KVM_SEV_ES_INIT,
1377 /* Guest launch commands */
1378 KVM_SEV_LAUNCH_START,
1379 KVM_SEV_LAUNCH_UPDATE_DATA,
1380 KVM_SEV_LAUNCH_UPDATE_VMSA,
1381 KVM_SEV_LAUNCH_SECRET,
1382 KVM_SEV_LAUNCH_MEASURE,
1383 KVM_SEV_LAUNCH_FINISH,
1384 /* Guest migration commands (outgoing) */
1385 KVM_SEV_SEND_START,
1386 KVM_SEV_SEND_UPDATE_DATA,
1387 KVM_SEV_SEND_UPDATE_VMSA,
1388 KVM_SEV_SEND_FINISH,
1389 /* Guest migration commands (incoming) */
1390 KVM_SEV_RECEIVE_START,
1391 KVM_SEV_RECEIVE_UPDATE_DATA,
1392 KVM_SEV_RECEIVE_UPDATE_VMSA,
1393 KVM_SEV_RECEIVE_FINISH,
1394 /* Guest status and debug commands */
1395 KVM_SEV_GUEST_STATUS,
1396 KVM_SEV_DBG_DECRYPT,
1397 KVM_SEV_DBG_ENCRYPT,
1398 /* Guest certificates commands */
1399 KVM_SEV_CERT_EXPORT,
1400
1401 KVM_SEV_NR_MAX,
1402};
1403
1404struct kvm_sev_cmd {
1405 __u32 id;
1406 __u64 data;
1407 __u32 error;
1408 __u32 sev_fd;
1409};
1410
1411struct kvm_sev_launch_start {
1412 __u32 handle;
1413 __u32 policy;
1414 __u64 dh_uaddr;
1415 __u32 dh_len;
1416 __u64 session_uaddr;
1417 __u32 session_len;
1418};
1419
1420struct kvm_sev_launch_update_data {
1421 __u64 uaddr;
1422 __u32 len;
1423};
1424
1425
1426struct kvm_sev_launch_secret {
1427 __u64 hdr_uaddr;
1428 __u32 hdr_len;
1429 __u64 guest_uaddr;
1430 __u32 guest_len;
1431 __u64 trans_uaddr;
1432 __u32 trans_len;
1433};
1434
1435struct kvm_sev_launch_measure {
1436 __u64 uaddr;
1437 __u32 len;
1438};
1439
1440struct kvm_sev_guest_status {
1441 __u32 handle;
1442 __u32 policy;
1443 __u32 state;
1444};
1445
1446struct kvm_sev_dbg {
1447 __u64 src_uaddr;
1448 __u64 dst_uaddr;
1449 __u32 len;
1450};
1451
1372#define KVM_DEV_ASSIGN_ENABLE_IOMMU (1 << 0) 1452#define KVM_DEV_ASSIGN_ENABLE_IOMMU (1 << 0)
1373#define KVM_DEV_ASSIGN_PCI_2_3 (1 << 1) 1453#define KVM_DEV_ASSIGN_PCI_2_3 (1 << 1)
1374#define KVM_DEV_ASSIGN_MASK_INTX (1 << 2) 1454#define KVM_DEV_ASSIGN_MASK_INTX (1 << 2)