diff options
| author | Brijesh Singh <brijesh.singh@amd.com> | 2017-12-04 11:57:33 -0500 |
|---|---|---|
| committer | Brijesh Singh <brijesh.singh@amd.com> | 2017-12-04 14:21:53 -0500 |
| commit | dc48bae01e5a23ae67758e8fe31cdc439202b190 (patch) | |
| tree | aa3328b76cd28a8a1c6a8da2a5b3765af7fd1c15 /include/uapi/linux | |
| parent | e9df09428996fcdc43e2b0db2a0e8b38198931c4 (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.h | 80 |
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 */ | ||
| 1373 | enum 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 | |||
| 1404 | struct kvm_sev_cmd { | ||
| 1405 | __u32 id; | ||
| 1406 | __u64 data; | ||
| 1407 | __u32 error; | ||
| 1408 | __u32 sev_fd; | ||
| 1409 | }; | ||
| 1410 | |||
| 1411 | struct 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 | |||
| 1420 | struct kvm_sev_launch_update_data { | ||
| 1421 | __u64 uaddr; | ||
| 1422 | __u32 len; | ||
| 1423 | }; | ||
| 1424 | |||
| 1425 | |||
| 1426 | struct 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 | |||
| 1435 | struct kvm_sev_launch_measure { | ||
| 1436 | __u64 uaddr; | ||
| 1437 | __u32 len; | ||
| 1438 | }; | ||
| 1439 | |||
| 1440 | struct kvm_sev_guest_status { | ||
| 1441 | __u32 handle; | ||
| 1442 | __u32 policy; | ||
| 1443 | __u32 state; | ||
| 1444 | }; | ||
| 1445 | |||
| 1446 | struct 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) |
