From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752148AbdISUyL (ORCPT ); Tue, 19 Sep 2017 16:54:11 -0400 Received: from mail-by2nam01on0056.outbound.protection.outlook.com ([104.47.34.56]:55572 "EHLO NAM01-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751714AbdISUrL (ORCPT ); Tue, 19 Sep 2017 16:47:11 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; From: Brijesh Singh To: linux-kernel@vger.kernel.org, kvm@vger.kernel.org Cc: Brijesh Singh , Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , Paolo Bonzini , =?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?= , Joerg Roedel , Borislav Petkov , Tom Lendacky , x86@kernel.org Subject: [Part2 PATCH v4 13/29] KVM: Define SEV key management command id Date: Tue, 19 Sep 2017 15:46:11 -0500 Message-Id: <20170919204627.3875-14-brijesh.singh@amd.com> X-Mailer: git-send-email 2.9.5 In-Reply-To: <20170919204627.3875-1-brijesh.singh@amd.com> References: <20170919204627.3875-1-brijesh.singh@amd.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: CY4PR04CA0071.namprd04.prod.outlook.com (10.171.243.164) To SN1PR12MB0158.namprd12.prod.outlook.com (10.162.3.145) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5e4861fa-e684-46c8-df25-08d4ff9f9405 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(48565401081)(300000503095)(300135400095)(2017052603199)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);SRVR:SN1PR12MB0158; X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0158;3:N2no2Fr3Q3qAEliW9Lz0+Bz1jBAinihx6yRKf1xcSpVpOXFNXPjgNV45yx6zmcud4fZbIVm50RDsrC1RxoL6EQNCN5U8WIVY+vM0Ccgg76xGnkjwYqr6PT7uX8cdTGBIsK0bwzceG4oi9vCdfR7msUNzLb0770ekREPYgWKt/2ZTXEfNJmeG8DQsHahH7cZksQiOwJKGpdB1dwPHm70vYjIj+Q7Pnjddd5iM7KulIqCnNvmo6zhgMFiVUWl904Vb;25:ZFQAEVrnSCX1iGkfxB/vm57SCqYXtdIFPTt7sJvEJPp0XkSmsR+OhveEKKprWIf9Dd4PqXHslqTXtab5MA8xKLyIeY+fOGOaIAzTsNMM/htdTvfdC5Ghku1Z3FtqNim4qvlo1ggbq3pchHPAvSDrpc5m5Trp6+TEEtyDuccYMvD22KrYCjCTKMCVu8W4iqjz+Z4efm+kNy2WEuqP07EkdK9aLElGR28zAVLV1EVxgbeUFndmDvDCx/O+6daKLuPav9doE9tzlKZJkjTAlLSeNRnGWjUiUFS+dE9e6oUQeqny4I7Ygr7b0lwX81zzS7P2+mnasG2y1s0vXLZypdKLtw==;31:ekIYww1yKyjsEMx+lEXq6eIpPV6vA3ngL7aWN33FWxehHyZ5vK31NZuepufVqFHxClpa+/Pgqn2PQx1ruWgI3XyMvVgvNOpWTIeayRicsNcJBaiguZheZiRXTXxaRPKYEbL8KM9eBE/18QIEP+GIE2J6VA9XoGlDj62AAXnTF6nqhJugGrxY2cveCxW4nQB0r/vl5yfqrl8L5XU7TW6VrFJtwkAH4qd3MCzRspcWqB0= X-MS-TrafficTypeDiagnostic: SN1PR12MB0158: X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0158;20:I4IDSC+ER5K39QoU/X+8asMW2pQ+TAoDWn92NOKZelyd4wF+IDv5LEODoPAVLfmsYcZJy2YGNRdNBqTWVvqbnORD+syFZmLKFv7NCGpJOqI0JSa17YSXYbuyE+Sa6+Muodr5YrKY1KyMFw+sz8+gVkI0MW5oxabaavzoaDLaTgnFkyi1jPFWFBpFBd/7weyac77l0AEpic/v+rE5rVDLhu3UE2hyZk3aYdfpgRrOe61LtlusAxnE4CGr9Yv8vXCWZG19d/fH5w6Al5DaSSqpbCufiXEzN37ZUR/vtB9gcUbg69oIyr1rVi1fJV3qAcjz0Tc8NH0RZMeuY7FBGAlxf/YPeBR/e7Wse+xrTL9lfpFpuS1AciUN7f2r55T0AMnl7HIO5lgbJXCpetwzlNqd5TW6ka7cJhs3UBwL8szRQfOm1yOVIt5DFNwo4s9Wgj+4KQY8nCpf4BqTLYikX2GJ0R1fBafD1kPBaMs1ltqE5l78pMyL5iz0ATt2VNpXDybB;4:hpZ0zdtE+Ktk10DPwpuCpFIr7nI4HQfDJ+iuAIWP+b5F8Op9BGvSRcNFvJMm7yZRrpiUumrOAC8u4AHw4TPyCrI5JVakiBa93oZXKlmnR8XVNnDxHd643vZQiTh/iRHa66VHncgNER76cG8f4xDaiNxlL+oEjT1+JuDzPMPqp34V19YsK8OPIapmwA67xrAx4hnsYJ4iZKDNqalN7/ZdUwaM44wpVnt7IAcGT9JQgWFhEmV3zyP6zSTWCyhGMVHWwpy/ckC0JcXqUtHfUEi1z3/XvhTFCu7WXL/tdqTAcQ0lor7MhswhThOp+T8PbtyyvZ13t3xr1eLFwHXPdQBmng== X-Exchange-Antispam-Report-Test: UriScan:(9452136761055)(767451399110); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(93006095)(93001095)(100000703101)(100105400095)(3002001)(10201501046)(6055026)(6041248)(20161123560025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(20161123562025)(20161123564025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:SN1PR12MB0158;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:SN1PR12MB0158; X-Forefront-PRVS: 04359FAD81 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6009001)(346002)(376002)(39860400002)(199003)(189002)(86362001)(50466002)(8936002)(97736004)(6116002)(3846002)(7416002)(81156014)(8676002)(50226002)(2950100002)(81166006)(316002)(478600001)(16526017)(6666003)(966005)(7736002)(66066001)(305945005)(47776003)(6486002)(6306002)(189998001)(53416004)(25786009)(101416001)(2870700001)(50986999)(76176999)(53936002)(2906002)(68736007)(36756003)(1720100001)(106356001)(1076002)(4326008)(5660300001)(105586002)(33646002)(23676002)(54906003);DIR:OUT;SFP:1101;SCL:1;SRVR:SN1PR12MB0158;H:ubuntu-010236106000.amd.com;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtTTjFQUjEyTUIwMTU4OzIzOk51NHBUZjk1N2UrQlpWQjJGUHExOHg0eWJI?= =?utf-8?B?d0xjdW1QMmRZSjdzWlc2RWp0eC81RXQySFBBL0JVbkNJZHdNVWI4SFNKUW8v?= =?utf-8?B?ZlRFRnBzNkErN1lvSjF4OUNQN0orM1YxYUVVWXlmOVJLL1FEWUdEUUY3cUpq?= =?utf-8?B?S3c4SUlvQUxpcVZmOVVoeWUva1dGK2o4RDIyYjhJVVR4SGdQUFlpUzM4anVW?= =?utf-8?B?NGxsZ0JwUzdLOXY3TVNyUE5wMUNnVms4Tm8zOGJaZDN3RkNaYkVSejUraGha?= =?utf-8?B?RTZjOFptNkk1ZFhuZlpnQjNtN3NxUk16RjJTaU9sdXk4VFVjRHpUQUFkQlZ6?= =?utf-8?B?dHlWc3dHd252ZzF5a1U0bEc4cXZIWExTTlFWZDlyVXMzQ0FsMjBCeHZTOTEz?= =?utf-8?B?VjJWQTBuRG5kVDFxTXUwbjJMdnZ4UVZpT3FiQjh5dExwdXE4cWl4Y3BROVJR?= =?utf-8?B?RWd4S2s4Qm9rT0pUS0hxMDRaNmdoU2YwZU05aW9ycit6ZDRVVXNqem9iNzJ0?= =?utf-8?B?dmxKUS9RVnpwWEVXRmpSRGhDYmN3K2VaeDBsREZzSlo0eFgrQkFScnU4OWVG?= =?utf-8?B?L2VsNndtREFIS0ExcHAyREg4ZWxHa0J2dWFSUW5JM2tUd3N2bTZHVlAzWE1C?= =?utf-8?B?SHRXYjJIc3plSWh3VU9mNVg1cWlJaWFndzJOMmIzZ3pUTC9idCtlY3l0bThP?= =?utf-8?B?K1ZrTUJpdmg2cVRkWmdNOXhWZlZqczJLVFB1c2NqYWlYT0lWcng5Y3ZkNWt4?= =?utf-8?B?cFByTHJ0bWJmcGpNTmNncmRockl2WU5jZ2ZXYkdSWUlaa0ppN1NIRTVBUnNS?= =?utf-8?B?ajFJS3c5WHRBMFRNeGIvRnNsZjV0VS9FQVpVWnlxdy9OZGFUNHIwcWxRTUhy?= =?utf-8?B?ZlMrUnl1V2VTaWdoQUFOSklCSkMyQkRrQ3JoWktiZFVmZ3k4NnN5bDNWTmVG?= =?utf-8?B?Y2ZHdUp6dWNHM2d1ZUhOek5TckZIdW9sQ0toVU9VSHlYaENYS09pWThVeU4r?= =?utf-8?B?SStyYzM1OGVFNWlGWjZob2g0dmo4azhSOFlsbmpPREhMNDlxd1Y0Q3gwMHUz?= =?utf-8?B?eHBzbkFlcSt3Ukdob3MzVjZwOHUxQU9OMVlreWc0bm1xOWc5TnBxUGxzdjBQ?= =?utf-8?B?ZXBreElUVWl0TW1kdnBIYytqcmlRQ1o4bzVYV0Y3Rm9RMXdNaE5oNHdwWThL?= =?utf-8?B?WitWeWtZMENHdFkvRE1Fb3lxb2x5L3hjUER5cHFHZFp1aVl4bXVQVFVGRldX?= =?utf-8?B?Lyt4VW5YUXNvaW1TRlR5SFdXVXkyS2h3RHI4UFpEU2tJTFo1R2FzVlNod003?= =?utf-8?B?djJBMEViemc5MXVIZnUvbHhxVFZET3BlQW9ZVVhOcDIzSGtRM0ZCQktTM0Fp?= =?utf-8?B?ZFpHMUpjUjVnTmZJN3NhdDVoYUJpYXdnRWE3MG96SnRDNjNkcldwL1lIVWxo?= =?utf-8?B?RzZ3eDQwZ25SZkYwSTh0Vzc4YmwvOVJmS1NwNWpzblRkZGZqSjRSNzNXRmxN?= =?utf-8?Q?ndUFshtTPspRhdp9pXBMSbGqwwLyI1X2kbTduWO5V3AbAI?= X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0158;6:F6HOwU2rMxyxqAk4zALxFDtDgJOp2Fh02Iibz/1UK525QxjCALgLTiXKxynZJXNbMf+e/h1DEzZgqGfhY/zAJbMpFo4CEiYfML/vfr0gg0renSq2ABHoO0IpttE9D9Qp5pk/EJj0B0lRziOfL554Fgdz5C4MNiphNFyoGH7vDtSs8Hms7TG7gw68L5XsnFgERwZpqNzJ6ryy5DABmfEwKUcJcEyhWWMrhkZL7g8j0DrdKCYXvpE2qbTuUGEto7mbdo59KtM/O74cpXMT410n2xDiqbtZH+pCz11h2ihnE+qALUM1Y8YY3Uc5girR9xaC/0u7HcYyjh3wBPpqby9uBQ==;5:MH++WFeRr9b5FmGuRNiwjZP1Yo8rEWAE6SjMdAFixkbTbcJwragPQltF9tNc9NjAbpCD2Z8neCxBo/5yaPqAqkMi7Rt3y9YIkaRLv4NlAI/mk9badYi2jCpyUM4Zv1eUsPjcWcEJRHiX9RTmYHVs4w==;24:HAz1/8/+fQRlErjr9bzBRlDgSeP2aiaeliG8FBWju4JfXjCqGcrwz49bGwpqgcflg3CdPRmWDkLgStEVSn58wUb+RKxfIV6b5+Gfq+Mu3ok=;7:6ghs7sb3ASaYsZ3m/6Br5WHSqP/ZLSKcaTfHOH7xWMAbf9n4ZYTkxRkPwgFId0Z1bdHK2VAhUqIqjpmdXGY7C3ET/W+SzDYFllKrxkQ5YV15qf154DcR3BvzRhCAQ+cFNcnP4KCVKBr35CQrFFM8Pvwv8/cBfTSiUb1uraXH6IwgYQjBOrCXc+1JRrgDHS270W56hFacpoQWDXHW4ADffAdilv1yNP/qEGGneHVT7bE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0158;20:ngnlULJf9hy3QPDZ1xjkcOMx1DetqT/ctALWda3QDiyAfiePpOA8z0Whb9Av/MaNajiVf8dmbK/VB3APX8rILUrfBgnMvAoGyXwRDGpPSyp96ZkHK8illliy8pPta7P6GfW4/oLPApWuAvb6SpnvDamMb4n8hKOyy46X+KQqNekFCRcz+HaZPYtwaQgIfcBk2hqWwLbdro9OvTihZK7gVDspeAkG0ek/wOewo3dQqoOBQAV1zKQs1EF7e/ohZg0S X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Sep 2017 20:47:00.5473 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR12MB0158 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Define Secure Encrypted Virtualization (SEV) key management command id and structure. The command definition is available in SEV KM [1] spec 0.14 and Documentation/virtual/kvm/amd-memory-encryption.txt [1] http://support.amd.com/TechDocs/55766_SEV-KM API_Specification.pdf Cc: Thomas Gleixner Cc: Ingo Molnar Cc: "H. Peter Anvin" Cc: Paolo Bonzini Cc: "Radim Krčmář" Cc: Joerg Roedel Cc: Borislav Petkov Cc: Tom Lendacky Cc: x86@kernel.org Cc: kvm@vger.kernel.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Brijesh Singh --- include/uapi/linux/kvm.h | 141 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 141 insertions(+) diff --git a/include/uapi/linux/kvm.h b/include/uapi/linux/kvm.h index fc1825440a14..c94844f4d8cc 100644 --- a/include/uapi/linux/kvm.h +++ b/include/uapi/linux/kvm.h @@ -1368,6 +1368,147 @@ struct kvm_enc_region { __u64 size; }; +/* Secure Encrypted Virtualization command */ +enum sev_cmd_id { + /* Guest initialization commands */ + KVM_SEV_INIT = 0, + KVM_SEV_ES_INIT, + /* Guest launch commands */ + KVM_SEV_LAUNCH_START, + KVM_SEV_LAUNCH_UPDATE_DATA, + KVM_SEV_LAUNCH_UPDATE_VMSA, + KVM_SEV_LAUNCH_SECRET, + KVM_SEV_LAUNCH_MEASURE, + KVM_SEV_LAUNCH_FINISH, + /* Guest migration commands (outgoing) */ + KVM_SEV_SEND_START, + KVM_SEV_SEND_UPDATE_DATA, + KVM_SEV_SEND_UPDATE_VMSA, + KVM_SEV_SEND_FINISH, + /* Guest migration commands (incoming) */ + KVM_SEV_RECEIVE_START, + KVM_SEV_RECEIVE_UPDATE_DATA, + KVM_SEV_RECEIVE_UPDATE_VMSA, + KVM_SEV_RECEIVE_FINISH, + /* Guest status and debug commands */ + KVM_SEV_GUEST_STATUS, + KVM_SEV_DBG_DECRYPT, + KVM_SEV_DBG_ENCRYPT, + /* Guest certificates commands */ + KVM_SEV_CERT_EXPORT, + + KVM_SEV_NR_MAX, +}; + +struct kvm_sev_cmd { + __u32 id; + __u64 data; + __u32 error; + __u32 sev_fd; +}; + +struct kvm_sev_launch_start { + __u32 handle; + __u32 policy; + __u64 dh_uaddr; + __u32 dh_len; + __u64 session_uaddr; + __u32 session_len; +}; + +struct kvm_sev_launch_update_data { + __u64 uaddr; + __u32 len; +}; + +struct kvm_sev_launch_update_vmsa { + __u64 uaddr; + __u32 len; +}; + +struct kvm_sev_launch_secret { + __u64 hdr_uaddr; + __u32 hdr_len; + __u64 guest_uaddr; + __u32 guest_len; + __u64 trans_uaddr; + __u32 trans_len; +}; + +struct kvm_sev_launch_measure { + __u64 uaddr; + __u32 len; +}; + +struct kvm_sev_send_start { + __u32 policy; + __u64 pdh_cert_uaddr; + __u32 pdh_cert_len; + __u64 plat_cert_uaddr; + __u32 plat_cert_len; + __u64 amd_cert_uaddr; + __u32 amd_cert_len; + __u64 session_uaddr; + __u32 session_len; +}; + +struct kvm_sev_send_update_data { + __u64 hdr_uaddr; + __u32 hdr_len; + __u64 guest_uaddr; + __u32 guest_len; + __u64 trans_uaddr; + __u32 trans_len; +}; + +struct kvm_sev_send_update_vmsa { + __u64 hdr_uaddr; + __u32 hdr_len; + __u64 guest_uaddr; + __u32 guest_len; + __u64 trans_uaddr; + __u32 trans_len; +}; + +struct kvm_sev_receive_start { + __u32 handle; + __u32 policy; + __u64 pdh_uaddr; + __u32 pdh_len; + __u64 session_uaddr; + __u32 session_len; +}; + +struct kvm_sev_receive_update_data { + __u64 hdr_uaddr; + __u32 hdr_len; + __u64 guest_uaddr; + __u32 guest_len; + __u64 trans_uaddr; + __u32 trans_len; +}; + +struct kvm_sev_receive_update_vmsa { + __u64 hdr_uaddr; + __u32 hdr_len; + __u64 guest_uaddr; + __u32 guest_len; + __u64 trans_uaddr; + __u32 trans_len; +}; + +struct kvm_sev_guest_status { + __u32 handle; + __u32 policy; + __u32 state; +}; + +struct kvm_sev_dbg { + __u64 src_uaddr; + __u64 dst_uaddr; + __u32 len; +}; + #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) -- 2.9.5