From nobody Sun Apr 28 19:04:07 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1489008528261310.6043486967375; Wed, 8 Mar 2017 13:28:48 -0800 (PST) Received: from localhost ([::1]:58525 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clj8Z-0007T8-06 for importer@patchew.org; Wed, 08 Mar 2017 16:28:47 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51888) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clj5B-0005Pq-9P for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:25:18 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1clj58-0005Li-33 for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:25:17 -0500 Received: from mail-co1nam03on0070.outbound.protection.outlook.com ([104.47.40.70]:42411 helo=NAM03-CO1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1clj57-0005LV-OA for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:25:14 -0500 Received: from [127.0.1.1] (165.204.77.1) by CY4PR12MB1608.namprd12.prod.outlook.com (10.172.72.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.947.12; Wed, 8 Mar 2017 20:51:21 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=GkL31UlmZastFm5Gd+SxLbF2hGJ0mzJaLsk8LPtG+z4=; b=XzHADA2M+pdhmzfwfsGZD+KzmnIpinNeOHQKfYHDQsZWU4Esc9wwBG2kuiKxza6vSHELUu3psrlH8U3Nl3g3vyMgIUGhYrgFRqlG7dOkYnkt9auR17SVw1R+OZaVx7JXcd95X4O/rilLS35Fi0W3a8+Ba+78531W0+/Tw9nxk74= Authentication-Results: amd.com; dkim=none (message not signed) header.d=none;amd.com; dmarc=none action=none header.from=amd.com; From: Brijesh Singh To: , , , , , , , , Date: Wed, 8 Mar 2017 15:51:17 -0500 Message-ID: <148900627753.27090.16222970359757079799.stgit@brijesh-build-machine> In-Reply-To: <148900626714.27090.1616990932333159904.stgit@brijesh-build-machine> References: <148900626714.27090.1616990932333159904.stgit@brijesh-build-machine> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: MWHPR21CA0003.namprd21.prod.outlook.com (10.173.47.13) To CY4PR12MB1608.namprd12.prod.outlook.com (10.172.72.17) X-MS-Office365-Filtering-Correlation-Id: e7033059-2c76-46dc-3441-08d46664e13a X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081); SRVR:CY4PR12MB1608; X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1608; 3:WmM2dnrOUYKpDzoWc9fknHhPvJ8HhnDG0XO6oRHPZnGRUkRZRagP7L2JiEKpuGVWn9gmgiIKo2aKvpzRPMWerJMavbATiryDRbu9FOioxd3CjtVCgf2NShbzFb8G6bolhuP0WTDmQdaBI7plDEr10LoGVzmLBwbK48+53bypRMIkv5pAOhU61MXSKMRpIJXtdvDwES5j/W/uSwseCKMcAx0WKWtLOinm4wRDWy2xQqZKzz1k0aDllyYLsALVwgEr1YP1l9nyY0Xjsgq29kz47d3xvjhh6POOZLYCIHYqgpA=; 25:HmuP5SUEpCu0+rJ/n4lqZiPyokLcUHIPztiOMA9XvLzKB81Bb8I7sMhoPXroXHgJ5KGRLTsF97yRl1ik92fXOnx+ElriSCdX2jOC5inYNNekXUG9QWaOrjDhxmaTjmqDN1LiP/s+ptj/24OVv2vXfSMAWjuq5uzhTXKdRaxr3tUL5PEOLJ4RW3yLeEKmVlTG8xxz9T5WIH9TIiPoHgMlCpQSe1Ddeti7dhIN2YRdbqx2QbfFHgnY1wnYdFI3q+SoariRFVWAmw1anKtIj/7mHEJmhAauBFXbR2+wbcSW1U97lYnSVQrfE8VPfdNgOU0NshHJQMgLqR9MNYQGOWrR7YVkAjzlWfVFlhJyLTvZ2bwXOlQ6yRqg6lFSH9yDJkwLmas36o6YtrxfJD5gel1WCH13UAsIEV6zEyVJA4X+dJui52ejObJKfhX0V/KFdTHhVC2Pcm1wCA5A2Xmb7aB5fw== X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1608; 31:kK7Loagoajvjwrb6DeBmGjiWY9uAKaiyYq7S3jFTdgXL5uAYxrkolu9rd/WTnmlLqsvXEYfmgqDJaKnT5ief1YTHvqeS11idDz9GMaQ53rbyFJv82gRdm6YGY5KVmdvGKUI0Fi60mub3g2PSlXhyrfrU8m1cidwmli87QpJtYwum/l7a0KXBHRxAXW3KtGhuxq5iZXXKrpkcko0pXKX3R5EzevNKT9Wnxz7gkbFjKLnu2HDiyL5lPLLP92uY7CaS; 20:/LEuI6oIOYvMf3CthEp4/llaqxdFuKEvZuDywlKCdcyHUbrr3ZgcdfpSI+Vu017UdwvAHzEF+kYqW/dd+16zO+HM0y+fQsoHxyBGwWMm4c8x6QB1rN8GPlF43cxdC2/FeHZeixdsT4myt4CGPxs6tKHNGeWSgVrABnmCXhZmJZ3D7hs2XRuYB5M2JyRuQNTDWXiPMTHtXl+/44RZlnmXkkt7jjan0QBdSUGXxJk5d1ooEKjMOdCJPkwhgBkJfwS6/qo0w+fJL5brDWJL75UzzF8Pau964KbU4dkz4dHT52dN6eT+PNcvgaddY66qGfgFTfITaEbgDFDyUFUCerE0NaamXu1hEbxUHlZ18cNZPexDN1XRyxI6lA4YTFPqUhbJZyPxvWYgvuIVKgHiBnkt2Y9nRF5iqvKt7/iA9GxvwWhpa0rPP/W979PKo5p9CjNDB6rrVmgm96BfD6huxmSiYE2APZSom/xZYWVGzIfKNxc14S6dcxnZzGGsongKcszV X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6055026)(6041248)(20161123562025)(20161123560025)(20161123558025)(20161123555025)(20161123564025)(6072148); SRVR:CY4PR12MB1608; BCL:0; PCL:0; RULEID:; SRVR:CY4PR12MB1608; X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1608; 4:CU6ZYuG2dd7YjQjnpTNrtpmysKs3F8wqYN2tIZN/x0IoVopwVA0EN4EhuQmPz/ZDW4HPwdADWNbjocnbKCgCYENl45RvuQOtHdjbKi05Pvo+eekA+B5l86ULg1D3dEvotvBLibEVIyhUtZGK/Jh9o/Frna74MBhI79uJmLdexMSBfKY9uo19g+6+r30UjRKN441pdzmOuvwZQL468jUQ5a/nktYgU04r/X5yA8kxy/VapyqnjViP/zOg7G/HahMcRgVPzZXEu+oYC+VoNJ68HWWCm1nTB7NM24Q/0aPZzdiyaFR3Gyc1ISwmLbLGmyDMVQodHeP1FkYvoFsUW9kMzljkJJxWM8lOJBzViYbV3sTbXoAdeMmxARPGtVR5vA9chL7LsUS9i+S/RRVQqZgHC1TnfqN5CBFg5YZnA5mKYNHN5Df4PA7oKFagevXkoLPAI+5lmqTMryQ3OmH54lpdpnVKjTmH7d0rdZsSzPpgruHg7b0J8o6QQPdos0ry+HGeXAyM3WPWKWz0tE47qCummrrDhxinx7B7qwi4O/1JkcqOHa6hMm3XO0nvuGX9w+6eYahpzHhBTgiBmmJKtO6dBH8WkokK9d9RY5Dwpzd5UiRfSxmnQ2P8GFPGIkuIGIjaDM5Syj1dYnzGw5WMkjRMHUOXtIK08aMY7Po6OdycqlI= X-Forefront-PRVS: 02408926C4 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6049001)(6009001)(39410400002)(39860400002)(39450400003)(39840400002)(39850400002)(209900001)(966004)(8676002)(3846002)(230700001)(6306002)(53936002)(77096006)(6486002)(9686003)(7736002)(81166006)(54906002)(90366009)(25786008)(305945005)(86362001)(103116003)(5660300001)(2201001)(6116002)(7110500001)(33646002)(189998001)(10710500007)(47776003)(83506001)(2906002)(66066001)(2950100002)(33716001)(23676002)(6666003)(54356999)(76176999)(50986999)(38730400002)(2420400007)(53376002)(42186005)(15650500001)(4326008)(50466002)(217873001)(6606295002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR12MB1608; H:[127.0.1.1]; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtDWTRQUjEyTUIxNjA4OzIzOnJ5N3htSlMxNjlDZEVURjJqMnZqVldzbjlk?= =?utf-8?B?M25EcXFEQkZBb3N2cDVSL3ZKdmZNVW1NSWc3MDZLTnZWMFU2RkxkZHhZMERF?= =?utf-8?B?Wk9EeFR3ZHJVQ1J2RGVuTGlxemVOYVRRZmJaUWJSSTA2NDhMbnF3VVgyVWlH?= =?utf-8?B?ZlJ6ZCtqWnhCaGNQNFhpaklleFpsTlNFeWhpSitzSUs1Z1dBQ21WSFp5aG02?= =?utf-8?B?ZHA4d3VieEhPYzJBOHh4aDYvTGFLNUxXZXZYOU51Q2FqUFZUd1FxcFpTM0Ns?= =?utf-8?B?VHFTUUlUZlhsekNrZHpKRy9LcUhNSDRNbllmR3NmQ0JuWEVJYko5dUtLTXZH?= =?utf-8?B?UW9TWVZZSkJhMFI4b1BDTUpvT2pxdmF1UGtmSUtrclVLTm54YW1VOUV3WXAz?= =?utf-8?B?TDdFN2RtWnlEWGZKWW5qblJnT1BOQUJXN1pseHU0cXhzNGVLNzBWUFdEME5q?= =?utf-8?B?YjBSbGdjY3VpVnpieWJNRDlzdlhIdk9hSGNUbVZpWmNEcThUenRWcE1qNFFx?= =?utf-8?B?MHY0dm1DUDV6eXEvcUpubEcwNDQwdmxpYWw3NnZrS3hDMnM2NlBMajUwSG5p?= =?utf-8?B?dTFWc2IwTUZBUkIwRisrbU43d1NVZHRjMnAxSGdUcTZZOGg0OUxIbWZnZ2FD?= =?utf-8?B?TTRuS3gwdVRwL0RwK3BZMUIzOXBpNzQ1cHRRdjRSUnVZVzdraWlUQWVNWXJz?= =?utf-8?B?OFpBb1p3bnBMQTFpck1wam5ySlJhNjFWOEVwbThqR1hUanBlVFBmekJBL3RX?= =?utf-8?B?OGZFT05sQjlhTDlHSHQ1UG5aMjllNEcrcDIzSzlGWkJhdjlkbEEzdmFxcWJO?= =?utf-8?B?eDAwQzB1a3lxcFFOSFd3RldKVytZWHpnZmtPamdxc0tyL0tuVFhXaExwZG9R?= =?utf-8?B?aXBpR2pCUUwrTmVOOTZxdEN3aDNUZmE1cEJTT29mUVJnVUNNT2tHMW1xNWVO?= =?utf-8?B?NTdMNUpuYkNlL3RPRGx1d2pOMGVLVFFzejFDVHp4VDJLWitYQzBrbUIrNERP?= =?utf-8?B?UnlyejZsTWFvMHNEdzN0NlZIWHlMMC9rUktSeFlYM2dSOU9vcHhzNEMzd1FB?= =?utf-8?B?UTlBM21KYzIrOCtPQzRQYzJsWjRFUG5idll5ZmEySlhXOHZKTStqVWhvYjdu?= =?utf-8?B?UU1XUHFQTGNnTDNnczhiMm5PemQ3SjRQanh6SlpPZnVtUTRtN1RTOXNYN0JT?= =?utf-8?B?Q3M1eFBEOHFWSkNGU3dhTUs1S3hrbVJZQWpvRkRnNWYzRmdWdDhPbUVmTUlF?= =?utf-8?B?dGZMZi82eGRsNUFTTTBYdkZDc280c3YzVFM5Q2dUVTgySElQdkRUOEpyeEZD?= =?utf-8?B?UHB0QlF6T3VKOGY2WVJhaGVxZ3ArNUYreDV1SUxLbnhtalcrbmxZUnhlWGN5?= =?utf-8?B?MitmUkJLU0JYT1FXeUtONC9CckZTODFObEhUeWdjU3B3dzNRZVl3aG5PTlNm?= =?utf-8?B?RGFCZTZCVzNkUWYrWi9aRTdDNGQ1UVJYRzVsaUZ3UXhNRmxEcm45VGk2dzdp?= =?utf-8?B?OHk2dGQ3TWpmbFRqcnlGRkRra09mMFd1NzAySkpKR1dEVHhDR09ZeERKaXZx?= =?utf-8?B?MDhRUXRadlA5ZWZtak9YVDlMU0VvT2R3eW1iT0N0N0NNV2xNSWJJc2R3Q0VZ?= =?utf-8?B?RGwvQklSb3dod3N5Wk1pVEFjTTlPaU5jRGZNTjF1MU9MUnlYbm8zWWN1OWVY?= =?utf-8?B?enVhbTlIbjhCVmF4L1pXb0lWL0dCb01NVlZvTWJjd3JQelpabVk3V3lCSFgr?= =?utf-8?Q?sjeVpQHQ/bQR+u0YpqoTeiBLwg07szWE26PGM=3D?= X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1608; 6:bgfCKZlD8m1fmTdHbYDO6RlP1e3dFDdvY7NPIqdK4bjPfiVOe31mPB/mYxqSlOJl2R3POa3gvPVyiyPX5Pset9cvU4ZZt5boihKa1NCxcwRksH58wBUVedPVXjVjQcTue0K6Z4a5i68D5MVPACcOzlmQ9cVbEGYDxuovSFAx2qKxavbrq4opICFS/tcrroAt7dVay4t+u+8O5nYRfWcLixJLCqUBN8sDp6PYtQB4GOx+szE9fBfCv6m53mNXE5rNdw+1eF3VJnxVeFRyuTXkmEOHKNit6lHvXcSLrdCd3UeCG0VKvvb2LlBu2POTtCO4lT5zfSroAp8wlqh98u6Mq8b1mcezd/hLxdf2j3A8e2uB05+1yWRkfOpFZJuApfuWDXDndC2gQ+YT8T69Tt1RngbRy4ulvCjgqyCautrW5/s=; 5:JIkjlHVjIa/led8i50K1lXH22hOLBCXhA0cKS2sCXnhZcQuZspczX2nstWX0kxgNLU5aAcVGi77ivYxb2DMTcKi8Wgle/ZIlt9oTCiQ04w5FqVf2qkmriQYNNlCy6BzuqV1vmAS3lDbARRANSYMgEnnQvNhA1lTrzkbO/Z9T4/0=; 24:5oBCayhVAgge84oiG8Umo1d/2yBKXCOIMKeiXMwd9DiJgBVTZmnwz1KbgIvATlIHOzbYe7wTcvKkI5SEAVRqPkb5uJBRbhtg9N1jNI1UlJY= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1608; 7:suRRIDTBrIEX7A2BsThsi64JlzO9/XBOVSx3jIv7ddsctBI8fNEzj+wS2ldUimgjWiUJFyPW+H84R83BOk23M0rY5gdAErETGhLDaAhPgdXRqn3Lzhcxgm8FGaxUNnfnhVzaHZ284rvMOUqIIyuIsyvX3wytUsEOAWLUcUcqNvjBE+7SIt+oVcOUzJldJ1uisMVLgjOCvEjjPwzTEvgTZ+/s3B8dXQNacP45NwHzhiD9PkiEGknrYF16Sc+mB2iXyo4H3/B+X6cpIaPELgLSPxpFTvC/bJ9BtOqCFVACc9B9w4gAk/bSTNTnyFdfLpshI4NK8x5x2aLoAy2Ty4Q2rw==; 20:wTicmmkN+0UCSZgMjLxgZqN7InvZOxfxDRycYn9CxTqbAHGC5N216XHI40rVEpT4REiYwoP8o8FK+AyAbDnVD1+nNtSYJsRZxkf+iV4YfXtlSr2twYSUbbjNvxyRbqgZB10JurlalWbq3o+tCccrjAnqBv0LtwT9aE398X2pnSMdITHMkXrHHP+bt13p57qgzPfj+bvRDFjlBySlz77FoHD30slO3O5KD5dZghJkbqnlwipxxBcd29Ebtin6W2wE X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Mar 2017 20:51:21.7845 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR12MB1608 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.40.70 Subject: [Qemu-devel] [RFC PATCH v4 01/20] kvm: update kvm.h header file X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Thomas.Lendacky@amd.com, brijesh.singh@amd.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Updates kmv.h to include memory encryption ioctls and SEV command structure introduced in KVM RFC [1] [1] http://marc.info/?l=3Dlinux-mm&m=3D148846752931115&w=3D2 Signed-off-by: Brijesh Singh --- linux-headers/linux/kvm.h | 100 +++++++++++++++++++++++++++++++++++++++++= ++++ 1 file changed, 100 insertions(+) diff --git a/linux-headers/linux/kvm.h b/linux-headers/linux/kvm.h index 4e082a8..1050f53 100644 --- a/linux-headers/linux/kvm.h +++ b/linux-headers/linux/kvm.h @@ -1300,6 +1300,106 @@ struct kvm_s390_ucas_mapping { #define KVM_S390_GET_IRQ_STATE _IOW(KVMIO, 0xb6, struct kvm_s390_irq_sta= te) /* Available with KVM_CAP_X86_SMM */ #define KVM_SMI _IO(KVMIO, 0xb7) +/* Memory Encryption Commands */ +#define KVM_MEMORY_ENCRYPT_OP _IOWR(KVMIO, 0xb8, unsigned long) + +/* Secure Encrypted Virtualization mode */ +enum sev_cmd_id { + /* Guest launch commands */ + KVM_SEV_LAUNCH_START =3D 0, + KVM_SEV_LAUNCH_UPDATE_DATA, + KVM_SEV_LAUNCH_MEASURE, + KVM_SEV_LAUNCH_FINISH, + /* Guest migration commands (outgoing) */ + KVM_SEV_SEND_START, + KVM_SEV_SEND_UPDATE_DATA, + KVM_SEV_SEND_FINISH, + /* Guest migration commands (incoming) */ + KVM_SEV_RECEIVE_START, + KVM_SEV_RECEIVE_UPDATE_DATA, + KVM_SEV_RECEIVE_FINISH, + /* Guest status and debug commands */ + KVM_SEV_GUEST_STATUS, + KVM_SEV_DBG_DECRYPT, + KVM_SEV_DBG_ENCRYPT, + + 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_cert_data; + __u32 dh_cert_length; + __u64 session_data; + __u32 session_length; +}; + +struct kvm_sev_launch_update_data { + __u64 address; + __u32 length; +}; + +struct kvm_sev_launch_measure { + __u64 address; + __u32 length; +}; + +struct kvm_sev_send_start { + __u64 pdh_cert_data; + __u32 pdh_cert_length; + __u64 plat_cert_data; + __u32 plat_cert_length; + __u64 amd_cert_data; + __u32 amd_cert_length; + __u64 session_data; + __u32 session_length; +}; + +struct kvm_sev_send_update_data { + __u64 hdr_data; + __u32 hdr_length; + __u64 guest_address; + __u32 guest_length; + __u64 host_address; + __u32 host_length; +}; + +struct kvm_sev_receive_start { + __u32 handle; + __u64 pdh_cert_data; + __u32 pdh_cert_length; + __u64 session_data; + __u32 session_length; +}; + +struct kvm_sev_receive_update_data { + __u64 hdr_data; + __u32 hdr_length; + __u64 guest_address; + __u32 guest_length; + __u64 host_address; + __u32 host_length; +}; + +struct kvm_sev_guest_status { + __u32 handle; + __u32 policy; + __u32 state; +}; + +struct kvm_sev_dbg { + __u64 src_addr; + __u64 dst_addr; + __u32 length; +}; =20 #define KVM_DEV_ASSIGN_ENABLE_IOMMU (1 << 0) #define KVM_DEV_ASSIGN_PCI_2_3 (1 << 1) From nobody Sun Apr 28 19:04:07 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1489008278605159.77228935389132; Wed, 8 Mar 2017 13:24:38 -0800 (PST) Received: from localhost ([::1]:58505 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clj4U-0004id-Av for importer@patchew.org; Wed, 08 Mar 2017 16:24:34 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51550) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clj3v-0004iL-8C for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:24:00 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1clj3r-000558-9e for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:23:59 -0500 Received: from mail-sn1nam01on0075.outbound.protection.outlook.com ([104.47.32.75]:17117 helo=NAM01-SN1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1clj3q-00054v-NP for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:23:55 -0500 Received: from [127.0.1.1] (165.204.77.1) by MWHPR12MB1616.namprd12.prod.outlook.com (10.172.56.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.947.12; Wed, 8 Mar 2017 20:51:31 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=Vzg4unss2llM73pAftoI4BGjN1zCyZqUmfVr+E5dzf0=; b=Q60Q8njTX+Q3xQanTmBkdVuUbl4WR6pEx/Ro2JkJPZrKgz4IT8q8cvHFN5cxrGe6Bn3SbHaKsI++nJSZAzMa+IexpxuKXK7ik07nLrN8vLdHQ0lQ8eV5VrY3DiRHdgF1N6VE2tfN94qpVU8H3wJTcAcukHLXXbf0fapjgKtz8xo= Authentication-Results: amd.com; dkim=none (message not signed) header.d=none;amd.com; dmarc=none action=none header.from=amd.com; From: Brijesh Singh To: , , , , , , , , Date: Wed, 8 Mar 2017 15:51:28 -0500 Message-ID: <148900628810.27090.3461280348833651824.stgit@brijesh-build-machine> In-Reply-To: <148900626714.27090.1616990932333159904.stgit@brijesh-build-machine> References: <148900626714.27090.1616990932333159904.stgit@brijesh-build-machine> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: BN6PR17CA0035.namprd17.prod.outlook.com (10.175.189.21) To MWHPR12MB1616.namprd12.prod.outlook.com (10.172.56.17) X-MS-Office365-Filtering-Correlation-Id: 157a636e-791f-4596-4832-08d46664e7ab X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081); SRVR:MWHPR12MB1616; X-Microsoft-Exchange-Diagnostics: 1; MWHPR12MB1616; 3:K9EQsD8jkjRy0ZMdY/YBxeC4ZGrhxCvjTbJQNtJhE4NXW9uHKbBy1asZytWpaGFUIhGjWuzAWZ0IyZRtEOC4392h3cxenOJoYLxfArcMJ30/3Dj5DQGlGqNdAP5PZKhmpL3uZkGa+Qv2l9WnUX7kbtDjhbEKkIbOw1eZ7GmuY0rjfye5Wd1A/Aq4fDXqFYdEUxr//4WbxfVpYYxwLDxsV5L9n+rdOlaW2kvQLbjXd2eJ+3VCPcaqRA8RSDmWQJMP/SDfdww8J5zsuyjzbXMDnEbh1Bi4BIP0pZMgnPhQn8A=; 25:1qTYWMrmpSiq3y0pd5Fgv+1reojfIG412GtwqJsoZ5FjIEULWhVxOU+AljpyaS6H6iNg+K+i5D/UsIIPoiQJXPGXzsNaQmESLoRfb3sLdROOQdIR1RyweTiffoDDRfYylEPm0p4It0U4Fbi3zlZvWUxHZ0WOinEPc4PJBzq6yvFqZ08rImJ25TqhSRJd3VI8wc8oO36dzDFC62NfMq/9DjQTMgaJnhsUrDHjPlFWhMe/wp6zbmCAHPm/ZbNFlhMeDjR3e4T2L/vxUVmVGSM3kgge390BlwJ7K11J7oI7G8lqb7JyTbd84nGL8TxjB/LrcLw72k1bMq0R+ubA5caQ+ApNzm3lCvW/a0qxCtOZp1K5Ul90UdVflAO9oKHBNO7JAIto8yxLJrOzq7nT3XMdBhghh0PdM3rgYNKQ64HxzisJym3Wt/SU7SyEcXfgMSdn X-Microsoft-Exchange-Diagnostics: 1; MWHPR12MB1616; 31:Yo5V++GY2s69R/hx6v5YVrrepJJcktsBP8Q5mqk83us67cH3PtPtEzkeVLQt/h1H3Rq6ugXi5LPId3X8xBzC5F3QWUr6cdvKTNGXs5mUU+Rc4UWV16iTW1B48JCQkwO4cCIiK36QxFpl37K+Qdfl3B535PSof3FHs9q5dbTZ1nKKb9JYoPJBHlCAEtu5Pmz8estCNu9k+OzcOzP7gUCMCw9mZn6B8WdXmEqd/fcI+Zc=; 20:LSx+k5xJdT64UTgBpIfikrPvN226Z+kX51y5Wo3c1wnB/FSK+J1EYkqwxt+kLRGd2fj/MGm1Z4SN/oY+7sFVaQMkUrCTQz/JIU3UFLAM/Dzou7+vNWRL/HE1jSc0pOV/G/3Y3hZUPn1WX8mthUUkMZ12miGsc0UGcGO1nKicckIBaQlvo2gaMKndLUS57SJvZfslQdG6xqSguNgtONTd2kVMYKTxMKbn5W0pMnD173pDkl8Xx+KrVJHK4ed/jkQOZSBJUY+a8/T9n9L11pgVr2tuLRhzvtPC82lFe1AOaHKkJAajFARDNNmrtCvTfBx1B1mehBbaHYnU4A34N0MyvxuDVD24NDQ9xdiTiSCc9/eAh3Jp2yBQvuO1I96BBg4C3TK/gjzpjCUCjeC5oCFl95pfBwUAJry3MzhI0aQgFAERdyEpxpU9Sq4ah4Qew06542dgbXa5jHjVEMHt1L7uylnkq3t6Lmq6h8fHO8l2/AaZnTzhvh9L5OD+WrwVB5/5 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6055026)(6041248)(20161123558025)(20161123555025)(20161123560025)(20161123562025)(20161123564025)(6072148); SRVR:MWHPR12MB1616; BCL:0; PCL:0; RULEID:; SRVR:MWHPR12MB1616; X-Microsoft-Exchange-Diagnostics: 1; MWHPR12MB1616; 4:pCgbjB33tDDxtjatNpq8EPqzLgYEzmfyD1kltKdn4bzen+fzbK7vhJ4+WGIeIUzCw036FwCdODIsYASPECmDcpJayEi8Hgf1mtMNjXb8gADp0UGIRy01oV3itHJUbAPDUN+AJ9GcG/ra/ID9tiXbZXnmcKmcdZCpcskbyn65AwgJg/CCF1eDDIx9JwBWucv5Y/2b+Qj657tGOmf/qovGjXNVxzAljMp2JBBb6X9pc/RgnKVebE6Sy6fXn8bffHT4xhM+V5AavIvl5k+EyLRh5eqhkW9rGXKR9MajcMM2GkUGJhdu9T/LSsxGzDPXFNfQU0oTdCyGlk13frMWwN1Xc6haIHIdjBUQ8hDU6jVpzzp1+2cEIbFsNaycg/2znaEs+qt4e26EhYN03j+tAVPp/85gZyf1RqoebjkauFHGXy4nVhwm1IMBw+ppLvylPLYpVHktRy08IDVFokcEbUevqcWgVfC/qBUlG3zmx7ujdAKJSCIrazg+TBQG3Nqc21x2izulfM7PwPruPS2Zu9jhe6PxybPdMJtGa5zRSLdOln6kaNrQrG8tR61qgGaZ8ckmxNj4KJuPya3dppQL3CvTwIJqOiLfxoDBTBpNSmL/mc45WNaBGwNo8yL7l8T7YOaDxRe8XJKhrFD5AYcbIOUEUCu4P8szp23tOWyTKQXeJl0= X-Forefront-PRVS: 02408926C4 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6049001)(6009001)(39840400002)(39410400002)(39860400002)(39850400002)(39450400003)(86362001)(5660300001)(2201001)(33716001)(3846002)(54906002)(103116003)(4326008)(305945005)(189998001)(53936002)(9686003)(38730400002)(7736002)(6486002)(77096006)(90366009)(6116002)(230700001)(25786008)(50466002)(33646002)(81166006)(76176999)(42186005)(66066001)(8676002)(6666003)(23676002)(83506001)(47776003)(54356999)(2906002)(2950100002)(50986999)(217873001); DIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR12MB1616; H:[127.0.1.1]; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtNV0hQUjEyTUIxNjE2OzIzOmE3S1JnclhDajBIOWFPdkc0WEsyUngwemlC?= =?utf-8?B?d2pxUDhJdVlWcUJGRXJ1Rjg1U2UvQUZyVXZxeUsrdUxxc2Q1QmFrNExwUmZW?= =?utf-8?B?cENsMGpxV2pPSjdqZm5Pc3BkTVBPbzVTSVRoZ1VjRWJ4WkdCOVR4RktoRW1p?= =?utf-8?B?SzlPTGw5cGY1RFNSNVVZOG1JblE0d3lKUXV6TFlKelRobmZvSDlGWEpGQ1lG?= =?utf-8?B?ZGJSd0EvQmdQSHFKaGtKSUljMFUvc0lWbE5TaE5BcWRjb0RkUWZzUm9mS0ox?= =?utf-8?B?ZE1yNDMvUkRyWjRlZHB5Z0UvclZtalZUQStkOUxnbEovMUxJZzlSaVE1RDZa?= =?utf-8?B?UGd3cldTRkw1WEduSFhCcEJiRkVnSUVxWm4yQnkxYllaa1lJQjcyV3FDcjBS?= =?utf-8?B?MzkvSG9DZ1dQM205WHVuVkR2MHBuZzBJTkR3NzVWcDlzRXJzOWRKZ0JDSmZp?= =?utf-8?B?WXp3T2x0RzhoZW8za2FLVzJzZUpGanlKNEswSGdhVHhxQ2dPL1luelVCekY2?= =?utf-8?B?TTd6U01xdm5HNjU1MzJtNCtVSWc3S2RRaExVN3JISExNTExZaXNxeDFVREQz?= =?utf-8?B?NWpMKytKV2xCeWFSeWNhQUd6T1hKZ0VoMHh1YlUrZFIrS2RDZ25SS3l2VUYy?= =?utf-8?B?RGkyVkM3NkpaK1B5U3orVGMzNEVDMkE4cmxVZlVBRlNUTi9LRWJZT2RzcGhY?= =?utf-8?B?RjBGbnpKQmwrbUduaGp3WkVPMUNHcHUyTldIM2tZcDA5SDMwWHE0WWw1Vmx2?= =?utf-8?B?MmV5M3dvbGlrQmppVms5OGhDdzZ5RHg2NVZPdEU5cE1HZkJuRXJyMVJCcWxV?= =?utf-8?B?QWRURlA0OU5ialVhRG5VUHBhelZuWXVhZDhVcUZvUU9YYnVycEk0eW1LcVZr?= =?utf-8?B?cTZoWUFVamNRSUpXZlF4R3RUV3FVNVpxZW1wOHNPS1RpMjFnT1Y5ZDFzbnJS?= =?utf-8?B?Y28vNWxodHFhdGlJcjJjNUF0d2hEY1MrcGtyUjlUV3NkaGlZazV2NkdTYTVE?= =?utf-8?B?MC9qYjFOM0dZS2J3NERPeGFEalVNdWRzcjh4RTBtb1dsZXFYZ0pTZWZvMS9n?= =?utf-8?B?RTQwRHlYMmVva1d6TmhrRlBnbGpuSGw1ZDlhUUlCZVdtZDV5T2hUYk5lRnV0?= =?utf-8?B?ZllwblZsTEVxaGFDNUJjQzRxa0svcExLb09xMXlHVFdwTWg4ck9GUnJaWWZ0?= =?utf-8?B?d1FpdXFzSHhwa21ldDdyVGpDUmVnbkVYUDcwU2pmUU04MFI2cnpDOE85QWhQ?= =?utf-8?B?U1AyV1JGUDVwN3ErOVFjNklHNGJ1cTBzbUN0ZldOWnIrUUloTHlmTFAzUmlS?= =?utf-8?B?TDZUZ2RabHNwRVNFOWFDNjFYYUJzQ1JlaTNKVlYwYXlzVWlJcmRGa2xpQnNW?= =?utf-8?B?SDlkbGVNNHlyeVFxZVZRR3VrUEFhYmxSM1JjVUx2ajA4bk1uV1J0c1cwYXJ1?= =?utf-8?B?U2JnUllCT1VSb2ZvRE55SDQyN1pVREQvOGJ3UENDNWtVamZybG5OZS9SS2Fs?= =?utf-8?B?aTBFQT09?= X-Microsoft-Exchange-Diagnostics: 1; MWHPR12MB1616; 6:XWms1SB37Ef6Qvs8MmpKqJSxg6NKO0FTQOYkfJ1jqkuICPVqnjAhBzSCQrrkbfD7LYK6efXunLIeEosz31rGu5aK1Esr+F/iYZbT0vOGVJPGrXEWG1jqJayTV+cplemmwX2hKzVem6bIXs/TnL4vN7aadz/znDHDC8CgyU0mDOoc9Mzvv4whPaoxLDAs7XhQ2jeeJ4aKEq2PT9Afnu/kbUThsKYNsNU2vDbHd28ev6KbnjQ2ynG3pjz/nQy3hoqsU/gyKmp8yW0R1aAg6u+G1Zp+P4XeQ9voueYuRyNUsQO9bhD1XZsmyRuUSyEDAw7KNSW6rcbbp/bxAc6eLXlR2U8zQoLjC9Oiw3E6iDRRKppeZ34T0RMC7vmJVu5g6/M9Ysh+Lkk93MInR0hJF9K4xoysuqjDJTptKPrFCjrfiWw=; 5:/+lQ5F4IxfyTAEIGvdihEJHBt0xjFZRdZDQXlm1ST63gVXwqt8tZgeevfBJWH4I5WcZxYjgyRvS/Y77MHs2dERh4eVcHFF+osOgAO8yMddACfqg9u6muXkyJrRQMq845EujWi558HT0YXtbjYAe5MH7ljLazz8avA3s8m7orKlY=; 24:h3KI1QRxhKlbjrlTem+BD0WBKupCt9wFWqZLvuo9NxVECVIBPaey+OYT6btO9gAtuzn33WL1LjAKZbex+/rV1KX00IoGoaVNY7ljFRDfrQQ= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; MWHPR12MB1616; 7:Jpr8oQJiXg+x9/imSJz307c+QRds6NY/ktisSwJxeeFD3xJ+3QNsDNpZ7XmW66p17q7rjFnM9dKJDsRNk1nkuVkVILU9JHJfD092kxvrBbazvE6coWM+4IzFZ9lswIW+la3/DXSCVtYuSF6rIiXgduPsUTyYzjCYDfoEy+a70dyMbYXEXUcQtCHm2r1KjxErj6ruNxEUUy5ZcjIUlivgWKPzO8Yo+PNjaXsXrxdGyVCMmo410G1JzHM++8mF2bt2px64ONW8dYoNxm7sb2Q5/a5AuBhYC57m4ajTz3YzwYmNZj9TSZHH54xYxTv1tP4C1ZNoQqlFHQQ5kJ0QfZGbgw==; 20:Y97FM4FjxaxsgiMGCyyMzcplXos3aJ0f+SDNLwPM9xbLk/Tl0UYHc8eGff++j1FtqCrd6rx4w/TiOyGe0lWVPvFwZ855BvrhUz/ro8K3fAgKCOHc358EVhNkKt0lpT3tm6CGKdrz2PiW7yElQdj4j6U7l5Td4M3wgNxGgwyj1hUJIowGTlmI9GNDbC6iC7ysWW2UStYG6x9UdSdU1ZwwuZLmUxpVJbAuIlYZscD8RmOmI4gUy3cQ27Z8DVTbRkb2 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Mar 2017 20:51:31.9824 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR12MB1616 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.32.75 Subject: [Qemu-devel] [RFC PATCH v4 02/20] memattrs: add debug attribute X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Thomas.Lendacky@amd.com, brijesh.singh@amd.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Add a new debug attribute, the attribute should be set when guest memory accesses are performed for debug purposes. The attribute will be used in SEV guest, where we need to distinguish normal vs debug access to guest memory. In debug mode, we need to use SEV commands to access the guest memory. Signed-off-by: Brijesh Singh --- include/exec/memattrs.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/include/exec/memattrs.h b/include/exec/memattrs.h index e601061..b802073 100644 --- a/include/exec/memattrs.h +++ b/include/exec/memattrs.h @@ -37,6 +37,8 @@ typedef struct MemTxAttrs { unsigned int user:1; /* Requester ID (for MSI for example) */ unsigned int requester_id:16; + /* Memory access for debug purposes */ + unsigned int debug:1; } MemTxAttrs; =20 /* Bus masters which don't specify any attributes will get this, @@ -46,4 +48,6 @@ typedef struct MemTxAttrs { */ #define MEMTXATTRS_UNSPECIFIED ((MemTxAttrs) { .unspecified =3D 1 }) =20 +/* Access the guest memory for debug purposes */ +#define MEMTXATTRS_DEBUG ((MemTxAttrs) { .debug =3D 1 }) #endif From nobody Sun Apr 28 19:04:07 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1489008696669763.2738664012833; Wed, 8 Mar 2017 13:31:36 -0800 (PST) Received: from localhost ([::1]:58541 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cljBG-0001Lc-5P for importer@patchew.org; Wed, 08 Mar 2017 16:31:34 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52034) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clj5g-0005ms-2y for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:25:50 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1clj5c-0005XT-Qj for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:25:48 -0500 Received: from mail-co1nam03on0052.outbound.protection.outlook.com ([104.47.40.52]:18368 helo=NAM03-CO1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1clj5c-0005Wx-Du for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:25:44 -0500 Received: from [127.0.1.1] (165.204.77.1) by CY4PR12MB1608.namprd12.prod.outlook.com (10.172.72.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.947.12; Wed, 8 Mar 2017 20:51:42 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=8I6Og21ZwHsLAFcoI17QbLay7jH1ONAfI88FfCengCU=; b=L8Nwcbuxn5d70WYiiSGCx83tzB7yCZ2K7njUA/BH42bO3G1NLocMFWofqIMG7OvYuUv4xJPAobx/QxpBf1XWIRVUgDYL1S43AmurdTFFldiXprJzCbAMvJeZl2M9ILbUbNsiJwnkhZpU3Uf66mqQKgtPna+WQg6OyJXgt4DeX0g= Authentication-Results: amd.com; dkim=none (message not signed) header.d=none;amd.com; dmarc=none action=none header.from=amd.com; From: Brijesh Singh To: , , , , , , , , Date: Wed, 8 Mar 2017 15:51:39 -0500 Message-ID: <148900629935.27090.5801290878346986411.stgit@brijesh-build-machine> In-Reply-To: <148900626714.27090.1616990932333159904.stgit@brijesh-build-machine> References: <148900626714.27090.1616990932333159904.stgit@brijesh-build-machine> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: BN6PR17CA0037.namprd17.prod.outlook.com (10.175.189.23) To CY4PR12MB1608.namprd12.prod.outlook.com (10.172.72.17) X-MS-Office365-Filtering-Correlation-Id: 682a2aa1-a81b-4e41-e28e-08d46664ed8e X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081); SRVR:CY4PR12MB1608; X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1608; 3:f1iOWMhQXFTfgqpZ5AUDyWHqShdN4ZsLFgrQryIB0eoS8mWoxynFa1TIPuuByGa62IRNo2dzT83NdTjvTbJN4U8BM/ENQhBkuIZDs5f+5y2A/AcpclFciTb5U87C1/PtOaSG7+FV2aVvt34YiirdI2jRSk7si1NKM4PkqYNuEpBIEmWluVTuJjSlh8+ylA9rMkf4oIp+XhoOLJmqhaQMX0AwZmRBlFZUq3RBK9DWw10o/l0TgRXZFw+ngltA9oIAju16InocdDaWLRtQBVW4QAL7kzES+oGJQBmIH7OSfU8=; 25:y4QREEv6QCp/AK9QfUvGBcsuvjxqATq+uE0AAkLc0WdoWuimXM9ea5yCbIo+NDDOgamHX/7zaph30R0CuibeShnSRQYgXoRweGGj3UFC6+k/0nHqZXmdO5xAX+9I+wx+r0DDgRbqZDeSPWqsHMsrtkCHNiCYUnEsvgBoN6J07Ikl+IJ13iP963Ka0K0Kh5+LJQS2Fv/XN2w+3waIAPeyTUqIce/M5k9mJi3S9fkaSpP+2slWMiprEuXFh7o+V1pq9TMMhTmF8QDfIojd+2b4C2ZsF41ur1juWRNRHYR6P7AmG055++yFfvh8MaOj1em4wQh1cCmZjHY6jjkgex+wyS11IdYLSd7ZIE+u1bZnUgzfcNN6ZRpbCszspltUoPg4toVnAN7AIe7J2m+pKutD9wysdoqEZlutWCeMGjDReDsXoWCTihelF/rjANGGGh2/lKSJPBu3ayIogXKXHo8b+A== X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1608; 31:EvA900PSjNDeoWneR1Wno4qMBTjo4U5FMffIxO74jxkp0hyyuD4i4j53Uyf3h1uEqCDon/LBiGk0sz1uThVIIBhRJJX9ixScUF26Ns/8zR5Fidxmll8XpJ8LsWJCKgg039qNeMzsMTVsF4Iuq8/GyQk7LvDBEBMhAh2PrCtpYnvKMzeD8JUZ/AkF3VLtB6FDJntoBdQu6klhD9OgUdAgtffawdHp0Ufa/3IRFAkn8TTx0ysPEtZies9MMMHMdZY9; 20:T/wjawFEpmzj3xAbgSmg+UCbPdBDs2Ue+SEl5vI4GXwSQRsza0P6S7J9Dq0RHrybHlaU6fn7azQYQ/XH6Eo9r/TKzbqt5qMZuG0FI1iu/z7wep2En0s052IdFpesIbuC9CHvs1Wo3w+RqkzYa+QRH4uRNTiqfcVclhPSCkgGcfPTYQQ63NFLz+j1Uwk5Sp4470vo6iCIPIMMEEfSLbdf5aDyrGv6NZPD4hiqDCYqu49504AvEgOjSbrRityUxdiDn8gpkhtPMl5kgeCGAt1rZazx3QbwYE7Ssc904RFOqcSUt8JF4osGkRqNNRgBcz2Y+L9LBBZWKS0qYK1Lzmcd66Ked+3bgFpPQ9FikFjEz/DElIO0X7cKhzBnippJiNeu+zQFAJuz7mBjZhIvvoAMbMFAwPEazYy2UBG7Qa2vTPiAUJIya/4sQYIr2vO0zlGJrenTtAV2qVFzLIAJcRccr26WFHL9l5JqcDxfRuxxvrgoyYLcvivbj14FbbNRgtrW X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6055026)(6041248)(20161123562025)(20161123560025)(20161123558025)(20161123555025)(20161123564025)(6072148); SRVR:CY4PR12MB1608; BCL:0; PCL:0; RULEID:; SRVR:CY4PR12MB1608; X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1608; 4:ZzGRY4OTVNWMHfCBzEu1sb/V/FJqnbjhlO3FmSFyLPNpDdSd5ZblAzWqUolUnae/eEQ2ric7NJaXJfx3gFf9ItYtqEvwmwci4JEpIIOEABDnRqeaFpMaSTnPS8ICHA1Vwd8e96ATJOcfZUUATEEAdtIaSJgWwNKWDG4GquxnvaFAne1v9ZASET11+tffo5wMJ917EqQE4om1ylBiJlhecIqXBMXlnYqpSBadzGEQLh7o5YcVd6LiglGwyWj7MvKBlpbWVtolrd1frSMRIYk0mNOwO69faSADWhbwdwX1yknNwUCdP9x3joEsQiA9bXTnxPExKVT5J1XwL6e/mF7trnrjssFMLU+6gtEosL1FSVmEQPCAU6uP5nOwYvd38MvwdVyP6AfgUs1PQ9VKuZCkUQGjWx9HCge41XaRk8/9XHTTWC3iR6fhDEjthv8YgaAKtCY/+pmKaRGa0EO+blDByxZB6bdRmj28g2+lq32lbur6bXMN1n6SeiUfounJPQSAa2wLBGmT4o1zBtSclcCeIkfxvkO+MyBnUPIVyxzJ/6OtMiYwOerPf4BtmjM1/yF4WdoE9wkIeYy1DSf0KgHAzQsRg1cGlQyo39xdBFbm/Y3Wemp9EPQGFbFSuZQsfBR+7IG1zeXWhzP62qxvj1XqKQguY4hUcQSSLn/VoFxM3B4= X-Forefront-PRVS: 02408926C4 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6049001)(6009001)(39410400002)(39860400002)(39450400003)(39840400002)(39850400002)(8676002)(3846002)(230700001)(53936002)(77096006)(6486002)(9686003)(7736002)(81166006)(54906002)(90366009)(25786008)(305945005)(86362001)(103116003)(5660300001)(2201001)(6116002)(33646002)(189998001)(47776003)(83506001)(2906002)(66066001)(2950100002)(33716001)(23676002)(6666003)(54356999)(76176999)(50986999)(38730400002)(42186005)(4326008)(50466002)(217873001); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR12MB1608; H:[127.0.1.1]; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtDWTRQUjEyTUIxNjA4OzIzOmJ1c090OHVmV2Z0bFo4M1h1S1ozYW9zdTRl?= =?utf-8?B?V2FEZlQveVFlZTJMdEFsS1FQZDl3bXhyNjlRTG1YTnVKNHZWN1lZRzJDUkVI?= =?utf-8?B?dk95SSt1TzJrK3hPVVdNNmJQS3FWeHNCZ0Z2ZDJjbGFaVFM0eTd1a0w1ejdU?= =?utf-8?B?MjgrakUxclJ2c05xeTd5WDZvbTZTdTJnTk41OWE2eWlZTnZrQzBBT0xKVFZo?= =?utf-8?B?dytLVmtvRzQ5Q3AvbHl1Rk9qZ0tCenRNSWttZnV1dlEyM0ViZWovbnVicUMx?= =?utf-8?B?dys4ZnhPeElDRlEwcHc5UzdPdW9CdElwL0hEWnJPWU1lN3NHS2h5M0ljbUMw?= =?utf-8?B?VXF0bS9pOEh5RHhNMVM4L2VMeVUyeFVUaEpmb0oreWxJdXVFWGRYN1NVWVM4?= =?utf-8?B?S010UVdGVkQrRHlMaFFMUVdUK21SMGhDRmZQNEhHWjl2UXNReUxkU1NVS2Rh?= =?utf-8?B?UEd2RkQySzZhalNTNFYyUHFMMnIwa3QwTEZDdW5Xay9sQTByNTEwSW9rSXlT?= =?utf-8?B?R1FtNHdhc0pSYVEyempLRUdKOFZ2elcwWmhPclA1Yk9wMGZROXg3WlZ1UEI2?= =?utf-8?B?d0FYVjNsVWx2R3MzRU5iVE4yN3lUVW56UDJxSy9aaFlKWks2RVhZWGFFa1ZZ?= =?utf-8?B?d3lIL2JUUG5KaU9MWllTWnVOMjA0MWhreU9zemtNeityR29iZU5HTXowbjYz?= =?utf-8?B?UjVvcWpwVVZVQ0NnOEN4Qks2S3NxV0tuMGdtNHBkTFhaL2RKc2ZFNVd2aDdq?= =?utf-8?B?Z0p2OUdWVm9tcVlobmNJSVgzS1Q3ZFhDU1U3VDBwbFJwQTVVMiswTk9ZRmFB?= =?utf-8?B?WllYZ3FEa0ZOMFRsQ3dwU0JpZnFocjZEVFdvUFFxLzlTcTdRTW9TRm5wOUh5?= =?utf-8?B?aHg4a3Vic24yVUo0ZnAyNVJRcXhDNUZFc2pFK2dVdEZRYUxOV1RyVmsrMlMx?= =?utf-8?B?Ymdzd1BRM1R4SlhqeEE2T3hPdng0d2p5REk4RlMzUDJnK3ljbElNZTMvRUF5?= =?utf-8?B?SmxrQ09CaitiYjB2WTJLbWptVG56UjU1clYxTnl3NXhOVXVvTkNGTGFzOEh6?= =?utf-8?B?SThVQnFSWWFSSFVVUGhienQ3bE5BNXYwT2RXbUpFZ1lpdC96cVZNVGpBZWYz?= =?utf-8?B?Y1AvM3BNZ20vSHNrOGxUcVRuSXk4Q1BQK3ZCeDJqSkwyR1FQWVZDNVR0ZXBE?= =?utf-8?B?dHFwTE9iWDY1TnVKK3lNeHBETnBFeHNPMmZWN2lhM0xZcVhCT0VINE9leVNM?= =?utf-8?B?TnB1Z0xoNWVYbkpTS0lCUG9ZcDEwZmp4M0tXdHZFd0tLVWdEZlZzNHVnRm9h?= =?utf-8?B?TnIxWnREcDZjcFMyRHNBV1NGc1Y1QUMvZUVlN1BzQ2MrQ3FrZkpyRXNTcHg1?= =?utf-8?B?VGtZS3pzNHBpQ0c5clpzMWh6Z3dIdnVIYzhBcHdpZFIrWXdSb25PZVRYOHg2?= =?utf-8?B?dGRGY09RT2l3dEFKNmRzNmJpWHRYdVhBL3lZalRKWWxUZXV1RUFWQWVWM0pD?= =?utf-8?B?Uk1Ldz09?= X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1608; 6:Afmab/pLRq50+nBFmC8r6VfMwaMv4N3rYTvX6VLzIo7dZFISNZ9mclgaQDJd3LXw92D5e/qP7YbCYTKfqOtqCNLk6Ngd8CF1SLtmtbg69vHAEIQHqXXOL1LPCuwNwaAGt2QpX0QSPgUoXstydyWLdzB+TvR+z7r0x4weg/tHd0GCZF196jXN+j6I1b2vQnw1IZ01zj7J6K3LkSSU74ugAcMptWm1H2Egr2kRx5OqgEZdfnFCk6LaUJpEP2hDG1kTcrWwoYvU2LXG+PWsPc3PxZ1VrRk0dm7J2UjenywtFYi/je2zZFUKn//S95AoDzZueYdJXlNlyY28k52E8JDLoNJ4he3vbB5guCEk5MMufv7tWTdGqbjZgyxlXlkrk9qlThJZ/G2MYX9Qdm7GjWg0LBz3jGtz15j0DV9fRnZ6YoY=; 5:w866IBgEjGDY/5U+wHddBfEvEO/SeWVdcpiU/QZFWqgJk2u6mJiX1PJDEPKkmbPqBdo4YNOdXjW/J3wQxMTp2sgCyKJlF74sA8QOdfBTSxHW/gvMOUTijCOQbMLjCyvPLFlAzSJqyb6sZ8+SktLt+w7BMzKc/RvaoH49MS+8ZBw=; 24:gmRl324ZogKacHMS/C8mQfK9tzrW71Q8DQvSEIfLzrFcie30s/BcOGnTfRetlF+VJFklHgU8JNDI9BlP1kcJB0k1TTFshPxs55pGCLiZ1uc= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1608; 7:SD2FhrGq786xteNV5OZgzA+5aOVvT7F6FK/8HNw3K7gYw0iB40axI8K6AOfD/GzY7UEg/NidJe6bVO7M1vb+ax3DJJWNV7qJUFTer+MZ8Nc+k8X4OJ6wN7oN352ybLIICZ2rRUIvgERQiHkDQ6etXo+qe8hDk3DBDLACBzAkHpqsglMvCKL7FSezxsZEIrzVNIxJsRheYdfsUDDkisnBobOemP5MJpdlBRxH5p2fnHT+JaZ2LZiz0BIdVlhkd/5BeldhY56lGWgtMo9pcKNRF7Mn7gnlWWFFYN+5sgqN4tFuG0/lshZ+CM+Las/bXAgbbNK4xW7UEnarmJviAxgRTw==; 20:p09MDgE378puuUOGvdrGVePfdcrzaUPsLFFkwH6U7BuAKHD1n+VH6euhNW2upxUzW7fNgX5A78GKfkbE0xC6saxie3k9oUKQGbNRbH7iX7e0RVmTQj4JgvDytTAHnOkvsWGAqBX7e6NbPwLeJ361jmpJ1pJd+g53zgnOA6w62skZ+fuicS/gC/60EFyHe2xZL0Yjr7oYjcgkZFkKKwcQxMiTN4n3wzpF78y/Bo5aTJtovWPUjyw5boA1sdqhqx6z X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Mar 2017 20:51:42.1597 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR12MB1608 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.40.52 Subject: [Qemu-devel] [RFC PATCH v4 03/20] exec: add guest RAM read and write ops X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Thomas.Lendacky@amd.com, brijesh.singh@amd.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 In current implementation, read and write of the guest RAM is performed using using memcpy(). The patch adds support to register a callback which can override the memcpy() with something else. This feature will be used in Secure Encrypted Virtualization (SEV) guests in which read and write of guest memory should be performed using the SEV commands. a typical usage: mem_read(uint8_t *dst, uint8_t *src, uint32_t len, MemTxAttrs *attrs); mem_write(uint8_t *dst, uint8_t *src, uint32_t len, MemTxAttrs *attrs); MemoryRegionRAMReadWriteOps ops; ops.read =3D mem_read; ops.write =3D mem_write; memory_region_init_ram(mem, NULL, "memory", size, NULL); memory_region_set_ram_debug_ops(mem, ops); Signed-off-by: Brijesh Singh --- exec.c | 55 ++++++++++++++++++++++++++++++++++++---------= ---- include/exec/memory.h | 25 ++++++++++++++++++++++ 2 files changed, 65 insertions(+), 15 deletions(-) diff --git a/exec.c b/exec.c index aabb035..48ae29c 100644 --- a/exec.c +++ b/exec.c @@ -2913,11 +2913,13 @@ void cpu_physical_memory_rw(hwaddr addr, uint8_t *b= uf, =20 enum write_rom_type { WRITE_DATA, + READ_DATA, FLUSH_CACHE, }; =20 -static inline void cpu_physical_memory_write_rom_internal(AddressSpace *as, - hwaddr addr, const uint8_t *buf, int len, enum write_rom_type type) +static inline void cpu_physical_memory_rw_debug_internal(AddressSpace *as, + hwaddr addr, uint8_t *buf, int len, MemTxAttrs attrs, + enum write_rom_type type) { hwaddr l; uint8_t *ptr; @@ -2931,13 +2933,33 @@ static inline void cpu_physical_memory_write_rom_in= ternal(AddressSpace *as, =20 if (!(memory_region_is_ram(mr) || memory_region_is_romd(mr))) { - l =3D memory_access_size(mr, l, addr1); + /* Pass MMIO down to address address_space_rw */ + switch (type) { + case READ_DATA: + case WRITE_DATA: + address_space_rw(as, addr, attrs, buf, l, + type =3D=3D WRITE_DATA); + break; + case FLUSH_CACHE: + break; + } } else { /* ROM/RAM case */ ptr =3D qemu_map_ram_ptr(mr->ram_block, addr1); switch (type) { + case READ_DATA: + if (mr->ram_debug_ops) { + mr->ram_debug_ops->read(buf, ptr, l, attrs); + } else { + memcpy(buf, ptr, l); + } + break; case WRITE_DATA: - memcpy(ptr, buf, l); + if (mr->ram_debug_ops) { + mr->ram_debug_ops->write(ptr, buf, l, attrs); + } else { + memcpy(ptr, buf, l); + } invalidate_and_set_dirty(mr, addr1, l); break; case FLUSH_CACHE: @@ -2956,7 +2978,8 @@ static inline void cpu_physical_memory_write_rom_inte= rnal(AddressSpace *as, void cpu_physical_memory_write_rom(AddressSpace *as, hwaddr addr, const uint8_t *buf, int len) { - cpu_physical_memory_write_rom_internal(as, addr, buf, len, WRITE_DATA); + cpu_physical_memory_rw_debug_internal(as, addr, (uint8_t *)buf, len, + MEMTXATTRS_UNSPECIFIED, WRITE_DATA); } =20 void cpu_flush_icache_range(hwaddr start, int len) @@ -2971,8 +2994,10 @@ void cpu_flush_icache_range(hwaddr start, int len) return; } =20 - cpu_physical_memory_write_rom_internal(&address_space_memory, - start, NULL, len, FLUSH_CACHE); + cpu_physical_memory_rw_debug_internal(&address_space_memory, + start, NULL, len, + MEMTXATTRS_UNSPECIFIED, + FLUSH_CACHE); } =20 typedef struct { @@ -3308,6 +3333,7 @@ int cpu_memory_rw_debug(CPUState *cpu, target_ulong a= ddr, int l; hwaddr phys_addr; target_ulong page; + int type =3D is_write ? WRITE_DATA : READ_DATA; =20 while (len > 0) { int asidx; @@ -3316,6 +3342,10 @@ int cpu_memory_rw_debug(CPUState *cpu, target_ulong = addr, page =3D addr & TARGET_PAGE_MASK; phys_addr =3D cpu_get_phys_page_attrs_debug(cpu, page, &attrs); asidx =3D cpu_asidx_from_attrs(cpu, attrs); + + /* set debug attribute */ + attrs.debug =3D 1; + /* if no physical page mapped, return an error */ if (phys_addr =3D=3D -1) return -1; @@ -3323,14 +3353,9 @@ int cpu_memory_rw_debug(CPUState *cpu, target_ulong = addr, if (l > len) l =3D len; phys_addr +=3D (addr & ~TARGET_PAGE_MASK); - if (is_write) { - cpu_physical_memory_write_rom(cpu->cpu_ases[asidx].as, - phys_addr, buf, l); - } else { - address_space_rw(cpu->cpu_ases[asidx].as, phys_addr, - MEMTXATTRS_UNSPECIFIED, - buf, l, 0); - } + cpu_physical_memory_rw_debug_internal(cpu->cpu_ases[asidx].as, + phys_addr, buf, l, attrs, + type); len -=3D l; buf +=3D l; addr +=3D l; diff --git a/include/exec/memory.h b/include/exec/memory.h index 6911023..e1d21cc 100644 --- a/include/exec/memory.h +++ b/include/exec/memory.h @@ -163,6 +163,18 @@ struct MemoryRegionOps { const MemoryRegionMmio old_mmio; }; =20 +/* Memory Region RAM callback */ +typedef struct MemoryRegionRAMReadWriteOps MemoryRegionRAMReadWriteOps; + +struct MemoryRegionRAMReadWriteOps { + /* Write data into guest memory */ + int (*write) (uint8_t *dest, const uint8_t *src, + uint32_t len, MemTxAttrs attrs); + /* Read data from guest memory */ + int (*read) (uint8_t *dest, const uint8_t *src, + uint32_t len, MemTxAttrs attrs); +}; + typedef struct MemoryRegionIOMMUOps MemoryRegionIOMMUOps; =20 struct MemoryRegionIOMMUOps { @@ -220,6 +232,7 @@ struct MemoryRegion { MemoryRegionIoeventfd *ioeventfds; QLIST_HEAD(, IOMMUNotifier) iommu_notify; IOMMUNotifierFlag iommu_notify_flags; + const MemoryRegionRAMReadWriteOps *ram_debug_ops; }; =20 /** @@ -526,6 +539,18 @@ void memory_region_init_rom_device(MemoryRegion *mr, Error **errp); =20 /** + * memory_region_set_ram_ops: Set the Read/Write ops for accessing the RAM + * + * @mr: the #MemoryRegion to be initialized + * @ops: a function that will be used to read/write @target region + */ +static inline void memory_region_set_ram_debug_ops(MemoryRegion *mr, + const MemoryRegionRAMReadWriteOps *ops) +{ + mr->ram_debug_ops =3D ops; +} + +/** * memory_region_init_reservation: Initialize a memory region that reserves * I/O space. * From nobody Sun Apr 28 19:04:07 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1489008384534910.835857881872; Wed, 8 Mar 2017 13:26:24 -0800 (PST) Received: from localhost ([::1]:58516 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clj6E-0005SZ-TO for importer@patchew.org; Wed, 08 Mar 2017 16:26:22 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51742) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clj4m-00056U-60 for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:24:53 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1clj4j-0005Cm-02 for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:24:52 -0500 Received: from mail-by2nam01on0051.outbound.protection.outlook.com ([104.47.34.51]:27136 helo=NAM01-BY2-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1clj4i-0005Cf-Ka for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:24:48 -0500 Received: from [127.0.1.1] (165.204.77.1) by BN6PR12MB1604.namprd12.prod.outlook.com (10.172.22.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.947.12; Wed, 8 Mar 2017 20:51:52 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=XbIjfZrn2XuBKsQ8zY5l4tNKSGzBlisuKIdQT6gMfAw=; b=n6+LFm2MacTMCHTqNpUfGjjp/HR0ypU16z37PzltWuC+pHZq678fMxm9CtxDimTuLSkGv8bQ3/HAMTrkrNTN+jujHhb5xJjxoCD0VUQNd2dl5djLBqixjXfmPLgPs+G1/0ZVsdBtupfWvRFZCmyUlihFVK+FRbuNrj5+lmyR2mw= Authentication-Results: amd.com; dkim=none (message not signed) header.d=none;amd.com; dmarc=none action=none header.from=amd.com; From: Brijesh Singh To: , , , , , , , , Date: Wed, 8 Mar 2017 15:51:48 -0500 Message-ID: <148900630884.27090.10960732348509149156.stgit@brijesh-build-machine> In-Reply-To: <148900626714.27090.1616990932333159904.stgit@brijesh-build-machine> References: <148900626714.27090.1616990932333159904.stgit@brijesh-build-machine> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: CY4PR13CA0020.namprd13.prod.outlook.com (10.168.161.158) To BN6PR12MB1604.namprd12.prod.outlook.com (10.172.22.23) X-MS-Office365-Filtering-Correlation-Id: 5b87706f-cc9c-4392-da00-08d46664f3b3 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081); SRVR:BN6PR12MB1604; X-Microsoft-Exchange-Diagnostics: 1; BN6PR12MB1604; 3:I8wKqEwlr5b1mFY4XnB/N/f1dpNbFcFYIUJ37z4NqK7Eqx8Dhj4wQc5vL0mGBdbXnbDojI/4XjWOVfx623LPwKhRmgwCAWJZAyV70L2REkB71O3+uTlXxYwZyQkhoM276rxCOSzSbCtrQqhfewjosmFNNz5s+7Q7870Y+H6bZOxrh/zrVkeqzY/SX5WWBCPk8nepVdBJ1QlKG8lMyvcMWW/R2wPReFaomgpRPML8GLpdKq4t75A8cEMoNC1MFBREmHN97RPBd9ucLwH5KmPI5BP5inCxAKn2ROkTOLm1MbM=; 25:5JNaRUUQmO7wbdb9ur6/LLYBvvHrlSXGIHFRajb0DQP72XOiywzhIE8SUo/cyoBNZYUxtiBIrzX2iMG4rq3ZJEafeNU08qyrri0cE0aYfOX5wCZqhBe/GOPiqnDBdqKyaZExoSfO+HSW55wmS6xAHey9QLgron1FxjK29lB9I5dHclGSOKIxxJqkkMsWB2nFuAXzKWKtIjWOtDEYA/TXRftKwigPIUkHGSR0VjuU49NuVPoeSHJCm6AICPHW6pHKeYJEIq/QLlRZ23AXY3c847ALLPNtlY1JjPgXVGhh/hTw7BHjBpeHKCMLjHeg6TfqKypdCKP8RuOaFq7iogZpCj6OvXk0c/ARlGY2HjRXez77FnwJJpZ9jzId9/t9Gj5AioARphoGdPU5RXe4Ve06HVeKv2JLynpSkkgJVtvWKb66/ox7ryPgpTaPC30+IIbJ X-Microsoft-Exchange-Diagnostics: 1; BN6PR12MB1604; 31:B6kS6mh/8s4GyoMPjGGcdFn9Be6HaNKMj2pWRl+WaYMRU2ZDgKaiXtIws8gRKmOUC+nzk8jYLYNh9A2atgof56T7csPsJpMjTkQPWmLEKCEQUM6/g2b2swrphuRhMuMS/Y/4aFv7l1Ioa7Rtrv1v6k5VtB4t+6QttohbnKqqvelWQkhyopFBjZmP6VAneKJo38qqIkz56tau8ALlGckMQqpcuT4PE9nRPiWg7V2kWSQ=; 20:oiMNDP8kC1jJ98NQmJg+g2zZ626pZ+LZ8ZGAp1g4/3O3/0FuJTr+sNzrrPRPKl4NL5Cex77K5+az+6N12ta1m3lVcWGjvs62h3zyVuchMajjtevW4S+VUc6Xe96/YgOdLEPVGmYMtRXtRNDf7L/h9SYRfDEdhfQ060a27/yqe4wGnc/A2ZaxPOu5poWTdLEwj2eMLpz+ihXmbPuwDhZQzq/qaWG9gAKi9HYvHiWinbmUaLvu9MRa9ifsv0f1u7AxMGZTpyTrvnHcxuhCgufcCkK8duZMqCOOUTYxoetyJ3/M51Z9N3yNX466pTmnQXtNJnW0IS4MGSIKum8PjCdyNliksIIGbxb/hebtxEzxZVwJgN48/b7FxTTO3SKExBaac5I/MEhS4maCVbTx3Nf8Plr1uA+qlHHiGqy8gL6qUsxT7GnBKK4p53vR+0NGfKdiydxBQz/0Ag5BNk+tAphv6JpZdYg1+lzJzVLUAnpP1Q2PWIWG0kjL8m9VcAy7Ipm5 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6055026)(6041248)(20161123562025)(20161123558025)(20161123560025)(20161123555025)(20161123564025)(6072148); SRVR:BN6PR12MB1604; BCL:0; PCL:0; RULEID:; SRVR:BN6PR12MB1604; X-Microsoft-Exchange-Diagnostics: 1; BN6PR12MB1604; 4:SrswVfoz31xLlUt4hMKx7Qo6tDI9o2LEyxLdpnDhyPCtuBxKwDHXgrNgoM8SEgIymHV+9gGreTKOLTCLuhApVBOJqCSRHVjI2Y4Jtk+qG6lNLOUvAPVFD1Nu4xuiwBCByBkPti43BPk0vah/rd5CC4ozvkyKumWgVKWfED0OcXLh8Ug2CTZQOXP2JaWSAyIQMo/qPFBrMG4bSJU6plarZZW2Z3X/j4iUWeDUh0P9bI9Q6NnDVjZVCSAdtgBTqqHhF+jNqOuryiDHt/F9b5LnGuUHvHAK9vF/jVPFFfYVFXE6mnIKERdQyH3SuZ6kYTt1CYSV/zKHo9AmjPm6bsn5TnOIo2W0FkPHSsZFSucTEd+S/YdloXusRAweJxGCusHuZMpaCgrlzqe79qn14lSHcoMNiP8ATLXbDioBAhULx7BLMEiONlRXcolkd2NV4z3bP6Phl5HlqEEVIUHOPwqmbRH1cDfIa80fKwjpyq5rSyGEOFy093ONRAB2nj1hJ2DpGt+u34kVfLMljezwFBvftbl3MeyFNq4ygzEqZ/UyaALO27RfHUh4DJ/WL7bZF1sGopZHcxCYrxswfA0o7ZaH3WSki4i1+5kpT5Ng7AIAfQzLM3wnYkgoHVpCJEYwIEujF5FLSxUsTmft6eMEujOhaet0OPLPaxXzIemI+oEONiU= X-Forefront-PRVS: 02408926C4 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(6049001)(39860400002)(39840400002)(39410400002)(39850400002)(39450400003)(575784001)(230700001)(83506001)(86362001)(6486002)(5660300001)(33646002)(4326008)(76176999)(2201001)(53936002)(103116003)(77096006)(50466002)(90366009)(189998001)(8676002)(81166006)(7736002)(25786008)(42186005)(54906002)(54356999)(9686003)(33716001)(3846002)(2950100002)(6116002)(6666003)(2906002)(47776003)(38730400002)(66066001)(305945005)(23676002)(50986999)(217873001); DIR:OUT; SFP:1101; SCL:1; SRVR:BN6PR12MB1604; H:[127.0.1.1]; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtCTjZQUjEyTUIxNjA0OzIzOjF0WnM4dHNxdkpGTDhXeDMvRzBXd3F6OEp3?= =?utf-8?B?Y0VLU3lsWDdFQmRMdWhrSlNQM0ltMGVxK3hpV1g5WHQ5eHJ3SlpPWHh3eUpP?= =?utf-8?B?RFNyZ2YxaDlzaHJLTWNIdlIzOUVlSjZIMEhGdjQzRXlLdlRvUzV2MFFuNUhC?= =?utf-8?B?cmk0UTVvUTU2WG1OWVN1bytXSi9OTXZ3OWpXKzhCV1I3NEN1UWJnbk14aVVh?= =?utf-8?B?bXQxa0w1WEVmMmUya2JGYUt0cm1mYWdVOENVYUNzejgyWXljYUJLd2tpV1gx?= =?utf-8?B?eko1UGFoOEQ3dWNxRDN4aDRUa3czSkxjREpmc2JxRUJPMTk2TUE5OStrZ1VT?= =?utf-8?B?YlRVbTd6UlJJc3BBdnY2YlpPREtDRFVCSGpDM2NOeXlaMmJ0R2wwTWtRdzhw?= =?utf-8?B?Qkk5b1BrRnNzV0RLN0dKbXZGQUpIazFYcjU4d0NIbkFiMkR3WG9jOVNrMXpp?= =?utf-8?B?dlVRSGE1OVFmZVQwNzJTeFZ6MW52b1c2dHptbUpkTU5JSUg0UzNrbHYwK2g5?= =?utf-8?B?dStkWXlReExpcXhiejBxRkxJZEc5YWhINjFpQnNmOEhRMDdhY1ZtQS90S0tW?= =?utf-8?B?ejBGSGtSTkYycXRrbjBKVjZRNWpjU3NQdHlQcjcycWp2cmphRzdvakJ4aVo5?= =?utf-8?B?R2s5cDR6YXFCZEpHYXl0bTRvNG9KZXR3QXd4V004V2x4UEpZaU5rMER6dFkz?= =?utf-8?B?azVNLzBsVzVtbG5RVVV1K3Q1K3RZRXp3bGUrVnRHQmE3RVNNQS8zTDFyaU1p?= =?utf-8?B?N0R2ek93b3hwTjcrK3lwS1VWSm9ubkZQaEVpWjQzZ2F5bm0vczRnV09qV0Fm?= =?utf-8?B?NmFpS3VINHlNRWF6Mm1FL050SC9iWjcwa0M3Z3d3UnYwd3FjU012eDNJYUpB?= =?utf-8?B?c2VLSXBieGh4OGkrR3ZOTEFXNUptcE9MZ0pTZys0NW8vZnJINUtZSzlrWG9k?= =?utf-8?B?bGs1aThLY3BjNGk0OXQrYytacmtHYm96WGN3MFdjRW5wOU94alhmZC9aMWh1?= =?utf-8?B?OHF0am1FdVRJVXNxa0YweHp5eEQ4VFM5b1JTVUhzSHlmR3E1ZmVFL0VNZWdm?= =?utf-8?B?a0NEUU9MZzdCMkh2Y3hvYXFnRkhJS0hMMzFjNXZEMzV2NFFZOUNjOXNuazR3?= =?utf-8?B?ZXVjb0pkc2hoUFFtb2dsUXZocnBSOGxEWDB2N0RKODVyUnV2OFdFdEZ2R3Jm?= =?utf-8?B?Z2JqL0dmQ0NqSkRRZ1Rid3BvOGRkY1hmNTFuVWdmOE1BdENEdkpLOUhtUmJW?= =?utf-8?B?T0pMZTFlUmhKaG9Wdk9UNUhEcW90MTM0R3NSQ0I0T0dTOTcwQkdNZ0hWazlx?= =?utf-8?B?ejU3ckJjRHZBUUlYOVFHdVdEVFRPRUlKOWZJU2RqdlByNldDUnpwek5sK3VC?= =?utf-8?B?TGxBVmlkcm1KWlhISURjWEFUL0hNVGFNL1hTYS9kVEpQR3htWWtybm9nR0dK?= =?utf-8?B?RUZUWnJrM3hJZFdMbHBLVlRKL2JYOEc5NVE3KzZHRGdIRXRsYzIzMkI5dzhl?= =?utf-8?Q?rlKXiHZVNOwUbPgkCb5hu5MyI=3D?= X-Microsoft-Exchange-Diagnostics: 1; BN6PR12MB1604; 6:8mqRyzKyeA8MrMoECOYigdlYldyViOJAonWdzkYtSza3mIML5aN3ALmXq7lmp2itzwHBhpKgwMV1XLlPkwXMVK5I5hf3hD+i8HVIntc2nONx7wddkj0m5gPoIGdAQ6uSE0WEaFys5+c8FraO0nGtV9Vz2YhlnXrQXaa452zDcp7UWQZEFjyuG44JF2T2qiOhpqWoZVdc1IxIwheQXP2OSmkq2+C1lsNosxDUS/Uns64KRka4bh9QAQsoMlfpgXFvaEilIQ3lTeP+IiQJP6U0304LZIJ5SituFnzNoJHLuRHDi9pA3As0EPAqgkTwbheFJx164SHuZvhDwx6jA1EN9I4s5v+rZ3gW70weQlpS36xD4aTYVQfYThtIV0/UkrHO1PLAi+i2Q62bZDKSgumQr48wKdbdLyRbeUEP2jq470M=; 5:4QOBzE+ogm0kjGIrBd/QPYKZGKldgmkOkyzFX9nuB23T1iSjbcZbN52g+N13tQx+rbcC9Ew2QqFjpN11uAv3upe/IOuGxdpOHpSPQWWbOCmohI/ElaZAepTVyjFQR5EFPVI+co7tZUC9BbkcfLkS0P72vfpCt0dKoogvBOgJGdM=; 24:BsXApTVv6n6sIfImKBL9L4gE/cfPFm+qlJOjF7ra4oYs+0LiUptxxVhwxQ2tcLGCnIrjyLs2o3+gfzXnZ6NtpsrhlAqkKixCQmyyIE/2E6Y= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN6PR12MB1604; 7:ndB4gH24LCdSoEgjV3BvojrjEGGLMu4iIw3XJgtM6VR1+GJzLF2VrZMonC9HBJCLJye7i6S9gq9fIpb3e1BTQC4Bbv4zXOe4yX6oDkpXf5PJCmMvfma/FG1m4vDXDOAlkmM4eb0wuFPwwAfnKfOmMTEpYTzgoLmHiEuxh0xqCr5Fp4S+XZv6GPSm5bX6jKToLUzM3CBuzPzpDJWb/HOMjCq3GGjfpFvAFSHsedy6XfURarG7g20oJI9Nfmy4wOM1/mCE1xTxvF3SanKKokotwHbRhaiYU5QK6DJHdvjlC/DCtNs/HmMs07DclFvrUf7b9yurlfK5uKHYxYwpmv+SjA==; 20:ZEVb25YEM5KlYEhT/VMK9TxwqGGoBWMyrY4sX1xRxciw05xQZzdosdP3XqVqUrpLlnQ+OLEQMaYOJts6k8KETKK4QVAUOIKCjYEpY/Jy4DlCwd+zGFXZHyCiKewt94jT9qE6gqykJ1Hxo+wjh8N6naJAOwfL5i+AMotvkd8oM3DYMyv+bbBCET+FcWgIorRvuZ5ZSSbhcmjdPsBinS66Q2ZDgf41Xr2foOsLZLdbMHOohKrpqKMxfKO6zwMtsy4o X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Mar 2017 20:51:52.6245 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR12MB1604 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.34.51 Subject: [Qemu-devel] [RFC PATCH v4 04/20] exec: add debug version of physical memory read and write api X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Thomas.Lendacky@amd.com, brijesh.singh@amd.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 The patch adds the following new APIs - cpu_physical_memory_read_debug - cpu_physical_memory_write_debug - cpu_physical_memory_rw_debug - ldl_phys_debug - ldq_phys_debug The idea behind this patch is that if all the qemu monitor memory dumps and gdbserver accesses are done through these common APIs then in future we can define some kind of global debug policy to control debug behavior. Signed-off-by: Brijesh Singh Reviewed-by: Paolo Bonzini --- exec.c | 32 ++++++++++++++++++++++++++++++++ include/exec/cpu-common.h | 15 +++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/exec.c b/exec.c index 48ae29c..772a959 100644 --- a/exec.c +++ b/exec.c @@ -3326,6 +3326,38 @@ static inline MemoryRegion *address_space_translate_= cached( #define RCU_READ_UNLOCK() ((void)0) #include "memory_ldst.inc.c" =20 +uint32_t ldl_phys_debug(CPUState *cpu, hwaddr addr) +{ + MemTxAttrs attrs =3D MEMTXATTRS_DEBUG; + int asidx =3D cpu_asidx_from_attrs(cpu, attrs); + uint32_t val; + + cpu_physical_memory_rw_debug_internal(cpu->cpu_ases[asidx].as, + addr, (void *) &val, + 4, attrs, READ_DATA); + return tswap32(val); +} + +uint64_t ldq_phys_debug(CPUState *cpu, hwaddr addr) +{ + MemTxAttrs attrs =3D MEMTXATTRS_DEBUG; + int asidx =3D cpu_asidx_from_attrs(cpu, attrs); + uint64_t val; + + cpu_physical_memory_rw_debug_internal(cpu->cpu_ases[asidx].as, + addr, (void *) &val, + 8, attrs, READ_DATA); + return val; +} + +void cpu_physical_memory_rw_debug(hwaddr addr, uint8_t *buf, + int len, int is_write) +{ + cpu_physical_memory_rw_debug_internal(&address_space_memory, addr, + buf, len, MEMTXATTRS_DEBUG, + is_write ? WRITE_DATA : READ_DAT= A); +} + /* virtual memory access for debug (includes writing to ROM) */ int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr, uint8_t *buf, int len, int is_write) diff --git a/include/exec/cpu-common.h b/include/exec/cpu-common.h index b62f0d8..4a9c842 100644 --- a/include/exec/cpu-common.h +++ b/include/exec/cpu-common.h @@ -74,11 +74,26 @@ size_t qemu_ram_pagesize_largest(void); =20 void cpu_physical_memory_rw(hwaddr addr, uint8_t *buf, int len, int is_write); +void cpu_physical_memory_rw_debug(hwaddr addr, uint8_t *buf, + int len, int is_write); static inline void cpu_physical_memory_read(hwaddr addr, void *buf, int len) { cpu_physical_memory_rw(addr, buf, len, 0); } +static inline void cpu_physical_memory_read_debug(hwaddr addr, + void *buf, int len) +{ + cpu_physical_memory_rw_debug(addr, buf, len, 0); +} +static inline void cpu_physical_memory_write_debug(hwaddr addr, + const void *buf, int le= n) +{ + cpu_physical_memory_rw_debug(addr, (void *)buf, len, 1); +} +uint32_t ldl_phys_debug(CPUState *cpu, hwaddr addr); +uint64_t ldq_phys_debug(CPUState *cpu, hwaddr addr); + static inline void cpu_physical_memory_write(hwaddr addr, const void *buf, int len) { From nobody Sun Apr 28 19:04:07 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1489008365820362.76218199601317; Wed, 8 Mar 2017 13:26:05 -0800 (PST) Received: from localhost ([::1]:58515 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clj5v-0005GZ-GM for importer@patchew.org; Wed, 08 Mar 2017 16:26:03 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51831) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clj4y-0005Dg-7R for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:25:06 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1clj4u-0005G5-Tl for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:25:04 -0500 Received: from mail-sn1nam02on0080.outbound.protection.outlook.com ([104.47.36.80]:16320 helo=NAM02-SN1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1clj4u-0005Fm-ID for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:25:00 -0500 Received: from [127.0.1.1] (165.204.77.1) by DM5PR12MB1612.namprd12.prod.outlook.com (10.172.40.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.947.12; Wed, 8 Mar 2017 20:52:02 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=+yq3WFOqQZRV+usvOQ/JjAsF+kGm69BdjFzhqZ9ceKk=; b=uTURmsOx5ucLwBOeylvl0BKirRkgAbNprL3/BUV0y3mwbfjpgzfhiMtUXILMJeC9myGwN4nvPgxnztHg3O1AZg5K6aB10lGU6xRxRMdWSxBSwgV/ansBAqOMBY5vZd0EA5cxe5f6XzgYo/xbLxZqqFst/OJGB8MgUyRzPPNRJf4= Authentication-Results: amd.com; dkim=none (message not signed) header.d=none;amd.com; dmarc=none action=none header.from=amd.com; From: Brijesh Singh To: , , , , , , , , Date: Wed, 8 Mar 2017 15:51:59 -0500 Message-ID: <148900631908.27090.16339695025371616457.stgit@brijesh-build-machine> In-Reply-To: <148900626714.27090.1616990932333159904.stgit@brijesh-build-machine> References: <148900626714.27090.1616990932333159904.stgit@brijesh-build-machine> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: MWHPR21CA0006.namprd21.prod.outlook.com (10.173.47.16) To DM5PR12MB1612.namprd12.prod.outlook.com (10.172.40.18) X-MS-Office365-Filtering-Correlation-Id: f62625be-92b1-4c55-578b-08d46664fa05 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081); SRVR:DM5PR12MB1612; X-Microsoft-Exchange-Diagnostics: 1; DM5PR12MB1612; 3:x1OXUHDwRsK3XvFUmN93AvFcc3fzdhJRYxfvDZ071FvjP1fJIyrFnrcLo/QYuu/dwveJYAfbRISbq3UN27yp9yKsvi7DvcffgrNjYW5rouTb8fV5m7oK/ooLEPwcna0kQArHu8wtj124AvmXvN9eKU4DzPdoDd2IveayYY/VD1Gnzd/6IHrMa2aA5/GDuC5FiSnvZ7DeZ/3W2kLRiYwXrjALvCkvTsmM0/ZzJhWYlg57hiyYYzTK9CBVnkbdztNniw+3BdZZsRFIC2kfC/TyVJldHmkFtXyoTGt9wohwT20=; 25:i9V2F7Qi3ODULb0SMbr+UVLc3AKHeGWFJDJDDa1fML+72Gvx2DliiDsqgGzH2v0yr/6cpwgY9pxoMDWKVfw0zEf5UWpswSRZA0jL06sjLbDVnCyR1/WxUUbx6hfwc4MayA0T1tsfnlcKALkpKlg6+ajbes2NNrVjrOR6DNsM7cokRcE9ZI/F5SiuSyGGQK9Cs4n2obqn4kUUSPPEM49H55aMfqC0IlrNFrAzq8Yzeyi7t6UHWDhEThQWncXMTe3hB74IiZT2FOPODQmqKlRbCf0xC/oW0oIJs5etbAv7zYpOLuV3NP8EZBwUQCCZpHTt3MuKtNkk32ikSvXqZ4Xd2hQ3Rri11YRCFg7QG8xxtyyeN8/P2sjlQbX5LIGPmUIsv8gcTlg31alYL7z9IcOYX8qmSIQEZIdFFFYYKIS9E15Ha/Hz3O6CqlcjHA/U/bMt1/YK4yV6bwjhkLeDIAGnlw== X-Microsoft-Exchange-Diagnostics: 1; DM5PR12MB1612; 31:eiZfd9SwB+pgCrWQy8YCCpdXlANegSQpVaRUPt7L5oTxctUuiFuium8OgjwVAGH23RxMnWjgra6X04ZBEf+bF7SkcAnmrrhP4snGwHwhNLVdZh6SBFtRADBnZoDThwiMz3t8OOgWmogtpbjNLj1iyK5Bg6VzjrUCLsyeOrcCFmbYXgXSOcV6oE4mV8gXzN0LbW/JxmiZs1jExKl6t0EjnWAjm0nDmfWWnzuSxu3Joco=; 20:oZIN4jWQpF7O13D3bOasfl9hlESclv8npP5eBy4qHG8lx3k6c65gnNKR7DRYoxrKUlC11uTcH8PS3ubi+WOfT7+hgGBw8+PrSyaTL9fWzp3SKT0lAx3OfA3XgCKfhjOgJv/lR93reH+JKC+ZkjzWHN52oswr/oUxBGi0jCLebPim6s5nZbz5rz5wJ6jhw4q0rWW/kkx6v8WNAVZnt69sgR8MRvCnoWl2oD+Ue728Kuc3f5V/fzxvX4C7aJ/yeiTaejziRJb3IcKuPt45Iduk1911q0sxOlVjJgS8EM9vAMs0vY8Lfe7Asf3Lvqv02vCL0MQf3pU80BPny/+q3RhIGpPKU8Pjw66bncWOlBbU97uFEuebotM71LBZMR5wTMZvHjqwDMoR0QujMpKT9ZrnBeQ4X6l9vKzI0Cn4Qk3hu3Sip3QU/g2uNIgo9LqZlrdR1Hei86yL1UnBFIYDsgzoTJAtaoCsYkG0UuM0MZyVtOFk8mdO/8SdACyuTXkf563S X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6055026)(6041248)(20161123555025)(20161123560025)(20161123562025)(20161123558025)(20161123564025)(6072148); SRVR:DM5PR12MB1612; BCL:0; PCL:0; RULEID:; SRVR:DM5PR12MB1612; X-Microsoft-Exchange-Diagnostics: 1; DM5PR12MB1612; 4:mbspOXgdzTLHJvxgCY244mpKkBrv6PkCM8LMtXNHfd0plMSfI5A514ePW8+OBMFT/7WrlkZ0MAJ8C/exVakhzNhIgRcYhubTO4gDB1nnNKxu9nnCSxNbmsHdpDJfv+Zuw7YXyw6BE2CtHXNuKLxJCLt663WffyUoF3DzDGocOFX69Gg4C3HM6rRlCf6FzGa025XyZMJygj5UnYY4oU8cZWKE03tDofK4ZIUl2yZRxhl3P6kegGfanVoGL9bm7mNiNJO6KJX1YEbJpdVNuPkzWju1elyN+RzxU2N+L8SfDNgSA94W+/j4CAQLVcyli+3tanpFkEuFK6vbVjpsk9/lFd50N9k4KWsYBM+D+/Ap5NwulgUX6w4KKC7fsbXi0/Ia3J5mF8kjHBnOO7cob7DSPRW64XV6i6F3aIZfg3f2rAKKaCoqJo7h8binrK+dtJo1FBkUSmXKqULlPAUSTtZlA8UOJlnIwgKoxc0WawHdTwXhXRmczsqWzXCc3x4o1RocSpfL5Un5iaZrRh9659FIuvvd9uMXcig2dvjkGLljdtpkr1tbIOyScXIDGNKy0PMu6aKDTNrTPcP8fFCvxPS6z+AhqmTwTmhI78rmiH7ur84/6O58npflUKF4jWmQFBpJqnOj/3cCcZnhVzay/ruxMVDA/eYDrJ/JUQB8MhSqi3Q= X-Forefront-PRVS: 02408926C4 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(6049001)(39850400002)(39860400002)(39840400002)(39450400003)(39410400002)(50986999)(76176999)(81166006)(3846002)(6116002)(23676002)(7736002)(8676002)(189998001)(305945005)(86362001)(66066001)(2201001)(83506001)(47776003)(230700001)(33716001)(33646002)(9686003)(54906002)(42186005)(6666003)(103116003)(54356999)(2950100002)(77096006)(6486002)(50466002)(38730400002)(90366009)(2906002)(53936002)(5660300001)(4326008)(25786008)(217873001); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR12MB1612; H:[127.0.1.1]; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtETTVQUjEyTUIxNjEyOzIzOjdWN0VRT1hqaU52TVUrMHVnNTQ1TEhvYWtL?= =?utf-8?B?WStqcG5VUEEvVzRGaW50YnAweHRsTWZJeU1qYk92dm1GVUJFL2Z2WmREVStD?= =?utf-8?B?N2ZabkQ3WXUwQjNRZ0thNW5wZUR4L1R4ampXUXBiZXNyeVJUWiszWHR5a3Bm?= =?utf-8?B?a3NUZ3BBT1pFbVRsM25MOEtXaDhTWXFaUVlFQmhOd3ZtZmdxSVRDOW0vaXhN?= =?utf-8?B?cjhjTCsvMDl1WDdRUzdQZjkybndNN2YzVXhab0twb1Y5SHZkU3Bic0hDQzlt?= =?utf-8?B?ZWhSdFNOL2k3bnVSVFlrMTdKUmcreEt0a1FoN0xOVXFRWWJIQXdLd2JBemtv?= =?utf-8?B?YW5wcE9qRmlzaFlxSStXOFk1TXBscFRhd0htZ3JueWs1NkhvQzU5K2pVUWRJ?= =?utf-8?B?MmJOYy9DWmhZamJObzNZRDdFMEVHWUduc0E2MWxSZHY2OXpBUk1rN1UxYmVl?= =?utf-8?B?bWFWQ284QWVXNXE0SGl6K3JMOU9HMkNHZVVuRUxpWnE4MkZ5b1hCTC81SVNB?= =?utf-8?B?VVdzdVNPV21hbnZzY3ZYSWJjVjBTMUxlK0hoeFJpMHNmekk0MEJsVmJLYStu?= =?utf-8?B?UmZNekoxdFlMeHZza0FHUjR6L2NXSXlkNFFaL0k5TmRQNlh3eVE1TnFGN0Zy?= =?utf-8?B?QTdKZ2NJWERzVUxGVEoyeGQ5bkhKb0dnNWh5U0h3SEY3cG9aK0dlTnFOQnVv?= =?utf-8?B?emg0NDQ0bTNhcGV1NHdxUkdJTldEdVArREp2T3VWOWordVZUU2RVZXUvL25j?= =?utf-8?B?TmdiMGhDNkpyeStQL1BTU1J5T296NjdqRTdmaFlSbUluQmVKdTl3dkNGU2t5?= =?utf-8?B?aU5TcUw1MVhtc3JhcW9YR2tFd1dNMjRnU2hrZHZJRWZqQi8yQVVLSWlGeFZz?= =?utf-8?B?dE91RGNUWVEwckV5K0lRTG9nbFgvcXVOVEhZbVkvd0tHbDhGTEM5bDVqbGZQ?= =?utf-8?B?SnpseG5SL0lwd0ZTbmdBbS9HY2x2bnVhaVhHdkdUVVlGVVNPd1VVTnpoV2VW?= =?utf-8?B?ZmR3SzFMTmd4M0FVbjFYRGtlZUx4NFBmY2dLZ3hSTGdqRTdmV3g2MjBYbDdQ?= =?utf-8?B?QUJDRUE5WjZIR3B3ZkN2eXRCdUtpVGFjZXVHekoyWENESWJtalFlWmdDQnFD?= =?utf-8?B?b1lmU2ZwdUtMK3pGQlpreGZDeWtpZzRWZlgzTHlJbGo3ZkZCeUZZaS8xdm1Y?= =?utf-8?B?RklYNG1YRGZCYkpUdWZBN3Z1RFcrTUNZMERDNGYzT1F2TmF5dWlwNjBqekYr?= =?utf-8?B?TEU0bGZNT1paM2RYay9VVGdIMG5hOThyQUtqSWFOVEhWelRTaUpsRkhnYXFk?= =?utf-8?B?bVh5MVNIditNUzRBQlk4K1dzbEZFb3pLTE9pNFRYd3FGNXl1NVVSODBHYThD?= =?utf-8?B?alNtZWxuV2R2Y2NlWGtXeVhIUTVJaVBDNERnU1lqcTRRNTRwMTMrb2VaRHEr?= =?utf-8?B?UFJjUlJlSEdmakhlaWdickJpK1VFOEM3VWZXZE0rOVRJZlVsVnIzb0NGcS9r?= =?utf-8?B?NER2dz09?= X-Microsoft-Exchange-Diagnostics: 1; DM5PR12MB1612; 6:nXuKOtq4AydEFVz/GhOnt5uzHXzVxMFbFvdj1V4VyfQ9I205YAJ3/jIN1YB1lN9hnI0iuLmzj/FBZhrHSVFDTQ9XuGTAId7pA6IlT5CPOT//TtrRTQQk7f/MNitaZofRhEevvcWfJpzFpBPYSm6r8ozHd3cSA3l5l1luPUxbPySwjxE9jknE0krlhgCIl4B3djKBvAOHLSsjhs0S2wfE4rS/ObhcuIvGImpuyBPjNY25Qums1eu+r4n0riL3j/tmipXFP8cUdc4AL+TH7/O3PurhfWGWNo5UnmTfOVKs1Ms4UXztK0dPRfusDnuc/1RKfKamcLY8162L+P0mt2ZU08kOTayHXXxF1SVjXBgZv/zVKz2HYEC4J9UzreaXXFbY5iQ4Ke8O+x1sx3CotytQonEH7l1vxhbqaRy3QtgMNKI=; 5:7WWByAX7fhqQ+eGcbNhXZyP2FxeC8dKippCj60IuTIpLsQRoCHynxy8Ip3waP3jpFzl8R3L7Z/O5+xTz5S8xkvcQh/whVY6jUlFhGWVy4C7/np/yrNPps2WRaW7CbviuXdyeNxWhukA6ub/NNzkazw9TUxDx4g4EQbhfsvEZs0Q=; 24:Vy7nIAOmAWIb1qJWzgbjMVkWoIyZNNyMUJWttrZjfMxk2TBtZRMEVkbvqhD/jSsBFON12+0yoHpxqhLo1RwjGpwFSxCtjsAuyJ/Nf3tSpzg= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM5PR12MB1612; 7:qADK97ufu5vqftNU20zrLJm/UqLyzIMxAXQx4GA6JC8b3s+R/yn8rABR4cap7+XPdE6OYyATidmwPM8vklUzHiiAqVZgK596IEQD0/IQ2roI2s0e/ZYytqGHrX+bP5WudlPmfrql9G9zLbIBYCyFl7RVNARNfY0ES7mDuGZqv1mDm2yKiAGUQznLutSb27vPb4rXHBocZZgO2An9v4bTByG6JAmOFnSqrAIPB2vlp+c26aNb78HuEoRWz31DCh8EvLWB6+fF6NCyp5+k/rLcPPuGpfZJnMBeUMAbLRt45/aGnJDAAlFe+8DmAJ8uzOcGX4+NkCZBy01K73Rqzj8z9w==; 20:M/1EP2PU+vwwVrJIOA2a08D7xhvqNFD7yeVOt3WM1kOKex1QODDWeiErPRBCwB6xvo+U76klU7fLAm5Plfz9EFE2LofSRjRCpF2y0nqVdVyOvCvjedBJ1A2N6BCXGOkiVA2oqQxW7L6QnPXjbPF6muqpUghFWm1zMH9y/dqWIslEoH3qtxdIo+JAfYMjXXSCWB3P4sZccsmcSyabZVJXdDRZe8WL9QS+k5LShnanIsNumFQmPbMdTteF668ntQRx X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Mar 2017 20:52:02.7874 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR12MB1612 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.36.80 Subject: [Qemu-devel] [RFC PATCH v4 05/20] monitor/i386: use debug apis when accessing guest memory X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Thomas.Lendacky@amd.com, brijesh.singh@amd.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 updates hmp monitor to use debug version of memory access apis when reading the guest memory. Signed-off-by: Brijesh Singh --- cpus.c | 2 - disas.c | 2 - monitor.c | 2 - target/i386/helper.c | 16 +++---- target/i386/monitor.c | 114 +++++++++++++++++++++++++++++----------------= ---- 5 files changed, 79 insertions(+), 57 deletions(-) diff --git a/cpus.c b/cpus.c index c857ad2..5c3b596 100644 --- a/cpus.c +++ b/cpus.c @@ -1906,7 +1906,7 @@ void qmp_pmemsave(int64_t addr, int64_t size, const c= har *filename, l =3D sizeof(buf); if (l > size) l =3D size; - cpu_physical_memory_read(addr, buf, l); + cpu_physical_memory_read_debug(addr, buf, l); if (fwrite(buf, 1, l, f) !=3D l) { error_setg(errp, QERR_IO_ERROR); goto exit; diff --git a/disas.c b/disas.c index d335c55..6d67de5 100644 --- a/disas.c +++ b/disas.c @@ -357,7 +357,7 @@ monitor_read_memory (bfd_vma memaddr, bfd_byte *myaddr,= int length, CPUDebug *s =3D container_of(info, CPUDebug, info); =20 if (monitor_disas_is_physical) { - cpu_physical_memory_read(memaddr, myaddr, length); + cpu_physical_memory_read_debug(memaddr, myaddr, length); } else { cpu_memory_rw_debug(s->cpu, memaddr, myaddr, length, 0); } diff --git a/monitor.c b/monitor.c index ec7623e..4a1c772 100644 --- a/monitor.c +++ b/monitor.c @@ -1350,7 +1350,7 @@ static void memory_dump(Monitor *mon, int count, int = format, int wsize, if (l > line_size) l =3D line_size; if (is_physical) { - cpu_physical_memory_read(addr, buf, l); + cpu_physical_memory_read_debug(addr, buf, l); } else { if (cpu_memory_rw_debug(cs, addr, buf, l, 0) < 0) { monitor_printf(mon, " Cannot access memory\n"); diff --git a/target/i386/helper.c b/target/i386/helper.c index e2af340..05395d7 100644 --- a/target/i386/helper.c +++ b/target/i386/helper.c @@ -1061,7 +1061,7 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vadd= r addr) if (la57) { pml5e_addr =3D ((env->cr[3] & ~0xfff) + (((addr >> 48) & 0x1ff) << 3)) & env->a20_mask; - pml5e =3D x86_ldq_phys(cs, pml5e_addr); + pml5e =3D ldq_phys_debug(cs, pml5e_addr); if (!(pml5e & PG_PRESENT_MASK)) { return -1; } @@ -1071,13 +1071,13 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, va= ddr addr) =20 pml4e_addr =3D ((pml5e & PG_ADDRESS_MASK) + (((addr >> 39) & 0x1ff) << 3)) & env->a20_mask; - pml4e =3D x86_ldq_phys(cs, pml4e_addr); + pml4e =3D ldq_phys_debug(cs, pml4e_addr); if (!(pml4e & PG_PRESENT_MASK)) { return -1; } pdpe_addr =3D ((pml4e & PG_ADDRESS_MASK) + (((addr >> 30) & 0x1ff) << 3)) & env->a20_mask; - pdpe =3D x86_ldq_phys(cs, pdpe_addr); + pdpe =3D ldq_phys_debug(cs, pdpe_addr); if (!(pdpe & PG_PRESENT_MASK)) { return -1; } @@ -1092,14 +1092,14 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, va= ddr addr) { pdpe_addr =3D ((env->cr[3] & ~0x1f) + ((addr >> 27) & 0x18)) & env->a20_mask; - pdpe =3D x86_ldq_phys(cs, pdpe_addr); + pdpe =3D ldq_phys_debug(cs, pdpe_addr); if (!(pdpe & PG_PRESENT_MASK)) return -1; } =20 pde_addr =3D ((pdpe & PG_ADDRESS_MASK) + (((addr >> 21) & 0x1ff) << 3)) & env->a20_mask; - pde =3D x86_ldq_phys(cs, pde_addr); + pde =3D ldq_phys_debug(cs, pde_addr); if (!(pde & PG_PRESENT_MASK)) { return -1; } @@ -1112,7 +1112,7 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vadd= r addr) pte_addr =3D ((pde & PG_ADDRESS_MASK) + (((addr >> 12) & 0x1ff) << 3)) & env->a20_mask; page_size =3D 4096; - pte =3D x86_ldq_phys(cs, pte_addr); + pte =3D ldq_phys_debug(cs, pte_addr); } if (!(pte & PG_PRESENT_MASK)) { return -1; @@ -1122,7 +1122,7 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vadd= r addr) =20 /* page directory entry */ pde_addr =3D ((env->cr[3] & ~0xfff) + ((addr >> 20) & 0xffc)) & en= v->a20_mask; - pde =3D x86_ldl_phys(cs, pde_addr); + pde =3D ldl_phys_debug(cs, pde_addr); if (!(pde & PG_PRESENT_MASK)) return -1; if ((pde & PG_PSE_MASK) && (env->cr[4] & CR4_PSE_MASK)) { @@ -1131,7 +1131,7 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vadd= r addr) } else { /* page directory entry */ pte_addr =3D ((pde & ~0xfff) + ((addr >> 10) & 0xffc)) & env->= a20_mask; - pte =3D x86_ldl_phys(cs, pte_addr); + pte =3D ldl_phys_debug(cs, pte_addr); if (!(pte & PG_PRESENT_MASK)) { return -1; } diff --git a/target/i386/monitor.c b/target/i386/monitor.c index 77ead60..7c39e05 100644 --- a/target/i386/monitor.c +++ b/target/i386/monitor.c @@ -59,14 +59,16 @@ static void print_pte(Monitor *mon, CPUArchState *env, = hwaddr addr, pte & PG_RW_MASK ? 'W' : '-'); } =20 -static void tlb_info_32(Monitor *mon, CPUArchState *env) +static void tlb_info_32(Monitor *mon, CPUState *cs) { unsigned int l1, l2; uint32_t pgd, pde, pte; + X86CPU *cpu =3D X86_CPU(cs); + CPUArchState *env =3D &cpu->env; =20 pgd =3D env->cr[3] & ~0xfff; for(l1 =3D 0; l1 < 1024; l1++) { - cpu_physical_memory_read(pgd + l1 * 4, &pde, 4); + pde =3D ldl_phys_debug(cs, pgd + l1 * 4); pde =3D le32_to_cpu(pde); if (pde & PG_PRESENT_MASK) { if ((pde & PG_PSE_MASK) && (env->cr[4] & CR4_PSE_MASK)) { @@ -74,7 +76,7 @@ static void tlb_info_32(Monitor *mon, CPUArchState *env) print_pte(mon, env, (l1 << 22), pde, ~((1 << 21) - 1)); } else { for(l2 =3D 0; l2 < 1024; l2++) { - cpu_physical_memory_read((pde & ~0xfff) + l2 * 4, &pte= , 4); + pte =3D ldl_phys_debug(cs, (pde & ~0xfff) + l2 * 4); pte =3D le32_to_cpu(pte); if (pte & PG_PRESENT_MASK) { print_pte(mon, env, (l1 << 22) + (l2 << 12), @@ -87,20 +89,22 @@ static void tlb_info_32(Monitor *mon, CPUArchState *env) } } =20 -static void tlb_info_pae32(Monitor *mon, CPUArchState *env) +static void tlb_info_pae32(Monitor *mon, CPUState *cs) { unsigned int l1, l2, l3; uint64_t pdpe, pde, pte; uint64_t pdp_addr, pd_addr, pt_addr; + X86CPU *cpu =3D X86_CPU(cs); + CPUArchState *env =3D &cpu->env; =20 pdp_addr =3D env->cr[3] & ~0x1f; for (l1 =3D 0; l1 < 4; l1++) { - cpu_physical_memory_read(pdp_addr + l1 * 8, &pdpe, 8); + pdpe =3D ldq_phys_debug(cs, pdp_addr + l1 * 8); pdpe =3D le64_to_cpu(pdpe); if (pdpe & PG_PRESENT_MASK) { pd_addr =3D pdpe & 0x3fffffffff000ULL; for (l2 =3D 0; l2 < 512; l2++) { - cpu_physical_memory_read(pd_addr + l2 * 8, &pde, 8); + pde =3D ldq_phys_debug(cs, pd_addr + l2 * 8); pde =3D le64_to_cpu(pde); if (pde & PG_PRESENT_MASK) { if (pde & PG_PSE_MASK) { @@ -110,7 +114,7 @@ static void tlb_info_pae32(Monitor *mon, CPUArchState *= env) } else { pt_addr =3D pde & 0x3fffffffff000ULL; for (l3 =3D 0; l3 < 512; l3++) { - cpu_physical_memory_read(pt_addr + l3 * 8, &pt= e, 8); + pte =3D ldq_phys_debug(cs, pt_addr + l3 * 8); pte =3D le64_to_cpu(pte); if (pte & PG_PRESENT_MASK) { print_pte(mon, env, (l1 << 30) + (l2 << 21) @@ -127,15 +131,17 @@ static void tlb_info_pae32(Monitor *mon, CPUArchState= *env) } =20 #ifdef TARGET_X86_64 -static void tlb_info_la48(Monitor *mon, CPUArchState *env, +static void tlb_info_la48(Monitor *mon, CPUState *cs, uint64_t l0, uint64_t pml4_addr) { + X86CPU *cpu =3D X86_CPU(cs); + CPUArchState *env =3D &cpu->env; uint64_t l1, l2, l3, l4; uint64_t pml4e, pdpe, pde, pte; uint64_t pdp_addr, pd_addr, pt_addr; =20 for (l1 =3D 0; l1 < 512; l1++) { - cpu_physical_memory_read(pml4_addr + l1 * 8, &pml4e, 8); + pml4e =3D ldq_phys_debug(cs, pml4_addr + l1 * 8); pml4e =3D le64_to_cpu(pml4e); if (!(pml4e & PG_PRESENT_MASK)) { continue; @@ -143,7 +149,7 @@ static void tlb_info_la48(Monitor *mon, CPUArchState *e= nv, =20 pdp_addr =3D pml4e & 0x3fffffffff000ULL; for (l2 =3D 0; l2 < 512; l2++) { - cpu_physical_memory_read(pdp_addr + l2 * 8, &pdpe, 8); + pdpe =3D ldq_phys_debug(cs, pdp_addr + l2 * 8); pdpe =3D le64_to_cpu(pdpe); if (!(pdpe & PG_PRESENT_MASK)) { continue; @@ -158,7 +164,7 @@ static void tlb_info_la48(Monitor *mon, CPUArchState *e= nv, =20 pd_addr =3D pdpe & 0x3fffffffff000ULL; for (l3 =3D 0; l3 < 512; l3++) { - cpu_physical_memory_read(pd_addr + l3 * 8, &pde, 8); + pde =3D ldq_phys_debug(cs, pd_addr + l3 * 8); pde =3D le64_to_cpu(pde); if (!(pde & PG_PRESENT_MASK)) { continue; @@ -173,9 +179,7 @@ static void tlb_info_la48(Monitor *mon, CPUArchState *e= nv, =20 pt_addr =3D pde & 0x3fffffffff000ULL; for (l4 =3D 0; l4 < 512; l4++) { - cpu_physical_memory_read(pt_addr - + l4 * 8, - &pte, 8); + pte =3D ldq_phys_debug(cs, pt_addr + l4 * 8); pte =3D le64_to_cpu(pte); if (pte & PG_PRESENT_MASK) { print_pte(mon, env, (l0 << 48) + (l1 << 39) + @@ -188,18 +192,20 @@ static void tlb_info_la48(Monitor *mon, CPUArchState = *env, } } =20 -static void tlb_info_la57(Monitor *mon, CPUArchState *env) +static void tlb_info_la57(Monitor *mon, CPUState *cs) { uint64_t l0; uint64_t pml5e; uint64_t pml5_addr; + X86CPU *cpu =3D X86_CPU(cs); + CPUArchState *env =3D &cpu->env; =20 pml5_addr =3D env->cr[3] & 0x3fffffffff000ULL; for (l0 =3D 0; l0 < 512; l0++) { - cpu_physical_memory_read(pml5_addr + l0 * 8, &pml5e, 8); + pml5e =3D ldq_phys_debug(cs, pml5_addr + l0 * 8); pml5e =3D le64_to_cpu(pml5e); if (pml5e & PG_PRESENT_MASK) { - tlb_info_la48(mon, env, l0, pml5e & 0x3fffffffff000ULL); + tlb_info_la48(mon, cs, l0, pml5e & 0x3fffffffff000ULL); } } } @@ -207,9 +213,13 @@ static void tlb_info_la57(Monitor *mon, CPUArchState *= env) =20 void hmp_info_tlb(Monitor *mon, const QDict *qdict) { + X86CPU *cpu; + CPUState *cs; CPUArchState *env; =20 - env =3D mon_get_cpu_env(); + cs =3D mon_get_cpu(); + cpu =3D X86_CPU(cs); + env =3D &cpu->env; if (!env) { monitor_printf(mon, "No CPU available\n"); return; @@ -223,17 +233,17 @@ void hmp_info_tlb(Monitor *mon, const QDict *qdict) #ifdef TARGET_X86_64 if (env->hflags & HF_LMA_MASK) { if (env->cr[4] & CR4_LA57_MASK) { - tlb_info_la57(mon, env); + tlb_info_la57(mon, cs); } else { - tlb_info_la48(mon, env, 0, env->cr[3] & 0x3fffffffff000ULL= ); + tlb_info_la48(mon, cs, 0, env->cr[3] & 0x3fffffffff000ULL); } } else #endif { - tlb_info_pae32(mon, env); + tlb_info_pae32(mon, cs); } } else { - tlb_info_32(mon, env); + tlb_info_32(mon, cs); } } =20 @@ -260,18 +270,20 @@ static void mem_print(Monitor *mon, hwaddr *pstart, } } =20 -static void mem_info_32(Monitor *mon, CPUArchState *env) +static void mem_info_32(Monitor *mon, CPUState *cs) { unsigned int l1, l2; int prot, last_prot; uint32_t pgd, pde, pte; hwaddr start, end; + X86CPU *cpu =3D X86_CPU(cs); + CPUArchState *env =3D &cpu->env; =20 pgd =3D env->cr[3] & ~0xfff; last_prot =3D 0; start =3D -1; for(l1 =3D 0; l1 < 1024; l1++) { - cpu_physical_memory_read(pgd + l1 * 4, &pde, 4); + pde =3D ldl_phys_debug(cs, pgd + l1 * 4); pde =3D le32_to_cpu(pde); end =3D l1 << 22; if (pde & PG_PRESENT_MASK) { @@ -280,7 +292,7 @@ static void mem_info_32(Monitor *mon, CPUArchState *env) mem_print(mon, &start, &last_prot, end, prot); } else { for(l2 =3D 0; l2 < 1024; l2++) { - cpu_physical_memory_read((pde & ~0xfff) + l2 * 4, &pte= , 4); + pte =3D ldl_phys_debug(cs, (pde & ~0xfff) + l2 * 4); pte =3D le32_to_cpu(pte); end =3D (l1 << 22) + (l2 << 12); if (pte & PG_PRESENT_MASK) { @@ -301,25 +313,27 @@ static void mem_info_32(Monitor *mon, CPUArchState *e= nv) mem_print(mon, &start, &last_prot, (hwaddr)1 << 32, 0); } =20 -static void mem_info_pae32(Monitor *mon, CPUArchState *env) +static void mem_info_pae32(Monitor *mon, CPUState *cs) { unsigned int l1, l2, l3; int prot, last_prot; uint64_t pdpe, pde, pte; uint64_t pdp_addr, pd_addr, pt_addr; hwaddr start, end; + X86CPU *cpu =3D X86_CPU(cs); + CPUArchState *env =3D &cpu->env; =20 pdp_addr =3D env->cr[3] & ~0x1f; last_prot =3D 0; start =3D -1; for (l1 =3D 0; l1 < 4; l1++) { - cpu_physical_memory_read(pdp_addr + l1 * 8, &pdpe, 8); + pdpe =3D ldq_phys_debug(cs, pdp_addr + l1 * 8); pdpe =3D le64_to_cpu(pdpe); end =3D l1 << 30; if (pdpe & PG_PRESENT_MASK) { pd_addr =3D pdpe & 0x3fffffffff000ULL; for (l2 =3D 0; l2 < 512; l2++) { - cpu_physical_memory_read(pd_addr + l2 * 8, &pde, 8); + pde =3D ldq_phys_debug(cs, pd_addr + l2 * 8); pde =3D le64_to_cpu(pde); end =3D (l1 << 30) + (l2 << 21); if (pde & PG_PRESENT_MASK) { @@ -330,7 +344,7 @@ static void mem_info_pae32(Monitor *mon, CPUArchState *= env) } else { pt_addr =3D pde & 0x3fffffffff000ULL; for (l3 =3D 0; l3 < 512; l3++) { - cpu_physical_memory_read(pt_addr + l3 * 8, &pt= e, 8); + pte =3D ldq_phys_debug(cs, pt_addr + l3 * 8); pte =3D le64_to_cpu(pte); end =3D (l1 << 30) + (l2 << 21) + (l3 << 12); if (pte & PG_PRESENT_MASK) { @@ -358,10 +372,12 @@ static void mem_info_pae32(Monitor *mon, CPUArchState= *env) =20 =20 #ifdef TARGET_X86_64 -static void mem_info_la48(Monitor *mon, CPUArchState *env) +static void mem_info_la48(Monitor *mon, CPUState *cs) { int prot, last_prot; uint64_t l1, l2, l3, l4; + X86CPU *cpu =3D X86_CPU(cs); + CPUArchState *env =3D &cpu->env; uint64_t pml4e, pdpe, pde, pte; uint64_t pml4_addr, pdp_addr, pd_addr, pt_addr, start, end; =20 @@ -369,13 +385,13 @@ static void mem_info_la48(Monitor *mon, CPUArchState = *env) last_prot =3D 0; start =3D -1; for (l1 =3D 0; l1 < 512; l1++) { - cpu_physical_memory_read(pml4_addr + l1 * 8, &pml4e, 8); + pml4e =3D ldq_phys_debug(cs, pml4_addr + l1 * 8); pml4e =3D le64_to_cpu(pml4e); end =3D l1 << 39; if (pml4e & PG_PRESENT_MASK) { pdp_addr =3D pml4e & 0x3fffffffff000ULL; for (l2 =3D 0; l2 < 512; l2++) { - cpu_physical_memory_read(pdp_addr + l2 * 8, &pdpe, 8); + pdpe =3D ldq_phys_debug(cs, pdp_addr + l2 * 8); pdpe =3D le64_to_cpu(pdpe); end =3D (l1 << 39) + (l2 << 30); if (pdpe & PG_PRESENT_MASK) { @@ -387,7 +403,7 @@ static void mem_info_la48(Monitor *mon, CPUArchState *e= nv) } else { pd_addr =3D pdpe & 0x3fffffffff000ULL; for (l3 =3D 0; l3 < 512; l3++) { - cpu_physical_memory_read(pd_addr + l3 * 8, &pd= e, 8); + pde =3D ldq_phys_debug(cs, pd_addr + l3 * 8); pde =3D le64_to_cpu(pde); end =3D (l1 << 39) + (l2 << 30) + (l3 << 21); if (pde & PG_PRESENT_MASK) { @@ -399,9 +415,8 @@ static void mem_info_la48(Monitor *mon, CPUArchState *e= nv) } else { pt_addr =3D pde & 0x3fffffffff000ULL; for (l4 =3D 0; l4 < 512; l4++) { - cpu_physical_memory_read(pt_addr - + l4 * 8, - &pte, 8); + pte =3D ldq_phys_debug(cs, + pt_addr + l4 = * 8); pte =3D le64_to_cpu(pte); end =3D (l1 << 39) + (l2 << 30) + (l3 << 21) + (l4 << 12); @@ -435,10 +450,12 @@ static void mem_info_la48(Monitor *mon, CPUArchState = *env) mem_print(mon, &start, &last_prot, (hwaddr)1 << 48, 0); } =20 -static void mem_info_la57(Monitor *mon, CPUArchState *env) +static void mem_info_la57(Monitor *mon, CPUState *cs) { int prot, last_prot; uint64_t l0, l1, l2, l3, l4; + X86CPU *cpu =3D X86_CPU(cs); + CPUArchState *env =3D &cpu->env; uint64_t pml5e, pml4e, pdpe, pde, pte; uint64_t pml5_addr, pml4_addr, pdp_addr, pd_addr, pt_addr, start, end; =20 @@ -446,7 +463,7 @@ static void mem_info_la57(Monitor *mon, CPUArchState *e= nv) last_prot =3D 0; start =3D -1; for (l0 =3D 0; l0 < 512; l0++) { - cpu_physical_memory_read(pml5_addr + l0 * 8, &pml5e, 8); + pml5e =3D ldq_phys_debug(cs, pml5_addr + l0 * 8); pml4e =3D le64_to_cpu(pml5e); end =3D l0 << 48; if (!(pml5e & PG_PRESENT_MASK)) { @@ -457,7 +474,7 @@ static void mem_info_la57(Monitor *mon, CPUArchState *e= nv) =20 pml4_addr =3D pml5e & 0x3fffffffff000ULL; for (l1 =3D 0; l1 < 512; l1++) { - cpu_physical_memory_read(pml4_addr + l1 * 8, &pml4e, 8); + pml4e =3D ldq_phys_debug(cs, pml4_addr + l1 * 8); pml4e =3D le64_to_cpu(pml4e); end =3D (l0 << 48) + (l1 << 39); if (!(pml4e & PG_PRESENT_MASK)) { @@ -468,7 +485,7 @@ static void mem_info_la57(Monitor *mon, CPUArchState *e= nv) =20 pdp_addr =3D pml4e & 0x3fffffffff000ULL; for (l2 =3D 0; l2 < 512; l2++) { - cpu_physical_memory_read(pdp_addr + l2 * 8, &pdpe, 8); + pdpe =3D ldq_phys_debug(cs, pdp_addr + l2 * 8); pdpe =3D le64_to_cpu(pdpe); end =3D (l0 << 48) + (l1 << 39) + (l2 << 30); if (pdpe & PG_PRESENT_MASK) { @@ -487,7 +504,7 @@ static void mem_info_la57(Monitor *mon, CPUArchState *e= nv) =20 pd_addr =3D pdpe & 0x3fffffffff000ULL; for (l3 =3D 0; l3 < 512; l3++) { - cpu_physical_memory_read(pd_addr + l3 * 8, &pde, 8); + pde =3D ldq_phys_debug(cs, pd_addr + l3 * 8); pde =3D le64_to_cpu(pde); end =3D (l0 << 48) + (l1 << 39) + (l2 << 30) + (l3 << = 21); if (pde & PG_PRESENT_MASK) { @@ -506,7 +523,7 @@ static void mem_info_la57(Monitor *mon, CPUArchState *e= nv) =20 pt_addr =3D pde & 0x3fffffffff000ULL; for (l4 =3D 0; l4 < 512; l4++) { - cpu_physical_memory_read(pt_addr + l4 * 8, &pte, 8= ); + pte =3D ldq_phys_debug(cs, pt_addr + l4 * 8); pte =3D le64_to_cpu(pte); end =3D (l0 << 48) + (l1 << 39) + (l2 << 30) + (l3 << 21) + (l4 << 12); @@ -530,8 +547,13 @@ static void mem_info_la57(Monitor *mon, CPUArchState *= env) =20 void hmp_info_mem(Monitor *mon, const QDict *qdict) { + X86CPU *cpu; + CPUState *cs; CPUArchState *env; =20 + cs =3D mon_get_cpu(); + cpu =3D X86_CPU(cs); + env =3D &cpu->env; env =3D mon_get_cpu_env(); if (!env) { monitor_printf(mon, "No CPU available\n"); @@ -546,17 +568,17 @@ void hmp_info_mem(Monitor *mon, const QDict *qdict) #ifdef TARGET_X86_64 if (env->hflags & HF_LMA_MASK) { if (env->cr[4] & CR4_LA57_MASK) { - mem_info_la57(mon, env); + mem_info_la57(mon, cs); } else { - mem_info_la48(mon, env); + mem_info_la48(mon, cs); } } else #endif { - mem_info_pae32(mon, env); + mem_info_pae32(mon, cs); } } else { - mem_info_32(mon, env); + mem_info_32(mon, cs); } } =20 From nobody Sun Apr 28 19:04:07 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 148900840855981.67315973080781; Wed, 8 Mar 2017 13:26:48 -0800 (PST) Received: from localhost ([::1]:58518 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clj6b-0005g7-PL for importer@patchew.org; Wed, 08 Mar 2017 16:26:45 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51957) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clj5U-0005cp-DH for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:25:38 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1clj5R-0005Tl-13 for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:25:36 -0500 Received: from mail-by2nam03on0067.outbound.protection.outlook.com ([104.47.42.67]:8043 helo=NAM03-BY2-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1clj5Q-0005RB-JG for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:25:32 -0500 Received: from [127.0.1.1] (165.204.77.1) by CY4PR12MB1605.namprd12.prod.outlook.com (10.172.72.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.947.12; Wed, 8 Mar 2017 20:52:21 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=Bb1BD+HDioDMMCPpz7TP8InzjJrm0YkJ4TOzP4XpoZA=; b=bKQ+QmoDb9C2vBPa9v+x8hRyf0u0Lz6F1NhXGlRh0CGHuKb92oSQxAc9PsG+jSvSHRIIhLWkqnZnXIq43q7znkF4t6mlKUDLBWxInXft7/Pqnm8iuPrRQ6EFSCutBcdlaBNm1CJTL0CWiNNfiiqR4y/FSFDzzy3g0mCYdMGeaRg= Authentication-Results: amd.com; dkim=none (message not signed) header.d=none;amd.com; dmarc=none action=none header.from=amd.com; From: Brijesh Singh To: , , , , , , , , Date: Wed, 8 Mar 2017 15:52:09 -0500 Message-ID: <148900632968.27090.15435012868487968230.stgit@brijesh-build-machine> In-Reply-To: <148900626714.27090.1616990932333159904.stgit@brijesh-build-machine> References: <148900626714.27090.1616990932333159904.stgit@brijesh-build-machine> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: DM5PR16CA0033.namprd16.prod.outlook.com (10.172.42.147) To CY4PR12MB1605.namprd12.prod.outlook.com (10.172.72.14) X-MS-Office365-Filtering-Correlation-Id: 0a81d1f6-ede3-4db7-c5e1-08d46665044e X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081); SRVR:CY4PR12MB1605; X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1605; 3:pRXoM53W149m/EBatOAuTYxHN3VYWZostM915HsnLqg8NK3C+U0LGamz5Dis2RDsrC5IFobezd2abqFVSxZG3SuBF8VGybsPDlrMcOdwLIeKffcQGDMBIWJoMoQWPDDGpY7FDyKnFwZUSOlgcuVsEPnKeeZzSKjLfGHAiYsC/tBkpqfcXQAny50Qz4FLi8nUBRc/Dt171p+sVw4bySqFrNdMKTdNl5N/cPmktlFxRTOq82eZyT5JRbXFgrMNW08yWsNP0sVjslpXU6WvcFfVcQxuLj/qYtEkIVEnASawIEk=; 25:3D9wRyjNvF5R//2Z+8dQCqfjtUGtyrQzHcLfI+L/1FH4Sqh91eZZ3hLgC5pQQw6kCOVE5NM9sS9Q5/Q4reUxaweBJkzErb+sqm9RZx3B+KpmBHQZhHr0ltg5snndMLhsxbLAGEooleLkSrNGUObzeVX0uXhe/6+j+pLlN7H3YnWZ0vMdceHb6xLrtiTeOqyt5YIiiJGhxDmSGwqBEN1/3WUDjSVIiOtMiPuQ3IJSlIJIo9/GmPZoKz2vn93Un7gkP9BsnR6q1hEBVdeJx9jzd748tvUQPMPQpG81gQy6/aMMZXRM7nZOhH3Otl+hFBQ/1ERZf/VrwkkKDHLMrlcErrxUBPGYT+mKQfL17G77aVWTo94YGPuhsmH/Dq6d9zuTBVR+CqlyTvXRG0/irKMER7ica8DdRrWarTITXcEEIOmthqMbe4o2dLOFerG78NgU X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1605; 31:wiQXAD7zAplvC1Sh0ag3hLAuFJv7knyolO1Z9rd60net9BTxvqk2wVDOgJjBc+3pKyGvRDXahB/EwKqNvo+tCLPSvqIvGvRTFCIKzuNRRGOwH1nQt3doLHwSL2Vh6wYuxL1Q82qjtwp95WUYuS18tlzX9MQnM1/zgsA6i/anROPhv9O3EW3FuGjZhelzp1tqN4YX+v+dVe1+vT5mmQe1UMtD5NWQGCR1fJ2UBbRh3GFY4jdygROAI7WJQxnb1ZbfVeFd6E+K7qWgJLit8Ii9Mg==; 20:yktOV25z0AZa3aZIiIWQkXgOT/YkKjV0vLD2g7fz9jx4osgkIHJfocLeG9qV5S27ShS0dgA/NzXZYd0Uklhhqlh3bA7FvGPApyTvJqZjo8mVjI0RDaAUC4P9iyAzo8B1UTVrMNlqjk1jzujSTY8bOrWH0YqUyNXaTmXxyAjj1qnSYBdcAkRGvMOFPOcx40hHJbLL3xWRDBXPrZbcGiOKfh6DYsNQH4DBooc3mqc03orwSyL3XnXf//RHUVnZzs8N2gpbQMk2lcJnBuo3bWEMMw1J7muSwtzpCRlly5IwUd2wPUkoR35r9Q5sr0hPGTdBu957nxVbwKMj9kcorW12WQj54ueQdf98TMXvq3Ji7PLiGf0yqknE1ZJj7KAr8YUzUVuV/LzVLHzJWCwmva3voJNpYFQXe+YEOMat7tFvnNDqSwRvQwpbQdTHWjSdwA1Nar+zeUFROYNlBTetd9YoYAIMmjmQf8nqRuephBTqOOPbjhy6B+lD89Yd+QOFQNix X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(250305191791016)(22074186197030)(192374486261705)(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6055026)(6041248)(20161123562025)(20161123560025)(20161123558025)(20161123555025)(20161123564025)(6072148); SRVR:CY4PR12MB1605; BCL:0; PCL:0; RULEID:; SRVR:CY4PR12MB1605; X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1605; 4:cE3DG46dWn02Qn2JpZiKyOqiVu5u748LlAIo1iTcfwDsab9XuLeIA5ppcxYyRmEOOzzWjX+7cfFVZa4CbcsNE/rGmm7SUp7RA/yEzF6hFZmM88oKnDLWkXpCLhcEcp8HogZTeuX+FKFF3n502wTQS3WNGxPZmhiQeia88AEbkMJBlX4wICpMzPRApCiC3b2d8pSShTggQCCpePu288b+7FAhvFlMBQP9CFi0a4oB8wlEI55G89luxe2f/bF2Bmt5US4ac8439Jg6N+AiWEUHxv5mjUf2WqqxLQ3BnA67BPqOqX9BUWzj4fPo1cwX1W+d2uLNHtkFwtma5sBSGHjnWto7UYdS9HYayJie4oRPz8Aw6cbUCq343WGP7R5HwF4GEjkDt80bvKo6r6RUmpxKqAl6V2ON0m1pgsEiXm3fSspCmYLLvlSSKV8mmZNijhsWzvzjsxE0DVbYqPC+41pOVtP1X5GES+p0kHoSLaTldFGUVFUdQKSKZPj5RMi4N3SSKaX+nGVPVqFIyEDShQvMAHtZCkhrJ1IYxk76tyR83T+H1f8yD6bTr5KzEo3Cb2sAPyh8g+S+5KNuluQeYS6qV90ySyANdiFFc3Ksh/8eoALTxgszMr1NwPOXVb3w7aL9tgox2ym+/nVFdJkIMY20XjXURsOiwPzaSqQl31kUdRu43r3WVpeiSy/etGLO0vGFZ6c7QYVi8l1xYp95MV6VHSLUd2JpYtQzO3xUf6b/5bRvElBNbY6s2PhoV6HmoU4xLhgMb5fOyFR49iYew5dO/A== X-Forefront-PRVS: 02408926C4 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(6049001)(39410400002)(39850400002)(39840400002)(39450400003)(39860400002)(33716001)(4326008)(2906002)(38730400002)(47776003)(6666003)(5660300001)(23676002)(6116002)(50986999)(3846002)(76176999)(8676002)(2950100002)(50466002)(54356999)(103116003)(81166006)(66066001)(10710500007)(230700001)(575784001)(54906002)(6306002)(86362001)(42186005)(9686003)(2201001)(90366009)(25786008)(83506001)(15650500001)(305945005)(2420400007)(33646002)(6486002)(7110500001)(53936002)(77096006)(7736002)(189998001)(21314002)(217873001); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR12MB1605; H:[127.0.1.1]; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtDWTRQUjEyTUIxNjA1OzIzOmY5Z3hGUytpMEhXSEZ5amR6NmxRWGtxQkVx?= =?utf-8?B?cGtrOVBibFl3bDNOS2ZpZ05HUEJUUnF6MnZpaFNLZ01OOStaMEFjRC9FK2RS?= =?utf-8?B?NTNCUDVja1pjSE9Rc3pzYTFMVEhqTEtiRUp2TitMc1g1bG5SemZRYzcwSXVW?= =?utf-8?B?S2lLSDJXN0R6YngycExwcFQ2RXpRZkZKUFZ4eTlKeWlwTXpCUDl6NGRIUHRM?= =?utf-8?B?NUhTVmRsbGMxZFZOM0lOYnhZVi9ZL2RwcUFlRGZWdHV2R0tuRlplazlHOXYz?= =?utf-8?B?WHcvMy9oLzZIOEtsNWZabWRuWGdkdlh4WmZBOVVjeGZya1liRUFvOFVmQVFj?= =?utf-8?B?VEdFWmxtckRQS0ovSDRNQjQxOUhMYnN1YkNxOCtjRkxSR1pZSDJoZ2xvdlhH?= =?utf-8?B?MThielVxbmhIbTlVMFhtbmpJRUFQZkFhMjlVVStTTXZKZ2k3NVdrUmpnRWNm?= =?utf-8?B?L09zaFFnTVE2S2ZyUkJDR0dwTGFBWXJqRDZqWEppWlZrVW1YWGZiR1loRG9u?= =?utf-8?B?djI3cVk0ZVh6U1NRK2pHUFhlVkxJYVRxeko3QnhjaEVNb2tYcHFLQk9xWUlZ?= =?utf-8?B?YkZQTXJKK0tSTmRubVJPSUp3VDdza0dDdmkwamY5Tkd4aUd4L0EvMTBUUTRX?= =?utf-8?B?ZnBTN0xXaTRnVlFHbmdhSWlkTExYS3JNNFVMVkRUMlgycWx4SkVVQlRBcVl5?= =?utf-8?B?RUVIb1MrVWQ3L05lZTNJWHVqZVQwZU5haFd6K3FDUG5uNlFnSy9GSlFWSXI2?= =?utf-8?B?WW41UVlHQkk5eWVoSkR5bjg3VGJIdVlPSndNYU82R0pMMnZ1UFdqNEYzdUI5?= =?utf-8?B?eGxROGhkaVhhVWRkQStVcVROenBzemdKQlUvamhaY0FOZWRXcUY0dWZkZ25o?= =?utf-8?B?SE1na0NLQkwzWmpOcElSRXozMzhuOS82cUFMOHFVTVhudVc5TFI5NDBtWjNi?= =?utf-8?B?YjZjRTF1VjhHZER6RTcxbDdNNFkzaWwwMjU4L3NhSXozUWdzdVoxYnBqM2Yv?= =?utf-8?B?aVRucnBWaTJSYkg3TU84YXI1S1J1VkFXRTJBdXIvOVo5dFpPekxpemRPbzRz?= =?utf-8?B?QTlWbU9md3Q4MDRQN1R0aUlSVTJTMFBDU3RZK2tmZHhxQlRDbDNFY0dZNFc3?= =?utf-8?B?ZTdTdUJqQWZ2eUkxRzNPRHRYeWg4VmdDSGRvRGlJNmRibEF4NU8xWVhNcnkw?= =?utf-8?B?M1hZWUxDY0dxMDFNaWROQnpiNmhSWENkWVFmdktjMUdLTmRxRkpSSUZZUTVV?= =?utf-8?B?VHJzbU1zaFVaYW0wS2h3MTc4SkxqVGFyWFZNTWNOWFlvZVZ2L2orZFYxUDJG?= =?utf-8?B?Y2E1Q1Q5ZEVPVEdBSTIydTlhUDNycWcvVXZQVHlsd1BBWlRPNXRJQnI2ZjRw?= =?utf-8?B?NUs0OFh2ZGlQTHNxajRlREJqOTd1d0dkM1V5cXZ4dnp1WVJTajBIYTdqcDRj?= =?utf-8?B?bEdkOG9mb1ptL1pzRW93blZNV2gzVTdkZSswd0pMQXkwblRvV3daVCtnYTBn?= =?utf-8?B?T0J1YTd6UFZvanRzLzl5Mm95YkcxNGxZS3FPQzNxbjdQd2s2UUUwOTVBTm1n?= =?utf-8?B?SVYxb3BoOUpuTVpzckpaNnBiL2NhbXFBbGtJYUh2YzRGRDJDZjhxSGtRaWhB?= =?utf-8?B?am5UWVNNRlkvQm5YU3V6WklrcWlVVXJFSmFVbGptem5ZbWIvV2U2Y3VublFs?= =?utf-8?Q?pqdqA571pHFkY+zcjnD6UdyZDQ+0MmRvNzZjSC5?= X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1605; 6:c18L+EeqERaxp8IZ1K9Q6YOCPFKjM4tlZQ4GXdL5T5dF3d97uvNEFwvzaVlGHjclW1u2+dKutEQmIY/rsFKCMtPBanY1MZCfAvAGzoWq/g0aY3L0oAbV6ZUhsNkh7obRUiOq+pCqn0a1ebFR5Na6SJo4YMcMr5blvcuJijxFoDiNa/9o6Alb8reijeu+FioPz/v1mBGbn71UK4O+m3re8K8GWoiWFaaBMGG65P6tCNNupVvmVtniIvHLeyiY2Q9y2F0/+2pIquLXWqe3KQEFz5XAXQzHXPXEduthD8ktdheo9MmhWL9jWGA/yCgTqQvlcZIe5KxOBApHhfsLFQSTE0pxPbnpsFz/jIPY017T8VYmc9N8/uxt0HteEb+HTR4MEgzEPVfwP+B/6iSFohc4bLDizi8K9QP4O+H4GN4V1Vw=; 5:K6iFmIDSxuCBI6uLX014oUxeJWjFuzUv0RNUcrtpVlY1XmJLWvFgBri2tkpbQoN4+R/OVF8tf2d+oCUIFoXDNfPOB6Mko6ukrbWilulkshvyByteoE9uNkId9WRL0dhtyHwZepoVnEkBb4NtnOu9m7YWIOc+XHChrfSIrWRPcbk=; 24:+eOV7OAZ0w3cpUz96S775cfVF0tjtUQwiQLQUMgPaoezvyHgCLA4LwUUemtctTF3/vpMoE6jwexWV+Kd1NWrr9b0T9cPGH2S428Me30EfsM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1605; 7:KsAoDFNZhkhci+qdqw16sn8kZlvY7n+xF7pClZtayLtSMcap6FW7hTDnqH4i1MSrH5uCKiSktynaOqBNtx44qjm6ymaog+s3dWLXXs2kA/S53ssIILPCKwc9G3/2xAJJVAznc2Z+ay04duQkWmyZ5PBdnIfcpxuSbF1WlBpR+odEvBothSsd/dc/T032zatX4EQI1nnaSsdNItuPoQPWjQhYifCWuR4G8jXcKOyMzfsV+dZn5v9hQS4JUkAlKKGBc7+rGDZ1+Q6wV8k/mpCo6tMqthe4r7Q9GViYtMN1dBoghM4XsgdoQCkeeubr//rTGrC9TdJzvyuJbs/MseszWA==; 20:qPEdgqMaKIueT/TdKt/s8l1LwoAwrNzoKWku1n6wrlnsj3MQpfuub4NMwVpuCZBE8gQhyhTHVnKxw55ha19xfcR/wd2GXyfq9zM/JnfTC/hh8pucMd1GMwCoD8M71puV7fC9KHgJXkf4sIgSVxKch0zVfzgpGZx6AR51O08B9DnDUsgQqzBgVXM4Iz8GoovVNr5fFukHhuEQ19gJ/ZizQNPvNUKK5BCuXRJ6t9TDZdfszxgnw8jenS9Fp+gMIhRJ X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Mar 2017 20:52:21.1159 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR12MB1605 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.42.67 Subject: [Qemu-devel] [RFC PATCH v4 06/20] core: add new security-policy object X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Thomas.Lendacky@amd.com, brijesh.singh@amd.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 The object can be used to define global security policy for the guest. object provides two properties: 1) debug: can be used to disable guest memory access from hypervisor. e.g to disable guest memory debug accesses # $QEMU \ -object security-policy,debug=3Dfalse,id=3Dmypolicy \ -machine ...,security-policy=3Dmypolicy 2) memory-encryption: if hypervisor supports memory encryption then this property can be used to define object for encryption. # $QEMU \ -object sev-guest,id=3Dsev0 \ -object security-policy,id=3Dmemory-encryption=3Dsev0,id=3Dmypolicy= \ -machine ...,security-policy=3Dmypolicy The memory-encryption property will be used for enabling AMD's SEV feature. Signed-off-by: Brijesh Singh --- exec.c | 7 ++ hw/core/Makefile.objs | 1=20 hw/core/machine.c | 22 +++++ hw/core/security-policy.c | 165 ++++++++++++++++++++++++++++++++++= ++++ include/hw/boards.h | 1=20 include/sysemu/security-policy.h | 75 +++++++++++++++++ qemu-options.hx | 21 +++++ 7 files changed, 292 insertions(+) create mode 100644 hw/core/security-policy.c create mode 100644 include/sysemu/security-policy.h diff --git a/exec.c b/exec.c index 772a959..2c7c891 100644 --- a/exec.c +++ b/exec.c @@ -40,6 +40,7 @@ #else /* !CONFIG_USER_ONLY */ #include "hw/hw.h" #include "exec/memory.h" +#include "sysemu/security-policy.h" #include "exec/ioport.h" #include "sysemu/dma.h" #include "sysemu/numa.h" @@ -2926,6 +2927,12 @@ static inline void cpu_physical_memory_rw_debug_inte= rnal(AddressSpace *as, hwaddr addr1; MemoryRegion *mr; =20 + /* Check if debug accesses is allowed */ + if (attrs.debug && + !security_policy_debug_allowed(current_machine->security_policy)) { + return; + } + rcu_read_lock(); while (len > 0) { l =3D len; diff --git a/hw/core/Makefile.objs b/hw/core/Makefile.objs index 91450b2..3c413b1 100644 --- a/hw/core/Makefile.objs +++ b/hw/core/Makefile.objs @@ -18,6 +18,7 @@ common-obj-$(CONFIG_SOFTMMU) +=3D qdev-properties-system.o common-obj-$(CONFIG_SOFTMMU) +=3D register.o common-obj-$(CONFIG_SOFTMMU) +=3D or-irq.o common-obj-$(CONFIG_PLATFORM_BUS) +=3D platform-bus.o +common-obj-$(CONFIG_SOFTMMU) +=3D security-policy.o =20 obj-$(CONFIG_SOFTMMU) +=3D generic-loader.o obj-$(CONFIG_SOFTMMU) +=3D null-machine.o diff --git a/hw/core/machine.c b/hw/core/machine.c index 0699750..c14f59c 100644 --- a/hw/core/machine.c +++ b/hw/core/machine.c @@ -332,6 +332,23 @@ static bool machine_get_enforce_config_section(Object = *obj, Error **errp) return ms->enforce_config_section; } =20 +static char *machine_get_security_policy(Object *obj, Error **errp) +{ + MachineState *ms =3D MACHINE(obj); + + return g_strdup(ms->security_policy); +} + +static void machine_set_security_policy(Object *obj, + const char *value, Error **errp) +{ + MachineState *ms =3D MACHINE(obj); + + g_free(ms->security_policy); + ms->security_policy =3D g_strdup(value); +} + + static void error_on_sysbus_device(SysBusDevice *sbdev, void *opaque) { error_report("Option '-device %s' cannot be handled by this machine", @@ -493,6 +510,11 @@ static void machine_class_init(ObjectClass *oc, void *= data) &error_abort); object_class_property_set_description(oc, "enforce-config-section", "Set on to enforce configuration section migration", &error_abort); + + object_class_property_add_str(oc, "security-policy", + machine_get_security_policy, machine_set_security_policy, NULL= ); + object_class_property_set_description(oc, "security-policy", + "Set the security policy for the machine", NULL); } =20 static void machine_class_base_init(ObjectClass *oc, void *data) diff --git a/hw/core/security-policy.c b/hw/core/security-policy.c new file mode 100644 index 0000000..4d4658e --- /dev/null +++ b/hw/core/security-policy.c @@ -0,0 +1,165 @@ +/* + * QEMU security policy support + * + * Copyright (c) 2016 Advanced Micro Devices + * + * Author: + * Brijesh Singh + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + * + */ + +#include "qemu/osdep.h" +#include "qapi/error.h" +#include "qom/object_interfaces.h" +#include "qemu/base64.h" + +#include "sysemu/security-policy.h" + +static SecurityPolicy * +find_security_policy_obj(const char *name) +{ + Object *obj; + SecurityPolicy *policy; + + if (!name) { + return NULL; + } + + obj =3D object_resolve_path_component( + object_get_objects_root(), name); + if (!obj) { + return NULL; + } + + policy =3D (SecurityPolicy *) + object_dynamic_cast(obj, + TYPE_SECURITY_POLICY); + if (!policy) { + return NULL; + } + + return policy; +} + +bool +security_policy_debug_allowed(const char *secure_policy_id) +{ + SecurityPolicy *policy =3D find_security_policy_obj(secure_policy_id); + + /* if id is not a valid security policy then we return true */ + return policy ? policy->debug : true; +} + +char * +security_policy_get_memory_encryption_id(const char *secure_policy_id) +{ + SecurityPolicy *policy =3D find_security_policy_obj(secure_policy_id); + + return policy ? g_strdup(policy->memory_encryption) : NULL; +} + +static bool +security_policy_prop_get_debug(Object *obj, + Error **errp G_GNUC_UNUSED) +{ + SecurityPolicy *policy =3D SECURITY_POLICY(obj); + + return policy->debug; +} + + +static void +security_policy_prop_set_debug(Object *obj, + bool value, + Error **errp G_GNUC_UNUSED) +{ + SecurityPolicy *policy =3D SECURITY_POLICY(obj); + + policy->debug =3D value; +} + +static char * +sev_launch_get_memory_encryption(Object *obj, Error **errp) +{ + SecurityPolicy *policy =3D SECURITY_POLICY(obj); + + return g_strdup(policy->memory_encryption); +} + +static void +sev_launch_set_memory_encryption(Object *obj, const char *value, + Error **errp) +{ + SecurityPolicy *policy =3D SECURITY_POLICY(obj); + + policy->memory_encryption =3D g_strdup(value); +} + +static void +security_policy_init(Object *obj) +{ + SecurityPolicy *policy =3D SECURITY_POLICY(obj); + + policy->debug =3D true; +} + +static void +security_policy_finalize(Object *obj) +{ +} + +static void +security_policy_class_init(ObjectClass *oc, void *data) +{ + object_class_property_add_bool(oc, "debug", + security_policy_prop_get_debug, + security_policy_prop_set_debug, + NULL); + object_class_property_set_description(oc, "debug", + "Set on/off if debugging is allowed on this guest (default on)= ", + NULL); + object_class_property_add_str(oc, "memory-encryption", + sev_launch_get_memory_encryption, + sev_launch_set_memory_encryption, + NULL); + object_class_property_set_description(oc, "memory-encryption", + "Set memory encryption object id (if supported by hardware)", + NULL); +} + +static const TypeInfo security_policy_info =3D { + .parent =3D TYPE_OBJECT, + .name =3D TYPE_SECURITY_POLICY, + .instance_size =3D sizeof(SecurityPolicy), + .instance_init =3D security_policy_init, + .instance_finalize =3D security_policy_finalize, + .class_size =3D sizeof(SecurityPolicyClass), + .class_init =3D security_policy_class_init, + .interfaces =3D (InterfaceInfo[]) { + { TYPE_USER_CREATABLE }, + { } + } +}; + + +static void +security_policy_register_types(void) +{ + type_register_static(&security_policy_info); +} + + +type_init(security_policy_register_types); diff --git a/include/hw/boards.h b/include/hw/boards.h index 269d0ba..a1c99a0 100644 --- a/include/hw/boards.h +++ b/include/hw/boards.h @@ -153,6 +153,7 @@ struct MachineState { /*< public >*/ =20 char *accel; + char *security_policy; bool kernel_irqchip_allowed; bool kernel_irqchip_required; bool kernel_irqchip_split; diff --git a/include/sysemu/security-policy.h b/include/sysemu/security-pol= icy.h new file mode 100644 index 0000000..6d3789d --- /dev/null +++ b/include/sysemu/security-policy.h @@ -0,0 +1,75 @@ +/* + * QEMU security policy support + * + * Copyright (c) 2016 Advanced Micro Devices + * + * Author: + * Brijesh Singh + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + * + */ + +#ifndef SECURITY_POLICY_H +#define SECURITY_POLICY_H + +#include "qom/object.h" + +#define TYPE_SECURITY_POLICY "security-policy" +#define SECURITY_POLICY(obj) \ + OBJECT_CHECK(SecurityPolicy, (obj), TYPE_SECURITY_POLICY) + +typedef struct SecurityPolicy SecurityPolicy; +typedef struct SecurityPolicyClass SecurityPolicyClass; + +/** + * SecurityPolicy: + * + * The SecurityPolicy object provides method to define + * various security releated policies for guest machine. + * + * e.g + * When launching QEMU, user can create a security policy + * to disallow memory dump and debug of guest + * + * # $QEMU \ + * -object security-policy,id=3Dmypolicy,debug=3Doff \ + * -machine ...,security-policy=3Dmypolicy + * + * If hardware supports memory encryption then user can set + * encryption policy of guest + * + * # $QEMU \ + * -object encrypt-policy,key=3Dxxx,flags=3Dxxxx,id=3Dencrypt \ + * -object security-policy,debug=3Doff,memory-encryption=3Dencrypt,id= =3Dmypolicy \ + * -machine ...,security-policy=3Dmypolicy + * + */ + +struct SecurityPolicy { + Object parent_obj; + + bool debug; + char *memory_encryption; +}; + + +struct SecurityPolicyClass { + ObjectClass parent_class; +}; + +bool security_policy_debug_allowed(const char *name); +char *security_policy_get_memory_encryption_id(const char *name); + +#endif /* SECURITY_POLICY_H */ diff --git a/qemu-options.hx b/qemu-options.hx index 2292438..536db1b 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -4140,6 +4140,27 @@ contents of @code{iv.b64} to the second secret =20 @end table =20 +@item -object security-policy,id=3D@var{id}[,debug=3D@var{bool}][,memory-e= ncryption=3D@var{string}] + +Create a security policy object, which can be used to define guest securit= y. +The id parameter is a unique ID that will be used to reference this +object when security-policy is applied via -machine argument. + +The 'debug' parameter can be defined to tell whether the debugging or memo= ry +dump is allowed through qemu monitor console. + +e.g to disable the guest memory dump +@example + # $QEMU \ + -object security-policy,id=3Dsecure0,debug=3Doff \ + -machine ...,security-policy=3Dsecure0 +@end example + +if hardware support guest memory encrytion, then 'memory-encryption' param= eter +can be set to the unquie ID of memory encryption object. + +On AMD processor, memory encryption is supported via 'sev-guest' object. + ETEXI =20 =20 From nobody Sun Apr 28 19:04:07 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 14890090593911015.5282660377547; Wed, 8 Mar 2017 13:37:39 -0800 (PST) Received: from localhost ([::1]:58574 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cljH8-00062S-3i for importer@patchew.org; Wed, 08 Mar 2017 16:37:38 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52491) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clj7D-0007Aw-8e for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:27:24 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1clj7A-0005pf-3I for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:27:23 -0500 Received: from mail-dm3nam03on0044.outbound.protection.outlook.com ([104.47.41.44]:60518 helo=NAM03-DM3-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1clj79-0005pP-RO for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:27:20 -0500 Received: from [127.0.1.1] (165.204.77.1) by DM5PR12MB1610.namprd12.prod.outlook.com (10.172.40.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.947.12; Wed, 8 Mar 2017 20:52:30 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=x5BcGg8p5Rf79wV1wMLk3VTkcRjrpkJR/buizSRWwvE=; b=M4wSawU3e6IHmp0CE70NGV6X69F2CqDqAuWmESAmRvcxE67DuQ4lKdAiGc1vAQRX4/9oA4kiKHM1dkmcvYqqLAgmiumXl5MXgKqHnOoFY3rcHvsCkhNxbAFkq+mZYSxXJqlk3iLQpglfMiotRs7h3IEY7JllPYviYpN2y8P6UDM= Authentication-Results: amd.com; dkim=none (message not signed) header.d=none;amd.com; dmarc=none action=none header.from=amd.com; From: Brijesh Singh To: , , , , , , , , Date: Wed, 8 Mar 2017 15:52:26 -0500 Message-ID: <148900634659.27090.2157657994637303677.stgit@brijesh-build-machine> In-Reply-To: <148900626714.27090.1616990932333159904.stgit@brijesh-build-machine> References: <148900626714.27090.1616990932333159904.stgit@brijesh-build-machine> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: MWHPR07CA0011.namprd07.prod.outlook.com (10.172.94.21) To DM5PR12MB1610.namprd12.prod.outlook.com (10.172.40.16) X-MS-Office365-Filtering-Correlation-Id: 6bf25bd8-bdf4-4161-e6e8-08d466650a7a X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081); SRVR:DM5PR12MB1610; X-Microsoft-Exchange-Diagnostics: 1; DM5PR12MB1610; 3:zX2rKVdiRFaXSah4ftdios9/bPdP9yw/IR6lzyTCFK7I1SZD7Lqs02YRGmjpncABDEq/GEI4ypcUzdwoTMWUdFx8VAFc00s59XShJo6gs0BO0ZBwdKEDQUPwC5nbYg6cx4/t5aDkjJxrFAyJykL67ILGhJCUHYJcKTbCdest5JTPkWlBSXKW8FUB3Q41fAHTmHDDvKOvTmq9tCJpHUYHSaz6o/5RRXYNMWkbbdyEon5d7Tt2in6QSwn07weWmfHseXKDRLMDUJh7pkPJQNIDJjnPx7pkT2HAbeqYo5cMY68=; 25:D2TFpsikRcTmMosJizAfkHVCiz/iXK1kRzFaQ4sMgTa4Gwl5GXcMdsav8Odg9EG29zIT02PKqzQW2mNMJ6JMCc43g0kpNsOT5nkcAdGsfYNBu+cTmC9dHuOy1GfQIe9FDz2TNzVEQFKTi8jPR7/U75HpvwN4aR6GsJz5vV2rAXN0RplS4WU7x0LoxLpkDvtGLxc4S8J9Hwk509agicUwWme34fiy79pMqL08F4eYteLazb3faeIjD16Djp0FlQqB79OGEK1QD0OflOJgt2SVA3YA2pi6wj3N2CndwaZOe43pohAEGHpuO4FH14oe6eFIezmHPeiDdsW0E7Q12tIwZFsvecVb39l9/7KmEacg4mNLP/pEkTCAbD/khhZTac3olU8X4tyEHAD/IlEXM+9wKFsDRF1i4B/VWVKs587KSeED4gUYh4JLbHRg/Ey6/8+PLxfbtIyDxls8m+j501JZeA== X-Microsoft-Exchange-Diagnostics: 1; DM5PR12MB1610; 31:eHywI2wjubV/4ipPCWgMWw2agjQThhxh8ylYe+njbG/R4cPCqcPaXEY1rYot4hQmYy0w5qkjsGjCXcqzX6+ezyLe01e/66P7MnVC2mkbOaYBBzokbw+8JChryAaTAtC5ZkT9+KpLzi93yWp/qU1ZRNFmKl7LNvtqzts9WUvjHZArnNLAQDx3OeL4yMyV8fHLQwL2OSoLnpkmXGSXnoXYMp0h23u3QVPBbPORrfGpCV77k0o8RvyisZ3tzyArMMef; 20:zKqwahDHRnkBSyNTsDzhPqDiktwxqaytdH6PRzZ7TZ/HZOj2Iimr9zAxkzrmNgcva5RkpwyfKvq/rDDiho86bH+HgX2yQ5NpvvKhXRYKzm4n/GDoN2YmJXiKIhmfiSIVuxsP2OL0lafilatIQTOZsbAL2XZIXOQ8/WzZbr7fcGRfF4jG+KOvT/OJ8cVjtlNXPS93FVSH3mXNsus8y3Fvr7XRe806KUSxOytQKAb27rUK78iRHV8zwKQBTftT+weP7ectE3VJjYadG1b3z6/fQm7gldyvHRxupQU60J6JkqTH7E25uje+02/uJRaI/Gzz6Ai+MEU4r0NtD/f6vtWfH45aEOC+8x+Bjt/qFmigdLakMdCW/mL2TtCOaHat3UXDbtAJqzwyNaws589O+QoXWExypYzJiRmyQdvfv65yFB6RofZ1F5CfS3ouHysrcUWdYed71Xj0Q2Z0VH29Fp+pIQwVce/8Kj6a+O3G1X4DwPe99kynKcepWz+9StSycIqr X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6055026)(6041248)(20161123555025)(20161123560025)(20161123562025)(20161123558025)(20161123564025)(6072148); SRVR:DM5PR12MB1610; BCL:0; PCL:0; RULEID:; SRVR:DM5PR12MB1610; X-Microsoft-Exchange-Diagnostics: 1; DM5PR12MB1610; 4:xdC/SVlA/RePTRAxdmKQs6liW9gwPC2So7EeGmjbyT4onOtoWjDT46hBAPoprQmkXSvdCWoqTB5UUu03jjihvM4RTf7c3pk8N3t4WXXLm0+vbSvXP27cTxBGdQ12TfSSf9u2SlFx9JlO6qdQa6M06YIsihhaaZ51By+RS4wWRT+GaCMucgA03hJVJvnw9cjpvHCVJznR8YWJl7QhNeT5sBO6A4jt0tm/nVso/K2WVPqBmWR7zK0Lwip1ml1SyFTJvuHMANscW/nLp++8iLcg7JyrGgI7dxa1nJmR31OcwiBUq6485njeorCBEjNIOragV5xIAVt7XDCc/pt9jbd1wBYNpRSJ3IxEDB1b7GYP7JC4zik7/pX1msfBRuLSsTU2tfalX2QdjIp6N9ksD6sG1eDfnE5JJ0QZHaX9V1bC1CvOmJT8zcwIpdqY9oJCMNWn9rmZBt4nG788Y6Tx77EZ3MRXhnd+DnyRtAplu5ucsCMKsDYcy0wkIRBmRbCO/dft4Z2UWMHlHKh3JaCwy6HMT3liU7OBFqVEQ/573lalNS58/diB7sXu5lyqr7Xa6DDpNzMiOm89Y3Cd/5VEm4kS4feLFDvrPWgsqhYSSjYQSbEHNlWvb2kZR9O/7/65LeQ1UV1qYPrQ7UxR/HfST1kTc3oakPJe6g1u0Sc1tI+99Io= X-Forefront-PRVS: 02408926C4 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(6049001)(39840400002)(39860400002)(39450400003)(39850400002)(39410400002)(305945005)(47776003)(5660300001)(33646002)(6666003)(6116002)(3846002)(66066001)(2906002)(90366009)(2201001)(6486002)(7736002)(77096006)(81166006)(230700001)(8676002)(2950100002)(33716001)(575784001)(86362001)(103116003)(38730400002)(83506001)(42186005)(25786008)(54906002)(50986999)(76176999)(54356999)(9686003)(53936002)(189998001)(50466002)(4326008)(23676002)(217873001); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR12MB1610; H:[127.0.1.1]; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtETTVQUjEyTUIxNjEwOzIzOndqQ2hvQjZrbVgrZXk5S3dtaXpHUlpZWkJp?= =?utf-8?B?S2d1SENMaTR4cnd0dFVOMnRrSnRMTCt0ODdHN1ZYTkhDVUV5MGpSRTNtaEhk?= =?utf-8?B?TmNyWEo3alNWMDdmUERKd0t3Ym9VZXh5RWFrUnlueXJMNm5KcWhmR091OUg4?= =?utf-8?B?MEVPbnplckd0aGhUeGJudGU1VTViWXVwOVNQaXRnRHhSYWdBZzBERGUzOGJM?= =?utf-8?B?YlFpYzVBTGVhTWFYSmhVYTZiRkRCK1NqM0dvZ1ZIVEpLWEptY1R3MEpPLzhK?= =?utf-8?B?Sk9qR2NUVDdDU1IxVkhxUGMxaFNwdFF1cnl5ZUhudkxHcnlkVTBDSXpyd1NX?= =?utf-8?B?N3drUzhvRzROb0Z4NG5pV3RRc1VQVHJ3MmJYdkFVd3lqQ0VRelRBWExhOFB4?= =?utf-8?B?QlBhL2VReWVNRForTkpkcUI5WUticVF3dEZKWVV1QXlSNXQwdFdZczRGc1FT?= =?utf-8?B?enFFdkYrdXhRRTFvRE5mRWt4Q1hvT0R3dzZic2J4SnVWSjQ0WWNBaDAxSzdW?= =?utf-8?B?MDBkdGhydlRmdUFycGxCdUJMYUZrOXAwTkxoSEhsOFg3Z0lmV0xYTzQ4cUtU?= =?utf-8?B?bkNuU1hoenE4S21lalkrTEI5TUU0RytCUXBiM2FrWGcyemxXVXZpVVA3bk5O?= =?utf-8?B?MTlNS3VqQ3pJSlBZSEpRVzhJMHBJNml2RUVqNHFwVkNKaTFGa3pIaXdPVHRS?= =?utf-8?B?RC9MMW1aQk95eFAyWjh1cTltTXIwOTMyL1JSZmR3U2dJV0dvR1lzeXBQT0Zj?= =?utf-8?B?ei9aNkpyWE13ZnZldEVlZFVCTktSWC9NWVE0SGJvTE90QitJSDRGZHEvVjR3?= =?utf-8?B?Q05zUmUrVms3MWVSYk4zdDV4OTh4ZjNLN3NPRkJIeWdKT1l1Q0hYdUlLQzVK?= =?utf-8?B?S05sNE1rVnplaXpLV1N4bmdxMXJWc0pVUTc5bVJROXJtTEg3aklWaHFjK1Ex?= =?utf-8?B?djFyTURWRGwrcitZRU5iUjFSelNFREFiRlRma3prVkJkcDZuaXZ5a0FFNzZj?= =?utf-8?B?TW44YUZrOStkTzZscG1WRVRsRmxFSGdIWXpRdXdEcGNKTWVPSzA0Q1JUWEVX?= =?utf-8?B?eGVxV25BKzlka0dhSWNPK2hQVG51OW93aGhoQ0VQeEdyUEJHaWV2N2ZJZ0c5?= =?utf-8?B?dDFjSUVlY1lNZmQ5bVlOM0VJLzRWUTNrSzFFK0VDWnk4WU41ZmNhUHJLTVZF?= =?utf-8?B?Zkg5ci85RDdWeEZKQ0w0bzZQZ1YwN2ZpZnRsaEdhNlpaTWl1T2Z5VVpDbzBh?= =?utf-8?B?VDNZVW9ldkJhQllUM0xpeWZUNmlmd1BaNUFLVzVzNk1wVFhNNWdtNDRBbURk?= =?utf-8?B?TmdYVTlQUWtHRE85enNwVnpjd3FVQjBVa0Y0NVRUcmJlTFdMNEovMHE0TVpv?= =?utf-8?B?VVBQY2YwV0kzME5rY09KeWtBOEJoUTgrdXlTcjdBYUUzQ0d0RXViajZ6aElr?= =?utf-8?B?dEFpMVZaN2pIcjdlMDE1Qk56UlRvRDVYUklMaEE5c2Y5YVFmSTFyWnloaS9N?= =?utf-8?Q?+T/FBoc2WAvD4VmRvVma/68N8=3D?= X-Microsoft-Exchange-Diagnostics: 1; DM5PR12MB1610; 6:g+hRYFkNqU9fw2d3pa1m9W3iT867ZUCHYtastWdEx1DOsfEu2HMrFBdVEiM2hd2WYMhiLnTW0KOohBGZcpQPfsSDy0PCxKgZXEgsDDS/sg46B2iL5skKtdf9/2lhH0VJRz+P5J8DOatLyA4bzxDhp+luzvFZQWUNxeVz+nsFFDv4TVP29orydFX3FyDC1osLYNn4kz6CR7/x1hGuYasWfnbVbKVtNI+MsGZen6uF5qHE+/ho4HZD6u+jl/MXFTXp9uTD6IToWY3mLdZFq8oxIZj066y5A510a6/mPdHf7IzRfsPu/xje281sqk5mZwHZj46KKJPApXES/GRTOYNrgmxFIsSyGcVeJgCrKWymFlXMyv2hv6QbfDijI0knr4QaQnnmvaHIWg611hPX/TCv/mBa2CV7kpwTOwDYa1RKVsI=; 5:4hDyqevhpzF03kaJkKs9SR8Ixd/zq5sRpeZ4oFfD4malXC16J4t8ndcJlvx+hIcj3pODYsnybaH0faZJXNoefKDNx5aGCMcoCoJ/ceg1O6Rkxxh/45BWiroKrIrVUbv0W66/3038Vhb2KYG1elaK4RG30S15KQuULm09yBGQ/cs=; 24:oRgnrHNhKy62REryq31ecFMgjjLJWwLybudhhxr4MVBKOnncqj3taasHcyTi+bLIq0C0SFr32P4PDcH5pAvMjelxyzLokp1fDqyHOhi/pdY= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM5PR12MB1610; 7:uqHIJXjwdVr64/DmziuwvmLAWINn3PrbgNO1cFc5fUtvqaNzpTmouOHIem/Yn+0ipYrDAK5OT+BgPtoxhX5jFpZxTD7MDOnUXk4usk0l33LQxQrLKAMzJtVqm1t5Lk0BQL/03dXzEvtqIuUI0lE6lPOMcU+FL8tu/d29R/0Avqp7YhGsUy0ymAfzODZpb/Jh3qEB8WH1yXCPcq1Wvfq+DooTmLi3p+xm0nYMibx/4VGlOZ/UoZRXQOjb4+cpI89edl+kQlyjhe8NQ6qf3wTwPpEaVWmlBUivoDcfEE4K+rM9yyB4uqzHKyEirHEA6XUlhbslmjuiiFDMyOE1ifQsWQ==; 20:IByQZR35BTZ15RG4ggXzXNjH5q+3TKi0ga6trufAvKgVpnoclrrchA+C8a8pHFFRnsJOLS1xQ/XlLdOsT7Ucn9e6a13ToSEBrJbjF01/sSCl6qg7k9zqXE5+dYdx8jaY+tbJKO8aJhtJtRa+wj1CHuRfjkZAG2dvuHiXQhSer+MHd8ZsdcpCpXA6PzaTgWYN5Us7hnrlmcHpbzKcfbDrpwANwWEci/xLPPKJ8CiUks0N/R47TYJ/050Dsk5NFbPZ X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Mar 2017 20:52:30.7989 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR12MB1610 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.41.44 Subject: [Qemu-devel] [RFC PATCH v4 07/20] kvm: add memory encryption api support X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Thomas.Lendacky@amd.com, brijesh.singh@amd.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Add high level API's to provide guest memory encryption support. Signed-off-by: Brijesh Singh --- include/sysemu/kvm.h | 7 +++++++ kvm-all.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++= ++++ kvm-stub.c | 31 ++++++++++++++++++++++++++++++ 3 files changed, 90 insertions(+) diff --git a/include/sysemu/kvm.h b/include/sysemu/kvm.h index 24281fc..6f88a06 100644 --- a/include/sysemu/kvm.h +++ b/include/sysemu/kvm.h @@ -227,6 +227,13 @@ int kvm_init_vcpu(CPUState *cpu); int kvm_cpu_exec(CPUState *cpu); int kvm_destroy_vcpu(CPUState *cpu); =20 +bool kvm_memcrypt_enabled(void); +void *kvm_memcrypt_get_handle(void); +void kvm_memcrypt_set_debug_ops(MemoryRegion *mr); +int kvm_memcrypt_create_launch_context(void); +int kvm_memcrypt_release_launch_context(void); +int kvm_memcrypt_encrypt_launch_data(uint8_t *ptr, uint64_t len); + #ifdef NEED_CPU_H #include "cpu.h" =20 diff --git a/kvm-all.c b/kvm-all.c index 9040bd5..bba0f39 100644 --- a/kvm-all.c +++ b/kvm-all.c @@ -36,6 +36,7 @@ #include "qemu/event_notifier.h" #include "trace-root.h" #include "hw/irq.h" +#include "sysemu/security-policy.h" =20 #include "hw/boards.h" =20 @@ -101,6 +102,13 @@ struct KVMState #endif KVMMemoryListener memory_listener; QLIST_HEAD(, KVMParkedVcpu) kvm_parked_vcpus; + + /* memory encryption support */ + void *ehandle; + int (*create_launch_context)(void *ehandle); + int (*release_launch_context)(void *ehandle); + int (*encrypt_launch_data)(void *ehandle, uint8_t *dst, uint64_t len); + void (*memcrypt_debug_ops)(void *ehandle, MemoryRegion *mr); }; =20 KVMState *kvm_state; @@ -128,6 +136,50 @@ static const KVMCapabilityInfo kvm_required_capabilite= s[] =3D { KVM_CAP_LAST_INFO }; =20 +bool kvm_memcrypt_enabled(void) +{ + return kvm_state->ehandle ? true : false; +} + +int kvm_memcrypt_create_launch_context(void) +{ + if (kvm_state->create_launch_context) { + return kvm_state->create_launch_context(kvm_state->ehandle); + } + + return 1; +} + +int kvm_memcrypt_release_launch_context(void) +{ + if (kvm_state->release_launch_context) { + return kvm_state->release_launch_context(kvm_state->ehandle); + } + + return 1; +} + +int kvm_memcrypt_encrypt_launch_data(uint8_t *dst, uint64_t len) +{ + if (kvm_state->encrypt_launch_data) { + return kvm_state->encrypt_launch_data(kvm_state->ehandle, dst, len= ); + } + + return 1; +} + +void kvm_memcrypt_set_debug_ops(MemoryRegion *mr) +{ + if (kvm_state->memcrypt_debug_ops) { + return kvm_state->memcrypt_debug_ops(kvm_state->ehandle, mr); + } +} + +void *kvm_memcrypt_get_handle(void) +{ + return kvm_state->ehandle; +} + int kvm_get_max_memslots(void) { KVMState *s =3D KVM_STATE(current_machine->accelerator); diff --git a/kvm-stub.c b/kvm-stub.c index ef0c734..20920aa 100644 --- a/kvm-stub.c +++ b/kvm-stub.c @@ -105,6 +105,37 @@ int kvm_on_sigbus(int code, void *addr) return 1; } =20 +bool kvm_memcrypt_enabled(void) +{ + return false; +} + +void *kvm_memcrypt_get_handle(void) +{ + return NULL; +} + +void kvm_memcrypt_set_debug_ops(MemoryRegion *mr) +{ + return; +} + +int kvm_memcrypt_create_launch_context(void) +{ + return 1; +} + +int kvm_memcrypt_release_launch_context(void) +{ + return 1; +} + +int kvm_memcrypt_encrypt_launch_data(uint8_t *ptr, uint64_t len) +{ + return 1; +} + + #ifndef CONFIG_USER_ONLY int kvm_irqchip_add_msi_route(KVMState *s, int vector, PCIDevice *dev) { From nobody Sun Apr 28 19:04:07 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1489008393093426.3616990241451; Wed, 8 Mar 2017 13:26:33 -0800 (PST) Received: from localhost ([::1]:58517 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clj6N-0005VY-Oo for importer@patchew.org; Wed, 08 Mar 2017 16:26:31 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51902) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clj5G-0005T1-0X for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:25:24 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1clj5C-0005M8-Lm for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:25:22 -0500 Received: from mail-sn1nam01on0055.outbound.protection.outlook.com ([104.47.32.55]:37952 helo=NAM01-SN1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1clj5C-0005Lw-9S for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:25:18 -0500 Received: from [127.0.1.1] (165.204.77.1) by MWHPR12MB1616.namprd12.prod.outlook.com (10.172.56.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.947.12; Wed, 8 Mar 2017 20:52:39 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=YZhdwY+RTHgT0DQhfDinkpkpXNigaIT80L1GaudjLGc=; b=CqyM7kgIVLzTOz9atNCczDUYW1o0RB+AZkAJneHU0EvO9AsBGYob/6JG/VAw0/06pUc/frm1CjAnAHc+OEehJjDII7Hp4sMD0lhfeZh1D1k6onNgleFVWu/eBxcvhaiIEVkD7RyF0RG182yBAjY9KNvXPiG7vzWH4InNpeGr/qI= Authentication-Results: amd.com; dkim=none (message not signed) header.d=none;amd.com; dmarc=none action=none header.from=amd.com; From: Brijesh Singh To: , , , , , , , , Date: Wed, 8 Mar 2017 15:52:37 -0500 Message-ID: <148900635729.27090.16897035853016859795.stgit@brijesh-build-machine> In-Reply-To: <148900626714.27090.1616990932333159904.stgit@brijesh-build-machine> References: <148900626714.27090.1616990932333159904.stgit@brijesh-build-machine> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: CY4PR13CA0011.namprd13.prod.outlook.com (10.168.161.149) To MWHPR12MB1616.namprd12.prod.outlook.com (10.172.56.17) X-MS-Office365-Filtering-Correlation-Id: 1b52b60d-5f1e-42b8-a665-08d466650f81 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081); SRVR:MWHPR12MB1616; X-Microsoft-Exchange-Diagnostics: 1; MWHPR12MB1616; 3:mGjjZghYshTdCoFKbwrerPz6JF4jokrFZWe1yP+j0r5bhgYI7Gk5Fme0aw8QZNHE001uES6/3ezQGm1Efh4yJEb2gs1T+CaXmdudDS204ETiLX9wzfAjgJ0xsqwezs62ja34MsMk9/1CHu2+VZBMjSxo1dgz3WPpwBXvk0LYZ/rm32CmYE55MSys8nRb6ayhYWhiOdPF0DiPbhN8UhVRB/hg8ZRvzYfiMu77MufVbSYgvBZUCFSX1bd6UA1bZ4rQqye/u6m/iVKGeJiNrHAsUF99+Lr8+LAs1VXhrR11lsE=; 25:bPDlv1rOwpuy3R9B4xtvO4RkKRiNnINJmF6dYiQruM0zIhbl9FCrw9esys15zBPSYLLggzacNpx305ZvB7Nb2yu9O05HKHF1YrQt82oXGwkO5bTZKpBqxPAr8q4MRNx9mmNCh/L4IIFZoLEfAKX9ndok9JftUW3UzbOs8ClyCBWyu678TYa5lxx1OMM9t2wQ4ky48Mp/CuiBxpWOduU+hZF9qxY+OltIlmD6Zzb+bSI5T6ihtu+MkLHrQC4HBMYyQTKuFBtlA1guYt7g7JgNrrPy/a2NBA/S3w2c6qn+98hs4sweXDF1cHGjeSkWE8DUzhmKkHtEf8tUVqkHA8fRpOFss6qlzgkeMXUN2ZJy0ohvc034SIwnk8sD7ogKrfJpUjJ7b3yjwUNBthE8jXH7OLQwfpAtpuUo0xkVHyuJMRF95YrpCCRtEHO6PrJvdDOe X-Microsoft-Exchange-Diagnostics: 1; MWHPR12MB1616; 31:LMdwn9s/EiBRCHss2AbubhiC23vdtNTjrgZHHwBH2pwhhBuBXSh08+OetEJzpV5KoQ4cq6aC5Z/gdQaGi7qJZxvf1XopfqgaDocJX7g+FJzXqSNu4YR1eqjXJEMN9FJ+JLBllDKmcRBkt2/+R07Q4Qp8Tpcmx56cs5QcOHifswrtiGtRQVthLb9Zv462CJoGcWPphKjZZFdU05/lXNP3W9Cr++QoTqPhek/yQ+ZYj7o=; 20:Vo7Qj7UXUKF/BG4e443eeR8lCxAMbBjVyaDQqjHWFTUkV1VxoPTHigqfczRnxBaHTs7wsliiu9XNOk8LErV2Z5JUEU5fyXqSN3D4aZ8DEfNtZR5uab6h4lWBf9RsJ5N80YB31+cpNaFae9s08JHe7pduKk4UOnd9mOS6skA0Q5aXiPBhPOINJNNC+SppcaLx1EU346jizkdWJmF92/onbr0ffHrdBCbpCXrLqHJ6VoRJzULhN4wIwawuJJ2PePHGVRiMHYBNvicWb6WWOv+BagLHC+AiFptY/esVSvxndzFOpS7QKf3VgBMt5OagLo5+QWFnGkypoHpXhpNPXqooi7N4WwoFAATMpnmMKpgVAeim1S8FmePts1OqZ5mVn/QysGIrHQJes8vonEQUdoFx6PX8JQHbEkogMQzRMLArjeMYeRq/hs9ElhLe+gOo5NWK2WJy1nqb5/DJYxpV001QhZjhlqaTJIxIZrAqMOtZ/kILJkxBYGFhfxOFOdFuibTX X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(192374486261705)(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6055026)(6041248)(20161123558025)(20161123555025)(20161123560025)(20161123562025)(20161123564025)(6042181)(6072148); SRVR:MWHPR12MB1616; BCL:0; PCL:0; RULEID:; SRVR:MWHPR12MB1616; X-Microsoft-Exchange-Diagnostics: 1; MWHPR12MB1616; 4:khPaHa04cmH3ALMy+0HJ9Vd6FQWpAqWWK+wTWKmCpDS/va0KK5N8hPcswzFp4acKTTJEDrur8+QBxITjAYsgPCOeXHLgSjoEk3sJGro1vYJ3nPzIvbSDdNXV3WlzhZ3uPjPHOxTclvxuRWYxCV19Jb7ucNKWRqV3SzxqFdq0LkJJzbDY1Xw9N3H/59oGsIwOSu012US8s+CHt7haXcHF8ITX8BrCIh49op7TM39nxCZ7EKbiihWm46n/ncE+KGa+ko3aZCqz36my4PYAWoWYzTYnpg6wFyWaOWOY38pe0Ym7QHhiCVATfLoWXb5AZX6GJUa/UFytdTCwoA/seF0AmNX7o8+xe5bFgQW46vLJ2yIR77/6A6SSXsM0+NMPwaCfhKEUdLuIG8AaH2J+vE4f5dFx176XhPa5qCe3ZwPGCa7Lfz7A2wpe3+jGpsQcqMDrRaCXCkBPa4SS5lKWHcPQXCwvJrCyT+xaZIo/+NJccNDHi4HbeS44+Rzeo7791DPkup6qZuMDH6IVJTWDsKA2JJU0HLhaGR77FRnVhkJpFE+jSJm/CdlJk3c0DgEZ+0Y1BXS8E0Y9yxzL4+oufDy1eAUY84Rw3iJwmD6Jsv8yDucezLibS0EILeNSCnjHl7I6dQXcfOmtzZ663ZFJmUXOKNxia8Z/BK5b8XFasNNx8nCJuh987Hkjl05F2mCZJIK57uLAK4gEURqRTPio56pm3MNYKxSgtdkckPlP51SZNmQ= X-Forefront-PRVS: 02408926C4 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6049001)(6009001)(86362001)(5660300001)(2201001)(575784001)(1720100001)(33716001)(3846002)(54906002)(103116003)(4326008)(305945005)(966004)(189998001)(53936002)(9686003)(38730400002)(6306002)(7736002)(6486002)(77096006)(90366009)(6116002)(230700001)(25786008)(50466002)(33646002)(81166006)(76176999)(42186005)(66066001)(8676002)(23676002)(83506001)(47776003)(54356999)(2906002)(2950100002)(50986999)(217873001); DIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR12MB1616; H:[127.0.1.1]; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtNV0hQUjEyTUIxNjE2OzIzOkxmc1dEYjRGUGJhelAxdFRGQkFreGtOMzBB?= =?utf-8?B?YU1GQVI1VEpqU0k0UmJ1bDNFcEtyYmpocHoxejlUV3FTWVVSSm5TRmd3VERy?= =?utf-8?B?TElHenRJYVhOdllRajhqd2o4SWl0QzRnbkErUHpjdjdYSGs0UFZNR3pLOHlr?= =?utf-8?B?cm9rdXp3RHhpN0x0QnRCSXlsL3AwbHZ1OUlDdDkwN0xzUEJPU05VeDh2WUNX?= =?utf-8?B?Y0hXTEJtVit1SVA3OWxuS0QvQ3JxUkwxYXk0YnhpMnZGT0t0WVNac2ZkSlFM?= =?utf-8?B?ak9GWDdlemh1MG55V3V1dThmclFkdmk2bmNIa3FkbllPa0NlWTcrS0ZCVWFj?= =?utf-8?B?T0NNakVzTUI2aS9tdGFBMTlkNFBjbUtSWFVQcDBoY2dHY2lRQ01wayszbHVs?= =?utf-8?B?ZlRnU2haR0IrVExHb09HUTc5TkZ1ckMzSG4xa2ZQOHNFcE1VZFZuSjhsMWRk?= =?utf-8?B?VW81dnpSYU9mTTI1L3VHY3VPbkdPdEswVGsyZGo0ZjB4SW5VamNvVGZ2Tkti?= =?utf-8?B?ME1JNEFBVVpaUURMSHF4RENLa0xyQzRUNnc4WVZqQW5xcS9RVkZiUGJzRmNX?= =?utf-8?B?QWNiWnZXQ3dmZWkzbFpwYWhiVjBWM2hXVkt6elpnMnpJMk5yQmtjdWdzRWN4?= =?utf-8?B?RHBXalluckZXUU5iRlRheERQUVdLL3pldDRWeXdsL0JCaWtnRi81TzJ6YTJ2?= =?utf-8?B?QlhtU0JWMFpYVEprSlJNVkJvcFVOVFJqVXZydkdINEZGc1c0bitGNGJsMVdj?= =?utf-8?B?THRYc0N6RmJSR3hlRk5mYnVKRjFMb204V012YXFkRi9DalJSczFiTzZVL1pl?= =?utf-8?B?WmVYTTZ5RG9TWTZWdTZOZG92T3c1bkttMWZUNmZOTjVoQnFKenB0ZUNZTmVt?= =?utf-8?B?WjVrK2FRN1UwcjZ3TGRpTmtpS0o5QVZUdmN1QldRSmtQYmkyOWR6UGVrMCtR?= =?utf-8?B?NGFrclRnb0xlMjM1Z3B6YVdTVy9QVWlWTlFWbzNiR0NlQjR3OG5rR2VnbTM3?= =?utf-8?B?dDh2QmVzSHdtUUhqWGVrZWUyR2JnaWRZLzEyNkVxeW1JbWJqTFI2ZFM1eE9l?= =?utf-8?B?NDdmbkFENzVxbUR2THpsRGFic1BJa3F5d2ZaS2M3TUFUZGw3SmZ0L3RnRlJX?= =?utf-8?B?bkUvTjZlZ2tuUUtnd09tdnZZR0xhQWVaeEN5TFVHUEc1UWY3V1Z2ZUtPTzJo?= =?utf-8?B?ejIzNjRxcCtBSVhtL05SMnVaMTVlb1hpVmNDTWlEWk5jc3FzWGFVVjF1TXZp?= =?utf-8?B?ZFRJOXBzUFdCS2taSDZMeEUxaUs3ekQ0a2VIT0NVMUpBajNiNXk4dEI3ZXRH?= =?utf-8?B?UWJLNXE4bmZSdUNRRlBCQ0xIRENoMnFvNWx5Ym1CaExYRTlTSEdlUDJ4Y29G?= =?utf-8?B?SjV1VFl6RksxMkFtWFFjSG85NmFhYUFpQ28yZ2tBPT0=?= X-Microsoft-Exchange-Diagnostics: 1; MWHPR12MB1616; 6:WW9Uu87so5txrxl7x1g56KebP6SCxPBImExYchJ0l4ZRfizQK+9TWrUWZjA2ve00TG9JmNkfHFaWNBFsYBMWtxjnsYC0tPBmBxXiFwwToCE28iuE8hcoKtgLWryP0Fl/mw7QP8Qev4AUhutIpQO3KrUxdm7lGC1INYhkPw7LBO9f9L85uyhopAQ8wdqBNex/le0cgwn8ortNrJAIxMx1v50fr2//+QlBf6A/mpjBI8zA1b75gIGFUFG7OSq+ndj6Krr0HbF06exm1SBw0wn6pdjdhDHiuEJ4uJShR4fvcBjaCuT76heKrDiow7I5WPw86sdLHdZbynslIJadboyXSiz9zhQKdgxaXjq2bjGhzC2rVDXaQbVTKffAGB1qU8n7ZxnxwraYrhMYy2tX+CvqjpMCaLgzit65b26ayaw33Zo=; 5:rAOFygDNvEoUFnmUAirbKbraj/o+WQRCRa0UiBeltI5Bxy58yJK9tUL6ka4SyUP/iXZ3xvfN4V4MvtWhVoVjLurX/fU6O20uvl2FKQhrx6UeaP2683qm7qPbiC+V3yuSbHHi/NklEnFYkdGwHhsD+UJmNvgWc6XRKctLgOTb3qc=; 24:UfnecHKTnexDlYuW6yYy5u1RCI9k9lFEu03cepjpXIWSFGlcrTmJjL2fw0X7qx2e0zhjVzQIAkNjthNiu8GLfN5hjpQREXBL025aZ2K7ia8= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; MWHPR12MB1616; 7:YWIsLwQeTX+weErXO3oyoeClKjGNySVGvdg+Jlbe/nLQvA7Q862kGZdDEO/Iaj4DZ1GHTHQV+64pxjJUwegkUoZ3OOvcu2TGg7vrIPgyjwak/4u0MAot+oBK6k0vBaNfiTX7vJzGSP+Edk2L5RqO4/RjOqVGhqINdmU9NQAjv2oCbIYmZDm4h1TOXtK5bL7AknaZhpz7C81+MrfM3yTxk6iHj1mGxqNjStWzbZswULFdTC8gqMtL8CLVjTTpGGztyJGCYH3NA0GRxyoV8fWmHNaI2bLaP7t2gCzsrtvsIQlhkyXgjWT4IrWuQZlDpVDMYS3ghLfgqEQPVBiG2zTetQ==; 20:3t12cPDdUvJQ03j7Zd2nAxVYB4+2agvfCZ32mJRtgKEwyUTt9jbQKsr/nuIMLvbjuPRkbt/DAhfnDPJo6HbCYqHtBq/o652DTRy/edT8CyPeFo6mRP32zthj7C/wrS8Eh9UK6JawO0GMVKw/ghKVEnSDz5zXVh1KvNI8LGs+M1w7JUIIyvSGhRcYNkgkzmXSXf+1FEeMt8ZDkt3lJ2xansLwJPWeQPE92MA8Fcs3br+eUd4yR62V8uWL+tGKd0x1 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Mar 2017 20:52:39.5970 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR12MB1616 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.32.55 Subject: [Qemu-devel] [RFC PATCH v4 08/20] sev: add Secure Encrypted Virtulization (SEV) support X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Thomas.Lendacky@amd.com, brijesh.singh@amd.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Adds initial support required to integrate Secure Encrypted Virtualization (SEV) feature. SEV is an extension to the existing AMD-V technology found on AMD processors. The SEV feature allows the memory contents of a virtual machine to be transparently encrypted with a key unique to the guest VM. In QEMU command line, SEV can be enabled via memory-encryption property defined in security-policy object. Patch adds the following new objects: - sev-launch-info: provides the properties to get and set various parameters used to boot SEV guest from unencrypted boot images. In this mode the OS images (kernel, initrd and bios) provides by guest owner are unencrypted. The SEV guest boot process would encrypt the images using the guest owners PDH key provided through this object. - sev-guest: a top level object to transition a guest into SEV-enabled e.g to launch SEV guest from unencrypted boot images # $QEMU \ -object sev-launch-info,id=3Dlaunch0 \ -object sev-guest,id=3Dsev0 \ -object security-policy,id=3Dsecure0,memory-encryption=3Dsev0 \ -machine ....,security-policy=3Dsecure0 Signed-off-by: Brijesh Singh --- Makefile.target | 2=20 docs/amd-memory-encryption.txt | 121 ++++++++++++++++++++++ include/sysemu/sev.h | 91 ++++++++++++++++ kvm-all.c | 22 ++++ kvm-stub.c | 5 + qemu-options.hx | 27 +++++ sev.c | 225 ++++++++++++++++++++++++++++++++++++= ++++ 7 files changed, 492 insertions(+), 1 deletion(-) create mode 100644 docs/amd-memory-encryption.txt create mode 100644 include/sysemu/sev.h create mode 100644 sev.c diff --git a/Makefile.target b/Makefile.target index 924304c..5150c12 100644 --- a/Makefile.target +++ b/Makefile.target @@ -142,7 +142,7 @@ ifdef CONFIG_SOFTMMU obj-y +=3D arch_init.o cpus.o monitor.o gdbstub.o balloon.o ioport.o numa.o obj-y +=3D qtest.o bootdevice.o obj-y +=3D hw/ -obj-$(CONFIG_KVM) +=3D kvm-all.o +obj-$(CONFIG_KVM) +=3D kvm-all.o sev.o obj-y +=3D memory.o cputlb.o obj-y +=3D memory_mapping.o obj-y +=3D dump.o diff --git a/docs/amd-memory-encryption.txt b/docs/amd-memory-encryption.txt new file mode 100644 index 0000000..03e31c0 --- /dev/null +++ b/docs/amd-memory-encryption.txt @@ -0,0 +1,121 @@ +Secure Encrypted Virtualization (SEV) is a feature found on AMD processors. + +SEV feature allows the memory contents of a virtual machine (VM) to be +transparently encrypted with a key unique to the guest VM. The memory +controller contains a high performance encryption engine which can be +programmed with multiple keys for used by different VMs in the system. +The programming and management of these keys is handled by the AMD Secure +Processor firmware which exposes commands for these tasks. + +At highest level the SEV key management APIs are divided into two sections: + +* Platform management commands +* Guest management commands + +In this doc we will focus on Guest management commands.=20 + +SEV is capable of supporting both light-weight virtual containers as well = as +conventional VM within an enterprise cloud environment. In either case, th= ere +are two parties concerned in the deployment of SEV guest: the guest owner = and +the platform owner. For example, in a cloud environment, the platform owner +would be cloud vendor and the guest owner would be the user that wishes to= run +their workload in the cloud. + +1. Guest Management Commands +----------------------------- + +The guest management commands provide the support for common guest lifecyc= le +events. These events include launching, running, snapshotting, migrating a= nd +decommission guest. The guest management commands are issued through +KVM_MEMORY_ENCRYPTION_OPS ioctl. + +1.1 Launch + +When a guest is launched, its memory must first be encrypted using guest o= wners +key before SEV can be enabled in hardware. There are two types of launches: + +1.1.1 unencrypted + +Boot images (such as bios, kernel, initrd) provided by the guest owner to +bootstrap the guest is unencrypted. The firmware provides interfaces to +bootstrap the memory encryption for this purpose: LAUNCH_START, LAUNCH_UPD= ATE, +, LAUNCH_MEASURE and LAUNCH_FINISH. These four commands together generate = a fresh +memory encryption key for the guest, encrypt guest memory and provide an +attestation of the successful launch. + +LAUNCH_START is called first to create a cryptographic launch context with= in the +firmware. To create this context, guest owner must provide security policy, +public Diffie-Hellman key (PDH defined in section 12 of SEV key API manage= ment) +and session data. If PDH certificate blob is not provided by guest owner t= hen +firmware will auto generate a key and use that key for memory encryption. = Guest +owners PDH key is used to establish a cryptographic session with the guest= owner +to negotiate keys used for attestation. The guest security policy is a 4-b= yte +data structure containing several flags that restrict what the hypervisor = can do +on the running SEV guest. If the hypervisor requests this guest to share = key +with another SEV guest then hypervisor must set 'key-sharing' field in gue= st +security policy and a shared SEV handle must be provided in LAUNCH_START c= ommand. + +LAUNCH_UPDATE_DATA encrypts the memory region using the cryptographic cont= ext +created via LAUNCH_START command. If required this command can be called m= ultiple +times to encrypt different memory regions. The command also calculates the +measurement of the memory contents as it encrypts. + +LAUNCH_MEASURE command can be used to retrieve the measurement of encrypte= d memory. +This measurement is a signature of the memory contents that can be sent to= the +guest owner as an attestation that the memory was encrypted correctly by t= he +firmware. The guest owner may wait to provide the guest confidential infor= mation +until it can verify the attestation measurement. Since the guest owner kno= ws the +initial contents of the guest at boot, the attestation measurement can be +verified by comparing it to what the guest owner expects. + +LAUNCH_FINISH command finalizes the guest launch and destory's the cryptog= raphic +context. + +See SEV API Spec [1] 'Launching a guest' usage flow (Appendix A) for the +complete flow chart. + +SEV support can be enabled via 'memory-encryption' parameters defined in +security-policy object. + +Input to LAUNCH_START command can be provided through the properties defin= ed in +'sev-launch-info' object. + +e.g to launch SEV guest from unencrypted boot images + +# ${QEMU} \ + -object sev-launch-info,id=3Dlaunch0\ + -object sev-guest,id=3Dsev0\ + -object security-policy,id=3Dmypolicy,memory-encryption=3Dsev0\ + -machine ...,security-policy=3Dmypolicy + +1.1.2 pre-encrypted + +1.2 Snapshot + +1.3 Restore + +1.4 Live Migration + +1.5 Debugging + +Since memory contents of SEV guest is encrypted hence hypervisor access to= the +guest memory will get a cipher text. If guest policy allows debugging, then +hypervisor can use SEV debug command to decrypt guest memory region for de= bug +purposes. + +2. References +----------------- + +AMD Memory Encryption whitepaper: +http://amd-dev.wpengine.netdna-cdn.com/wordpress/media/2013/12/AMD_Memory_= Encryption_Whitepaper_v7-Public.pdf + +Secure Encrypted Virutualization Key Management: +[1] http://support.amd.com/TechDocs/55766_SEV-KM API_Specification.pdf + +KVM Forum slides: +http://www.linux-kvm.org/images/7/74/02x08A-Thomas_Lendacky-AMDs_Virtualiz= atoin_Memory_Encryption_Technology.pdf + +AMD64 Architecture Programmer's Manual: + http://support.amd.com/TechDocs/24593.pdf + SME is section 7.10 + SEV is section 15.34 diff --git a/include/sysemu/sev.h b/include/sysemu/sev.h new file mode 100644 index 0000000..dbc3c6c --- /dev/null +++ b/include/sysemu/sev.h @@ -0,0 +1,91 @@ +/* + * QEMU Secure Encrypted Virutualization (SEV) support + * + * Copyright: Advanced Micro Devices, 2016-2017 + * + * Authors: + * Brijesh Singh + * + * This work is licensed under the terms of the GNU GPL, version 2 or late= r. + * See the COPYING file in the top-level directory. + * + */ + +#ifndef QEMU_SEV_H +#define QEMU_SEV_H + +#include + +#include "qom/object.h" +#include "qapi/error.h" +#include "sysemu/kvm.h" + +#define TYPE_QSEV_LAUNCH_INFO "sev-launch-info" +#define QSEV_LAUNCH_INFO(obj) \ + OBJECT_CHECK(QSevLaunchInfo, (obj), TYPE_QSEV_LAUNCH_INFO) + +typedef struct QSevLaunchInfo QSevLaunchInfo; +typedef struct QSevLaunchInfoClass QSevLaunchInfoClass; + +/** + * QSevLaunchInfo: + * + * The QSevLaunchInfo object provides parameters to launch a SEV + * guest from unnencrypted boot images. SEV will encrypt the boot images u= sing + * guest owner's key before launching the guest. + * + * # $QEMU -object sev-launch-info,id=3Dlaunch0,dh-cert=3D0000,session=3Da= bcd \ + * .... + */ +struct QSevLaunchInfo { + Object parent_obj; +}; + +struct QSevLaunchInfoClass { + ObjectClass parent_class; +}; + +#define TYPE_QSEV_GUEST_INFO "sev-guest" +#define QSEV_GUEST_INFO(obj) \ + OBJECT_CHECK(QSevGuestInfo, (obj), TYPE_QSEV_GUEST_INFO) + +typedef struct QSevGuestInfo QSevGuestInfo; +typedef struct QSevGuestInfoClass QSevGuestInfoClass; + +/** + * QSevGuestInfo: + * + * The QSevGuestInfo object is used for creating a SEV guest. + * + * e.g to launch a SEV guest from unencrypted boot images + * + * # $QEMU -object sev-launch-info,id=3Dlaunch0 \ + * -object sev-guest,id=3Dsev0,sev-device=3D/dev/sev \ + * -object security-policy,id=3Dsecure0,memory-encryption=3Dsev0 \ + * -machine ...security-policy=3Dsecure0 + */ +struct QSevGuestInfo { + Object parent_obj; + + char *sev_device; + + QSevLaunchInfo *launch_info; +}; + +struct QSevGuestInfoClass { + ObjectClass parent_class; +}; + +struct SEVState { + QSevGuestInfo *sev_info; +}; + +typedef struct SEVState SEVState; + + +bool sev_enabled(void); +void *sev_guest_init(const char *keyid); +void sev_set_debug_ops(void *handle, MemoryRegion *mr); + +#endif + diff --git a/kvm-all.c b/kvm-all.c index bba0f39..1fa6413 100644 --- a/kvm-all.c +++ b/kvm-all.c @@ -37,6 +37,7 @@ #include "trace-root.h" #include "hw/irq.h" #include "sysemu/security-policy.h" +#include "sysemu/sev.h" =20 #include "hw/boards.h" =20 @@ -1808,6 +1809,27 @@ static int kvm_init(MachineState *ms) =20 kvm_state =3D s; =20 + if (ms->security_policy) { + char *id; + + /* if security-policy is enabled then check whether memory encryp= tion + * property is defined. If so, enable hardware memory encryption. + */ + id =3D security_policy_get_memory_encryption_id(ms->security_polic= y); + if (id) { + + /* check if its SEV guest policy */ + kvm_state->ehandle =3D sev_guest_init(id); + if (!kvm_state->ehandle) { + fprintf(stderr, + "failed to initialize SEV guest\n"); + goto err; + } + kvm_state->memcrypt_debug_ops =3D sev_set_debug_ops; + g_free(id); + } + } + if (kvm_eventfds_allowed) { s->memory_listener.listener.eventfd_add =3D kvm_mem_ioeventfd_add; s->memory_listener.listener.eventfd_del =3D kvm_mem_ioeventfd_del; diff --git a/kvm-stub.c b/kvm-stub.c index 20920aa..1a9838d 100644 --- a/kvm-stub.c +++ b/kvm-stub.c @@ -14,6 +14,7 @@ #include "qemu-common.h" #include "cpu.h" #include "sysemu/kvm.h" +#include "sysemu/sev.h" =20 #ifndef CONFIG_USER_ONLY #include "hw/pci/msi.h" @@ -135,6 +136,10 @@ int kvm_memcrypt_encrypt_launch_data(uint8_t *ptr, uin= t64_t len) return 1; } =20 +bool sev_enabled(void) +{ + return false; +} =20 #ifndef CONFIG_USER_ONLY int kvm_irqchip_add_msi_route(KVMState *s, int vector, PCIDevice *dev) diff --git a/qemu-options.hx b/qemu-options.hx index 536db1b..2b2d8c3 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -4161,6 +4161,33 @@ can be set to the unquie ID of memory encryption obj= ect. =20 On AMD processor, memory encryption is supported via 'sev-guest' object. =20 +@item -object sev-guest,id=3D@var{id},sev-device=3D@var{string} + +Create a Secure Encrypted Virtualization (SEV) guest object, which be used= to +provide the memory encryption support on AMD processors. + +e.g to launch a SEV guest +@example + # $QEMU \ + -object sev-launch-info,id=3Dlaunch0,sev-device=3D/dev/sev0 \ + -object sev-guest-info,id=3Dsev0 \ + -object security-policy,id=3Dsecure0-guest,memory-encryption=3Dsev0 \ + -machine ...,security-policy=3Dsecure0 +@end example + +@item -object sev-launch-info,id=3D@var{id} + +Create a SEV launch info object, which can be used to pass various paramet= ers +required to boot SEV guest from unencrypted boot images. +The id parameter is a unique ID that should be used in sev-guest-info obje= ct +when creating a unencrypted SEV guest. + +e.g to launch SEV guest from unencrypted boot images +@example + # $QEMU \ + -object sev-launch-info,id=3Dlaunch0\ + -object sev-guest,id=3Dsev0 \ +@end example ETEXI =20 =20 diff --git a/sev.c b/sev.c new file mode 100644 index 0000000..3e02453 --- /dev/null +++ b/sev.c @@ -0,0 +1,225 @@ +/* + * QEMU SEV support + * + * Copyright Advanced Micro Devices 2016-2017 + * + * Author: + * Brijesh Singh + * + * This work is licensed under the terms of the GNU GPL, version 2 or late= r. + * See the COPYING file in the top-level directory. + * + */ + +#include "qemu/osdep.h" +#include "qapi/error.h" +#include "qom/object_interfaces.h" +#include "qemu/base64.h" +#include "sysemu/kvm.h" +#include "sysemu/sev.h" +#include "sysemu/sysemu.h" +#include "trace.h" + +#define DEBUG_SEV +#ifdef DEBUG_SEV +#define DPRINTF(fmt, ...) \ + do { fprintf(stdout, fmt, ## __VA_ARGS__); } while (0) +#else +#define DPRINTF(fmt, ...) \ + do { } while (0) +#endif + +#define DEFAULT_SEV_DEVICE "/dev/sev1" + +static MemoryRegionRAMReadWriteOps sev_ops; +static bool sev_allowed; +static int sev_fd; + +static void +qsev_guest_finalize(Object *obj) +{ +} + +static char * +qsev_guest_get_sev_device(Object *obj, Error **errp) +{ + QSevGuestInfo *sev =3D QSEV_GUEST_INFO(obj); + + return g_strdup(sev->sev_device); +} + +static void +qsev_guest_set_sev_device(Object *obj, const char *value, Error **errp) +{ + QSevGuestInfo *sev =3D QSEV_GUEST_INFO(obj); + + sev->sev_device =3D g_strdup(value); +} + +static void +qsev_guest_class_init(ObjectClass *oc, void *data) +{ + object_class_property_add_str(oc, "sev-device", + qsev_guest_get_sev_device, + qsev_guest_set_sev_device, + NULL); + object_class_property_set_description(oc, "sev-device", + "device to use for SEV command", NULL); +} + +static QSevGuestInfo * +lookup_sev_guest_info(const char *id) +{ + Object *obj; + QSevGuestInfo *info; + + obj =3D object_resolve_path_component( + object_get_objects_root(), id); + if (!obj) { + return NULL; + } + + info =3D (QSevGuestInfo *) + object_dynamic_cast(obj, TYPE_QSEV_GUEST_INFO); + if (!info) { + return NULL; + } + + return info; +} + +static void +qsev_guest_init(Object *obj) +{ + QSevGuestInfo *sev =3D QSEV_GUEST_INFO(obj); + + object_property_add_link(obj, "launch", TYPE_QSEV_LAUNCH_INFO, + (Object **)&sev->launch_info, + object_property_allow_set_link, + OBJ_PROP_LINK_UNREF_ON_RELEASE, NULL); + + sev->sev_device =3D g_strdup(DEFAULT_SEV_DEVICE); +} + +/* sev guest info */ +static const TypeInfo qsev_guest_info =3D { + .parent =3D TYPE_OBJECT, + .name =3D TYPE_QSEV_GUEST_INFO, + .instance_size =3D sizeof(QSevGuestInfo), + .instance_finalize =3D qsev_guest_finalize, + .class_size =3D sizeof(QSevGuestInfoClass), + .class_init =3D qsev_guest_class_init, + .instance_init =3D qsev_guest_init, + .interfaces =3D (InterfaceInfo[]) { + { TYPE_USER_CREATABLE }, + { } + } +}; + +static void +qsev_launch_finalize(Object *obj) +{ +} + +static void +qsev_launch_class_init(ObjectClass *oc, void *data) +{ + /* add launch properties */ +} + +static void +qsev_launch_init(Object *obj) +{ +} + +/* guest launch */ +static const TypeInfo qsev_launch_info =3D { + .parent =3D TYPE_OBJECT, + .name =3D TYPE_QSEV_LAUNCH_INFO, + .instance_size =3D sizeof(QSevLaunchInfo), + .instance_finalize =3D qsev_launch_finalize, + .class_size =3D sizeof(QSevLaunchInfoClass), + .class_init =3D qsev_launch_class_init, + .instance_init =3D qsev_launch_init, + .interfaces =3D (InterfaceInfo[]) { + { TYPE_USER_CREATABLE }, + { } + } +}; + +static int +sev_mem_write(uint8_t *dst, const uint8_t *src, uint32_t len, MemTxAttrs a= ttrs) +{ + return 0; +} + +static int +sev_mem_read(uint8_t *dst, const uint8_t *src, uint32_t len, MemTxAttrs at= trs) +{ + return 0; +} + +void * +sev_guest_init(const char *id) +{ + Object *obj; + SEVState *s; + char *sev_device_name; + + s =3D g_malloc0(sizeof(SEVState)); + if (!s) { + return NULL; + } + + s->sev_info =3D lookup_sev_guest_info(id); + if (!s->sev_info) { + fprintf(stderr, "'%s' not a valid '%s' object\n", + id, TYPE_QSEV_GUEST_INFO); + goto err; + } + + sev_device_name =3D object_property_get_str(OBJECT(s->sev_info), + "sev-device", NULL); + sev_fd =3D open(sev_device_name, O_RDWR); + if (sev_fd < 0) { + fprintf(stderr, "%s:%s\n", sev_device_name, strerror(errno)); + goto err; + } + g_free(sev_device_name); + + obj =3D object_resolve_path_type("", TYPE_QSEV_LAUNCH_INFO, NULL); + if (obj) { + object_property_set_link(OBJECT(s->sev_info), obj, "launch", + &error_abort); + } + + sev_allowed =3D true; + return s; +err: + g_free(s); + return NULL; +} + +void +sev_set_debug_ops(void *handle, MemoryRegion *mr) +{ + sev_ops.read =3D sev_mem_read; + sev_ops.write =3D sev_mem_write; + + memory_region_set_ram_debug_ops(mr, &sev_ops); +} + +bool +sev_enabled(void) +{ + return sev_allowed; +} + +static void +sev_policy_register_types(void) +{ + type_register_static(&qsev_guest_info); + type_register_static(&qsev_launch_info); +} + +type_init(sev_policy_register_types); From nobody Sun Apr 28 19:04:07 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1489008653942782.9596999199201; Wed, 8 Mar 2017 13:30:53 -0800 (PST) Received: from localhost ([::1]:58532 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cljAa-0000lV-Kg for importer@patchew.org; Wed, 08 Mar 2017 16:30:52 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52177) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clj6R-0006Nx-Fu for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:26:36 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1clj6O-0005dd-7Q for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:26:35 -0500 Received: from mail-sn1nam01on0070.outbound.protection.outlook.com ([104.47.32.70]:22852 helo=NAM01-SN1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1clj6N-0005dH-V2 for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:26:32 -0500 Received: from [127.0.1.1] (165.204.77.1) by MWHPR12MB1616.namprd12.prod.outlook.com (10.172.56.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.947.12; Wed, 8 Mar 2017 20:52:49 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=wGJGGFV6lgLrLg/xR8XwL6oKTzYhIKGuetT0Qn2ArNg=; b=0PKZll58M7/T43ke228+lpqQ5BbtVbaRDLSvgSYebJIw+++oCaJdI9iIMOOjesqEaZQgwkTDj5YgXrGqG0X7iX7n++LXHvv5vg6L7xcUwXMVhSQdO7F/0ivOPK9nf+kuRuQpFgoioeF+US60m02e2xzduZ8cFdw60M6xxqgFBRo= Authentication-Results: amd.com; dkim=none (message not signed) header.d=none;amd.com; dmarc=none action=none header.from=amd.com; From: Brijesh Singh To: , , , , , , , , Date: Wed, 8 Mar 2017 15:52:46 -0500 Message-ID: <148900636610.27090.7472863810631270644.stgit@brijesh-build-machine> In-Reply-To: <148900626714.27090.1616990932333159904.stgit@brijesh-build-machine> References: <148900626714.27090.1616990932333159904.stgit@brijesh-build-machine> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: MWHPR21CA0004.namprd21.prod.outlook.com (10.173.47.14) To MWHPR12MB1616.namprd12.prod.outlook.com (10.172.56.17) X-MS-Office365-Filtering-Correlation-Id: c25837ab-f9b1-45cf-0d96-08d466651543 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081); SRVR:MWHPR12MB1616; X-Microsoft-Exchange-Diagnostics: 1; MWHPR12MB1616; 3:7eE/gicLLAqfjjqhvIgHPn97b1dj/Ehh2745ebxhKaX3XPke4bOxpfog6GeVgfZo1uAwIntNPs53xjU3LVP6Hz6WE3+ge2w+R/oBR21BrrB582sN8XYyUygeWwrMkizGkl/Pf5KhVSHBjQJkOCPkfS4bMdyXOvfhbhp77kRRa6yCPlRbW23GvawBs3UKPHRDCPKr8d1BNnwNuUUeWX3XKOdG5I+0jAYNnClr0xkzySAFmv+PpUAkdtsZxQ9lEd93dzaqKNP4I1cZBrqHhRiMPH1W3PJkDrlfppm3/ljuOfg=; 25:B7a+ZaHWRO1VodlM4Di0UFcX/fpkR54P+MxotvNq4IcmLH19izfeD8VlNlLp/OKxDndUeoWllJEkUELUkW31umJiTONO+snLAbquu2DmGjmWZPUSHw2R2AgrF6/sRsaMud2SP56Z7JNgszILKJjbTC04g7fCk7mIrOIV5zVWUcvQ/JpeF5aVJQeiBCvlPmqJR5O3wvYYERhy56HjQCLiq4JglSqQUY3fzWk3ncbeSkRBLnkACj6S9I1ggjnXo/Fe/rJ9CSkEEDibvAnjGVJxGx5ToZePcd8sPESobBkTsuZ8SKSaJcxBB3S5aHZUxbsEnMfedm9Vcv2EB91J5ZxTSoQoDafhNh0SjqRCdVuyMSoO/HKEzQ31hAD/JaMUTbPJSsrDbmIj976fjKQpHYXdq6/fqCKgbvKXUYI7Rym2tG29/WdIQFeGGLwYDpaQ7VO2 X-Microsoft-Exchange-Diagnostics: 1; MWHPR12MB1616; 31:ZQbMUhB6Ust1YMncmmQFCyNrPtkABzCYIkmF94GFs0DxdfWGEaywZwIjT5dD1YEY5oQhxLNHSVcpJgyhPpWT+kzmNS11g08fYFezCGTSmOdpcsg0BGM5g8+zrF/N8r9Npipj5deUFvgEd68fu87xIVDa8Pq2lVL/93SsX6O6Zb46sEKMQsLB1Pu4I4GvdAX0RrEtaGMMq1R12Sn30Mw+7ry6TxhDxQkxu6q0+82N270UOFIkaisBe52YzJL4vq4t; 20:r/3zU0rBy3wvMMoo3FIv5NnpVRjmoVc3y/GvOzYE9RblXrl+W1hw3kl78vkAf+6xphspzvKAfxKdMXTnEl86t7MRsiLDXp2L1K1Txf21bkqryCl8MaXiDZAQs/dHPN626G0CX3pgxIrBTv/M1vWIYLTfYXKYLDkZNBJ7vQ6BGzaYV5tYQmXUMC8wardd5CAyvcmJgiJYDBzayYA95p9pwjCjnfe3Q2iWaxpyey3/X2+6tJ0NQAEYidns81FVygpAuxINvoB9o8a2us26w+7meGNrMqRtsm1MMOrkNOQ4jK36sKSFyKrWcNACqc2QT3Ia1g1iBmkAXhFnCKPKGnwGmzQJlJBqctAmIhV9GQ8frqB4oPhrbv/J2XlU9wUfFUVr2E1hDRl77DoaZ3g+Y/9wx1poAVT0OZykZXJ/cRUahhw3GwiDVI3c+eyV9eicz7IB1qXYTfPvWz/WxoxWHavr+O1rlqE4vSSNLJHLLj+coFOnLaGgUirs+qhAdFpI14py X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6055026)(6041248)(20161123558025)(20161123555025)(20161123560025)(20161123562025)(20161123564025)(6042181)(6072148); SRVR:MWHPR12MB1616; BCL:0; PCL:0; RULEID:; SRVR:MWHPR12MB1616; X-Microsoft-Exchange-Diagnostics: 1; MWHPR12MB1616; 4:cIw9f/T1c3PfF9oax7l0CoRSVpYXid73KR5lyb2yvtrC/aADVLjPIpV0O1mJfr+b4jEBoFTT+uLZKuEehR1Q7du1Orkgsc5b985o9LpdHb9/2CGnhIAvPm6lQ0cEfcIMbeXJDV16zFcpIvPhH4JuPKk5WQa0yR/jMOfjI4Plze5kf4kvryKpnv3GwlqvV80WIaywfrnb5wXSS803cTgBhZ7LDS4jYCoguliyP5CBTqhfG6u+DsRINVNol0csCGpKa2jpkSpEAR63+E3aLFsJeouOLowTzHo/iXzRzgaShObBHXXwIuidHLp2Tj5P99coRqjO34Nhi+xP6dYeeaSAbZKUfrstuMlJCKpxn2mAmf8RJq/9ZWU5dIB6lofiGIve4cEFstg9yF5zGJkq/KUGDyJ8yPvicDhgSRt84Awnf9DGahS1e2KxilYYaWh9WVaZrS7iK5XCEE9L/vGyu6wRT26zwon4ZlL2pOYnB/pIZP0UgsirVJPgXMeWjAUO+58WNbWm8pT2xbKh2AVrSg+C2hEkF8oKaOjEbYWvWq4m1Jv8jxWDSj7L2MjgZV5gCCE9WhyElOd0YI3Z2IlWcK3v0uB0g58eKuCGygEbxpfwS6cKPpX3CEMsD+J8mg0MdY+LZARPlQRgEwvofbrhzDwM5nkShPk663Jn/lBHKUUyUchCYzbRAnj+EqnarF19a0eQ X-Forefront-PRVS: 02408926C4 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6049001)(6009001)(86362001)(5660300001)(2201001)(33716001)(3846002)(54906002)(103116003)(4326008)(305945005)(189998001)(53936002)(9686003)(38730400002)(7736002)(6486002)(77096006)(90366009)(6116002)(230700001)(25786008)(50466002)(33646002)(81166006)(76176999)(42186005)(66066001)(8676002)(6666003)(23676002)(83506001)(47776003)(54356999)(2906002)(2950100002)(50986999)(217873001); DIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR12MB1616; H:[127.0.1.1]; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtNV0hQUjEyTUIxNjE2OzIzOmJHeVJyQWRjbXdyOE1RQWZaa1QvUjZzUGJN?= =?utf-8?B?SVB2T3VKa2h5Y3BNM0VYS1RJazZsZkg1RlpmSkU3ZVpkdVJIV3hMdERXRzZJ?= =?utf-8?B?QVpwbU9FdEhMNWF0MDF2TnZWRWFNMFZFV1dkZXZwRjZrbjVaNXFPOHBEYkI4?= =?utf-8?B?WmJVU1BUQ3crWXhLQTJONzQ5czdwNFhvM0dob0xmRkxuV3M3cEpqV0xmclRp?= =?utf-8?B?MmVkOEZxS3NRdDd2V3h3UUgwaUtvZmFjZWpqa2wrakpBek9EYVJFNmt1S1VO?= =?utf-8?B?dFZCVnNyUFdNSGZldUI5V24zTGwvUmRrc09hMjVndDVMSytORmpTYm5nUTFE?= =?utf-8?B?cXNpU2FGcjVpamNZUlhNL3kwMnBSelJkT093WHNSWEwrcGVZTzRHV1YrOGFG?= =?utf-8?B?elZucmpDaFZGTlBhYTkwYjVScnVFQ2RoTERxRkFoVWdLbjNuWWNkc3k2TWVz?= =?utf-8?B?UHhuWURZN2NUalFDRS92VG1ld1gvQUNaRmsyeDV4WGRaV0s4cFhKdzMvc1Jq?= =?utf-8?B?NlZWRjJ6UWpDMmVJMjI5U2JSbWZLcVhSQlZ2dVpNL0t0LzNUQ1NqRkVYeW1Y?= =?utf-8?B?bUZ1SUNXbUpkNG56RzZGbTJ4WGR3aDZZZWVhNnRIZWxvQzNIdEZXRHcrTS9X?= =?utf-8?B?V25yZHlneVZlODRaa0xySlFpWnZFaWpUZit6TWdFUW1ZTlRoeXRaL2pyQU5L?= =?utf-8?B?Q0ZkcFZSV0ZGMXpUVlBIM3kvOU5vQ0QxSEhXSUtGbXc0K2U4dko3eDZJeWNH?= =?utf-8?B?dlRLbUR5RVBuS0h2Z01EUVVaTjRmYkZ5aHBDeG03b2hRay9HWWE3WVNjNEFT?= =?utf-8?B?NTVjVm9VcnhuT1RFK0xLRDdwZlZPV0lMVXkwWkxCTTRJSi9NcE8ydWthQ0ha?= =?utf-8?B?WTZnOUttbUVScDE2bXRzRS9DbDNlOVFDbnNGVWNwSUVrWW5lckFZbXlCeE9M?= =?utf-8?B?ODcxM2xLQjlWTHphUU1yUCsxdW80SVZ4c0I3amRXS0MzQXVLdXFiRW5hdmh1?= =?utf-8?B?V05IOEhhQ2R6M0xYQVI0V0ZTNXJHMzlGL3VucXpvUFl5MWMxTTQ2VE4wc09Z?= =?utf-8?B?cXB3Y2tyTG81eUExU1ZHdVU1aFVjN3RXSlQwcUxVYXM5cEtCUFhYQmNMNnRn?= =?utf-8?B?ZkhKajZHSHY0RGpFTDh2T0ZWTnVNRll4Z0MrUUZLQWxTcGZnazhtNW1yRlZr?= =?utf-8?B?SjBxQWs0VGVEbk93S2RLM0NMLzJYSll4cnhkOEZpYmliczQ1TzNyelVwT3Ri?= =?utf-8?B?VGh0d2pSeGsvVWFaM2crS3paYjFHaUJvVWQyay9ucytWcjUza0h0RzVsT1dR?= =?utf-8?B?bSttdm1uNzY4Znc9PQ==?= X-Microsoft-Exchange-Diagnostics: 1; MWHPR12MB1616; 6:PDIUDZQaQFjksBKTXpp5vDUfVihOjkHCngQKUcU264DOGtozH8HkwnguMnjVOBt6+gnd6Mr8Z8n7JCKVWks5PGwv9GY9qwFumIuqvQ4DdVoJ9PZSRsbhZSENCY5Q/x82yKbs0h2Y5QRDndXdGH0bIJfW1opZA6FPLQvhF67eefgg9zbjOKxq0vPCi0KeWZGgT6ys3fWh8wijR5oGMYCx4i3TFxFbRQFfSUehdeTFPik2TBWHDIP9zQx+nW1kFyxeSaok4ObqZvkH5B7pP1sLlzfiC1TOsa/lGbFZ2GGAEm2iG1huUbphWdxiB0Cii3rFL3fUGM7Q2NPQrm9Bzah35wNOgwMBHjFfy8JCqwBVOjfDhOdUfWgWbdfQPnlbtkeiJlXKJb/hvnJXOccubeWxcme5owp9jsB5sh9o8iMpBus=; 5:eaA4emOFmr3tu1D4Q3khG5F2/IJp4MWR3NDyUQKFxwkvxPX4vtQrsmxR/rYlsej+o/V3/JkJnJZXsG7PGwOwwfv75sxnbmItVioenYVu4r/SCb5YiDX2jPoMZZZ1Mu6LlwUgiMXzRuG8fYphJ8pHE8yeT2YAOrRglakcsOjZ/iQ=; 24:nOIOuVlyPrp+D8XLaPSfvtwmYwt+RqgpEdUvU1u0pG/2XqC7in9h8ETBXWwhQTL6iCXnH/9lSQm498oOTa9egybu0WNoBcljesHOObQGV08= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; MWHPR12MB1616; 7:zxrkaF89vpDU+vKqf8CaicW0KdHOBeciRD97xhbZTOOnQEw5mV4vpSyyenPKCwlslkeMVd7AdibsDMpt17AwnaqTEe/SIrGuOfSmGr3yKY9vkyfQ9TlAXysrCfpeKjFYwOXtkYdvMVzo8LA9V4WfXCeG+6Mbij+vFX0eRmC7Qwqh4GlcCQ3+EWsp37Sj7qcqQ6Wr7TAdWvFlautGy4+cBhMekS8g4k3jvx9AzMoRauLc8hFYmiIiNDQlxxuLrag0+Vxvl1unudgbp93D+cp1f7TWyAum9rF71e+ptFSduTiAklCmvs70+/mnvPiXg/tks9aJGN1jMlR3LHd6CqLF4Q==; 20:nzzOeMv2tB6YLXlzTGa41C8sJms2o0RuJf3QGGWQTgqjNdzuNNdS3G+wPayPveDEUzU581iXnPNacbQ79CHSZ5fAG3dULAP9xKn0m58o89etwvxsXO4vpTLxFAbefxFpfEMOBbOxN6AwGS4EtyY5bO9If6vWCRVc8u0qcU0bjD574tR9z5+JAQe39ZXTgV0lMtzLBFg+6x7ZE2nEViH5XxESgUoy0OrTXX2m8kUUQH/3W5iFc8ShtyLKS1L3b6vO X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Mar 2017 20:52:49.3512 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR12MB1616 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.32.70 Subject: [Qemu-devel] [RFC PATCH v4 09/20] hmp: display memory encryption support in 'info kvm' X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Thomas.Lendacky@amd.com, brijesh.singh@amd.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 update 'info kvm' to display the memory encryption support. (qemu) info kvm kvm support: enabled memory encryption: disabled Signed-off-by: Brijesh Singh --- hmp.c | 2 ++ qapi-schema.json | 5 ++++- qmp.c | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/hmp.c b/hmp.c index 261843f..0b8b315 100644 --- a/hmp.c +++ b/hmp.c @@ -83,6 +83,8 @@ void hmp_info_kvm(Monitor *mon, const QDict *qdict) monitor_printf(mon, "kvm support: "); if (info->present) { monitor_printf(mon, "%s\n", info->enabled ? "enabled" : "disabled"= ); + monitor_printf(mon, "memory encryption: %s\n", + info->mem_encryption ? "enabled" : "disabled"); } else { monitor_printf(mon, "not compiled\n"); } diff --git a/qapi-schema.json b/qapi-schema.json index 6febfa7..e1dc847 100644 --- a/qapi-schema.json +++ b/qapi-schema.json @@ -185,9 +185,12 @@ # # @present: true if KVM acceleration is built into this executable # +# @mem-encryption: true if Memory Encryption is active (since 2.8) +# # Since: 0.14.0 ## -{ 'struct': 'KvmInfo', 'data': {'enabled': 'bool', 'present': 'bool'} } +{ 'struct': 'KvmInfo', 'data': {'enabled': 'bool', 'present': 'bool', + 'mem-encryption' : 'bool'} } =20 ## # @query-kvm: diff --git a/qmp.c b/qmp.c index fa82b59..7b61c43 100644 --- a/qmp.c +++ b/qmp.c @@ -69,6 +69,7 @@ KvmInfo *qmp_query_kvm(Error **errp) =20 info->enabled =3D kvm_enabled(); info->present =3D kvm_available(); + info->mem_encryption =3D kvm_memcrypt_enabled(); =20 return info; } From nobody Sun Apr 28 19:04:07 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1489008539342195.64151270040486; Wed, 8 Mar 2017 13:28:59 -0800 (PST) Received: from localhost ([::1]:58526 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clj8k-0007cT-2B for importer@patchew.org; Wed, 08 Mar 2017 16:28:58 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52088) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clj5r-0005wM-RX for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:26:00 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1clj5o-0005ZR-JZ for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:25:59 -0500 Received: from mail-co1nam03on0060.outbound.protection.outlook.com ([104.47.40.60]:55296 helo=NAM03-CO1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1clj5o-0005YQ-8c for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:25:56 -0500 Received: from [127.0.1.1] (165.204.77.1) by CY4PR12MB1608.namprd12.prod.outlook.com (10.172.72.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.947.12; Wed, 8 Mar 2017 20:52:57 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=3EvQEJbUdcnHPaVnrQ0Ssg2BSdcDfQbXAVShsMlXztw=; b=3+OY46Hq2ikdhxlwB8KRTSw6/XcOwXiYzrT/GrKfEK1QURO8Yw94cmcwTFIDuYxjzrNauI5VHIqZWZ/ME8XN2AOi2GDHTVoENDvfJB/FPAhq0MyXlZ1sFFTtaK61UBUId77i85ufjskRPsanvfK4DFNWP1bGZVLkgTDJKvwZeVE= Authentication-Results: amd.com; dkim=none (message not signed) header.d=none;amd.com; dmarc=none action=none header.from=amd.com; From: Brijesh Singh To: , , , , , , , , Date: Wed, 8 Mar 2017 15:52:55 -0500 Message-ID: <148900637563.27090.8781580144264908372.stgit@brijesh-build-machine> In-Reply-To: <148900626714.27090.1616990932333159904.stgit@brijesh-build-machine> References: <148900626714.27090.1616990932333159904.stgit@brijesh-build-machine> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: CY4PR21CA0008.namprd21.prod.outlook.com (10.172.122.146) To CY4PR12MB1608.namprd12.prod.outlook.com (10.172.72.17) X-MS-Office365-Filtering-Correlation-Id: 0cd530b9-ab97-4df6-965d-08d466651a2d X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081); SRVR:CY4PR12MB1608; X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1608; 3:8Fzm6EYx9yWMkSHmpZwjp9IQkrTicfjO6irsX5K6u3r5AngPLgx6bhM1EazeTF/pFuJv3ZM+BaQdyh/01tCxoWSXcJdVCey3HcgiJpiBV7ffoNoUCaoIAWWwi173jUoD5x8R56zYFmeaViNSQ+RBYjUSaUYOlJPjIRKygfoS2ZvV1h+Fospg7nue209TZZI8lsqpIb1rHCSaRtSiYHby8bz8tn7IiCQghvL/fKXb7Hxpo66FZsSnpm425WtmYuux63IZ34qEwgLe830LMJb5Urp9c74I1fQEZW+loucHOD0=; 25:gkPV+3TnMdWQ6GKpIoH8+iU4x3dACckRnfhM/ymcn650na33xRsKtJB2PSQkZOP1D+GnbkiOMlLWTvasQZdWZLDryy21zrsKr4pJWR+55YNXWBpd6Tg2FVTMWB8iYN48wH9K39zRjVoUd7zEO42E5pqmIiZN6EIKG4NI2VHD96Rh3d8gosLktdm+rbgRLiHrjN7Ul3bl9oUriX5Hk87jwNG5tgxxfh4AlyqYbsvOlN1lkJ5wa5XwdC6VTGxvaIslQZMS5ZwtT43xCb3U2C7fNd2DWk8MzoaZ/xDB/F/pIrvx8A6DIZ8I1HVBKzJYS9xhsQUxo22oIA1h1a1hCt8Op09B4V2e9XNQo4MwDdMmq2k0q3wq9nN+0zG/eyT0ABHlHkAuyzn1uKieeH53INl91EpP452J/b05EwtJVyE4OaY/cKu4GSh36A6TCuCvbkxf X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1608; 31:EFikmQnMysmeiOWjbSZR9YXLPmRTAwjxsYMDbi45liBy4S+00FMgVdGVxXdgtCW7x63NvcRjt0LpsT3wECFMcqMZSH0EUo78qCQXZRjBxN0DIuJOroQa2jJYpnvY15yU33AxmpJ8MTrf03/qf0oQqVOf1tQkX+mFJEE9Dg1P/F+3JTO+yts/SP0U+gALQ/ojUoNh0zFw1Bemofy/c1Vd0LgFbM/NziYA7cr337aX4hwrl26DNzWNH/ucw9c9WxM4; 20:9xCJe+VDw3xy/0KuMF+ulmrvX9NXEG9RIQ4DgyuqUueBt3Acq3anLF1jpKW7BuC+KGI0K1abwAvcwlrCijo88iRYybPpNxfhhPL4SrPzsZ2eJGEBFArnd4bHClXV1JG01bgVrYmfIfdSUAnDnmVD4h8Ox6kpTKREuFbKYSlQzDylm1liG0D6j2u1Qn7cXXwwt+o5IJTOG8YUFX8nS9rkN05J2YjpL0gZOags2rDjqBHH2drV4RdoGSQvZYTpYjD9E0xi64/MZ8eky5b6lZOT1/VTJLHFuyGTOACNZcdviq6QBxjtYhBz32sg3NE601IJyikmBBETAU6YcoZerMrBNXzaCzOBal5wmzmS5QtsfenfmDe0kPkjSKnjdj9b//Bv2PtGQNTPiur9cO6AKEYIYDeP+TjZK8V1tBUDZEmtds0ty0aSy/pPAHOPZV6kyJPl7HVy1hRUMxx7uezsC6CU7HWr4bvMxH/kYVDXm/ROZzs5EfIQ82fAlmvngEemVEv8 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6055026)(6041248)(20161123562025)(20161123560025)(20161123558025)(20161123555025)(20161123564025)(6072148); SRVR:CY4PR12MB1608; BCL:0; PCL:0; RULEID:; SRVR:CY4PR12MB1608; X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1608; 4:62qpC8BZYnXXQyCDJrHSLP5NHqhYefQku3B1Dw14HlYQTZ9O2jzRQLAJtAmkim9uTMvTC3RChZZSQQXqHxrDaq1drkJBljuv2lzz3lQP5opYdW+jmX9Nl0BAXe1wenSBrGRsFB7Ufwbc2MKK0VrtgmgfjaXYyL4yGAvG9WDroXYONX/jfKLrwXaC6r0szrOsXcJDicYIoskHDEIAfzA836kfMF0N37mGWtdASNvWTWOcDXpg/5MBrsbVy454vVBgBoztaFcU66V7ABcMwBlxSXVZwoQoA/gW1IbJT59A12itjVcnm+M4mp8MpQ3ipKXSyFB4/YF5j2Msu7yt7+pPSo5OBRwmEX057MeOapU3/kwou7Y40ggslU2cZv69RVyng+sgEZuc6KGThOIWv9jxbRr/prM1zRbOFjRe7MbhvglPL607b0FGNiM8/vxbGAZla3/kWfzY4y78H02ct5dJJy0dNlElb62pGfBKOzpEaZc83vJHG7lD8mxai2YVYsL+oIeVjh/+tEqKArqbE4lfGP9XI84RthJoEyGwCBZlnoH3e38AwgTlRNSKxvkxssUiOJN66iKu5Luxm+JaUzB7Bd6/TtS6nEsKTpZP5K8fru1effY1fUdcMUO3s70e2tzAmxlb+rHs39IcmVLDIg2SkJzAYZ0S0KfjbSEADtDcDS4= X-Forefront-PRVS: 02408926C4 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6049001)(6009001)(39410400002)(39860400002)(39450400003)(39840400002)(39850400002)(8676002)(3846002)(230700001)(53936002)(77096006)(6486002)(9686003)(7736002)(81166006)(54906002)(90366009)(25786008)(305945005)(86362001)(103116003)(5660300001)(2201001)(6116002)(33646002)(189998001)(47776003)(83506001)(2906002)(66066001)(2950100002)(33716001)(23676002)(54356999)(76176999)(50986999)(38730400002)(42186005)(4326008)(50466002)(217873001); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR12MB1608; H:[127.0.1.1]; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtDWTRQUjEyTUIxNjA4OzIzOlhtNTI3YlRUMnVkVG5nRXpLcU0rUHJTdFRu?= =?utf-8?B?RWpBZ2x0elRjZ1l6Q2xyOEw3U2FaQ1U5eml6bWpEbU5HSjhGRE9jeTAwMHl5?= =?utf-8?B?aWtGYlhQNWtiemF0a2hkcHlCTk13RG5RUm1BZjFkWjZnZHhKeUxhQS9GY2NQ?= =?utf-8?B?ZGp2QjRjeHZHWDcvaGdENjJnNG1tbjRBck42VFB1MjVZOEZLdXl5S0g2K1Iz?= =?utf-8?B?WC9LSTlxdmZJbG05WWlGUXNsSkFoTTYzN1NWRmZob0NOSkloTmlqbzJIK2E4?= =?utf-8?B?THRDaEFKKzBVR1plVVVpeWZtcmd6enhSL3M0Yk1ORS9wL2RjeUdpZmNaWEJX?= =?utf-8?B?dUFGT0pGcHZQVlRSeEhPWGZoSGxTMXpFTkk1M3pGL24yYUZwVVE4UjJHTkFB?= =?utf-8?B?enc4MkJ0VndrZm1ndng4eW5Mb0RxTXpLWXFQS1UweXUvUGVkNU1pcnpPOE9y?= =?utf-8?B?RktHdjdLTWtLbDd0Rm90bXpLZEplejYrWDZxMloyeTY0dzFjaXFudWtkTGlO?= =?utf-8?B?YjZrSGIwblpGZVlja0I2NzVYQWdHaVU5ejFYbkZtOS9OS1YwRERIck80WEZO?= =?utf-8?B?dWZlNWRyTUpLZnBDc1doUjB0dWlzM3BEaDAvcVlKWGwyOUUzdkR2R3NBUUdh?= =?utf-8?B?QzkzU3BMSXdPNkpsKzBLK3BpN1RoSmJPdlJiVmRlUVZ0STFMVDNENUtlR0hS?= =?utf-8?B?ZzNIbFd1UlQ1UXJONDBLZ21xQTQwZnQvU3h4ZnRZem1iUFA0N3NJeVF0cG1V?= =?utf-8?B?djF6dE9WbHJrVDZTWVNKQ003U093NjUrc2JIRTJxVDFTazFFbFhTcjRTWVMv?= =?utf-8?B?MmVESnZiMWlscGZDckdCWncvUGpSalFXSDY5OExpMXJYdUxJUmlHZ0xrZUdI?= =?utf-8?B?QVZocGQ4ZWNNOFBaZjZmekdPTzVuTmRWQjRtenFHSkl0dm0yNjcyYXpQbHM2?= =?utf-8?B?UWQvWE9EeVk1UXFONVRFRjBTTHAyZ1B4MVJwOExnY1R3OSs0ZUFOOHB5bkhO?= =?utf-8?B?ZCtSTEZrMVc4bnFGSWV1dGRaanFJVGF6Q1Z1TkFWQUNiaktiekJkY29BS1o4?= =?utf-8?B?Tm1wUjVaWTI1MUhweG02Y3Q1L1Jla28rNWpqZ3BYYnJaUDZ2VVUyd3JHRW53?= =?utf-8?B?SGZzOERqdDBMa0dqdjJyVVAxWVpLQzNxTXpkb1JPR1lVWVZOWVZ6ZGtOdytV?= =?utf-8?B?bHBMRTRhUE1HdUx4RnFZUnRIak9RNUR1TVFHS1hmWkY5STgrNmhtYm9BNk1l?= =?utf-8?B?WU1RaThHd3dadzFBd2pJUS9TSy9DNHNvbHIyVS80Z3YzUUtjVjdjeEpNcVE0?= =?utf-8?B?MU5Pem14MlBpMHI0dlI0TEx4emZaeXRubkUyNWtEeGwxOTdneFlvUm9aYkZT?= =?utf-8?B?c1JTWDQxd2ZGWkdCRWdBY29LejY1QUZ4TzJiQnJ0cjJhb1hxbXRxTFZweEsw?= =?utf-8?Q?jxl2cE14RCrsXIHuAqNj7SGCfj7?= X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1608; 6:LXkED8Y1BcO9M6crQDu52WabSpaODVkyZ+CBpMjg28+E2q/toXtzhae2WIpqREQdBrCkqN69p9o38dN95z9TI7rywovWfaG5rSLQdBRyZtX1Ng1hJkPQ0a/TkPWAAxEQdJPn7tFwZTsivqGemoc39uaDFAzF5pxJ/mkEIQ/MXxhpocI5Avcn5lpjP/BACWyaF8sm1QKS3rv2URhF7mZPBfU6oaoOxT8nIr8PdXhcSVJnFWoZlZgQN3RHfzL5d7OSrhQu6q5ofW/lmmwtQVtxPTIcaNtoUxljRvHTZVYSj7NxfE1NPgLI41nbjrgG23BaFtnXxZP+FLZISB7izNaj0Wvi0QV6WY4NGvvbftK46kgblx1VJlhdtwuYavqK89Ku9J7BljOyPGhQUuVfBRKIFucyFcQJfdXShlgphTkvbmk=; 5:BwQtl4XEmFfJ10HCKb05oVqDujyIORZfzw5J/HRfc59KIJXnXdKg+FgMBJRpOsVk3mFYhLrUO+2hV8KCNRKEZ0Ok1qa33oTzE8dxqF/804DDsgEANcIK4OIcdfqTuTG6z3gSNcnCL2lpy5U7Yrle5cgkQCDdNw77iKqBU0MR9WM=; 24:toEPMtta8J8fAHC2GIzdXGwnnmGmes6rynpSYTuc5nX4E0cxfDdTKFXLWHopZ4cYb1Baphaf0iQRjzfGmNcPuh5fJRjdCVQQSaf2KWS/sfo= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1608; 7:kzYbgSxC1xm471N4sUs9IqYaqswwwEqSrN9WJPPqEbkZ8lzsBotEchmYEhEsoRbrXr7A1NCYaBAf4ck4t6ghSBwhz80Z7FtgWhdWVLuoj7O6W8goc8vcY85nZ7pJ/TFpoZn4kzAiiCaUF/tYMauZC4HouqLIzq1QCgy5i0ey2+cvN94FZGBrTKhNaa6KnpBlVGV8fd8c1S6qvAyAo0YenyLv0mBgob0PXAENy2NDi7pu33N9KCVjjjtVzgJ5T5E2GVGz3+ZfIhIonhdPbqn69yOZwXCmIqDbr/2ld4IqNLWRvw8fO3/HmhHoCCnpFO/3awuhn3bopIWEZTwKHKimWA==; 20:l+kkleFADoMp88Z8JXUg/l6wbCsc6Oje1ykU/Q1YzdHgL7Wpz7cvacP0N4Ujp58VkUXrKnh4Mlck62qV7vDKkFKDgcoD+U60pdkt6pVip36j/VAuzr2+bziBlHqY20SFN+n16loL1QXd09uodbIC7OZYtiIFQ+g9n8U8whtKNOtDV16E5ZPkcyk7VGzgNHIEi/Mjo71GXOW9wSS8oItBX9g6qVUyjzUkucuTHQTydgeKA1VMvpdbjPzEO88pUNC5 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Mar 2017 20:52:57.7382 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR12MB1608 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.40.60 Subject: [Qemu-devel] [RFC PATCH v4 10/20] vl: add memory encryption support X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Thomas.Lendacky@amd.com, brijesh.singh@amd.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 If memory encryption is enabled then create memory encryption launch context to ensure that bootstrap data (bios images) get encrypted. Also release the encryption context after machine is succesfully created. Signed-off-by: Brijesh Singh --- vl.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/vl.c b/vl.c index 71b75ef..c6e7846 100644 --- a/vl.c +++ b/vl.c @@ -4521,6 +4521,14 @@ int main(int argc, char **argv, char **envp) current_machine->boot_order =3D boot_order; current_machine->cpu_model =3D cpu_model; =20 + /* If memory encryption is enabled then create encryption context. */ + if (kvm_memcrypt_enabled()) { + if (kvm_memcrypt_create_launch_context()) { + error_report("failed to create memory encryption context"); + exit(1); + } + } + machine_class->init(current_machine); =20 realtime_init(); @@ -4671,6 +4679,13 @@ int main(int argc, char **argv, char **envp) vm_start(); } =20 + if (kvm_memcrypt_enabled()) { + if (kvm_memcrypt_release_launch_context()) { + error_report("failed to stop encryption context"); + exit(1); + } + } + os_setup_post(); =20 main_loop(); From nobody Sun Apr 28 19:04:07 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1489008550355599.5416027185746; Wed, 8 Mar 2017 13:29:10 -0800 (PST) Received: from localhost ([::1]:58527 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clj8v-0007mf-2k for importer@patchew.org; Wed, 08 Mar 2017 16:29:09 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52006) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clj5c-0005js-Hb for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:25:47 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1clj5Z-0005Vg-BL for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:25:44 -0500 Received: from mail-co1nam03on0056.outbound.protection.outlook.com ([104.47.40.56]:4848 helo=NAM03-CO1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1clj5Y-0005VX-Uu for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:25:41 -0500 Received: from [127.0.1.1] (165.204.77.1) by BN6PR12MB1604.namprd12.prod.outlook.com (10.172.22.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.947.12; Wed, 8 Mar 2017 20:53:10 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=q5F2ZN7ql6Av9FRoK/a9jgCm3EPtJkAkSNu+F4A8EWs=; b=nlGlJZiYJmRa/c4eXClOKEb8ThI94WebJFunNr0ikN/3McbMezCI+y4NQ2hPushLsFU05lqjSRiY4YxBFfty+gtEnclrXDKA7j9aHSW0d0/RuJdX/M8h+puYRJaWbi9lIlLvNKKbKHwVm4EUkO4LCr1D/w1LVk204vMsdnc+Z+A= Authentication-Results: amd.com; dkim=none (message not signed) header.d=none;amd.com; dmarc=none action=none header.from=amd.com; From: Brijesh Singh To: , , , , , , , , Date: Wed, 8 Mar 2017 15:53:03 -0500 Message-ID: <148900638368.27090.17089251247635148558.stgit@brijesh-build-machine> In-Reply-To: <148900626714.27090.1616990932333159904.stgit@brijesh-build-machine> References: <148900626714.27090.1616990932333159904.stgit@brijesh-build-machine> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: BN6PR03CA0064.namprd03.prod.outlook.com (10.173.137.26) To BN6PR12MB1604.namprd12.prod.outlook.com (10.172.22.23) X-MS-Office365-Filtering-Correlation-Id: 0d269817-07ab-4e8f-37c3-08d4666521ac X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081); SRVR:BN6PR12MB1604; X-Microsoft-Exchange-Diagnostics: 1; BN6PR12MB1604; 3:Zz82ItrOpdt6TdbhiTd2mfbQX7MMZUYCQImmayupXKSrRslkN4Nl3K6RMw1AmzmMLFDCX/YFbc4+UUKAZvncWkf90lk6K8CMt6oBmC2G1rtNzBNzHQUNTkYDg6/vw6Ap5QK3m2J7HkmO7WY0qe6QeKuq9/AeATjibCF6k5ntPiNZcp1FYVhuNPaxhb0dfJEyYk2PkOMeaVDmK08R4H4aA0nTbHROUhpsOIW1onJqmkvT5mdNdcjyFy1E06GVYjRQdPvo3MFtMv1yrJSDbhBvi4ygvpXfAl1uwS+9Jiti2AM=; 25:XYKnIzyGReHhcVp72iDbLZy4Q1MSMysa/Hh7CdYr5ULUK8APzyk2eUIYmRGM3auFfU3pyfC5iSLCRStwUGibA5/9N7NIt6CIDYFc2zcR19I8OZaxrF4WFDjlfAk5/XFGHL4fCVwHA2b2sNglkIUz14rN7VnAoTBZRtA6GRqcdBG3tz3aC4TalumBC/B9iFZX76egb5HRVyGeEkjEBnEfoLfXOJHdpmjDwdbmSb+5q9ABfXcxDSYFzIPqYHL1cFHGs4G49rxeXCMJxbdSdpuaVeiQFv60/QFeGt58l0nL/5xRd5FNTb737fJAGi83CS3sCzrOJtUVMR678N7Gp7q4JCcb/VsEAsdRpj6W7KxYvwZULv9PFhL87utyQP2HGjH672UHeAJfjJI9lF4VlM/kt/mlOEneuuF8K+R+v+BmBcfdcyelYk2JUwvCoXt4eYzfWyMEzQZQUli4/uYU/64hoQ== X-Microsoft-Exchange-Diagnostics: 1; BN6PR12MB1604; 31:wm8i117ihs3N+n9PoYPHqNJr2KRuQUm9XWuFrgh4mFC7ls8aYcqN4FLQqissoM026CV+WivCqU6d2jKRPnAPeIQ+YRqYJjCBKpxXcbixbBWtjAA4p1bIxmFAG7vWeEOdZWteM27IAcxlpznQeWdEWzcMP1c6UYXfNdaz2pCf2FohDi2KjZs3Yb1NTnAReKm+C8gV8FNC9PydrGmgQBYbaeA6bkZkUcqwxNqKAwqAKVA=; 20:PVMWhNmbFwUgX9Rf3R8/75O0dP9nJFdLN48dL7SctUB2rnU7ov13nhUdAcFYlgDCIgFvcKaY4D/tvaGhJZePij7ZqkkttV19C5DARsRhWQAhzSV2k+aysSNmVrq4ZU5vE4gXa3iDvXN0VZu29FieZtX1a3n/u9CY26vQoiCLAIGENd57BJw213TgpRgivdoxt2IpA3I7gJPGCwu6b0he7k4J81/+sRIgM39uz5WjKhaXeoMNrHZmjIrUN75Tx5lXRwVI/R0I1uY9sMHIkWWdj6oCM931WICLq2mSsmvDx63si+NBHeCxIuKSpBnQizROr4tCOeZt7xMZDGmQ/1WlcacLPB0+tmXL5MLrn3pnh+RUpnchWyxbTUQejghUGMOlg8KGY/gEOHcZQuHkVCqsi5UXpkNmBPKc2Q5KkJ/JaCVYfsbkHFSgf0vG8l6+SUMICPUjRC/g0JUBPcq2a1/H2kMk4P1pe8/ZmCVBa5rUFJs/zIcsy6sRhuZMNox1Q3vk X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(192374486261705)(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6055026)(6041248)(20161123562025)(20161123558025)(20161123560025)(20161123555025)(20161123564025)(6072148); SRVR:BN6PR12MB1604; BCL:0; PCL:0; RULEID:; SRVR:BN6PR12MB1604; X-Microsoft-Exchange-Diagnostics: 1; BN6PR12MB1604; 4:bvmu4qhhrZNb/5DYshx8BPAQLOcjSIbQzKQl6KNX3yJbEtyKSbbrnRjZsItphQa4bntui72cMnhNB+DHivLU5kKdf1u7bUZtRufcJFtaGGTnej53KjDPrXDJaRCj/RYwha609FfQW6w1uE22SJtMNAgKukhIxgOHfXXeVESE1Zf9TYaX+EtINsbK5jrKHJDQNhaRDabdOoxVIW1Ni5wyilXyKpeTXdCW5uR5keWq6xroFFRhuNvFLumd+EBsC4MksBWEttuR3Y+ArNQ4oYid8R3rhh9HTzB88pqONucUg55IEjZiRpEd+GG6+G0e/ka2J5u/OGqL9kHPKol4EgeeS8oZUTy9AiHtaz2APvCp0VrnS4USqeK3c/F4vMtSN4uk9aDQFY9VvWZuzv+coihM452zqbt6Mkl7ky0bGXIVPjdp1ql3PDC2iNiRj+VRAiBZwd5OP7CTvr769XdsZGroHZaC/f/mClyfawSxuVMbQkrkxRXz0FTX9unl6XFZk4BqVS0p563sYpsgCFQDa27mJn4QgHuf/mWKI2fHEYTCSZAHxNB7NAveW5xdTklg7QdRqvLJn0d9OUctz76B+KBf6O3JVg2zvP2XF16cEr2E4ypT2boFGNF32NEtq0qeJc884/y7jGv6hWS/1E/gbput0cWlcp+YyIdbRwSNFaqwH/8CaCjb/QfrLi1UtGBIu9VF2OHSR2wxExdtgAM44nWQOQ== X-Forefront-PRVS: 02408926C4 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(6049001)(39860400002)(39840400002)(39410400002)(39850400002)(39450400003)(230700001)(83506001)(86362001)(6486002)(5660300001)(33646002)(4326008)(76176999)(2201001)(53936002)(103116003)(77096006)(50466002)(90366009)(189998001)(8676002)(81166006)(7736002)(25786008)(42186005)(54906002)(54356999)(9686003)(33716001)(3846002)(2950100002)(6116002)(6666003)(2906002)(47776003)(38730400002)(66066001)(305945005)(23676002)(50986999)(217873001); DIR:OUT; SFP:1101; SCL:1; SRVR:BN6PR12MB1604; H:[127.0.1.1]; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtCTjZQUjEyTUIxNjA0OzIzOml4MGdzM09zWVB5aG85TnZNaktoQ01hQ0xP?= =?utf-8?B?QllnUWtGM0dlMFZiTWxLZjBzZzA4bGVPQWkrbDVsTktYeURJQ3hWVmpHTlNY?= =?utf-8?B?LytUZTlBYXh2OVJPcU5Oc01OTFRoZExPTFhlTFlCLzk3Q3hIdEY5Q282Slpj?= =?utf-8?B?MHcxTXpTUm4ralhwZkY3U0tGNDQyK2h0eGM4UlpMdmdudjF3VGRWNFNsbGpU?= =?utf-8?B?S3Q5WU9UZHZyMlI5OXIrMXdMYUpPMlAwNXBQQ3dranNvMkt2djZ6RnhJdTBo?= =?utf-8?B?WUZ2VTdvUk9CUDRMYzdsbm91U1A1OUp3ZlhteGlCRy80bG9pcjlIbEx6UTJQ?= =?utf-8?B?UVdndk9sOGtlbWlIbzdxaHE2a2p2MWdiSEh2U1dRQVZDZm5WRTUwVWV0Wm1q?= =?utf-8?B?UjNWME1jOHBIZms3ejZtUEpRVUFKbUMwMTVUL2JGSWN5VXFJeWN0QWpWZVYz?= =?utf-8?B?b1F5eHpWMU1BM2tkVHNrUU41dVlQTE0wQTNaZ1BNUVg3Y3Raa1AxUCtESEdx?= =?utf-8?B?eU9JQ1paQkd1WGtlb3ptZEV4Y3AzUlQrUWFUZXlPOVdYcTFjcmRSV0JBamJi?= =?utf-8?B?VW9MeGcrSm9DU0I1aTFjMFBQUU5HQVJ0bVBGUXVqWmFncjBxUmc5TjBtUmhD?= =?utf-8?B?YTZUOE9NSktJcEZHa3pmc1laeUYxVkh6MjllVmJlNTlqeWdaREFlcTZGajZm?= =?utf-8?B?L3hiTloyN3FZSk4vMnNiT1owMlRGVXBsQjFwdDFRT29xeWo4VTU1RmVHQXVP?= =?utf-8?B?OVBzZzdrNnZzcURDZUNnZzEvTFkzR1N6ZGsxaE9lWFZveXBGRGMxSHo0djdB?= =?utf-8?B?NFJobHpFSG5Oa1J0L0VqQnBVRHdjelRnalFlcDRDa3llemJFSnBsNm9Ua21u?= =?utf-8?B?Zks5bUQ1MXhvYXowWHVmT05JVzRZV2hUL29ZdERFdnZkeUF4eTJ2M3lVM1Jz?= =?utf-8?B?SDRpbkpFUmt4SWxFMDE4NnBMZ2dPU3FFQUFzeVVMSC9pdnVHTmNiWTYrS3JH?= =?utf-8?B?NjA4UnhNM29Ia1B4bXZxSGU3dlkyZWxpcTlobzhZa2FFQ0xFQjV0NFRpWisv?= =?utf-8?B?Q0daakI5RzVXN0xKd0h3b2pqcmZpZzR6TXJkb3lwWisrcVd3dnRZYTBkSzdF?= =?utf-8?B?WHJibVdHUUdCSUR2aUJteXV5Y1F0Z0hQQW5iaE55eUJUSlhteFV4dHJ2UGdq?= =?utf-8?B?blVqRVpiSE1UcllrTVJadkhnT0Qxcm5oSTRJQUVkTk1CZWhLSHQ1dWNSdWtZ?= =?utf-8?B?RzhPVzFGZVNZSVUvdXdCdVg2S0R0bzIwenNKMnFFUWZrRDdvd05BUXBTbEpM?= =?utf-8?B?SDNGaFBLR0RCbnVDeTYwNyt4N095NEpsbWpUMk9rZU93WW1RdDdwa0pYcXpC?= =?utf-8?B?U2o0dWZQd0VPRktzTko2SDVDNGMra3ZiRGtJUk0rU0h1WVhkcGJyTGpaUWc5?= =?utf-8?B?Tk5lZzZHSVpKQi9HZjFlWXJ6NDB6b25KZW1MMjM3bkxHTCtvaVRrYmYrSy95?= =?utf-8?B?dGdTQT09?= X-Microsoft-Exchange-Diagnostics: 1; BN6PR12MB1604; 6:1tV00n376AvkqIUtQCQAynHd2HuqR7vlTqALUf8pfx9J6NBNX/8R/4DgcnTfkU/VMFQ5zjt9s+JxSLFhH32znilJNw2mu5MitrpinDIMfsOrCd/oaoDcUgmVnG/QPcCglLTQtR3wEtjlWrcpjSJRIg3FOzvOGFbzP0LMTt7JQOjHIcVcHQwFJw8RNZUcZH0oz0it5W3Wu6P6ouvpR6/tp92fZrKySU4tS3EGSyZA5Wz99QR5n80BD5pRT9Wbz0dmF4aSB2Rz3+IbcDAF9pqPwpaG17WqQgrkxahLgSkRnU4LjppYm3U+12jkMQvpAMqfCeW5bbzl98nTnO2FvLrXWYJUS096Ec2ZphgFt8ZkaTSO7YgiAFlEit4S9ZVJgEWOcSRn8b3Xndijly6S688eFd0FhIOV5Fp/ZfsxhhklNIg=; 5:Uv5t7Qs4pHg8CYA1YQnG7h8gz5y7BBSkKOZepih9D+qZGYyem91xRjRwBnuQr8bETFbACzuzOuyTSQZVgNYo0d5dMcKXj3NrjuJukbpJq3D0JK7CzdZQ3dAl5DrJ4+1sYgsOWummx0ObNTa4ooNInwihRGzmuFJWtbOvqQABrqQ=; 24:ovZ6HElVQTPEVMuRbFbk3Ne6tboEtKxIb2JN7kZnoYmtEU8tcq7MHyJs1WL1ai3x+5/uiJaTWsA6eHyeNdCNNqxhZE1s2fNOge3sx15kjHM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN6PR12MB1604; 7:+J9YafPqHSHx55WHfhbW2RlU7FnxvtYbsiMx/le5EIf3Bzy25KvUvmHZmHosGIKp9w03mZAobheOhD6iMtP4dAUL7BSwaQPfs71hLZqv1f+ZtyQnNhqDa5lzH6mJoTiqqpYTpUo/kH+L3liVvrKV/AmgpMzkOUa5vayQh4On8g6HJE8RXsCW5G/3rwV30pYTsPNFEy8Xmz+Y+yugMiSrWY01g5lwFV9i3LWoJhD65erVX5KrO6fFKdyUQK1Tnww3+f7ja5DiSYE8PsOSxX+8oRuf8QB0CSGSTpMGInH+5iJvmB/89Qs0tr0xFjaDN053hyrv/WY0gFeCYhu8+08JoQ==; 20:Ko6K28AwpGhrU0zZY8CM2qFTtZKorNIBVoDlZmL6xwZYzxSEoFzqmHHbp7SNk/SKgojtZ+SCCHLukBn+1RV8efzoPCiFoWUvth3t0YMi9qVMlDNGlEBrd+UAQ+HM3K7jzVGFO5uRi+d/8rg3GVY0sKyVnlRtsf9l7l4uh9MFMnw/hEIIepWoQG7+9rHkEQ97sI/1nrNNegj3HuaFBMbgzHgmEsHVQoL6glu6g5wBETZH2CTTAP87355eyxtZ5Ky/ X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Mar 2017 20:53:10.3278 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR12MB1604 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.40.56 Subject: [Qemu-devel] [RFC PATCH v4 11/20] sev: add LAUNCH_START command X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Thomas.Lendacky@amd.com, brijesh.singh@amd.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 The command is used to bootstrap SEV guest from unencrypted boot images. The command creates a new VM encryption key (VEK) using guest owner's public DH certificate, and security policy and session parameters. The encryption key created during launch start process will be used for encryption the boot images (such as BIOS). Signed-off-by: Brijesh Singh --- include/sysemu/sev.h | 1 + kvm-all.c | 1 + sev.c | 55 ++++++++++++++++++++++++++++++++++++++++++++++= ++++ 3 files changed, 57 insertions(+) diff --git a/include/sysemu/sev.h b/include/sysemu/sev.h index dbc3c6c..747fe87 100644 --- a/include/sysemu/sev.h +++ b/include/sysemu/sev.h @@ -86,6 +86,7 @@ typedef struct SEVState SEVState; bool sev_enabled(void); void *sev_guest_init(const char *keyid); void sev_set_debug_ops(void *handle, MemoryRegion *mr); +int sev_create_launch_context(void *handle); =20 #endif =20 diff --git a/kvm-all.c b/kvm-all.c index 1fa6413..a13d62f 100644 --- a/kvm-all.c +++ b/kvm-all.c @@ -1826,6 +1826,7 @@ static int kvm_init(MachineState *ms) goto err; } kvm_state->memcrypt_debug_ops =3D sev_set_debug_ops; + kvm_state->create_launch_context =3D sev_create_launch_context; g_free(id); } } diff --git a/sev.c b/sev.c index 3e02453..4b3f39a 100644 --- a/sev.c +++ b/sev.c @@ -148,6 +148,55 @@ static const TypeInfo qsev_launch_info =3D { }; =20 static int +sev_ioctl(int cmd, void *data, int *error) +{ + int r; + struct kvm_sev_cmd input; + + input.id =3D cmd; + input.sev_fd =3D sev_fd; + input.data =3D (__u64)data; + + r =3D kvm_vm_ioctl(kvm_state, KVM_MEMORY_ENCRYPT_OP, &input); + *error =3D input.error; + return r; +} + +static int +sev_launch_start(SEVState *s) +{ + int ret =3D 1; + Object *obj; + int fw_error; + struct kvm_sev_launch_start *start; + + if (!s) { + return 1; + } + + start =3D g_malloc0(sizeof(*start)); + if (!start) { + return 1; + } + + obj =3D object_property_get_link(OBJECT(s->sev_info), "launch", &error= _abort); + if (!obj) { + goto err; + } + + ret =3D sev_ioctl(KVM_SEV_LAUNCH_START, start, &fw_error); + if (ret < 0) { + fprintf(stderr, "failed LAUNCH_START %d (%#x)\n", ret, fw_error); + goto err; + } + + DPRINTF("SEV: LAUNCH_START\n"); +err: + g_free(start); + return ret; +} + +static int sev_mem_write(uint8_t *dst, const uint8_t *src, uint32_t len, MemTxAttrs a= ttrs) { return 0; @@ -200,6 +249,12 @@ err: return NULL; } =20 +int +sev_create_launch_context(void *handle) +{ + return sev_launch_start((SEVState *)handle); +} + void sev_set_debug_ops(void *handle, MemoryRegion *mr) { From nobody Sun Apr 28 19:04:07 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1489008732177737.784474839953; Wed, 8 Mar 2017 13:32:12 -0800 (PST) Received: from localhost ([::1]:58542 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cljBq-0001oU-Kk for importer@patchew.org; Wed, 08 Mar 2017 16:32:10 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52185) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clj6S-0006Py-Or for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:26:37 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1clj6P-0005dx-C6 for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:26:36 -0500 Received: from mail-by2nam03on0060.outbound.protection.outlook.com ([104.47.42.60]:18307 helo=NAM03-BY2-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1clj6P-0005dV-0E for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:26:33 -0500 Received: from [127.0.1.1] (165.204.77.1) by DM5PR12MB1611.namprd12.prod.outlook.com (10.172.40.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.947.12; Wed, 8 Mar 2017 20:53:18 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=J8w+6b6DMcF71v3ES6S9YUVkTnv3Lo3XwTSnNOSYqmY=; b=nfv72dz2quCJeJ+bQ/cY6cC6JQNWpq3faYEc+DkCd5bFF1uB6z6mpr3S7Wd6QKVaVhOhRt/ckncC52EbFa1mNlUbjk5rA52Odeesl3uuCq6oOcbbGtNP2hh32ynVv36wsrWrRTcTDSJPJUCkAX/QgEFvB5BZU3Vf7RPLyA6CSSk= Authentication-Results: amd.com; dkim=none (message not signed) header.d=none;amd.com; dmarc=none action=none header.from=amd.com; From: Brijesh Singh To: , , , , , , , , Date: Wed, 8 Mar 2017 15:53:16 -0500 Message-ID: <148900639629.27090.3342242561788466949.stgit@brijesh-build-machine> In-Reply-To: <148900626714.27090.1616990932333159904.stgit@brijesh-build-machine> References: <148900626714.27090.1616990932333159904.stgit@brijesh-build-machine> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: CY4PR21CA0008.namprd21.prod.outlook.com (10.172.122.146) To DM5PR12MB1611.namprd12.prod.outlook.com (10.172.40.17) X-MS-Office365-Filtering-Correlation-Id: 933829fc-9f67-49de-3d84-08d4666526af X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081); SRVR:DM5PR12MB1611; X-Microsoft-Exchange-Diagnostics: 1; DM5PR12MB1611; 3:83hcW3QwQDPI8I9bcOqjDH7ch68qGQmtPwBBN8wP90/E5lMD3Eorlv9a/IvJUgYy3ymhOdUMEVhSihZ3/00lFt1DnLrFj5ZCeIHgZAWGI9L5IHnFU3D8GC00rnCLTQmyNWD6uqmsQp54p03WB8udBHgUdAW9iuSVc6GLJC697HE1BfPfz89+TbY/dhLYA8hslKZa/FmcL0e8o26OuXPxP4AhZAKgqxjgiMn23Ne6R+tw64P9dSzWnJfX2NnP5KclRXx4VK/rcTYz7IV0zoHGCuF3BkXS03IqERbWOjI0cUc=; 25:DfGf6QtaQWYnTx3TwJlq1w+HU6+CQTvXbKmhpFehEWgg4Lc+b39kaQydK+QLyO7d2Fgg3ewBCkOFEgq6eTWWptQKvxp0Q8FvY8lst8obHjCCjg8Z8p8/d8RZTS9Iz69RWNJptrt8+rHn86bcivKBTDdZ7bKkmFHk5lXifBXjtemp+bgdH8m+l8avagIEthzUrVzVfCpYxCIQViTsI56qgjY0qo/cw0HyVWG07ikfSPyrisQAz8SoglPMT8Rre09nLL52GSLGlVVlyjvaxMY3ye87jANKfBWRnBGmBOkRDtKz9hTPuOihqYmtcsvUQuv55cJ3lwNujx3OTPvwpM6hN+7Y1XhVukn5WMzw92lPeRPdlcLpc/kivxVoo9HnqLgOHJBKs4yJTs7NmcEjQPU4vvtKmKnWQhEmTcSh5Pl3AMIcrtr+zbokq9ISszAf5pdAcfkRmUPGvO7vVzpyOwjYxw== X-Microsoft-Exchange-Diagnostics: 1; DM5PR12MB1611; 31:v+n3ywePCZfeNJPL1kfeUYksXrfDkmPy9FfThlI6pa/oKIyuG6VF8sRgsT5DhNw6RK+FoVe0PXtQydB6q068SU9HDLMw50VcppKsKqs8zd7g+Hm1Wbhvjr4LiddDgB//1RC8boc40gpB2k4x1pr73AuBcoOG2+xbhLB2o4NJGmHMFMJvH21cSAWrPGEnaYuXj7sfx6eW+AdLprUEcrDfSjahWQmpPhd0DbGvf17nX2k=; 20:RqjGE12nt6MAdQ3FX1Ji1fQLYa3pcDTpibrfePyJA2zW0vJ0w133e2RdIzojjr0mgZRca5Ej2jIh34aRbukEJPaslnsyEmPvZbLZhBeuBfQ8FndADPyePSOUXDU+3RlBdoJEj/urbHZBKpR7CBelGDBbg7iYLbVw7Ttq5COPGbyilmxxBwBqb5u2c3ot7q9/FoH9mMj7yVL9yKCRg60AAxC0uFl5XvjcMpviWwPeo6nHerwkPBIELKcXADgCzccQChbm5o/FLoG8R//bkCQ4SFMW4E68rYFpBV54TSjvyJUx5xS4nGbCHGb5OMF1tRoMeHV9SrPZs997bnkZACYt02VTXbKv50fQMcLq/ekqUWAh0W5KU50xGMepFBgO1wY5t9zKTXESkH1vG+k4n+XZvmIukPgAZCZVyXvyuT+m64t0zQ2Ds/nTVRerH9bOB8wAQUu4iAUNmeU7lI2oIF5vk0YLMYp3kZYDTLRFfVuJ/f6oRQ5YVwMtz1vgJcPze83P X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001)(6055026)(6041248)(20161123555025)(20161123562025)(20161123560025)(20161123558025)(20161123564025)(6072148); SRVR:DM5PR12MB1611; BCL:0; PCL:0; RULEID:; SRVR:DM5PR12MB1611; X-Microsoft-Exchange-Diagnostics: 1; DM5PR12MB1611; 4:PqI0YHiTnIKz/ZHb9ninewSj8P1rQXtKFTwXlHbt2NQvNOWWkgc9kBn5pOCZsjBBeKEpiyv8H7C8/BUDNFIz3f6yn2ztg5XGpWHBWD+ZaxzpLXr5OOwAEN0PwQuh0Jc0mggSXfbUG4Huvj1Hrpom7+8drqikomdec/xJ7olBSp0oA6X95OhZgmcREwPLRsjyWrhtjPpCmxB+27VcuJerjWpHvBgTUwBMIGHbovdepCqgqNrNjWAj7ELgcJDI7L4m9n62GhH7ORIfwtHQ3n/MmyMeR9XQSw4WdQh+S1Lf8T5v03+xlaAAzEHSN0c5jamURg+3Ealz8Fo08FaFXTDOHCMCSVG8X1AOy3zGrd4YW6xR+RQZW47lHAnyQVgstNLADP36ien8n5Uavkvbg7RI3L9v/DVhsORcgNgpUYdaV7EHyliy+GZ7BGtzk1v3OcO74CHeBzlrobqqfaP41P9f49OGluuJ5CvyOeQWtPZ32xS6CPsjFuwyZ4Qy3ctkBPsFGNQzfnkbVrgNxFnvrB+4Q0gSxJRf7Gr/D66Kn/T4RHAYFKP4YIaHjxrHzwACPG7pqSsld2pz5SV689+QaW+NJ5lGSp2AXj3WLOgzrq81rstG4ihinV3WeE5dar3WeWYofrdzikD3h3lbi5bjbWO43Ps4lOggnZBecktk3FwbiDc= X-Forefront-PRVS: 02408926C4 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(6049001)(39840400002)(39850400002)(39410400002)(39450400003)(39860400002)(2950100002)(5660300001)(81166006)(8676002)(4326008)(2201001)(53936002)(23676002)(86362001)(230700001)(6116002)(2906002)(38730400002)(47776003)(3846002)(90366009)(6486002)(77096006)(25786008)(54906002)(66066001)(9686003)(83506001)(54356999)(305945005)(50986999)(33716001)(7736002)(189998001)(42186005)(33646002)(103116003)(50466002)(76176999)(217873001); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR12MB1611; H:[127.0.1.1]; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtETTVQUjEyTUIxNjExOzIzOkNEVXlMRDl4bFNkcnlsNFJvbFJIbi8wYmRm?= =?utf-8?B?dEZEUU1MUzR1ZS9LOXJKZmQwWkZOVExxNTRweURnZ3JMNU1CeTBLeXZDU3c2?= =?utf-8?B?UDZRZm53YXI2YW1JOGZXRUJsS09IbDQ5Qm42Uk9HTFBBdWpyQm9WOUFyV2lO?= =?utf-8?B?blpQVzFWU2dXaXQ5TmlvY1ZKYmJzUllidHFVMHVrR1NoU1d1L3N3VE1HS0tw?= =?utf-8?B?WVNKVC9SdHJiaWFCSWhNVkJjbDhwUTQ5MXZKOEZzMTNPbTBocHlGNmJVKzUv?= =?utf-8?B?T1VLL2EvY2N5TlRBMUVQUDhiTjB2VzZ2SUg5MC94ZXRrTjdKTDNuNFpWMU5o?= =?utf-8?B?d25vVDlrT2x3STB3VDh6NlBaZlpWc3F3VitReHRDYWhKUmpwNnZ0eTQ5ZWR5?= =?utf-8?B?dDUzdDZYQmMybFA3RnFaYmt5NkhCTExiY0p4T1NFMTdmR0t6dXlHa3pMamFD?= =?utf-8?B?UHg5WnIrZzVka0RpRGtiaE12Q1pnYzlpcWZvRytlc2dWeEEweHFyKzdzTVVs?= =?utf-8?B?TE15RGx1STQvM3YwL2dsSG5haTZMVjFPdldGME9Pb0lyTlB0Z0R0VXJtckp6?= =?utf-8?B?SCtxUklKUzluNVJIbmhFNTl5dlhaNkt3QndvT3MrWlMxK1dZYjZkNHdPNGdL?= =?utf-8?B?SnBXLzBLTy9XSFYwZkxyWDVneDhob08rdkorYUh4THpPaWtwM1dTcFN1cE1j?= =?utf-8?B?V0phZHR2UElMck05ZXVLdHNIYlZFMGYzM2dHSFF1ZUlvSHRoanVMVXFTV2k5?= =?utf-8?B?bHJjdlpvblJDZVMyZEFrd08rQ0w0REI4eXRaalFxenRWL2xOejVab1ZRVWlM?= =?utf-8?B?NFVYMldhdU8vbFRFMG92S0ZXNlVtbHFhbG4xcVgzNzdMZHRaRkRLWGdLbjc5?= =?utf-8?B?WW03VkkzWTVJZEpNYkpVeGhDL0pMbXdQNldvVitwSnlBUU5iM1ZPZ25VRkpx?= =?utf-8?B?cUx2WXl1Yk5EVURjQ3RIQVBsYWwwdVd2T3U5RzNmaHdHV3FlUVFuQXVteW1z?= =?utf-8?B?alJRV0phTk9kY1dkWG9HUys1MHkrdUNnNm1LbUNJMDNaYnNkQ0pydk0yc3Fs?= =?utf-8?B?M3B1eFlFbFY3dSt5L1ZnYkhRaHdubWdUNXpVZHl3bTRyUUtZdVZFZTJ0Q2p4?= =?utf-8?B?TFBicGdLMGR0OEQwS3RQZ0pOb2lrVWx6UllqZTB4anhqWnNsREpxVGd0Wit5?= =?utf-8?B?Lzl1ZU11VUFlZUwrV2tKS0lLR3ovMDZoaEVZZ203NHJobGRCNEpyaGdnMzEy?= =?utf-8?B?VnloY2FaUWgxOTloeVFXMDhZeTBCVnFkQnVtcldheDBQNWVtcDBOb29TaFNF?= =?utf-8?B?aWZmaVN3dE9DcEZySysxN1JWdEIwZmpXSm1yTVY0Vlo0bk1DVkU1VG5jQ0pR?= =?utf-8?B?aWRVYVFKbzRHYWdWMnJQUHZkS042eGRJajkvUFl3aXFVRVg2YzlaVWR0WlEz?= =?utf-8?Q?Vu/SZtizc963tPkND6HyxvQnfd1?= X-Microsoft-Exchange-Diagnostics: 1; DM5PR12MB1611; 6:PnS9cLxJgIidhxZGMKqvNRmiIb4R+iSYg0jWwYq2IdW+/sVpwCnI56mtyrmljDjnlZG8B1lV7v83qAMesQwHtAqCYTciop9V+BnvybiN5BaN96QKViu5U8YyMQPLB1UkXfrAtdtV6QYNJANjwEVXsjWD4MpNM33g/gfMWeY8Uf3RMnyPBFW2AhQPzrmi0Y9dUwpoeFPLTL8RiIJL7jnRaXPQrMeGRoIQhWE4VbWbniriODIrZdkdbcdCzAkxv7fExuSHx9n18NrUlZJ+Dv7FdyU9JKAPPtbhHPQCljTTGPCK21IElfuQ9XcW4EutkJ8VTE+TF+it0LT3zVcP3L+zvglBJYUFnD5IVJ+im++hrKlHGFpZ6d7Gx3qViaWmtodcJnSIbP+Vp7d29Y4vSmCOFUtvt1oC3fJw6JH1geezLMo=; 5:B0SR7VFt0ISJIcsJjl+CgO3TB5B3FK45hXx7ZDSdATqXn6L1r4PcF7ZtEdFhKrIIT3ruW1xB+oN/JupuLnj05V31yJGMVrmvfXSisKQSRRuoOUBA4VgHyaWcaPm2pc6lFcnzWVJPg+zWSjoufMUxhZU3rXf+jzABKPWieuVVpag=; 24:Ydv5y7gAujt4cnap2gVMmp6wsHaZ/fM0asGWSv+mMhQBpocgFRV3rgSEYZA/Q2X0zni7oZZBFh63xXrXmNlfa2gbme/yqBFiibnIH1ufNPU= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM5PR12MB1611; 7:AuXutilDZztlgL0qEjJzgjz7BUl/SCJ4V7KujEADxprNimB5kPHpNY5jVhW0PbprYLVYwWP5Dw5Mhtvu+wHpkXSCFWh1SK/SyQ6j3uRrJ3Oftxzx/McAQfe1iXdZTxMFdJAi1aqbPtIyhIEVMw0C8x/I7fxSK3V7U3xXFQI1Um2vknchIuIL/lfpWDRolJZ4bFdiMWGPD72kEVUCDTLfWYMICYjA/me/l+dY+3jkUXOS6jkZuZJ++SiHjl2YaApnMSzmk/ZfDJXrnKVB+P/W8bjPnAjnjufo49y3gpeptYt3NgH5+u0OJo/8p4kdb4EHVqVO+Q6SkFOtKNhA3DwVRg==; 20:aOe7t87Vxwzq3QeabEJhv5WczPLijdzfav0rSXiUO99KmalsS7USOLhv8fcvDqg2OGrvWwTvZ7nfdzfR6d8QqbkZ15e1KRR+agpvNCBTq1v0viGGUjxEMhJBthzqUcx7ryQ2p/LcYFu2ZeA/fZ6ZbNP/dii8KITz+3KBDvmHYNGMQ2vTXQBsn1W3daI1hFdxElz8bodbb1ukhcndj57uKf/y3NQgdI8Qe2UP+nNWD/KpP+kdN2zz+uqPEqik3fMW X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Mar 2017 20:53:18.5643 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR12MB1611 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.42.60 Subject: [Qemu-devel] [RFC PATCH v4 12/20] SEV: add GUEST_STATUS command X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Thomas.Lendacky@amd.com, brijesh.singh@amd.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 The command is used to retrieve status information about an SEV-enabled gue= st. Signed-off-by: Brijesh Singh --- include/sysemu/sev.h | 9 +++++++++ sev.c | 28 ++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/include/sysemu/sev.h b/include/sysemu/sev.h index 747fe87..88cbea5 100644 --- a/include/sysemu/sev.h +++ b/include/sysemu/sev.h @@ -82,6 +82,15 @@ struct SEVState { =20 typedef struct SEVState SEVState; =20 +enum { + SEV_STATE_INVALID =3D 0, + SEV_STATE_LAUNCHING, + SEV_STATE_SECRET, + SEV_STATE_RUNNING, + SEV_STATE_RECEIVING, + SEV_STATE_SENDING, + SEV_STATE_MAX +}; =20 bool sev_enabled(void); void *sev_guest_init(const char *keyid); diff --git a/sev.c b/sev.c index 4b3f39a..c13bbfd 100644 --- a/sev.c +++ b/sev.c @@ -197,6 +197,34 @@ err: } =20 static int +sev_get_current_state(SEVState *s) +{ + int error; + int ret =3D SEV_STATE_INVALID; + struct kvm_sev_guest_status *status; + + if (!s) { + return ret; + } + + status =3D g_malloc(sizeof(*status)); + if (!status) { + return ret; + } + + ret =3D sev_ioctl(KVM_SEV_GUEST_STATUS, status, &error); + if (ret) { + fprintf(stderr, "failed GUEST_STATUS %d (%#x)\n", ret, error); + goto err; + } + + ret =3D status->state; +err: + g_free(status); + return ret; +} + +static int sev_mem_write(uint8_t *dst, const uint8_t *src, uint32_t len, MemTxAttrs a= ttrs) { return 0; From nobody Sun Apr 28 19:04:07 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1489008513747797.3626513036972; Wed, 8 Mar 2017 13:28:33 -0800 (PST) Received: from localhost ([::1]:58524 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clj8K-0007FT-9E for importer@patchew.org; Wed, 08 Mar 2017 16:28:32 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51928) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clj5K-0005VJ-7M for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:25:27 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1clj5G-0005Mj-VO for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:25:26 -0500 Received: from mail-by2nam01on0088.outbound.protection.outlook.com ([104.47.34.88]:29472 helo=NAM01-BY2-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1clj5G-0005MN-K4 for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:25:22 -0500 Received: from [127.0.1.1] (165.204.77.1) by BN6PR12MB1604.namprd12.prod.outlook.com (10.172.22.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.947.12; Wed, 8 Mar 2017 20:53:28 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=qJO1hYG/7YrXnaEh1QDEdjejpDhdr7vJ7XN6Z5aXwlo=; b=SOk2DaTHvE8IvsrmGm2Jl4/iEwPfpYKOzYl6iIQgbdP14FpBUgzjRw922a9x5jWFoGJOZQpMWHxrKI94QyzEMuoLT00hoNpgHAA3QgkWgSI+n8UliBlgg87l7CaV3wO2vvVdyO9C2/a1SikSAdSxnQcdppst9LKG/FdgeHbGGzc= Authentication-Results: amd.com; dkim=none (message not signed) header.d=none;amd.com; dmarc=none action=none header.from=amd.com; From: Brijesh Singh To: , , , , , , , , Date: Wed, 8 Mar 2017 15:53:24 -0500 Message-ID: <148900640453.27090.13878279092984827505.stgit@brijesh-build-machine> In-Reply-To: <148900626714.27090.1616990932333159904.stgit@brijesh-build-machine> References: <148900626714.27090.1616990932333159904.stgit@brijesh-build-machine> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: MWHPR10CA0008.namprd10.prod.outlook.com (10.172.48.18) To BN6PR12MB1604.namprd12.prod.outlook.com (10.172.22.23) X-MS-Office365-Filtering-Correlation-Id: 3bb00a52-f7db-4962-3c5c-08d466652d17 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081); SRVR:BN6PR12MB1604; X-Microsoft-Exchange-Diagnostics: 1; BN6PR12MB1604; 3:ig4WCyEM3xj6Xqtv8/rT2EYmMX9gMih6cf9brXPHRQAyBaRwimKDAG/p9zvbObbJjY9+SPCRmDI/KTqKfG2Lw5tlS/eTBkDiUYcv6ZuEOIjO9daF+zyKpz7eCw+BdJmPigM1/Dh/OsiYpmeUyqapdRedE4icEeI5+HiqhsnZZW5zA1q4e+A31N4Uue0lljphvvShX+a6SkcOxHkPytXClceX8gvAXuoGq2zp3czEsAZVbGLAY014cSLQL3Uj1QHr2ZY3zNuyCAS1TAWVSAJ4q5+KSpr2FhABflyOH03IGEo=; 25:tayPLonBnHDaYXOmVqjoJTOYpPYny+R2F3uMvxnPO520wN6N3sMgyvPIUOPl4P+w8bE4JYf/23R/Q9wepZmPPPjJlpbkTmUzOvQtLnjN30KBtzEKU0ncMlCQHwqt99ybOl0Mclu+c8cGOoC5iZKbnNdjLJtVgIU5qS/WcUT7IvsOkAG6kxVafOFykRmtBCaShqh70mH1+IL7pQjE7P7AkCUOOAHko0fZoTCXxkre/BpSakGwzAe7TTwi7yayiw6nqxforRQzO4sJqQFQN9FeKNv9wA2s6wTMlFVks7yQV4yPrxl9rIG124LDK+Kep33z/mnXjuly96LjtohXm3JzuhbsR8pQNnpxtqDdWjIQ194s4skBiW2n+7Cqdla7dcLYT05psiYc4RxGgmvF4r36/QRZf2hJEGA2Z7S3xZoXsqcdbVEqDUDGwffvwgIXZ7NmA7/Q5rA/cCk03BdU91ppYg== X-Microsoft-Exchange-Diagnostics: 1; BN6PR12MB1604; 31:bgTHFgkhb6HyE8bBcvLHdsXTm0xv1C7kM1pHMd51blcWmQB2Az5nqP6/mXx9k5W0EztKy23v8s3LPiAhOT4xNp+sOvz37m6NxiXcrzv2R9xaOUvIdrOrJSit4mzF5F96IIlCRy9sBAYhZTgjKfgY+BOFKQceYvFjsmVmAELBdO+q1lt7Vm4SqVlDWlTkxE+lsGp9cayOUZjB+ps13LKxRG72JLyH2a/IDzP7rstw0YM=; 20:2lEslijL+aOnayQi9mSeoMkUyRYl3F0JFKtfL5eVNFLiHOzp6bXWcIBij2N2kj/LxsGitdyWn5KsIhxYNoCAerMmRexNf0X36j9pg/fwpjnvup2+D3J0AdZ8PvaN7nKI/UFoeAs5c5Q/CwlZ3fsbcer09MP8u589axkYctKE3os60+MrDpndZFBZebVfviOvVZr0Ey3pvawNv91EDNOS0hkDxxAkBTTIuTQtIJrWXI+/BkvTPj8yluIvHQzDn+dfF7Sp2SXpQDPxe5MoKViTZcW3jTLJrKFe0bNdyYukzjTLnUNr0yMITaCa1fZINU1I7ZM9KV9omxZeY/TI170rFwCjiUd3GNfdqBER+r1+rl/Pcku3NGY6rxFZzUlKibLKO/iIFhZbLZ09spkRyG09JfaA+iLR/cOL/nQuzaG8qQpc8/8gdhiC4PZ7k/92SimH6ya9DwbLUf96TzgRTl3TxarPwsR89ZjKLM5BrLHuOnkdJRsZ1a9jI1AaEeZKjBSx X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6055026)(6041248)(20161123562025)(20161123558025)(20161123560025)(20161123555025)(20161123564025)(6072148); SRVR:BN6PR12MB1604; BCL:0; PCL:0; RULEID:; SRVR:BN6PR12MB1604; X-Microsoft-Exchange-Diagnostics: 1; BN6PR12MB1604; 4:8Pi30W0WXjukzGfuFqDEAifDSzcfnL/ZqzIrVph3Tu1bBHlYox14P3PSr0LjChLHUavZ/zN/jmvfiFnizyqO8v8en+Yj03x9c3JNeV8bxj1+N9sZpOvNKlvB8/by8HAaiVyfA003v8Li4E+SYofs5mYPWW7tXmZN02MAbOSVUyB5LHq9r0LCOifM1NZJ25jZE1VT3UlOO/vO0OgUpA/7jsJnf4Mk36vGgUrEEVlQMbZ1mk94KUbK3+KXXlg+9o9z+vaMnJf5UzB1Nqzihf47agdbyxXxKcGRhswRBF684jA4iwZOrKO0Pan3usBfgv+t0SGL37/87qTNGZpt29ZADE95ojkXO/sjCS+mWMImWYCrMgCNTRK+Z9uA4R/L9cSBn8sH5jpT/WhTMMbH0L5rnvT9FQYAO119AMoAVxbXk/U4J56Xyph9pFUhLkkAILpIK7jpy0Q8DQALb+ca3uvv+GF7WTBdHqW8Vsh4aHgAQ5DnM9XL4hTFMP39HA2bfWQqqQpPK8MabuonXui4wInevFelr/56U+fNGlemHV6xL8LMYPPdVkn5UWflgrLd0FC+3Wj2yV+ficaO97K2FM48RkPrCnR+OjW0plJnYuqjRIYbix7m5XaCPlwxQWihJAKLdLUO2SbTJBTUnpseAfVEKoePNXJKIqvrxYOeTOpIMTw= X-Forefront-PRVS: 02408926C4 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(6049001)(39860400002)(39840400002)(39410400002)(39850400002)(39450400003)(230700001)(83506001)(86362001)(6486002)(5660300001)(33646002)(4326008)(76176999)(2201001)(53936002)(103116003)(77096006)(50466002)(90366009)(189998001)(8676002)(81166006)(7736002)(25786008)(42186005)(54906002)(54356999)(9686003)(33716001)(3846002)(2950100002)(6116002)(6666003)(2906002)(47776003)(38730400002)(66066001)(305945005)(23676002)(50986999)(217873001); DIR:OUT; SFP:1101; SCL:1; SRVR:BN6PR12MB1604; H:[127.0.1.1]; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtCTjZQUjEyTUIxNjA0OzIzOmtCcllXSUhVampybnVTa3dubm9YMVRRYlhU?= =?utf-8?B?NWNmeDk4V1VaUWNaVkg2VlNwZjRQbkswd0RDVzFFczlkcTdXdklrZnNwd2Fy?= =?utf-8?B?bGF2WUNHYU1GUkJTd3duSXlJNTB3QWFqbmlwQ2YvWlFNZTBtTGRMZmxWQ1lL?= =?utf-8?B?dUQvSEpDMGpITW1RSlJCM0FNcWlwT09FZFJXY3JSU0prT3pqMkhlUVdiRytD?= =?utf-8?B?NjJJcHFDUlpJNm1LZmFTcUdpSC9rdDZOMWFpSldtdDNPZktQWDF3OENyZFlq?= =?utf-8?B?VW1VL3IyZ3JBYUNYVUYwL1pQRDJxblZHWkQrdTdyN0tUK3VFeHF1UU9oQ0R5?= =?utf-8?B?RGJ1dHFuYXhmQ2twZ3BkUnZnd2VYWU14cHhJL2lkMEtsMVB1R09jYy95WEZk?= =?utf-8?B?eFhOZVRaZGd4bHp3NnhBUlBGdzVSTHNia0IrUkl2WU9oeFpMbjFMRHlyMkZF?= =?utf-8?B?MzZMR1NnS1NmZEkxSHJ1ZnlONFZnR1dKZnFCSGhQY0NpaERqUDJQcGc1aGZm?= =?utf-8?B?aWJkOHlvdjZoNldWQjJpZFU3YTl5a2RZeTd2c2NiRTFiNWVoNkdLaXI0MFBq?= =?utf-8?B?ZGtlZzg3ay9CNzNra3pCdktZZDBzM2RoZFl2Qm5iOER1bGJSdnNycXo1Q3R0?= =?utf-8?B?ZVVnVG5tZ2JqZ3R3Nm1PY1l2SHEvQ0hseU5aQ1Fyb1A2OHVNRVhnT2hjNnZU?= =?utf-8?B?ak1Rd2xmcm1RcGpsY3diVFRPdWxzaHRFNmNJMUxDVWplWjEzNktIckNaTFdj?= =?utf-8?B?MWFCN0cvK1lXYXM2KzV4RE1BNEdzNklISVFkOUV4VFZ1dXRoeTBUemVZVGln?= =?utf-8?B?NmVBQXVmd2ZlV2dzSExtWitnNWROWXBXcjRudlVMV2xQWXVqTGhhcFJNNWJF?= =?utf-8?B?Q253bmIyWlVndW1kVmxzUzlQc0hpTFZBaVlkdWphaDUvRmRDc3hlVElXcUhR?= =?utf-8?B?TE5sbUoyQXR5TFlrWEo3WVZDWnkwY0ltanRuaHIyVC94SmFLUmI2TGpKVTRi?= =?utf-8?B?ZlI4b1Nnci85U1ZrMTNzRWlIbkNDZHRaT3FCdWluMExsdGxVZWRjcFlhWXZS?= =?utf-8?B?SzROYVZqajJ1cU9KY3QwTk5udHRzYTFJQVRJV1JZY3hreHF5ZE11NGJzQ29F?= =?utf-8?B?V3VLdjFaenB5WlprZGhqdW84TWZYY2g3Z29pZlN4RGtKMUYrNnZnM3F2VDgy?= =?utf-8?B?bndVODdIZ2pGY0N4VEFlZGp0Z0xkVEJJOWwxcExFNGJiTGtSZXRKVThqL1Zm?= =?utf-8?B?QVdwQVRlbjVTc3Q3WDZzS2N5YzlJNFNxOWpUOGZCMkpuVzJKM0pYREFLS04v?= =?utf-8?B?SEg2NlgwK1NKQmJwMEp2WStmTm1IU2FiWTlJRERNR0t5MG1TN2VsSmZJUGpN?= =?utf-8?B?VWpwTzNVZnVLd2xmNjlKMDVpTFJGdGk0L3U1L2h6dThBQlBhVDNoUDAvNjdr?= =?utf-8?B?ZVdGUXNiZ2lsSGRtSWJuSmthZExzR2xFZUYybzJsWWJBdFBZRVRaQmprTnp0?= =?utf-8?B?UWJJZz09?= X-Microsoft-Exchange-Diagnostics: 1; BN6PR12MB1604; 6:T7thlLe7z4y+L8ubBINm1ftJ6ECo9t9ohKEoYnDNUWNr+nSALmeSz3kAE9OwK5chNcSwRNFq0qvR3pBjYBnt2QDkI0IBCDadJP8EDGAMu0Pa2Cp5QXgzA/ApaHeQ4S1YuEeepIjjpjvtTwP2PnriNHzwD6Xt1vIdUd2yGcrR1NPYKXN2yHEFi9+KRCicX0rKrctQQ8gbQgyhLwIaw7KTTkCCqqr2T1smcJLcSZTobLGZBOKjGQUgXnc6iMLZ+jWe/U4PocensA5ZjDtsvgi1/AEynjPIOZPXMwEG8+egj9YSsU1klbCofrPHNnkZpkF0gaobA4dSG79fq1Gx7WTfNONt7DaiN4VfdfunPnKvZvZ1vsnaYhpD5F4NVYaS8+2ONVRwgT3J4nwn5dIxvWYTVq3jm2QYCOhByqUkDh7CG28=; 5:skHxXvTXwdqGAI0Gq0+jw7yS3/dPI7+qbleLccioD4KL2sm3i3RipPK7tGWQl4UnPU8o8yjabNJd/R+rBRIZOVOWkNKQjMLC/tHIjiZUI3Tv5l8xoXOD2DaL/ACrOQLqlMfPXrbQ3DLyQ5jxqVigXrEfq9a+UlhtYfgD6miiWjU=; 24:M5IbD+1Um/637IdkKEdGVqtuhWre2z7Te28TFrUfBDWvbXWvzoffNkITury+EYOLKwvb837a0U8y93vFtqg6w3w+ZQvApxl6BmNqQPJZfYU= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN6PR12MB1604; 7:qB/kb0uizTc3uWWydWgyyVFsr3oY1fXLRIloI0oRE5peWXJAhn+ikJUOdXHbu2/2Gq85VpvvL0y6LWTcg4o6gTqUrpVhr64PDxSLBCJfUdyr5POgbAOwsNP6sRnIIMyPH4N8S0pi9AkXJxi/yLs9eQB9Umfy7UqWYV2JABexBNR7qkynAXeA4POR7qK90uMNQLFevwFFqld4WORTOsdrEkZPbiK8C9IiChookOlmm1QW31fC3ZEsg8YVeON8LihnkhqlwnaOI46F55OeqwuYdvDs7JBWO1zn05bOK77rLqUIsxahOub+2jzIW17csG3Xhd01IS7RTovukl53W0jUNg==; 20:W0IKSP+Capoad3vpz/ikUcZ106PzmBjeIFX/Zn75UqOb6tK9YLG4GGMMDNZ3NpcZleNb5CDaMDcVzoMc0BXZ8JCY75AuB3kjfOq7sGO/YlvW6CCI/4tSSMWzWad1TPUzsQmjAFF0Wmb5K+rPvqMGhl4Bo7D8KNHrASZCNzsVR0gL+uD8q/Sy75E0dPchIqESqAxjonIfeqMtxkTAddGTApsX4aLkMgLw2iLI4LsD1Xjniuc0PhXFibMdrwebIWYE X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Mar 2017 20:53:28.4372 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR12MB1604 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.34.88 Subject: [Qemu-devel] [RFC PATCH v4 13/20] sev: add LAUNCH_UPDATE_DATA command X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Thomas.Lendacky@amd.com, brijesh.singh@amd.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 The command is used to encrypt a guest memory region using the VM Encryption Key (VEK) created by LAUNCH_START command. The firmware will also update the measurement with the contents of the memory region for attestation. Signed-off-by: Brijesh Singh --- include/sysemu/sev.h | 2 +- kvm-all.c | 1 + sev.c | 44 +++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 45 insertions(+), 2 deletions(-) diff --git a/include/sysemu/sev.h b/include/sysemu/sev.h index 88cbea5..c614cc0 100644 --- a/include/sysemu/sev.h +++ b/include/sysemu/sev.h @@ -96,6 +96,6 @@ bool sev_enabled(void); void *sev_guest_init(const char *keyid); void sev_set_debug_ops(void *handle, MemoryRegion *mr); int sev_create_launch_context(void *handle); - +int sev_encrypt_launch_buffer(void *handle, uint8_t *ptr, uint64_t len); #endif =20 diff --git a/kvm-all.c b/kvm-all.c index a13d62f..5e98534 100644 --- a/kvm-all.c +++ b/kvm-all.c @@ -1827,6 +1827,7 @@ static int kvm_init(MachineState *ms) } kvm_state->memcrypt_debug_ops =3D sev_set_debug_ops; kvm_state->create_launch_context =3D sev_create_launch_context; + kvm_state->encrypt_launch_data =3D sev_encrypt_launch_buffer; g_free(id); } } diff --git a/sev.c b/sev.c index c13bbfd..b391012 100644 --- a/sev.c +++ b/sev.c @@ -225,9 +225,45 @@ err: } =20 static int +sev_launch_update_data(SEVState *s, uint8_t *addr, uint64_t len) +{ + int ret, error; + struct kvm_sev_launch_update_data *update; + + if (!s) { + return 1; + } + + update =3D g_malloc0(sizeof(*update)); + if (!update) { + return 1; + } + + update->address =3D (__u64)addr; + update->length =3D len; + ret =3D sev_ioctl(KVM_SEV_LAUNCH_UPDATE_DATA, update, &error); + if (ret) { + fprintf(stderr, "failed LAUNCH_UPDATE_DATA %d (%#x)\n", ret, error= ); + goto err; + } + + DPRINTF("SEV: LAUNCH_UPDATE_DATA %#lx+%#lx\n", (unsigned long)addr, le= n); +err: + g_free(update); + return ret; +} + +static int sev_mem_write(uint8_t *dst, const uint8_t *src, uint32_t len, MemTxAttrs a= ttrs) { - return 0; + SEVState *s =3D kvm_memcrypt_get_handle(); + + if (sev_get_current_state(s) =3D=3D SEV_STATE_LAUNCHING) { + memcpy(dst, src, len); + return sev_launch_update_data(s, dst, len); + } + + return 1; } =20 static int @@ -292,6 +328,12 @@ sev_set_debug_ops(void *handle, MemoryRegion *mr) memory_region_set_ram_debug_ops(mr, &sev_ops); } =20 +int +sev_encrypt_launch_buffer(void *handle, uint8_t *ptr, uint64_t len) +{ + return sev_launch_update_data((SEVState *)handle, ptr, len); +} + bool sev_enabled(void) { From nobody Sun Apr 28 19:04:07 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1489008848116728.0189920559523; Wed, 8 Mar 2017 13:34:08 -0800 (PST) Received: from localhost ([::1]:58548 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cljDi-0003IU-Qg for importer@patchew.org; Wed, 08 Mar 2017 16:34:06 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52343) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clj6p-0006qu-Tt for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:27:01 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1clj6m-0005kc-O9 for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:26:59 -0500 Received: from mail-sn1nam02on0051.outbound.protection.outlook.com ([104.47.36.51]:2592 helo=NAM02-SN1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1clj6m-0005jE-Eg for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:26:56 -0500 Received: from [127.0.1.1] (165.204.77.1) by DM5PR12MB1612.namprd12.prod.outlook.com (10.172.40.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.947.12; Wed, 8 Mar 2017 20:53:44 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=SHFJ2QwosDbiy+22Cie/Lp2QFrWkkWiW9Cl2OESatjQ=; b=T9ia98XCdnY+wQV0LhPJEYk7135XqdrheUrWmWR3hGMQT0LPaSgpE6GE2f6+fKdwf03NkR5/GeGd/KPr0cR/HNMDrwfekPZsubOUmVF2PdX5MBgKJJVbm8okA4BoS30drnhNwGxVvf/jmTxgiX6/uaw6oTt/6GMbZ4FPbSOFA9o= Authentication-Results: amd.com; dkim=none (message not signed) header.d=none;amd.com; dmarc=none action=none header.from=amd.com; From: Brijesh Singh To: , , , , , , , , Date: Wed, 8 Mar 2017 15:53:35 -0500 Message-ID: <148900641547.27090.18164660067628886320.stgit@brijesh-build-machine> In-Reply-To: <148900626714.27090.1616990932333159904.stgit@brijesh-build-machine> References: <148900626714.27090.1616990932333159904.stgit@brijesh-build-machine> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: DM5PR16CA0032.namprd16.prod.outlook.com (10.172.42.146) To DM5PR12MB1612.namprd12.prod.outlook.com (10.172.40.18) X-MS-Office365-Filtering-Correlation-Id: e7eeeb98-05ba-4df3-667a-08d4666535b3 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081); SRVR:DM5PR12MB1612; X-Microsoft-Exchange-Diagnostics: 1; DM5PR12MB1612; 3:mXq/2XVaTJ+g1n6zG/+W0dFF+vJoqVR/KPhMgGptAxz0vfrLqi7K3FBmEg+ztPGit2BuKvw8VkwMebV5w3MDxWJcpohYVZCq3N87NcyZAJLSzHGxbUOXL7bcTxVmtCYfNbOk6IHFGxvpUVJPGPnEaz5c7ALqwP9QvJhJgXdZM5Zo4m0JPxNBJrCQrYfyz8yos69hvFK7L5nyaAUaTfZ4we1OqJPncB2sD4dX+l3r72K5VP/YsWHJXtRtyFlKoTf72BJt2qsV1cf+V3jStk2+iBI0C5Hz8bf6OHOvaSKavO0=; 25:B/gSeMdw8lUG4eXqZbJWW4nvKxZ1qPqSohhmV2+DF4TMm1XmlMu8TcmWqPHa18XyOI+/Ulidp2Tdu71MNvwZnKbOuULHmyIs6KWOdKx3mNKejtwZcuJ+htPfBWSESU7gRyKrUjEy5zbiKIrEc56bSis1oHv8ic9qj0WmjJfM2sL2IM8QAfFHwwz8/4+sBnUkp8PO903DDndgrfXEmf3e/YGAZgBVkQHDdXSIABjZ7lBPtNmEOLwthXzKtniC+95Kt+HY+Jhh9SSRg0LAHvdVqmbpEmPWZcBoBrT7N7X/kzTEHGXdeSYR8GO7P35JjvvYT6tmbh/+XX6YVPeRIWH/e2YTf5VlhpHZvfg4w4U5D47pR/AuOLFtFrhY3hmMLDXAoNpia6oyAICH2uHx8ZXwK+ouD92OjhQG9BEqZ6RTNC6M0Aw8AGGfpdIhdGMNdlpuAFAgxyKU3fFmVvdK1LJE0Q== X-Microsoft-Exchange-Diagnostics: 1; DM5PR12MB1612; 31:D96JSdNsNGo9oPQ5RHtaC2awEw1vo5Y7G/o+UActjI5PLn6A8EmBQiwXlD5viYQAq72KsEnJ+7y1ev6TMlsNgwP2Dglo9N3tj0w0SuzyS7NTmGKJyByMyy/qFa+n5+g5d26u61AwnSkidwO3kwXxmHALwQsLkoyQhByAsRR2nc5Bpc7OGX0iDzcJs/zKjjw5vDbp/oW2ss7ZDSJyauzOblic5ORo7DLBUzB44lU/l5XdZb29FPv57vbLwjr6ocuy; 20:mM8uHr5/tUCpnyRoZtATT3annkudO6CK8HpO7xpBLabVq/eAJCMdiLuc7AxpFt9uM/kdgnZY6NCMmKi+QJPRnuEic8YTNDVlzrAnR7aZqgiyuOZvuPZ0fYf7qmCdmoRQzJRuxdHK6Qw30+LhQ4PgJEbRHuBytBhqgqp2gnY5N5z1wLEvwTi9mubagZ9STs3uusxh6zM50DQEO427H/7/iXbESPOyaJ6G1tF4MSXftynw00wtpTfqdOQEe3bmb1pY/L1aFp9ABFVCVMQHltgpdv0pZVAB3r8JeuQLFN0Hr/ElODuHtC/A7EjkV3H/au3PDWjdOCKwdFCNbPceYqGYI129yMaD76zbYBGgON/Hg/H8DH6GkHaqM1Tf+6LFCOUXBaOZf8Bvp+6odVTEdf4Jd+9eG8yvcg8ZTPT5lCbP/8fTeS48Sabj02pIoleIWZlhO5E72UQA1XULOq5hk9Fuk1kMaxKqtnwxgX0+FFjQct1wokvDaWM2nf01gnMrAgKJ X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6055026)(6041248)(20161123555025)(20161123560025)(20161123562025)(20161123558025)(20161123564025)(6072148); SRVR:DM5PR12MB1612; BCL:0; PCL:0; RULEID:; SRVR:DM5PR12MB1612; X-Microsoft-Exchange-Diagnostics: 1; DM5PR12MB1612; 4:5XPZBqr7U8AKwY25pfhexQiwAtMdqiyOoiwm71vHlzlclFepu2cblZHOgrRnhogFpgH32MaKrE9EEA/DLDnT/U6/haUoLDZmQX/o/orMx8Bup70GI1rJqHOhoOZ4SK6mJ58YdXRSrVHE7YJpUvX/9w0uw6Bg3tXn+OAtVXXJJ2dkh+8KdLZNmqyv9aW4aMfNrLeUGBJj0rekPHVPC+e36iG/oCGTKBjy62F3OCnmPMBr7w/6frmFk/O565h5AoqN0YzCYMwpe+ImftTFdrF1uS9SnUZm5CglKDFHmk9n/BegEF04wrYpqmo6GEIlQtce8J/eE6++K4pWe6dPgrPxEgTEK1syg9J7FbinIqFfnJNhET/UOHp/YKR/SV3J0IgKnabxYWx5bsbmFw9wH411VzSEH2UnAKZelpFU3h+8SRmi7R7g2IliFBZKD6seE+V2qT7gJJPZ9D1APtGhzHY3iXImSZJXmWv0tLXoU8/V6IZTYPreh1wXpjeTKecanMMD0RPyuZTnWRaJst9u7ArPpk7Hw+Vh1vyu8ZX7KY4P5REEznMPb7rsujLMGc3P+qxSy5kqNyCKd4chJXJIT4AYGcvgjOK5sPe344vV7mpSbiq2mud/7ECI5s/lSAd0OApyXEqXwYwXTAz2qh+Qu0Ik/PJZ2xpZc7DR9kp0RS+qWMg= X-Forefront-PRVS: 02408926C4 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(6049001)(39850400002)(39860400002)(39840400002)(39450400003)(39410400002)(50986999)(76176999)(81166006)(3846002)(6116002)(23676002)(7736002)(8676002)(189998001)(305945005)(86362001)(66066001)(2201001)(83506001)(47776003)(230700001)(33716001)(33646002)(9686003)(54906002)(42186005)(6666003)(103116003)(54356999)(2950100002)(77096006)(6486002)(50466002)(38730400002)(90366009)(2906002)(53936002)(5660300001)(4326008)(25786008)(217873001); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR12MB1612; H:[127.0.1.1]; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtETTVQUjEyTUIxNjEyOzIzOnJhdzRzTmYzbHVPeVJiTW90ejYyQ1hacXdi?= =?utf-8?B?QVk0N1p3Y0pDUVV0MEtLZU11S2lxNWNSQmVRVWZJVzJ5OUtDT3pldkR2dFRy?= =?utf-8?B?bHpzSWphKzZkZVdnYnV1ZitBZU05b1FSTnVobzdLdGc2ZHZBaFRTdmtKNnJa?= =?utf-8?B?amNzNFloU0hmaE9zQ28rczBuR0ltSFF0VTlvM2QxRHNPL1pkV3ZUaVNGNjRP?= =?utf-8?B?VkRPR1lod2ZWQW5hVlhnYUIwcVI1N3ptMW5sNk1wR2hvQzJUMTUwL0czckwy?= =?utf-8?B?MWRGRXIyZXhsMjhqTGlUTTFGL1poS1h4RnA5YUFYbXp0R1NUYWdrdGR5bm9y?= =?utf-8?B?UDVHQXQ2UkxMSHdtT09vQTNxUThRNTVEdk5zbkZoSGpPUXJXdE5WTDh1RWdE?= =?utf-8?B?TldrTnVSSER6ajArdG5DVUJ4RkRrZG9hWUFvU3hlYVpTT1I5aHZYTm5GOUF1?= =?utf-8?B?MWxwVndpRXNXU0tHcWFjWlV2aXFhSXRtNE9MSE1QalZobml4N3F1OEpuMlFX?= =?utf-8?B?RUcrS3E1UFJJSzZUL2s5YkRFTlovSy9jOVFPTVR4RVhBMEhCZzNHYWFIVFpy?= =?utf-8?B?YmxKMG5pT21MeXVKQ3Y2RzgvUCt5REsvOUlxcUVIUDhrRTVldUVRbCtjZllH?= =?utf-8?B?ZlhDcVA3RC9oMVVMSTR3bjNsZ2NjZVA1WlVFa0E2aDdseFRXbWlDOWczMVlR?= =?utf-8?B?S1lIWk03WHJXSjhyckFFWHBPQnVTcnI5a3JlOW1zVm1rNzBiVkFNNjNPbXNu?= =?utf-8?B?L08xRjkyR0sxOEhoR3I4K3ViRjd2dnh1NVJleTVjZFY5NVdueHFVZk5tOEZL?= =?utf-8?B?cEUveUFFMTlTeHRPSXphVGNCOHc3dU12L3RwM0M0bjRIb2RodElwdm5zY0JK?= =?utf-8?B?dzkxNDljd1YyR2lhTDVKMFZZYmFTdlJaQ1h0eGpiNGNqUHcvSlRXOWtNZkJ4?= =?utf-8?B?OURMbFJjR1A1d2F3WGVza2QwZCsyK0pJajQ2MXNJaWsvVHJxeGFMUjJXcURI?= =?utf-8?B?VWg0M043WS8wSlYwaG9wQ3FHeDkwMksvS2doNEl1K0xrUUxWZ2k5eUJLQWx2?= =?utf-8?B?ODd2U1BqTWJqd2RrbWRDTklQNzNMemZmbUxERCtwbjRsc3VPRjJoSDJlaStC?= =?utf-8?B?Tm5lM29sWFU4YXBPWEwyU1Q4eDlpbHpMOEhNZjB2aTdFRUpzVlJncHAwU2RJ?= =?utf-8?B?Wk1ldnJpRzVVeHEyZG84QkRsUUxldmk0ejZodGZ1Z21wd0Q0aTNjeFRNUUxm?= =?utf-8?B?MnhZT3lvQ0Y3U0krcGZTTnJac1YxdkpjK0ZydGJYRjhvTGowcTZHdFY3UnFG?= =?utf-8?B?elcrZ1M1dlRvdGdjUm4zdEhlUjMvUlNsZFAyNHFuQjB0SUJaRkl5VFVIc25U?= =?utf-8?B?WVJ4RXNtVWIyU3lEbm9YY0pENHlxUHFvMGYxRjRia0RxMWtOaWdoT0plOGlX?= =?utf-8?B?eFF1b1I0eGwyOUVmMXNXYWtob29wMHdJQ2pENXhDTW1CVWdTYmcrdS9wSFVq?= =?utf-8?B?UjVUQT09?= X-Microsoft-Exchange-Diagnostics: 1; DM5PR12MB1612; 6:1vSABN6er2Jitsw4FP3LZ0toQnfQFH6Qt5wSoGdqRSUL0Anc8RLt5gjysdvNioBwTbBi4y42WmEwHRLczrpfYpAPCX2kE7FvA/8mZUci4g4xUThWq7G2JAmmIZ9xGP6RX8dQm7DSaMrGAIwXOvy9CqkKZIfr4UtAJ5gBqpM0IuAA5xPi/300RyBd5tYlQ504xphpSxYb0HRroqVDr06snP9R2nH+o3MmMc7C+E2I64LreCysEDnzk6+TSQYYfPYeljWMqkofcPOs7jf6RBAHCbZSe0Bp0E+ZdarpV5d+FDnXnqWM4iYHjz7w8cOLzih44xW6u3EVpO9dZIPlBL7yBIsibfJZBP7HGid3YF+NnuNwB78i8Hsokp7XOh1AyUefvyY52Q7WeX2+83SPLLlaB2FiT5L6gkWi+stIS5OQNNY=; 5:zeZ823I3G2UFi6TXxqe30LfwoLzBLVW7RCh8cl6Drm2nuh8NtSZwMzza3kyXBZfFMShhlQ9g3thuMg/TqNQGACObX+xWAIUvjvwZvMeD/jFHlcoJQC4WR4GAY7DYS8wDZxCokZyXSv8/W0dLcORimul7uTMV2/1/aY8Vgyz/2iI=; 24:/HlcelEo01S/83Hzb52TPMI9ukhbvw/FGMwWRpesof2i4EvOfUQt2SUer4cDMf0X0JGcfjeF+cbzCEGZxdrYvx8dWMC2bO2iocoflP2EBDE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM5PR12MB1612; 7:UiLPKyrUH3y869EJ7W72IDFzaTBRdLwyWicvzUfo8kLf9AV0qkdvxN+TAP+db79Tn2WFmOSkNUMeH2rIcChX7lKcwUGcxp6AYRWoAX8DOz6NQqLzjVVEcm8Y0+g3K14J17MaLqz+F0WZusWSH1lMGjSDyWv/ghE+FNJWzF6C0oCZlAUz1rSTpW1ut/tKw5684Xgn8fFlURCIw7HHeYPoIpAhgk0NsqbqSvJAx2m22YLaNgH5xovSmziW79IaVoytmMZpIW/HKA1M9x0RUPHSFIxmeRz7Vobs7zsf68ibrNlaxk2WleXoQb6Bf7FUHtccKA5Vpunphon7CoCVvvmbCw==; 20:g7zDQqwJrd1dE5zAiHCcud2bO6zU+5JGpy+dPT75PAXFWiqjl5luoggLc1IDDBiRvQCa54eurBoxuDHhHtt6eJwHALUSEqhqohyb9kxfTH+qIxoq4KwavFkVSR76KZGOXsVIYDO4lNtzo3tn4FPD5r7cUicHcFb/KjiO+jRnNukSAkWUpvXejZjKTWh+5AcCLWjQYgci+Mn3fWr7P49+ppfBxCXT7JEfsRyMHVDOUWMF93enh5VVseEU1y9vhRfW X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Mar 2017 20:53:44.1949 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR12MB1612 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.36.51 Subject: [Qemu-devel] [RFC PATCH v4 14/20] sev: add LAUNCH_FINISH command X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Thomas.Lendacky@amd.com, brijesh.singh@amd.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 The command is used to finalize the SEV guest launch process. The command returns a measurement value of the data encrypted through the LAUNCH_UPDATE command. This measurement can be handed to the guest owner to verify that the guest was launched into SEV-enabled mode. Signed-off-by: Brijesh Singh --- include/sysemu/sev.h | 1 + kvm-all.c | 1 + sev.c | 72 ++++++++++++++++++++++++++++++++++++++++++++++= ++++ 3 files changed, 74 insertions(+) diff --git a/include/sysemu/sev.h b/include/sysemu/sev.h index c614cc0..7632202 100644 --- a/include/sysemu/sev.h +++ b/include/sysemu/sev.h @@ -97,5 +97,6 @@ void *sev_guest_init(const char *keyid); void sev_set_debug_ops(void *handle, MemoryRegion *mr); int sev_create_launch_context(void *handle); int sev_encrypt_launch_buffer(void *handle, uint8_t *ptr, uint64_t len); +int sev_release_launch_context(void *handle); #endif =20 diff --git a/kvm-all.c b/kvm-all.c index 5e98534..92b4fbf 100644 --- a/kvm-all.c +++ b/kvm-all.c @@ -1828,6 +1828,7 @@ static int kvm_init(MachineState *ms) kvm_state->memcrypt_debug_ops =3D sev_set_debug_ops; kvm_state->create_launch_context =3D sev_create_launch_context; kvm_state->encrypt_launch_data =3D sev_encrypt_launch_buffer; + kvm_state->release_launch_context =3D sev_release_launch_conte= xt; g_free(id); } } diff --git a/sev.c b/sev.c index b391012..d32391e 100644 --- a/sev.c +++ b/sev.c @@ -253,6 +253,72 @@ err: return ret; } =20 +static void +print_hex_dump(const char *prefix_str, uint8_t *data, int len) +{ + int i; + + DPRINTF("%s: ", prefix_str); + for (i =3D 0; i < len; i++) { + DPRINTF("%02hhx", *data++); + } + DPRINTF("\n"); +} + +static int +sev_launch_finish(SEVState *s) +{ + uint8_t *data; + int error, ret; + struct kvm_sev_launch_measure *measure; + + if (!s) { + return 1; + } + + measure =3D g_malloc0(sizeof(*measure)); + if (!measure) { + return 1; + } + + /* query measurement blob length */ + ret =3D sev_ioctl(KVM_SEV_LAUNCH_MEASURE, measure, &error); + if (!measure->length) { + fprintf(stderr, "Error: failed to get launch measurement length\n"= ); + ret =3D 1; + goto err_1; + } + + data =3D g_malloc0(measure->length); + if (!data) { + goto err_1; + } + measure->address =3D (unsigned long)data; + /* get measurement */ + ret =3D sev_ioctl(KVM_SEV_LAUNCH_MEASURE, measure, &error); + if (ret) { + fprintf(stderr, "failed LAUNCH_MEASURE %d (%#x)\n", ret, error); + goto err_2; + } + + print_hex_dump("SEV: MEASUREMENT", data, measure->length); + + /* finalize the launch */ + ret =3D sev_ioctl(KVM_SEV_LAUNCH_FINISH, 0, &error); + if (ret) { + fprintf(stderr, "failed LAUNCH_FINISH %d (%#x)\n", ret, error); + goto err_2; + } + + DPRINTF("SEV: LAUNCH_FINISH\n"); +err_2: + g_free(data); +err_1: + g_free(measure); + + return ret; +} + static int sev_mem_write(uint8_t *dst, const uint8_t *src, uint32_t len, MemTxAttrs a= ttrs) { @@ -334,6 +400,12 @@ sev_encrypt_launch_buffer(void *handle, uint8_t *ptr, = uint64_t len) return sev_launch_update_data((SEVState *)handle, ptr, len); } =20 +int +sev_release_launch_context(void *handle) +{ + return sev_launch_finish((SEVState *)handle); +} + bool sev_enabled(void) { From nobody Sun Apr 28 19:04:07 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1489009211952862.521907009576; Wed, 8 Mar 2017 13:40:11 -0800 (PST) Received: from localhost ([::1]:58583 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cljJa-0000Ll-8Q for importer@patchew.org; Wed, 08 Mar 2017 16:40:10 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52518) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clj7J-0007Fi-DO for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:27:30 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1clj7G-0005r6-7j for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:27:29 -0500 Received: from mail-by2nam03on0072.outbound.protection.outlook.com ([104.47.42.72]:32926 helo=NAM03-BY2-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1clj7F-0005qp-Sf for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:27:26 -0500 Received: from [127.0.1.1] (165.204.77.1) by DM5PR12MB1609.namprd12.prod.outlook.com (10.172.40.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.947.12; Wed, 8 Mar 2017 20:53:52 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=DCzyZFXt/zbBI32ryHXrKLLl8j9Tfudu4yv0lLhr4Ic=; b=5S1rQtj2gMPr66w57RXRhjP6HeOaKnhC86SQsd6/2fac9L0ufvasdUWJWorwc/2rNRm4Sy0RmCusuqSwlJVB83WQT4Si7deQ6MI/T3swEJrZJqwJwUi+yreM0MQ0tWB/TF1uFsxxCx1kA4ilidUZ3XJtY10QrIrS3jaV6YLO2cI= Authentication-Results: amd.com; dkim=none (message not signed) header.d=none;amd.com; dmarc=none action=none header.from=amd.com; From: Brijesh Singh To: , , , , , , , , Date: Wed, 8 Mar 2017 15:53:49 -0500 Message-ID: <148900642968.27090.13322958747245445508.stgit@brijesh-build-machine> In-Reply-To: <148900626714.27090.1616990932333159904.stgit@brijesh-build-machine> References: <148900626714.27090.1616990932333159904.stgit@brijesh-build-machine> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: BN6PR17CA0029.namprd17.prod.outlook.com (10.175.189.15) To DM5PR12MB1609.namprd12.prod.outlook.com (10.172.40.15) X-MS-Office365-Filtering-Correlation-Id: d9117859-bbee-4012-ab27-08d466653b34 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081); SRVR:DM5PR12MB1609; X-Microsoft-Exchange-Diagnostics: 1; DM5PR12MB1609; 3:P23zCkIBldgsZRyWVLvezdLSGT8f2uYMFUSWYKSJdNHX3rAHAfdT61IobWTWAqk5+0yh962nHsKmKocJI9PxWgRKATztFRL89/V5L67+86dtIRK7nzJMD0YNdOKmczabDyrV17Ty65gaAMEwVmaLtoYPKdhVRCxfe7Eg7I/MSyr1X12WkPmmSN/k76JfjFUri9uUIjRqvS63JT+nrreF6FlkHrHonJjiz5ooTO45dOcYp2H3f9GeHOnPamrEw6oNX4YZjZ9zBAG8cVZoQ1R0ii9ve3OnjBKBlDmXqUgKwgM=; 25:u3XZnv7RGl1gmrWF6F18wnua5tcaPKKrH8e8fjE2pbpdLxzthM3LjHnxJSh6IF/CMan0NTuJSiG7psAjvOGEvIOdf0acLD0cNVk3JDCXKE/YtzEJicfRwc2XhG9hygofftna3Y6VAJWZk3IQHFSgiznBSffYtCR60MYncZmY/xt/ofJs44JH9zx99XncEiNrmo0q1UrUwEKvJbDs1lBQUFmgNvYNWmjIP0up0XrkBirS92v2Fjm5nPfbtZwDcjv7UjjZ6iwtuVjEByqfalKWDabnPrtUEU00jSIOEseO7sCcGKmi6NfV60XbQZb3iUrgjmegvH5EKIux/mUzF7LqRDUhMFexuxiNFGQHWl40tJUfzrAdwJo2dIvRb1tNfrmJbF4tTBLKsP4vl8vKhJEa4nutD21SUPb6tVlGjGhUoYDdumwFP0PVZI/y6b/d84dq/gEnSj1fOAqF5IFlTnc+mQ== X-Microsoft-Exchange-Diagnostics: 1; DM5PR12MB1609; 31:edysrPv38XjlOZ2g0ySWPTOYddoIrAkSW32A5oUpGOWFWCk5gJuZicoSdtx11xo6PYRovX8QK6dfeepT5Pq3uru8Is4vYF0U5L0uw/Ui5d6Ub6sisoRwRH9jqQfr+Ydn48AWLmdbioiTq22SEV/PNECggdGs7T7Yoq9hoKogcUx5goESKJ8KdmFlQbOt6gjZ+ghnAhyhcstTh6PQnLB2FliTaC3N9jqoXA8cjWK2U3M=; 20:txVtmm2Og4arxf0vWoZW2QCyVIPe+Hka0QSaBdMSGjKLbxy03xx03/WyTtCM75vGNzU6BZ7bNUy6qBLvfLMLEvir/SWfqKGpTWfh7Cq0wubp02T+jWaJ+cTJ3EHdeVrDZSGDj3mZ7n/Yzu/zq62rW/Uk3yVlaeJbHkB6vBj767MwhBS7ySrsfk1Ck1IDtE8uUtv5dEDcMm0BD0H7v75DD/5M0578Z3INeaTgxC/Nr7dRKSsRyDYkV8IB+N8pTflzPp3blpLAceK2CVJxOsaHbMdrCuFIHyzM71EzYwLyWleKx3uwFtYkwOxVG+s3IMem4tUwWKC1WK//diScwdivDDq8rR3Um+uuv4P2ql9YxZ8DaTGgSy8UjXwUqxoOwxNbSsH+snKWia1+vnwfZd0lO5+suUeC7/+F7weLxGzTqBBluVz0glu/5iNjv9pdfXwcBK6zw/rqeNvceAjh5RbiRJBH0GBJpka4RLpbXgFoQlUI8oDFn9416EdI0W5DL8b1 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6055026)(6041248)(20161123555025)(20161123560025)(20161123558025)(20161123562025)(20161123564025)(6072148); SRVR:DM5PR12MB1609; BCL:0; PCL:0; RULEID:; SRVR:DM5PR12MB1609; X-Microsoft-Exchange-Diagnostics: 1; DM5PR12MB1609; 4:RjCDlAuViut91ngrd8Vqd7PdTaQkBKZzW1B7DohgtkvNfZsMucwFNOsaAISwK60ae2d+O4ATobuKU/7yk1YUOOWJQKX6UZQ9lQxUPP0nGG1i6vHw6lR4uk9H21nvuiikxeY6au25+TsIu4Pppk/LTpAwy2IfdOrnOB4ErYKguKMYqqGEBjW2HrZ9p8OFxtA78P7Y6lhzENJRvYBogSpMcOhhB6/dPaLpK9n5+rn91GdeQ8i2P0NQSgwtCuRpeiRWSX6/NobtUSHLE594OLZ8oUkJSLb5dpjp+jc3EeVtQT13nUOvl1PyZ8NtfEYTyJpbUr0wnXoJBzlfJK5XTO+gPtbiEERPWpzS0npTRso3gQUAP6IjwWADdJXYpqfHmateY05zGtMco3cY3dVTwIq2dwVwPucwBp+xWFCmTGeleioG5J2+4sRXIYDc7dpQZrsTTjMQIdvcH/2rv0gdybGW6BefIob5LfI57atWb+XQo8YGiH906uCIqQ2UTdSzeMZrEfHNMr3iFFx5uVARcgXob0irwKcpamc/hCCv8sjfpzdTs7wS+R+jw0tZpM4jPAjIFJFWkmkdYxdhIa7fM+MtDXVPfqc6C1DAxyLkOETcm5fqIvMzGV3MoBG2oR1gVzVbILqjQrsa6zVCdNe1GoPuCkX7XE9naWaCmC4fDgRYdss= X-Forefront-PRVS: 02408926C4 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6049001)(6009001)(39840400002)(39450400003)(39850400002)(39860400002)(39410400002)(189998001)(230700001)(9686003)(33646002)(6486002)(66066001)(83506001)(2950100002)(90366009)(3846002)(6666003)(4326008)(42186005)(38730400002)(33716001)(23676002)(54356999)(8676002)(76176999)(6116002)(54906002)(2201001)(103116003)(7736002)(50986999)(53936002)(86362001)(305945005)(81166006)(77096006)(25786008)(50466002)(2906002)(47776003)(5660300001)(217873001); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR12MB1609; H:[127.0.1.1]; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtETTVQUjEyTUIxNjA5OzIzOm1rUlAvcVd2MThJUGI5THM5TnRNRjVQejFB?= =?utf-8?B?SkdlTytQbmVFdDI0cytwYWh0MlY3NitDd0tta0tBK29ROEdqNldoS25qSVNX?= =?utf-8?B?Vm5RMTk5cW1CMzFJcm9ybDNDZkJORld6K1hSV1RKbm5JZzhlWjdtZ2w0KzNQ?= =?utf-8?B?RUFBbFRrays1S0ZiM3BJZ0dhcTZUM1cyekYyUGl6QU8razJqeGpINVBLZno0?= =?utf-8?B?bXp3eWx3cjZza3ljV3BjQ1VzVEsvenhiWDRjbGdVSHpJRWRJZzVtdW41WFhw?= =?utf-8?B?WlFDT1hjZTBtYXFjamY3eVNvUis0WU5aakFRWnAyZnB0azl0c2pmUFk5TzJR?= =?utf-8?B?WlV3REs4T3RQK2dhdzdkMjA5bkRsN0FFenRPVVRXbVVxUnFJRmFENXJYT21z?= =?utf-8?B?d2RPN2V0UUpIcllWOW9YTWRHV0YzKzhxb2xjRXdHWDUrbS9ZNnFVb3JEUE0z?= =?utf-8?B?VVRyRzEvYTZsRUFPSGwzQXFMT3g1aDZFTVA1VGNkK1VpSVFLWnNpQVlPTity?= =?utf-8?B?WTZ1YXV6d1pPL3V3VlJ1QVlZUFpnb01VYnZwV2FHUHFtRmhPRGx2SGpuWnB3?= =?utf-8?B?MHplenhOOE96Wm1RbkFtMnFlQkg0bCtjaDNCaUkxVEtvZjNlcGdFYjdObnA5?= =?utf-8?B?RzBNbzBHSXlwM0hHbllmMkxtdEM1eDh4a1crTGVtcnd1SFp4YWtudXZIM1Nr?= =?utf-8?B?bSs5M3p6TER1b0lXQ1l4aiszUTF1Z05tRWo5cWJ1eGw4b3ZNVnNvWEZTUU9U?= =?utf-8?B?YS8wdjVaYTJGWmFQUy9Yc0pHdjc0YTMzWGR0OE84bE94Y1VHWFhlWm1wb1hh?= =?utf-8?B?L0lVN05NMFJJNWRTSFJNVTdWV2Jnd0hpWkg4b3Rla3M0YnVhaTQ1L05DSngr?= =?utf-8?B?ZTZrTC9xc1hObFg5NFR1a24vUVFCRC9uTTkyYTFHTndtZXJtL3lXQ2xkR1lL?= =?utf-8?B?Zk9laTVvR0VzK1ViZTlhUkQyVFo3Ky9LU0ZnSXRHR2VFUVIrVmI1U285U1NP?= =?utf-8?B?bkFna0ZpYk5JSkYvcFZwS2JVTk5UdWl5VGFLNlY5RUdjK0Y4cndhVnNVTXdW?= =?utf-8?B?SFhCRmdxZTJlOG1SMDd4elk3SkgwT0p6TEMwNG1YeXRQT2o4NU9OL0RFUkRP?= =?utf-8?B?b3lvK2xRdmZwMjlDbFMxQVFFdUJNV3hFS3Blb1hHdlUyNS9vaWQ1cFpQU3pI?= =?utf-8?B?Yks0NnJRVTgxdmJoL2xBcmpXS1I3bWJvMEowaW1pQkN0VW5wUDlGME8yWjhl?= =?utf-8?B?cGFHeVBkNjRWWTZPYlhOL1BWenk1aDNjN1BHMDgyWUhYWEhuazhpQlNId1N1?= =?utf-8?B?a0JtOXhtSXVOY0FUSVNkNngzcDVEYVYzMFNxZ25IWjE4d2NpbE5ET0dQSDZq?= =?utf-8?B?WjRRekhFU2IyQnNDcm5rczQvWnpQYjdtaFRXNVUwQ2hBcjU5U0ZPR3NmNFYw?= =?utf-8?B?WTB5T1I1V2VFT3FKSzQ4TFFHTCtZT2djU093MzJLRDU3TERUTkZQckFaMSta?= =?utf-8?B?bmhxZz09?= X-Microsoft-Exchange-Diagnostics: 1; DM5PR12MB1609; 6:5H+afWEhi+vKYIrEgaPqYOQHB6cJAAtxZ1fuPzZSmOLTo4IRYfroaQ9cTESKAvbznVomvt+zpRS9XPeWKkvEPDnX2hSfbI5BD/FkFXkORvVQWYeSJqYf3+CjhZPJcOdfZOVhBiD88XAPE7o0b6GiZSnYTFhiAOGnwb7a9SeMZBtIkE2XcHcH+RFpoePjMOtZ5sRBCITpPPVR5ur1WhIPu6OHxdUHPYqUt66DYSiqX2RA/cKPkOD69yFhQ8xtLD0GA1q+gr4sgNpmRQhB6RefgKM8ubHq4d+T41z26hV9nKpk2seV89RoFLG2mjX76nJdu1edXmc7JN6rNFxjTU0jbqPyr0p6cVpR6LY1xME182IUbvg4Stui95z+0KCpj9oJOCz3Srj8lJdpgZiMbMGWWIK+eBpRqwX4xoy2HL6EgfE=; 5:yPf7Yxdspj/oaiRY3Qy6XqafdNOUFQjqK4pnQLAq0SoyhWD3d6A5hxOyWaHNCliC0rSgeCi4UZyewgxPVdyvCHn6PWEnndVwx2lv5fY4jIKq3DCpQfddKW7mI+tuYYUwI+h+8eGYioQCBCOiMe4Yj/GjHs6Di79sK7fM6W8BjWk=; 24:t2Jpsm8wFc9dlTLkZth14lBfKh38hPUagGftyQU8bnzkV4Ixp7TSMqre4Li0O2qSPCWcjS4/EBmzzGV6u4rHyzqtBFMqpsm+tHtKQVZP+U8= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM5PR12MB1609; 7:hvt5bno9Q9TCigi26e/WScgruN5khKNv824Zbfvw9NC+mbToWBENwpCFDjTqP2plHm269FrF//aj86TH/8aiTuIv7KlyznhDxMoOJc6WHxOqsxs9FSEA2MzQhEZP9AS9yDjaqHvtBHAZYdeFrGm2nsJ5+7FLk2uhai53won6FGtvgBXPEiv6rIGt3aPqXkBwuymbjSiYcw56pfZy+WzS9EXpa6I/FrVECNs70jUsTOJJHxrYrGqKCUlildHkBxmKpc33GuXsKkDgUUbwBrMFrgBuAiZb8yJRoJJ0lwK+tmSEaMqd9jsvdODvQCP3hx61WPDN7mf/JUCOSXqo+7Vn+w==; 20:xct4F4gXFwJQDrNxCgRsJj/muLteF4u7ah02lJ7kmprStp5mimhP8i1NjcoKiX68QElz3pzzefWW7mcw9BDxalmf9XQkNu/dCGSO/BjRxV+vBvur4+R6+YTmUa7XphAVUvVc5OIUopuKhm6g/f0LpxDrs6fI0B5u6tLDeN2fHxPiDmcBDqpJ/Gh0zQIlPUROWKXgs958vknJjTk+f8P2NhAyrXNPDAN2kM73SqaoV/m+LaVrMzgAGc89QgPwcUKl X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Mar 2017 20:53:52.7276 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR12MB1609 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.42.72 Subject: [Qemu-devel] [RFC PATCH v4 15/20] sev: add DEBUG_DECRYPT command X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Thomas.Lendacky@amd.com, brijesh.singh@amd.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 The command is used to decrypt a page of guest memory for debug. The command will be used by qemu monitor dump and gdbserver to access the guest memory for debug purposes. A typical usage look like: cpu_physical_memory_rw_debug cpu_physical_memory_rw_debug_internal sev_debug_decrypt Signed-off-by: Brijesh Singh --- sev.c | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/sev.c b/sev.c index d32391e..f8d822d 100644 --- a/sev.c +++ b/sev.c @@ -320,6 +320,36 @@ err_1: } =20 static int +sev_debug_decrypt(SEVState *s, uint8_t *dst, const uint8_t *src, uint32_t = len) +{ + int ret, error; + struct kvm_sev_dbg *dbg; + + if (!s) { + return 1; + } + + dbg =3D g_malloc0(sizeof(*dbg)); + if (!dbg) { + return 1; + } + + dbg->src_addr =3D (unsigned long)src; + dbg->dst_addr =3D (unsigned long)dst; + dbg->length =3D len; + + ret =3D sev_ioctl(KVM_SEV_DBG_DECRYPT, dbg, &error); + if (ret) { + fprintf(stderr, "failed DBG_DECRYPT %d (%#x)\n", ret, error); + goto err; + } + +err: + g_free(dbg); + return ret; +} + +static int sev_mem_write(uint8_t *dst, const uint8_t *src, uint32_t len, MemTxAttrs a= ttrs) { SEVState *s =3D kvm_memcrypt_get_handle(); @@ -335,7 +365,11 @@ sev_mem_write(uint8_t *dst, const uint8_t *src, uint32= _t len, MemTxAttrs attrs) static int sev_mem_read(uint8_t *dst, const uint8_t *src, uint32_t len, MemTxAttrs at= trs) { - return 0; + SEVState *s =3D kvm_memcrypt_get_handle(); + + assert(attrs.debug); + + return sev_debug_decrypt(s, dst, src, len); } =20 void * From nobody Sun Apr 28 19:04:07 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1489008679891442.9338781420189; Wed, 8 Mar 2017 13:31:19 -0800 (PST) Received: from localhost ([::1]:58540 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cljB0-0001B3-7q for importer@patchew.org; Wed, 08 Mar 2017 16:31:18 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52471) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clj7A-00078N-C0 for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:27:21 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1clj77-0005oU-5g for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:27:20 -0500 Received: from mail-dm3nam03on0081.outbound.protection.outlook.com ([104.47.41.81]:25600 helo=NAM03-DM3-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1clj76-0005oL-Ud for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:27:17 -0500 Received: from [127.0.1.1] (165.204.77.1) by DM5PR12MB1610.namprd12.prod.outlook.com (10.172.40.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.947.12; Wed, 8 Mar 2017 20:54:06 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=/IE7/ZmSxAUHaXWbG2kw86P3EAl05aoxe+IzeAMaFgo=; b=OJ6qrk/6qr9Vd33fvIA5Qz2KI64zn8rRtMMnzSBOL6by2LBp/ifMbdwiWta6sl8eISgcO6Zy0nirX2rUFbnbenVWMJh6hncJM2UoS5P+Cd+zd6nqeNHsTwBNIeI+72mMXSpuUaS6J0pCJEU37b50NfGWPiUcpNR1P9of3bpsfTg= Authentication-Results: amd.com; dkim=none (message not signed) header.d=none;amd.com; dmarc=none action=none header.from=amd.com; From: Brijesh Singh To: , , , , , , , , Date: Wed, 8 Mar 2017 15:53:59 -0500 Message-ID: <148900643904.27090.8331322427122591841.stgit@brijesh-build-machine> In-Reply-To: <148900626714.27090.1616990932333159904.stgit@brijesh-build-machine> References: <148900626714.27090.1616990932333159904.stgit@brijesh-build-machine> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: DM5PR15CA0010.namprd15.prod.outlook.com (10.173.207.148) To DM5PR12MB1610.namprd12.prod.outlook.com (10.172.40.16) X-MS-Office365-Filtering-Correlation-Id: 32e14612-420e-4498-396a-08d4666542ee X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081); SRVR:DM5PR12MB1610; X-Microsoft-Exchange-Diagnostics: 1; DM5PR12MB1610; 3:FAJ1ZjuU1p2vGMz0QZH/S+ZWtfw6NAfn7ma4cwQg/8tQr31xWlYu8CdXVoFgprqm7cePR1glb2cC7pO9/TNv931AYsB3f2VJpyBMArDpXrGpri1AJwedpEABn2ihp/lDOGG30pWd8K4mhA3j8T6gJU534EQJMzRigXa27bIO6FTsrAo982T34AvYd7LeesRwHaYRCbR9NQHDgts879Tyc8S6zTfuXyPHUvf5q7TdLbnyjIh6X0qUajs61iADM5TkcCi5B6jIgNk+UjOnU/krtYdx5Fa5zKtf1YVCN0R8k0M=; 25:lP92Evbvp9ERbcD8BdqMKsR5D9xinfyEUIDlYqEcRfjwHT9zp3CnNXeBP7drHNJV7VwupEvIrIB3VdFUnNh/XWJAKmFQP08L8LhCv1cZbzQpgxXJcG1d/GPnh0/MS5BsaWME8BByLKscrypa4KIXziKPFcT1bVh3Sv07mrXpgMfgzRQYeqm6oUuxvr+56SMjlYEI6UG6R27Ci4W1SOyMYqXHdxL3EwarVzQWO4gS5LuljeS4oE+cxq+fFQeMZapNne6rinG0zDiDa/wjlk2HE8YkbbG16s4CiD94ulEKOm4144PvPbFknK8sbhcFATCCCnB62sq5hgXjRKlI3pfEJdWxOAhmVK7cePOGpeXFMTJWkw2vv2IzcuNf2wsat0k7Hqq/y/CaJlAbyrPKDnF+hYyT87Badcv+pJCJisc1LfqMI3OjlekVatt+biAkuubphM2orXOBqUwZlgxuIHMXhg== X-Microsoft-Exchange-Diagnostics: 1; DM5PR12MB1610; 31:YSqFfViH2LneMtbshQGsypamGaNzUtkwnv15ZYjgfjzlEUM9T1+oJ5GQJas4FoowdxtbZVZEFngRSXo5Gv4t/jnjp2y9Erd3dC/MMym9gjCGGne+yJqYpwIn6Uq3eR5v3SLHrO1AvZ3VwmVqkJPhVxiUYhW36iAgp2mNn2Iq8Mh84wa6KPW9VXW3somFjWoSNUuiQxhbqCqlm6FWlWSfJF230oElesGTULnKi5zxZVH1MOb47ykNriQyoZ9BeB5P; 20:Q5HbVppM4eBh+YXARczBkf/iG3VximEV1Vjs2GRVaXhjUj+CTB4MaqaM7QHWzXd0una0RDgN3SD1swBFWdb7SGgu0H5eHfuou+iYEH14ocNMaaDyLfa+l/0DmTLbdQ7p9YH8+B/J/qz5OzV1dzDZWzsrMGEn/0B9I68qqLeEJbxbiZxuJZL8wAf7Yu4/MVY2VLwTOxbgFrGzKMQ3KgOPLfQmkzBiXYMgs35BHFLsy9IYGsbstH6JpMZ4wqaEDegGXEmzmKu1hvoTTrbyJrLjMc4R/qlfOp5E0lfkUzglw7SDKG36EnjDcDB5YPs0ksHLYxr3gRy5ehYgw+dcmC1e1w58vow2DyKJizs7W6Z5JKljBBuSjwPKBDdYeJevtulneYR2jY0woDip6CYZbai1gnWhkx5vykjJlzCSI0Vt2nkh0vNkk4n+dHXYTvnYTjKxch53R8vHbstBC66h2CE7OJlvPUj3FVUeRVwcHL+XyPoqGOG/+025BSMOUF0wJ1dk X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6055026)(6041248)(20161123555025)(20161123560025)(20161123562025)(20161123558025)(20161123564025)(6072148); SRVR:DM5PR12MB1610; BCL:0; PCL:0; RULEID:; SRVR:DM5PR12MB1610; X-Microsoft-Exchange-Diagnostics: 1; DM5PR12MB1610; 4:g3L/WQ8MS9HEuOu3v2TRttafawcyrPCsxBE5zuIjMvx+lTwskOl9QyVOlbA3h31nPl95s5jPCrHHDY+l+2ZT/jdEtwdjBa3tdLH9BFREeKdulgPgSs3cNhIP6dPDJ00PMxXFUxi+POdh/SlV/ekBLtsfWsD7UsTPgyWmDNRZryOl3HUjtWWZ5QlvHPjMRjqZ+ZEpgO2FImDSAobCHmTU9zHzkF95Awt7ZTwWfk6hnMIKSTdN9O1+KDUIUIMnpJ+EzoSr/QyfwrndMwB2qID1VTAOBhw7S6NT6AkZJzYPcKslRrQbgJd9PgLY1SyMAe6VMv51srUf3UyNpx3eoiyItT9BbAZQebNh1wkJ6P01SBSzZtvPtvQzw20333EcwWfHPkjkW++1fI198ejs1G85Ss5N0iFi+Cu5XcD1GG+Ftl0n7GDmOG8ni4vKYHyDOlRSTR8T4PPiVEGQzIWfQ8/oO82fWy/dwzcay3Mdp4W/0aEOo0hCm2uN4SmhKQXZO4amt1nosEjOJBXua5e9WOCbj7oLNAguFJxw5jSK6fxERvGIq/IUml3P0GxPMVPQcYCOcf4+35kL8JUNFK2r9uWPlvM5Nv/COiqK2WHa9L+l2BAN6kR6UJeAoXR/n0Wjr7Nxm0PCYeq4BAfPcrQ5cwQnzza70LRH7RlkUEVnZgiupuY= X-Forefront-PRVS: 02408926C4 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(6049001)(39840400002)(39860400002)(39450400003)(39850400002)(39410400002)(305945005)(47776003)(5660300001)(33646002)(6666003)(6116002)(3846002)(66066001)(2906002)(90366009)(2201001)(6486002)(7736002)(77096006)(81166006)(230700001)(8676002)(2950100002)(33716001)(86362001)(103116003)(38730400002)(83506001)(42186005)(25786008)(54906002)(50986999)(76176999)(54356999)(9686003)(53936002)(189998001)(50466002)(4326008)(23676002)(217873001); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR12MB1610; H:[127.0.1.1]; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtETTVQUjEyTUIxNjEwOzIzOjM3UmtBejRMQkhTNnAzYll6ZGR2eXl6Nkp4?= =?utf-8?B?MjU1aHNZU25tZUVpdytSNWlOdG5paGRzUU1ySkJSNVRCQVhES0NFLzY5UjRB?= =?utf-8?B?ZU9QZFFqZ0JEZEVxWW9HUWlhMFFlMzZhc1F1NTMrbDY5TGxpb1VacS9BSEds?= =?utf-8?B?bG9pRWZhVmJ5NmM5Y2s3NzliQ3Z2QWRVTHM3cjgwQmNubzE4TStrbC9HNjh3?= =?utf-8?B?Y0wyMUFqYlZDc3NLckhOekRQZ1BVelFLZzZ3dXB6M1NDQWQ0OWNmMno0RWs0?= =?utf-8?B?dXBLd3V1OXJrL1RLVjkvMGNSMUNGZE9CZFdOL2RzUkovdXhkcWVqSkZZWTdX?= =?utf-8?B?bGY1UTE0WEFrc243MTR0NHNlYzY1N2srMHYxNTRvelRvTGpyUzJZbjNiTUho?= =?utf-8?B?andPOVREQ2RHM0wvdWxJMTFZWUl1dHp1SXE4dThtL0FoSHQ2c3NNTjdCV2o1?= =?utf-8?B?aFRLSS9ERnQ5ZHgwWDJYQ2tkMWJ0VVVYUWo3VHMvazQ2QXRDeUtXUXNybW4z?= =?utf-8?B?T1FsS1V6aEpDODJuYTgwcFcwUkh4ekJJeE94K0MxNmRKMzByMGxOZXM3eWUy?= =?utf-8?B?akkyTmtHSW5Xelp3dnl4SmM0YUNUR3BiM3FDekIvK1ZTTWRTcDVBblNnekc4?= =?utf-8?B?MUZuaDdyZ2ZRWHI0TGgvMWp6SUpCUXYzNnlyQ1ArcERmUFlsa05FL0RhVlgv?= =?utf-8?B?cW40dG5qbDBGSFNIeWFjcDFZZERJeUZ4bXdNUHB1NFFSMnpMSldVZkFJKzV4?= =?utf-8?B?eTFYR1k4NHVYSU4rUlR5OE5OdTZMcmJqbU14Ny9MdnFVZFZCVnlRcTdDYXFl?= =?utf-8?B?YXhlKytSd01WZk9VdWM0NjU2dk9Ra3BlKzYvQUM4TGtSTldwbGQ2RFQ4dlZr?= =?utf-8?B?Z0lzOTRpWUhXM1Fna3JLUHc4YWwxQkpRM3FUSXpuaU0rSVpXOU9UMmJ5SWxU?= =?utf-8?B?ME41MXZPdnhSTk5BUzVxd0tmUUlUM0wxdFQ2VnhqNm81ck9vUkNBODNCc1Br?= =?utf-8?B?cThrWEgweklRZGRKb1hzUFM4UU1lZ2lWaTZaQXUxQlloVWVzanJYSkp6blhW?= =?utf-8?B?UlhDT0w2c2Nmc1hTOVNjUFMyNHB0aHFoK1NEUzYveTI3WEZqakdiYTc4bjNi?= =?utf-8?B?c1dNWjRCaHltamtkRTNGcVVVMkp5NHJaTmFWQXpIeEJRcENxTWEwc3VnSlhB?= =?utf-8?B?ZllPQlh2N2QvZzNSaFhCYWd5T0tJdjR0RWpDV0c0WUdvYmtlMU9ycEMvUG5S?= =?utf-8?B?RVdXV2huay8xMXA2RTRxdG9aQnArcUZ6UVB3RlNWR1ZOcXl5MCt0aGRoa3Mv?= =?utf-8?B?S1NpZS9tQnBXTkJSWGhCR1FWMTZ4dTlQeTEweTZkVFllWkoxa3ZNeTJ0eHAr?= =?utf-8?B?TjRrQjNpZnZiUWFIUk83VFkyNHZiTlFUZy9MT3Fib2Y0UXhjREZGckdYQzNi?= =?utf-8?B?dlg4ejgzN1NFYVpPRDZTSHEvRTBhQXlmRGtjQXJlYnN0a3VDdmZ2S1pZU29n?= =?utf-8?B?aGJsdz09?= X-Microsoft-Exchange-Diagnostics: 1; DM5PR12MB1610; 6:KOwLhkHPNcfXSxiHnOGirWgcNKTsSlZPhca0BNDa5LFn8q7uy+sc068WDPt0rdo5GKS+MewBM5R1yMaT97GeupA9cYg8fPjsbLR/2XKqjb8BzYrbgRLpetcGdHZVIC6SGzIbfZ1gRcvlaME+nfBrKF/QtQb+2ceIM8oqbMVtt5L//RJAcykOgnvk7t1DuKzmMcZ4HazUZkMfJkHPorsqU4DUwoSHOfootGmLLU0844ZyoK8hbOrDiYE2eGvVQWyIGTLPG5vKvWdQ6WWwOtecIJ1K34BbJRveqLq6zbqPy8PUHBIf8zim9ww97EEHPEyi6uJqR48fWgVNwHBDCS2dHyOw9JmpKnTptWc0f7HlRBzrzDUeQW8Z5007KEqbeyEsj05QjmMURoLnEsGbEhXzN3bld4Icw8xJsiQqUKGxSHo=; 5:k8dkA/wdE+AnWuFjUGw0RY6T901frykNU8jfM+DLF+GlWW30L1VGBwZ1gBG1w56570S0vzB61xCBEaQgGTq0yniIPKCz3aQxZz+PlbIU9+6Yv259nSLFgNJRv8ISA/AZTCzj7kGCDtcM77mtz9K+VGju2FbDWrbIjSc9EHBdb7o=; 24:G/t4vnl27bwxzVtIYXYPMX/m9qKSRrb+WsGfkj/K9MJbOJi8IzAXa5IhoSf230WZvh6qgO20B4LL9Pj7S1FvYy4AIFRmJlMgDb64CH+6cZw= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM5PR12MB1610; 7:93HvwkUJaC4J5aD/94YQZOKO9oWn0TY6ufiLXIrHjNiWoF2YKKLv1sU1FeqG8nB62NNmYLD3kNrIZKc8RT/AAyK2XrFQf1gTAd1HF9wjA5CsvmNj6bbpBTqwxAkGEmssQkyJRlaWF8XgHspImYuby3xEAe3Lw8TQnfumlKxUif/VWapAQyWePDB5KKp9Gmo7KoFyjV6VfcSgPUNFE+XbGiVTSSDgsiu48nLg/VgItEpBjTSCQryhiqlgQifviNhr3DTUy1zGgX6ea/bSp1HsCSfKlu/uKRPpbat+p70FCNutN2+/8gNbYRe6VDA4EVPz0wc4U5C/eAaT9JJXdErSDw==; 20:PdnvqmO8aL9+ug51pcUY8W7k75Uf/0uDImSUqszbbbUyf0h+9LwL1hCvNnSw3Gj45qjE7o8vC/2DJZ9UrwdPk5kvlHxqTayV189Ykjde7x1oX7jxtVaEn8NxKdbfKAbFm2iP4cMGIFfn58FxGD5iho1ALUKqY73bTE328xhUTsBuFOYcShgcpu5jjopy3ozZNHoMywYxoSx6KaIbukq0iDBXTOhry7bMgt/7e/jpg0p0LzQ9c94WAqvcEcYIFiTZ X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Mar 2017 20:54:06.3908 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR12MB1610 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.41.81 Subject: [Qemu-devel] [RFC PATCH v4 16/20] sev: add DEBUG_ENCRYPT command X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Thomas.Lendacky@amd.com, brijesh.singh@amd.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 The command is used to encrypt a region of guest memory for debug. The command will be used by gdbserver when writing the data into guest memory for debug purposes (e.g setting breakpoint) A typical usage looks like: cpu_memory_rw_debug cpu_physical_memory_rw_debug_internal sev_debug_encrypt Signed-off-by: Brijesh Singh --- sev.c | 39 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/sev.c b/sev.c index f8d822d..52b75e3 100644 --- a/sev.c +++ b/sev.c @@ -350,16 +350,49 @@ err: } =20 static int +sev_debug_encrypt(SEVState *s, uint8_t *dst, const uint8_t *src, uint32_t = len) +{ + int ret, error; + struct kvm_sev_dbg *dbg; + + if (!s) { + return 1; + } + + dbg =3D g_malloc0(sizeof(*dbg)); + if (!dbg) { + return 1; + } + + dbg->src_addr =3D (unsigned long)src; + dbg->dst_addr =3D (unsigned long)dst; + dbg->length =3D len; + + ret =3D sev_ioctl(KVM_SEV_DBG_ENCRYPT, dbg, &error); + if (ret) { + fprintf(stderr, "failed DBG_ENCRYPT %d (%#x)\n", ret, error); + goto err; + } + +err: + g_free(dbg); + + return ret; +} + +static int sev_mem_write(uint8_t *dst, const uint8_t *src, uint32_t len, MemTxAttrs a= ttrs) { SEVState *s =3D kvm_memcrypt_get_handle(); =20 - if (sev_get_current_state(s) =3D=3D SEV_STATE_LAUNCHING) { + if (attrs.debug) { + return sev_debug_encrypt(s, dst, src, len); + } else if (sev_get_current_state(s) =3D=3D SEV_STATE_LAUNCHING) { memcpy(dst, src, len); return sev_launch_update_data(s, dst, len); + } else { + return 1; } - - return 1; } =20 static int From nobody Sun Apr 28 19:04:07 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1489009334692674.7453211955399; Wed, 8 Mar 2017 13:42:14 -0800 (PST) Received: from localhost ([::1]:58596 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cljLY-00023R-3Y for importer@patchew.org; Wed, 08 Mar 2017 16:42:12 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52593) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clj7X-0007S4-FS for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:27:44 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1clj7U-0005tw-AE for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:27:43 -0500 Received: from mail-dm3nam03on0074.outbound.protection.outlook.com ([104.47.41.74]:37696 helo=NAM03-DM3-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1clj7U-0005tl-32 for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:27:40 -0500 Received: from [127.0.1.1] (165.204.77.1) by DM5PR12MB1610.namprd12.prod.outlook.com (10.172.40.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.947.12; Wed, 8 Mar 2017 20:54:14 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=UHN+MMO9SFRhdVvkoKRm9LihjJwJHzymZoiSHrkdaiE=; b=UuFUG/EB8u3pe3V6pHa8pgVzI3XfZrLu4Uo/YQ8K6g+oWqNbeqpeX7/5OfVoxNQnvZG0W+7NFa2BgDhn7vYj3lBmDAe4UAjRknMgyaPoVa3wOPRMQozxxkZLjGUe9cwP1sr2GeqfWqXHnYWIZ+LsZM6ikNH2ze4+mKVdLiZynNE= Authentication-Results: amd.com; dkim=none (message not signed) header.d=none;amd.com; dmarc=none action=none header.from=amd.com; From: Brijesh Singh To: , , , , , , , , Date: Wed, 8 Mar 2017 15:54:11 -0500 Message-ID: <148900645191.27090.14005849682729903734.stgit@brijesh-build-machine> In-Reply-To: <148900626714.27090.1616990932333159904.stgit@brijesh-build-machine> References: <148900626714.27090.1616990932333159904.stgit@brijesh-build-machine> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: CY4PR13CA0003.namprd13.prod.outlook.com (10.168.161.141) To DM5PR12MB1610.namprd12.prod.outlook.com (10.172.40.16) X-MS-Office365-Filtering-Correlation-Id: 6c64f133-1496-422e-b470-08d4666547e9 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081); SRVR:DM5PR12MB1610; X-Microsoft-Exchange-Diagnostics: 1; DM5PR12MB1610; 3:G0+HB3UsfZg8eB4Ewmoo2z7p0mHCOc48MFoNaSU12WlbvdRaMWF1TXu41or68E/3YsCClVe5fZl/hyMUI/Pu5PVeFp/jM69ZFgq5e5J6h0i9H5zcZ46RwJqT295qKtcS4QNISPKqyDhpLFg/4HIPlEhatPRREtWujK2rM0/uzdKYkiNNzrZF+iSnJbROOLxZ3ium9AUTBAggcow+g7KiaswpkNRKvabvsf5NiF7EsNjnIxtOp5t8hA8ZwZUahEfjOaql9VSESJB+8ibhCGwJY/tGG9Om+ZxrGrxf45gmrpQ=; 25:kMonynn6jnvpLU7pJ1BhCdWeaQmhnxAd8amV3UGkI9USMBbm2SBhZot4i5MZe/ErCooEIfyLWkg7tgWu/oVDHpTzENst7vmAdOBCW5If/M4KJDBdnn4rnqmSQexRWofxu2PlM6HV6LZ7ewgclwOkQTDYNF6gNcuuzAg5+vVsT27diJrXCQ8urSaDUjaWadOFuuEHenOFik3We2KWRxTCltj940HanLEtxeybScE9j0opi+IYXtkGL90hFP3pxs7uGS02x4Ei5FqC0rWsp4cwnbRD8cf704uNQY5tb4DvbQygYZn+4XfXDdAnq/jD49pPlhddo2KVdqBH0+rHDNi6JHFk7dPzHW5yt3Mwr/W2H5xdNbvRq7KH0H+Jw1Z2KJ7ZlUWc7xKTZUJS2yoi/GlY2HzWkYBeIOz8Jqo8h6CUgcZ7v3dgV0cTrXCtpc0yNAzZ X-Microsoft-Exchange-Diagnostics: 1; DM5PR12MB1610; 31:7x/wzaq6YVC+0AbtwCNl6CuOXRp8XymbD1cFY8Rc72H91dL7lOtxuT9/4WZafMEAdD8CUChtXNCUh6Jm/mOr3Roxx7f7wnUKjQUXJ9MEupkEJtJ8qgfWex2l72hFKeTQ2Fy7UIv+4bWtPepuTFsyx1FSg1Wth33dqNUNRMyQihUGbtoO8s/0wHkiQZZyzdIDr5dLeFJ41uJFhgrIb0IW5bc18KnixTBfj5f8+vPN6Do4A5w2N+Rmv0yDiQuPEOQU; 20:EOBb4GLz6hjCK0EJcADqNv69BZm9LoEDvxqd8N8atCts+4CX1ok82TbDe0ewI2QOmnBg7eCgWlhtcUCf4qy1qo76mKV7K/uoqacQln6NxjIrZ1BFzqOGrsWLSxdYx7psBQ6hdgR/0YQ7VaQCfKC1dF3GsLLusGt2czeEevv24kCAu3UoCLZ1d9U10vdDOtYvD5xqWUy5C0xk/XN8jvrwXLDWx219khmitmdTo9fkqaCfRDMhZ2rVFruCJ/pHXInVpDoD0UkHlDwneUd18D85+MwPwDNM7an2mg2FON7kl8frbz1FeUexyQ6X4wF9zXVMqJeuEa6ipLcSlVd0l2DODlsytayvCyA5MelDFKuS28cT+pi5ZMSYO9LLAjpT/+Een313iaDD1sUJFx5aGRJYxkKbBnVC4v5bhbydn4RsgacMKLu8YjzVGpJrqrEndu5PnR9WtoyP9seUT2hPHGPPRbcYUNQdvu1LnMoiav5jQ9ess2TYobJ3Fsig3Q89c99s X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6055026)(6041248)(20161123555025)(20161123560025)(20161123562025)(20161123558025)(20161123564025)(6072148); SRVR:DM5PR12MB1610; BCL:0; PCL:0; RULEID:; SRVR:DM5PR12MB1610; X-Microsoft-Exchange-Diagnostics: 1; DM5PR12MB1610; 4:lPPXWCVkOBKYjK3WZK/TfUyd4PS7gCpa7KP00o7a/SR1IB3otamD0SHQb5UrSu++8Q4jfW96drAC5NJWCOhgsYBT+vcYOhOB7qmJ4Hf2QozOFgdW6moGxpCrDAtKQYAqGlu6dDi4iOgssSYjtT2US/wuTMF8R66Vy0UF0eanuxhEuKpzsTNtBC33kzRI3eMfuB4NhqqoHtelNvGEHVOgTFkXzdziQEGpd3EnV6hJzAjSjFFANg4sT02jnR1KCMsxF4O0YMvhjwSIF+Bu6CmwfIaTYpaWwe8qyPs/fc533aZCQsP/WNP8/7Tkpakef6J3r2AZ5Cdt5QL3FnwvWh6AhzMnPk1BmO0ri6IlcPAGP0KAv4mBgyj0S/blsohvcK8nPD4v6x4CwAIK4X4grNCOmAJMZv+JjlnI95+Ai+b+pbH+oyfN5yBHFzs2d5vI8lJ2McA74SgYQ1cZAHbIDNMF64v/w5sdoZkNk80KseFdhu2p48k6j9iQUpkQGa9EiB7Taurt7cWqJsX0vVKDKWpdQyYb3Jbr8i5QnPL837m3IelDR8a4ZkcY77MGCObq5Spdabqk6WVcBUFQ3Z9NGgdRYwNaMZSgmWK1WgjIi3+gSQTZjlcYSn1AzYc/NvYUkwyajDyvQZwiMs8IPrzgKH1jQoGxPlnCsxzjzIK9kJAUYvY= X-Forefront-PRVS: 02408926C4 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(6049001)(39840400002)(39860400002)(39450400003)(39850400002)(39410400002)(305945005)(47776003)(5660300001)(33646002)(6666003)(6116002)(3846002)(66066001)(2906002)(90366009)(2201001)(6486002)(7736002)(77096006)(81166006)(230700001)(8676002)(2950100002)(33716001)(575784001)(86362001)(103116003)(38730400002)(83506001)(42186005)(25786008)(54906002)(50986999)(76176999)(54356999)(9686003)(53936002)(189998001)(50466002)(4326008)(23676002)(217873001); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR12MB1610; H:[127.0.1.1]; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtETTVQUjEyTUIxNjEwOzIzOlFldlI3RWpNb1FYQ3RYYi9wZzY5SHc0Wnhv?= =?utf-8?B?OG1QdVdJQ1ZUMTZWRlZ6MjRTV1kwMXVxYjdPZkZVOEZBQTlGOG41eWRlS0Mw?= =?utf-8?B?V29GUVB6dDd5U1NwaGVaQW8vQzh3T1pLYW1sWWEzU3lIT3NZU21KRDEwVEt3?= =?utf-8?B?OHI4MzhsRkJzUnE5OXFqYUVwRUcxZ1BrV05od1ZtY0J4WGxqWTUxRzdpb1hL?= =?utf-8?B?eXAzZUl5MzR4THVvemhQbFlGZHBhM1VvWFlCd2RRZk5JQUo3TUhtUHBBVUVC?= =?utf-8?B?RHpGcXBIcElkZExieUEyQnB4RWlxUGdMTS95M01pVUpxaFRGQUNqUEkvQ2Jq?= =?utf-8?B?VlVkaXJDc2g4TGUvQSthdTNncEYvZ0wyR3o0VTZSMCtnR240QVVaQUJiVTRL?= =?utf-8?B?N2JTRi9vWjlHSFVzbGgzYmFiYTJTT2RmU0pPTTNWRjlFUi9XVGZUZ0NoSXg4?= =?utf-8?B?d2xIM3p4Zjd0WUtlR0FnNlZqQ295M29XVDlBcThTSWNzbzBjRVpIaW9CSVZi?= =?utf-8?B?M2p6OXN2UjVhTXREQUFIaTRnQllDSHZtQmhOK2IyTU1ITUVXSDZhWk1pU2M4?= =?utf-8?B?dUR4aEczbC9GbUtTVGs4Qy9WL0dHalJSY3p2dzlZb1M5czRZOHZabjN6Umsz?= =?utf-8?B?WlpHUmFBQ0Y2WTZmbUkxNDIwY2YrRkd1eGRUQmw5TSswQWhxSFNWcnhrZDNG?= =?utf-8?B?NERYWWFyeGRqQk9HNXhlbzFKSWREbkVHNzVtY05rcmlVUXZmK1hyRlhwc2JX?= =?utf-8?B?cURKa3hRbm1wYVM5cXhiNno4T0RXK2NtUlZVdlBnb0N6RGUvZTliY1ZCM29a?= =?utf-8?B?YlYvb0w3TEhYcVBPRENuajNGbnZZcFo3UWZVVllkU0VPZVZVR3FPbWpvOFM4?= =?utf-8?B?L2FVU1U3QnozSU1RT2w0TWtwcENwSDdGY1lML0JNWktRSHFzSG1qT2xqZDh5?= =?utf-8?B?RFVEVjI2WHB3WEcwZW03bUgrcm0xdkIvTnZjclFYN2k4dnllM3dVemRIMlFB?= =?utf-8?B?aDRzejVRcFo0Ly9TTmkyRG5kcVVQTndRZHEwZ0VqcjJEOEY3b1F5UndaSXha?= =?utf-8?B?VGtMRXE5dkQwVHdUUmJpUzRzUnhqMHhFSFpuSjhKM29LT1hlV3NvczFxK0pN?= =?utf-8?B?bW83alFHb00yQ0Q2QnpTOENUWkx4YnRmMnNDTFNqL3pqVHBlMnpFODROa3ZK?= =?utf-8?B?ZDd1SUxGYVAxV0lsRjNQVk1iYU4xcldnUlhaazhxU0tLZlQxYVdpcXhaODU4?= =?utf-8?B?REVUb3VHMkZYaXRLVGMybkxHaWRyWTNMRkNEaXJ6MHJXNENPNFp0TUhDMXND?= =?utf-8?B?VTRDeE00Skk1SlE2cFNrd0VmN1FQekZwTlE3UmljMGNzeFlmbW9jYTE3a3Rh?= =?utf-8?B?VjY3Si9qK0xnYkZTN00zRTlSQk9qbCtTVVpQRTRMRm5zczRKcExmWkY4QTU1?= =?utf-8?B?SzZHeW9odHdHUlZpUklGNlg3WEVvNk40c3RNZWFsVTBqMTJXU1RQaWdaYUZP?= =?utf-8?Q?TqOJ3Q70pDgVaVN31upG/ZOnw=3D?= X-Microsoft-Exchange-Diagnostics: 1; DM5PR12MB1610; 6:GvVM/xOofY7iOj3E79E7ihyOqxzVVcnd3iqAgtEF61hbRVQ5jFY53S/9u+EDCU4SLOvkFbjRFwiagttBLp4sfD8/zCkUSuUz4Ai7/WkJIoGLV/SaGHIC0j/RGtU3WWmlxUjNBaliYOsgteb8Akzc8cAbqCZ8rwjB1wjmqmgHoS2z1ER3LFyrVYnRGLaquHOC8PzqYr+DahJ/1OuwoP/NBcYrTHM+h/LtIEbnHuFYMz+ZuUvIiQj/lSmKMk6UEC9wPD7h8RrE43qbSumcjkvvLfqWof6Ly18OXV4gLBJTFFR6oIudZVLrX195DiNouegDri2xi0UTDovC5p/r1Dg8UlmnUePKCGoE3aUGwXUg9Z15zGDcvY3E6P1Q4htNuKl4qYZz07pCpvVFuwR/hfWCJEavVnODZmh5D1f3CNphi4I=; 5:UkaUYu6pwBEUlZ/1Jb+z92iKtnGquecD4XEteRPmrSiv4ceH/EPjnq4/QEW4yCPHSFB9UgqUJDj3I4KYVM9fcwPT2COsq8naVIbcg/Yy9twa+W8LHfsLQ/WGSfy3odB0d2IR/U7Zv9eRKArRcO31uOBJy7X4THcYrt7cIRb0P0c=; 24:BdsltE8HpN0+8auFPnTrrWLVyq21kyaxp+vW2OVO9SzsRhZpiPjyGPk7+mohOQvKsjO9eHea40sYTX5mHAswi92Chqy6DfqeoykU/Zjxa1s= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM5PR12MB1610; 7:Wap6foP8XQVEnRN16XGosJE2Grr69gHuFL6e/9WyzypkKpgTTP4rNbgbS8u7rvFDiChAZElDOo0Uo+4fzUlBgLvdPV1PVyRh62Rlvhdv1ex+XM3XbNKzEeSKj3NR0Ln2Pusnx8Eq+jn7d2kqkPaRL6FZJ10uL90ulEI56mCu6px0gtmasa4LGMCt6qdCtaW7KRWYIxH5vsluOspsj8ICzIgWFRmr/Aj2BU49G5o0SljAsfJ00PNNe2N+A5YuF7SIQEzqOpjfTJ00Hx+9VvRmB48NUkf5s7gX21XJmxUWlORj5npgIDL+O1TzL7e0u52AiKyGp2f1dSS/NHJ+8x9FTA==; 20:Z2CIHYQZJPq2NQNl0k0xdkAABNIKFldkjAXeEL/Zk92Oa+mwG3hzRfO82/r4q74TP+uAMksY3V5vQnsGQ4N/4du6PefxgVWf6xBu2cm12PLmTLIvwG5GLxT3TK5DdJiDgmcDvFpFvZ0IRSOWW1BD04qA2pKczcVfbgysJJnY3Dp1qOEVnWIi9u3mibMaDY94zr9TNatgtVqQAMqYv0BRnScqKTdPv1hFT899r+narx7d7YGM6CACp+qrPynkK2KK X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Mar 2017 20:54:14.0322 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR12MB1610 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.41.74 Subject: [Qemu-devel] [RFC PATCH v4 17/20] target/i386: encrypt bios rom when memory encryption is enabled X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Thomas.Lendacky@amd.com, brijesh.singh@amd.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 If guest is launched with memory encryption enabled then we encrypt the data copied into pflash device also set the debug ops for PC.BIOS, PC.RAM and PLFASH memory regions. This will ensure that any debug access to these memory region will go through the memory encryption APIs. It cover both plf= ash type of device as well as passing the bios image via -bios option in qemu command line. Signed-off-by: Brijesh Singh --- hw/i386/pc.c | 7 +++++++ hw/i386/pc_sysfw.c | 30 +++++++++++++++++++++++++++++- 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/hw/i386/pc.c b/hw/i386/pc.c index d24388e..a0c0816 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -1392,6 +1392,13 @@ void pc_memory_init(PCMachineState *pcms, e820_add_entry(0x100000000ULL, pcms->above_4g_mem_size, E820_RAM); } =20 + /* if memory encryption is enabled then set the memory encryption + * ops so that any debug read and write to guest memory from hyperviso= r will + * go through encryption routines. */ + if (kvm_memcrypt_enabled()) { + kvm_memcrypt_set_debug_ops(ram); + } + if (!pcmc->has_reserved_memory && (machine->ram_slots || (machine->maxram_size > machine->ram_size))) { diff --git a/hw/i386/pc_sysfw.c b/hw/i386/pc_sysfw.c index f915ad0..518a341 100644 --- a/hw/i386/pc_sysfw.c +++ b/hw/i386/pc_sysfw.c @@ -47,7 +47,7 @@ static void pc_isa_bios_init(MemoryRegion *rom_memory, MemoryRegion *flash_mem, int ram_size) { - int isa_bios_size; + int ret, isa_bios_size; MemoryRegion *isa_bios; uint64_t flash_size; void *flash_ptr, *isa_bios_ptr; @@ -72,6 +72,15 @@ static void pc_isa_bios_init(MemoryRegion *rom_memory, ((uint8_t*)flash_ptr) + (flash_size - isa_bios_size), isa_bios_size); =20 + /* If memory encryption is enabled then encrypt the ISA rom */ + if (kvm_memcrypt_enabled()) { + ret =3D kvm_memcrypt_encrypt_launch_data(isa_bios_ptr, isa_bios_si= ze); + if (ret) { + fprintf(stderr, "Error: failed to encrypt isa_bios image\n"); + } + kvm_memcrypt_set_debug_ops(isa_bios); + } + memory_region_set_readonly(isa_bios, true); } =20 @@ -103,6 +112,7 @@ static void pc_isa_bios_init(MemoryRegion *rom_memory, */ static void pc_system_flash_init(MemoryRegion *rom_memory) { + int ret; int unit; DriveInfo *pflash_drv; BlockBackend *blk; @@ -113,6 +123,8 @@ static void pc_system_flash_init(MemoryRegion *rom_memo= ry) pflash_t *system_flash; MemoryRegion *flash_mem; char name[64]; + void *flash_ptr; + int flash_size; =20 sector_bits =3D 12; sector_size =3D 1 << sector_bits; @@ -168,7 +180,20 @@ static void pc_system_flash_init(MemoryRegion *rom_mem= ory) 0 /* be */); if (unit =3D=3D 0) { flash_mem =3D pflash_cfi01_get_memory(system_flash); + pc_isa_bios_init(rom_memory, flash_mem, size); + + /* Encrypt the pflash boot ROM */ + if (kvm_memcrypt_enabled()) { + flash_ptr =3D memory_region_get_ram_ptr(flash_mem); + flash_size =3D memory_region_size(flash_mem); + ret =3D kvm_memcrypt_encrypt_launch_data(flash_ptr, flash_= size); + if (ret) { + fprintf(stderr, "Error: failed to encrypt %s\n", name); + exit(1); + } + kvm_memcrypt_set_debug_ops(flash_mem); + } } } } @@ -208,6 +233,9 @@ static void old_pc_system_rom_init(MemoryRegion *rom_me= mory, bool isapc_ram_fw) } g_free(filename); =20 + if (kvm_memcrypt_enabled()) { + kvm_memcrypt_set_debug_ops(bios); + } /* map the last 128KB of the BIOS in ISA space */ isa_bios_size =3D bios_size; if (isa_bios_size > (128 * 1024)) { From nobody Sun Apr 28 19:04:07 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1489008879469656.9116051311321; Wed, 8 Mar 2017 13:34:39 -0800 (PST) Received: from localhost ([::1]:58550 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cljEE-0003lo-90 for importer@patchew.org; Wed, 08 Mar 2017 16:34:38 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52358) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clj6t-0006uA-CH for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:27:04 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1clj6q-0005l8-7x for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:27:03 -0500 Received: from mail-bl2nam02on0087.outbound.protection.outlook.com ([104.47.38.87]:47277 helo=NAM02-BL2-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1clj6q-0005kz-07 for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:27:00 -0500 Received: from [127.0.1.1] (165.204.77.1) by MWHPR12MB1615.namprd12.prod.outlook.com (10.172.56.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.947.12; Wed, 8 Mar 2017 20:54:23 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=d6fpIKQoZetxJWGyXuDozDbrXk/Cc5uBE2Z/63p5Pyo=; b=YF7Vg4Y4L3NY8AfzgOTglbqC9cPbTR6tO7MK4nBjBVC1t5Jdd5mvGXyFcNRm3kAKrbXD++m7uq9Zd1iFjj38aTWMT8sjFU2ghEUvRW5f8uf0QXtimnbdrtaui8TTe8FBSoUZHuYLjYYjj8EZ7DBxPHxu3I5PlXJy52u5EJJvyJs= Authentication-Results: amd.com; dkim=none (message not signed) header.d=none;amd.com; dmarc=none action=none header.from=amd.com; From: Brijesh Singh To: , , , , , , , , Date: Wed, 8 Mar 2017 15:54:20 -0500 Message-ID: <148900646027.27090.10825101032119361281.stgit@brijesh-build-machine> In-Reply-To: <148900626714.27090.1616990932333159904.stgit@brijesh-build-machine> References: <148900626714.27090.1616990932333159904.stgit@brijesh-build-machine> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: DM5PR15CA0013.namprd15.prod.outlook.com (10.173.207.151) To MWHPR12MB1615.namprd12.prod.outlook.com (10.172.56.16) X-MS-Office365-Filtering-Correlation-Id: e6d4d381-073d-446a-40c9-08d466654d3e X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081); SRVR:MWHPR12MB1615; X-Microsoft-Exchange-Diagnostics: 1; MWHPR12MB1615; 3:yp20jRNE0bA1+Vma8lFwVqJ/lBdPwJNOYBZU9i1lJ0P+B/ceCxAGsnSiA9v/kAGJhcSXu3ofkIEVEsyYqKIKga0/BMiGB1tlZVCeEb2G9g5VXfAfmi7fV2ncKnHV+foRer/Kl5hEQdphvw1p5mngxjBa7v1RELqFnjH+EGV6DgD7XNnCMGKIiiIRDCwtE4KYVhCfyCet6kix6xfcp4PvDJujsePp7YYWX/8dz4DXEmQa19it0rn0Om4mv+FXWMeoTRWDInjrX/GofYzwToqAq9wUD8jWf1y9M+b12NymRCA=; 25:pHPwE7+xV6DuSwGEOFZsEr24iAADMC9EJhjECf1RJr6SuvKB+3HmEWICkYprRlbjhUbAbDb3tT5VDpbqMljnFnzTGeCvbPnOy1duCuXq6Ld1rz/Y1Nmg8C6niMl2D2BedVJ6/jAoggGx+OHMH+xWCmHsz+YSw6Qd1pWR9m5cQ9lsBaUyT5obhScWHObPPrM9CT4OLZp96VjyRXaUBlGieYHs22vHwlgg63lfpOtXThkHxjwXTfSwJctrkmatoV+1ixP26mBPWA90SJA15o68wm3VyPtSztMITE1nofoTLH6VmuyiE6SWP5U609ZqGSqKAZQ2pgzgGlFm+CE6NZMi+opSN/lHS95n22wQlsh151rn8Ar2WjjuLYrMc9Ee3/GIZIWcVN1+8ysnLAz9mBu/N55vL6DoLvRGEwzWn6j3St4mf9esjglEtb4Bw93+LVPh5EQiOf2/upmpeKdQm/NhGQ== X-Microsoft-Exchange-Diagnostics: 1; MWHPR12MB1615; 31:Y8nhejDfmQWE33miPWDMLlQDT46DRLiAwiHwsFX3i/x2VnjU8VBGyaX198xWAi9PWzujol92MjH+TVvcJfIRu2ld1X5nsIaJbr54D58NOEYW+87hTaxMMisFBgwj22ETZ3docCbu8nU1EM3o7WbdqOK3+TdQeLZMiAc5DJYacXpCUonJdAwcumHzbcbHC55G0YklYaMeVT//DLmwGvzIaY6u07ZIA09fHjkQCX+sOoDr1ewqCXDJp/H8KsfAvhA8; 20:+EOPHMlQY1ddGlBFW5lm9Jbxy0TPaV6/uo8afocSLLj3cGyONOvVccW7zI/+SjIFoVc8xA39u7WxM7NpXAlXwe9ZLwPMKWjjPUejGoMKAppqZncjXp/+sK/oy6gD0K3wzgEOjKHJA9XLt6s3JnV3tOeqLgz6mRxjf33KsXD0wPXUOibDPq5sMN1mrmM7yylKzDFDiah73yGK2Ay8bYjySHxDXifdRCuJ/opvCJBrUJGMGY3k831WlPA7MNOOI8Q5SiGrXmVaJ/J+6+FxLMLBWMSxI3lDTOsSm1QJy3i/ehg7LOuMGlNeS2SGKz75b32Ioj7SRCQjY12fmtP+ISBvXL/DviMhWQZn7mHwBm5fJjQz/lMJfFWISj0FqMZoAkiyNBgiU9DbDFmvsBfWklIlrwPrlaqLdR1/VYHxnFerO8ugPhXlCmT4bQH1DNzvrVaSfuS+7BSNlGFHyTI6BSrdRPUDeoAq8o/4pt1bIhiJfnbvxKIjLrBh+RgxFghriX/5 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6055026)(6041248)(20161123558025)(20161123564025)(20161123555025)(20161123562025)(20161123560025)(6072148); SRVR:MWHPR12MB1615; BCL:0; PCL:0; RULEID:; SRVR:MWHPR12MB1615; X-Microsoft-Exchange-Diagnostics: 1; MWHPR12MB1615; 4:R4LqBbYwOZ1hX9diHT+XoKUb14Vopn2nf4m0TTBR77Xl/M1weY561oVyBCX3ROYbINELDOjLMULrwVb/gFS/VWNDePhGryL2aiuLPim+pU7vMnDqOZyitwzSMQnDZ60OhthxELK3QJLD8mrkTsxVIgtHDdRk7BUJDuF7wUwK9r9Z1a2pPDgrDbxK9+Hb5JcUzDJ2JNdgSWzwFgbVsPwws4W4795jctTfAsS+DX256lT/dxVL0KFUNiJtdgzhWvcT06D9WW1dETU2ZqeZZbH3NRkydgs6JPnAW9fifCOhnZQdHNNmuy2v3Ove+Phx4NCiFUu0S0vzurxDtKW/qS964AVxUlbufzr8QJ3OxsENWp4uQ5qQJvVWK9t2I2Vf/Gi2VKMUoQQbLXIz7Lf2jPvfEYAJmn9dMEE3GE1FJj9Hjag+NzGav6FPdgr1gRmL5oXcEgKBZpEOpQEeW/dL8S69CWS9MhTrRc/SSrCXQPRvxAhEfWgnQbO8VPUW6gftnnJG6NPJ2/UxDOd5dpbe0KZ/yDp41G0aX+fbBgNl0PKTd90WaQdYV35N71Jj82egUdMaHomKRZYcnHD2/UunK5qsnNWdx0BtMQr3U76CK7Paih1fhTlbsOw4VqcNVurLwRp0B3gwTH5ofw2VXTbm9R1JSap4vDCBoBMqClQepoFdZI0= X-Forefront-PRVS: 02408926C4 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6049001)(6009001)(39840400002)(39860400002)(39850400002)(39410400002)(39450400003)(189998001)(66066001)(33646002)(47776003)(54906002)(50986999)(2201001)(86362001)(25786008)(81166006)(83506001)(8676002)(76176999)(9686003)(50466002)(3846002)(5660300001)(2950100002)(90366009)(54356999)(230700001)(42186005)(53936002)(38730400002)(33716001)(2906002)(7736002)(305945005)(6486002)(77096006)(103116003)(23676002)(4326008)(6116002)(217873001); DIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR12MB1615; H:[127.0.1.1]; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtNV0hQUjEyTUIxNjE1OzIzOkFjQWIxWFhPc1BTQkVLQzF3ejV0aWp4THZV?= =?utf-8?B?bHQxbXIwMGdtbzNCV0UvRU1Gejk2enRtYjBLMUYra1VtSGRHNzhwYldGN0FX?= =?utf-8?B?Z01VcmhmTWtmK3VHQUYvdkk4aml2YVk3Tkhrc0d5eUY2RjV0MEo4eUN3OEhG?= =?utf-8?B?ZDV3TTlIa1RkQkcvSXRwU0EvcC9xNTA0QUMza0NkVlFPR2RPeVJPTEI1K0RE?= =?utf-8?B?VU5hRkRWRXRoVXUrSVgzNDlSNnlaWHYzUktJZk5JY004d1dybVVGTkxXRmNB?= =?utf-8?B?NVBLLzhIZkw2UE1CZlg1UzR3RU1yTHdKQUh0S3FaOUFZVW1KckxFdGxYWlRz?= =?utf-8?B?eGgzUE9FNFRMVHhXVkMrN1VRWkN5M0gvaUZwQlB4QjRTWFhOUnVDMk9WTXNG?= =?utf-8?B?MzJqM1hHMVJ5dnArSXRqazVrVVNBYnVheXVVb1hYUi8zcDkwYjJOMVZhSkdo?= =?utf-8?B?d1A1N1hNdnJJQmg2UlBSNmNmSjJNa2I5LzN4K21KRGlaNUZBQWs3QXB6dFVI?= =?utf-8?B?ZktaVS9BZ2tRdDhydEpsOXRrV21adkFLb0FrWU5qTU1mSnY0dTVuSnh3ODJK?= =?utf-8?B?Sml4RjZFODFpdFJ0UHFZTFBVR2ZBWmNOYXl4ckY2aGNrUW5ZVjdRWkZoZDdV?= =?utf-8?B?aFVpKzdDRmtEUzNyWGFhL1U4M1ZJOTRlUFpFQXFLbUtqQ2NteG5RTVFnbkV2?= =?utf-8?B?TE1KSUc3MW1aS1lCcS9hQkt5MFR4YVhmcC84ZUQ0OERiT1ZzVmRyclgrVDFY?= =?utf-8?B?TDgvbm1DaTd4dHMrcDE3dUJQanArN0d4YnZIZUovSHdsb1VkeVIvbVlKQU1H?= =?utf-8?B?WmtnUmlOdEVoaTFnd0MvVmdHOVNodG5RSnp2aGNUZVA3TElYM085bWZiM1Vo?= =?utf-8?B?T3JUd3pueVN0aEp1MjBYNG9rZTBKQ2x2THdSVklpalNzMGQ3Kzg1b3FrQUZC?= =?utf-8?B?Vkdsa3VFd2UwYTRFcUNhbWRmejk1TWJzT1ZKNi9mbDBkS1l1NERLZTJIQ3hY?= =?utf-8?B?azdQdVk1cFF5c0pnMjVHTnorVUpXQW0zWms5TXc5S25DajRBYytTYVVHNmYv?= =?utf-8?B?NWxYZHcyM0dqVEh4WkNWZ0NXNTEyR1ZIcFppK3ZGenpDRzFRVW5PeUVoUkxr?= =?utf-8?B?N0hYbFpLN2k5SWZGSGVtTmlNZThtTmwvZ2NxTlIrZDNhZEhuemMxZmRoV1JB?= =?utf-8?B?VGo4QWRQRzVuUXF3d09IdGdYeDk3QzFJbVU2VlF5QTQrMWw3ZU80cGcwdDhK?= =?utf-8?B?bVVmNDVYMVhQTlg2eG1nN294MU9oRFlrcnBPZEZvMGFMdGM5ZVlselRuYVZ6?= =?utf-8?B?eTBZUStRbGxKVjZ3RGdsZGhKR2QxQmRtMVRPcVVlOGdFUUVONnVnSjJUTm5D?= =?utf-8?B?ZTlSdkJLTkZLWFIwYWVpTk44dDBYNjlMK252eE9DZ2xLQnFWd0tDNk1YWFY5?= =?utf-8?Q?ej6zeBMykM50E03OYeQTBEKQVnJ?= X-Microsoft-Exchange-Diagnostics: 1; MWHPR12MB1615; 6:sfACvOEbCPcOW1AF7MFuc/BW52EetZJiso7S6JVd1YC/U9UUhSx/KYj0yIMCbp8sk8LS/tXy4KjUKHHk+yfu+SWh//AAErlqGEAF+kLoX+rEp11sMuwhbF4RP3Q74i+SLgEj5LZtVQI/VM4hhM99zVwVhX84xXThaVaJ/Ca8+d0ZHyMecW+h3gmEDDRHh6/2zIS0k3++dFnWqfWXeqCdhUuvo5oJknrFc26Vn+CR8lOPoRl/zUhZgASRFik1O3jqnCuleh/57zWFDaNej8Y4YuJjBfFlgOvVhMtOK4CTHw1Qe/EAEhY3uCGDgmxcGA8i0P8wUvGJkE0ukrMXm7zZ+xpQy1Pr56lDb/m5Opgsb65sHCzsSa/1nl+8QyhA/vWOYzZk7nFazWvYdZveaa87jjXn5rYCdGuFeL1bGxeH9wI=; 5:9AlxvKzezqzIk/lueIDvFdktNS9+L0K/ZXG8CLaD1gfZ0UJrLaR8Vf4ZPXbwIe3gj2DN4qKv9nzHXQSCkCk7telbRDizt9G8qgN6yNxBy4SExzLcpHYqu09pgyqpzGoh6J6MHg49Zzd35a/RL88VxmEwQ/3znD6Dh+VoTD9p+GA=; 24:jx7TZP0Ez4JyfXKgbxN+6wX0qoarWkW8ekZeoFXyEBI/IrFeSBmltUhTbJC+BG06gSTyhZsG0x42Amjf0tcA5QdvQTgqBqtiyuI8I2LWHLk= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; MWHPR12MB1615; 7:WJSqK2U9gLOJw1G847ZAzuOmUt0c272xiF/QtayJXMJGnV6wLBqf9NGjR1i95httN3XYe0uq/lfSYRS7bC6h4F0lJ/mOdtx6PnAkO00OTfLrIvdv7ugUj9Dg0G3schyi3p7Y9G/oQXsHqARP1Cwe8FcctXkMI6aFkPspngXTERfXzJZ1aDWflGKVVz4ogy3MX/CYa2U13YwMaA2mZbJqs4x9arsgC2T1bVOc1vvHxsphoXcQMEZAXGu14xg715tsaWnLvovIzbH+hXUKb/VxzpMRxpC20cnOb4hoOKrCaAjt3HdbdOueNl4XZlOr0BMogQFbs+5EAzhNnckbYFIz3g==; 20:t8fSB6zxOd6VEGdveBkSjJAbyraRjOCnj3qLfsXA5dPPs3x7U8b6toFTr6DYY/1iHdx8VsbnT//i9aQIrwEJdvFALYEhLKP4h5PCcEwSiN6WpsJEtb9jbx+jh/2a18btnauLtDY4jclPzck3Cpv86wk9lXtjtoW8X/AfSJOKjcIVYPesa7KLA/eRWWcHtxZwJ6L8ppl+4cgujRmMeM0BVAdCGsFB89G8AVVDApuQfMat4AGzcN6UIjsNODPocO1e X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Mar 2017 20:54:23.2393 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR12MB1615 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.38.87 Subject: [Qemu-devel] [RFC PATCH v4 18/20] target/i386: add cpuid Fn8000_001f X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Thomas.Lendacky@amd.com, brijesh.singh@amd.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Fn8000_001f cpuid provides the memory encryption (aka C-bit) location in a page table for the SEV-enabled guest. Signed-off-by: Brijesh Singh --- target/i386/cpu.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index fba9212..44662eb 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -40,6 +40,7 @@ #include "qapi/visitor.h" #include "qom/qom-qobject.h" #include "sysemu/arch_init.h" +#include "sysemu/sev.h" =20 #if defined(CONFIG_KVM) #include @@ -2966,6 +2967,11 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index,= uint32_t count, *edx =3D 0; } break; + case 0x8000001F: + if (sev_enabled()) { + host_cpuid(index, 0, eax, ebx, ecx, edx); + } + break; case 0xC0000000: *eax =3D env->cpuid_xlevel2; *ebx =3D 0; From nobody Sun Apr 28 19:04:07 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1489009314171904.7489190646346; Wed, 8 Mar 2017 13:41:54 -0800 (PST) Received: from localhost ([::1]:58594 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cljLE-0001oH-ON for importer@patchew.org; Wed, 08 Mar 2017 16:41:52 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53180) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clj9L-0000Xe-2b for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:29:37 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1clj9H-0006aG-S6 for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:29:35 -0500 Received: from mail-co1nam03on0044.outbound.protection.outlook.com ([104.47.40.44]:57248 helo=NAM03-CO1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1clj9H-0006a3-Dr for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:29:31 -0500 Received: from [127.0.1.1] (165.204.77.1) by CY4PR12MB1608.namprd12.prod.outlook.com (10.172.72.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.947.12; Wed, 8 Mar 2017 20:54:37 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=Sayo2VDKisXhQcwn+rUuo1lpHxrX1gWfYVZfcB5ItKs=; b=QEs0LXj7fcJr699AgoY+SmijrftDXOuHu5eHKWZHGXtRrbp5CK/ATrsrhAlvxEmRwrN1uJUNstFVwb5RCjhYpqqf95lPzevIAqioQ32FjiLyROW8fi4HMQPKHOyxSDHukTAf1Bj7mWJ6tirAfpgNXj1dPaR2z5ngnpEVT2Djbw0= Authentication-Results: amd.com; dkim=none (message not signed) header.d=none;amd.com; dmarc=none action=none header.from=amd.com; From: Brijesh Singh To: , , , , , , , , Date: Wed, 8 Mar 2017 15:54:29 -0500 Message-ID: <148900646933.27090.3645480451819334521.stgit@brijesh-build-machine> In-Reply-To: <148900626714.27090.1616990932333159904.stgit@brijesh-build-machine> References: <148900626714.27090.1616990932333159904.stgit@brijesh-build-machine> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: DM5PR18CA0029.namprd18.prod.outlook.com (10.173.208.15) To CY4PR12MB1608.namprd12.prod.outlook.com (10.172.72.17) X-MS-Office365-Filtering-Correlation-Id: 00ddf0b1-1672-4478-e988-08d46665558e X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081); SRVR:CY4PR12MB1608; X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1608; 3:CnPxsnS6koT8fLlza0eO9m0cg5QKS/JEbcy8NMZdGdjXdBjCMKNl74HsCkiu3L2ZaVrgTd3J0106+aEv8e6HoXIhR/iWlUWl62Zqi4e3/fDZe5eybHlgGpmcrPcUlMjV8qYnwvsmWT6nj3yIGEAQ38FIf38AJnup+EDdb7R8G+DKCEzBGUwrvw0fnn+XX5QrD4oaJtloJHYWL2ZHsbXzaRS8ooUVBNcsQYFm/HhPjc9SQQs+AKgHI7a2BQTDmy9c3Feet0XPDAg/fQVDdBN/FzNjinMvwLk6TmrON6BP4P0=; 25:sf1taRd4RkFxjhj/caS9IzOGWznqY+zCZt6p9dCPW1YN6XklSWGPZbImacXmdHJKqBO3/8w7UzHGhmk5JAX8Moe32Ug4v6p/WBzSzv+2ShHmfRdE6kgETVXdfB5KE3BukMb++X9iO8Uc/2DmOoraTEPzeS0BDGouiroHVoA/5Q7EKlgkc66c3Zw6ITPPeF4VtF0GUlrEyd8E7XFBTakaDSPYNVJq9TBKvX62LB5OUS9jh3miRlf5ywoXgwbiZ5ZETcKGddvrPuZM/tIGIngy1QhLrMdOYC02RwZ17eyFHNImDtqdMQrHCMwP+YwoHrypRRiWYRpPe+PpUGA2Skqab0R6Md/ck6ia6mwYOs9HdmDLBb/jRXgZ4G79t9Y6pS/t2+n1RsVcKsz7o1tbfqKF25Rwc4QvJdgpD7tO75v3iCxxviX/i3OOGSfGi6fCpwJS X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1608; 31:p/ZkCqAtQXx3YOWmMU3y3FtFfbXoSdkYR1wIN1GXrdq6AC1HOuro+kVBv8a5sqJSdj3TyOL/eiys4GxuJCzSAenBzbyQgTW/VBgGm9z9CFeBKoanMPpFktFVpoRDuI88zhdr1MI86PpCQHIOHyGaS3i5/IhEUgsiARjZiB7UqaEYQQoyQjLtoKHAr/mrQsGju/GnUl0CXdIDcuI3gWYsFVlopvENdOrFidADfBnr0fGpqw+ctUm1J2N22/PzCpWV; 20:OanJX+MgTry0/y5kyE/mI1vi4dEOzSuN5QZO0RCKRCy6CpN7jq2YsCLvvOgoWrzMuaaevjHJGzfZRoqBerDO1xabFqYSzZ6FZszYTUo4EPIhlOuVSPmneT0NaqYhlL/ebosPaNcsogBmgcuW+KzeycHbYqO5YFbBfJxy3u29YaVOl/MH1R/h7Uu4ZAiqDqveP17AV51wVZ8jhOycR1Luse7XEdCneUcPD19DSGSLR8FoF8T3CkCfZuHGUebjpfIrQybFRdpehl/By1YwEarbAZfGjwAWeISgT2ZIyLQGF2nnwHFHe+2sflbQvYO2Xk5BAwBi3eAX5Oh9JYRFV6la90BezrLtsAmWt71Hk3aaNayK63gxZeP4j150dmEhrEcqUhKqIxZCAo/zrPQp7NaPsNmqt10OQWA61yIO4OeWcQILLo+yi+f8/FwRqlqNvRvB+8Sfh/co8M7slmvDVG29Lw1hbEwB57wOxCssjC7LUbRbt2PtZbSIEfMxdaNhTV4R X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6055026)(6041248)(20161123562025)(20161123560025)(20161123558025)(20161123555025)(20161123564025)(6072148); SRVR:CY4PR12MB1608; BCL:0; PCL:0; RULEID:; SRVR:CY4PR12MB1608; X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1608; 4:wj8Xa0aoZ4cbBWxkl+qOjpLDyvNzu8zLpVXa/xPcxtO4L3Gm7yGyskoHMFbm5v5s36xj/K5lwY+upbVNH1fmSlpQ/aGzRhWToKx41rOmvZ8oPKXd74tzJXBvZkPkV5zDYv6bDBshzsnyF6nsBxLs3x+w9uRuNRFTsO3zybpDP5VRXYqoqhnO+QFq6s78svOeU2f/xBpXXd76Bo/BK8TrsQFu0e6AdTo6txah+eBNdjFm+kTCsLULrAgycCnzvUw8vqrm/8vcnh4N2h1ZyC4tzHs5xhHp1kGVefmUvKavG3rLXgRcNvYYkoFX8PQW0zRolp53Y5FMS3mjVh2cnBw9uA/fogNvHLLOcyhNRPV85a+vM5hphXj260hcrobYmHU7TPaWbYT4xs1KNaB0ENVUIy8o+Lr9cEUBp9OosrHFTfqdAm+eUfqTrB8guE8YSLUUd5cKZjiD1OtXcNc3zkTmcpL/S2IpXhxY4V28OKr4ULCNN5ZuZiazx+W9qBoFReT/qfeh/Nr8JWUtrMOxp6oZ8MpgYhzH3QAduuGf32NF492CVVgD/NXddDmnxs2xhi1X9xa7BxHUL2EM49Q7a/qUVgNTExd50BdKenkARZ6M4fAQoheT1iLztfPAE6YoYkXCokRhDJ9qkFP3WHJHVxGi5AMV76oCRjItsqT0VX/57MI= X-Forefront-PRVS: 02408926C4 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6049001)(6009001)(39410400002)(39860400002)(39450400003)(39840400002)(39850400002)(8676002)(3846002)(230700001)(53936002)(77096006)(6486002)(9686003)(7736002)(81166006)(54906002)(90366009)(25786008)(305945005)(86362001)(103116003)(5660300001)(2201001)(6116002)(33646002)(189998001)(47776003)(83506001)(2906002)(66066001)(2950100002)(33716001)(23676002)(6666003)(54356999)(76176999)(50986999)(38730400002)(42186005)(4326008)(50466002)(217873001); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR12MB1608; H:[127.0.1.1]; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtDWTRQUjEyTUIxNjA4OzIzOnBCKzZHZDA3TG1wbndrTG5IWVdnN0pjRGxt?= =?utf-8?B?ZkpCMWx0dFFoVVdMaU5taVdUL3p1KzdmQ2xiTHA0bmpPcWJKK0lLc25KaHF1?= =?utf-8?B?ZFV1VjYyVS9pTTk2WjdyM292aVM1b0pTVUN3ckVtNWo0WFAvVDVsZzc1ajVx?= =?utf-8?B?aHVVL2hQWS9ud29kZWNPSE14UDZnYTBTMFMzMWZIOUtudVlUc0lsaTA0cnds?= =?utf-8?B?M2hhU1JrajYrUytNUWlCNERCRkFrMWFORVR3d2twT0xkZTI3Z0J0RUQrTkhL?= =?utf-8?B?Mk82cVhsYll6Ykg3RjNZQkpFS2F5TUVITGJ0MUIyMll3bkE2WEVSTG4wak93?= =?utf-8?B?T0owcDd0di96NWJ2WDFDRXFFSGM4OVU4TlBJYnErbFNEVXh4OGpuN0h5ckxT?= =?utf-8?B?QWEzcld4cHFubytTVWhHNUgwU2ZvQzAzMXJPZU84bG1COGQ4NkFFajhpeFdt?= =?utf-8?B?Y0dWOWRMVDFsSmtiKytWMGNOWFdJbktlelBtVXYvTG1ISno2djJEakpZQjc1?= =?utf-8?B?ZEordzFIVnhFMFhVQzZ5WXJBeW9DRHFhYUNHT0dTcExqdHh0cHlNT0YycEkv?= =?utf-8?B?Nnh1SHFQekZYUDVjNlpsSXhDTUEzK2xSVDBMbmRXYUl6VG9DeTNtSW9nUE94?= =?utf-8?B?dlJBeW5Fa3EyanJDVXdRbzJtZURiYzF5azdETTRORTREcXZMWVE4a1k3bXFS?= =?utf-8?B?U3Y2cXRLeXY4NysrbXBwZXhRVmhST3FJZnFzMktSalRoSTVCdGRZeTBUVWdu?= =?utf-8?B?R21BVzU1RW5JbUJtZFlReEQxc2pEUjBldFBKQ2hrdHMzYWt2UFlpczNxNWJn?= =?utf-8?B?UGUvWkpaU0RoSEVqUnBCL0c4Y2Q4ejBCcTFCdkhWaXFPTjBEZmNqTGRROHJZ?= =?utf-8?B?VHFMYmNkWlhLWFhTbDFDZjRlOG9UbzR3S0Y1UlNJajlVME54YXFtU2xtZjU2?= =?utf-8?B?d3FQanRnSjdIYmtzRjBVVnAvaFRvNll2YnJBZHVrNXNaeStmUnpSam5KV0Ju?= =?utf-8?B?QWFuQkFXaHFLMUdPNGorSUNIRkxjYmt5TWdYYUN5aDlqYUhmMkZqRXhXYWpt?= =?utf-8?B?OHdaQjRKM0Zrd1FqdkF4UzRVWmxDSENYVXlsZlZGMnNjSkViK1UxS0JXTTFK?= =?utf-8?B?UkN6NFpvUkZDNFJsaVFlQUpSZFlQY21CMDlaYmV3ZXh3TmNQaTE0MFNtVlht?= =?utf-8?B?MTRDV3FaM1ZpdERpK0gzaTRwRHdFN0RHVzZPVDZmb1hMemNuZHFQb2I1eTVR?= =?utf-8?B?Q3NQU1hjVUpyYm82UFVWbnNzb2NaNnFsWGNmbTBaQnhSWlRHZDd4bkhCWjNF?= =?utf-8?B?SlBSa05uUWtxWGgxVksrVXFzdldLSGE0UnZ3L2JobnlCclVtbGc1b0JXamFa?= =?utf-8?B?UUlyaWxDWG9HL09HWWIxQlBWSUhxM29xNFBYdHdTbWpxaUJZZThnZk15UWVI?= =?utf-8?B?R0xiNUxSM050REswdEVjSGRMMllPNWNrc0gxSHNpNFRodG5WejFCTWh6dEx3?= =?utf-8?B?NmlrUT09?= X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1608; 6:MG5a7hvtVgFx5gdU5urOQTLIecYAqFrP7FbWinvOqqgY70Im9Qv5KArqDOw3QYMVaExfOEsI+43Rj96n5Ggv15XT1zYeY3TUFDdpU4hniSRG4W26e6c03B+ZO15H4KFk1EwGnCmFZDDQNIMfTWHOXIPtFhxkBwh89pQCwcm1AJLycHdlG5cbJ7ymhodL85x2rKlmZhrY3VCtqTJdUWUd9ta8mOqCyWQ/mPTquJv8SL2eoN6abDYV0M3DhKeiMWyUUY/k8A2m8hfLVm3rszf05P2IZFQMPr8sSCaAxMTg0yaV3LgHs8UyT6sRGZg1A8X+weaiwQpZBRFYifE4dre7Pqwxx4v05TcYybzVXKGnszqC+H+qb/K2GbpPGNrGd6FMiFkikE8t70heoM9fXLCExRyir0N7OoI2l8v8xLSdsSU=; 5:GtMN4l8x/tq+p5uEU4eBti3jglv4ACPmxmXpv5q5h9O76K/qO3E42Kyf2989JmNslnxCnWLvOx2kJoeoZ+RT9WZlopmKjuvn1RvMM3pk5dDIxpaHuB2fcK9uQL6BViQSCBQ0Tedook0kMoXjHFsymeBPeVFH7b+LGoZWUBlR7uU=; 24:qhOKYC7kbxB263D42QP0hmCQAqg8wh4S63b5Sbl0esbY9e7JgH4eQyXU6DpZcO48iqw1vIaAAnCkxbo8aY2IlQ4n85orwqDI0pIkYRDJwsg= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1608; 7:4f77YaFrta+6uM8dwG/6MQ8mvEfnZqPB8Qby91/PYtNvMMseVgOkxbLemg0LROFwHViquymJdRzxTYDL6j8VLyWp6ZDgrobQfQ5gIsIbdO80TqLnltfOmpjqfOV4F9TYCrQzfF95XLaVltTjD5j+NarLe9Rq+Rw0KLrRuh5ttsjrIt821KlfIwq6bjOs0ZlUShHPnf9EocIGnI1CGAFxKEH6aasGD/X36YUGXuyLDPh/7vCYt+Dz9WD42GzKl/CTcMMsweTR6EEXKiurghgW4DdvV1bZBHA3phVhAViW9rBALfUOACLJoHxyy70reRWFHxXcFU1vdWpBbsJI/h0gJw==; 20:UGdCq1q5Vst+/qRK+PtMtTkQmrwtOWG0qh2ziNidc9cEuNpia/FTl9n0bHdCNf4U98iAssgPebLX5YAdiAwxGZCt4nxExFIKCjIgY/mCTfSrqtcJXX2+if/p2ACfw7tu1IB6y5tvLJXdHBM6nKT1boeOzFy5wI23OPHZT09tX/Ga3HaEVXQ/7ydSS5HErVQFrZKmSRmKQINtho5QNXRwMjtRoVECoL7HUj0nplxT4rj/OO62XVNgHrIolZtjbfII X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Mar 2017 20:54:37.4085 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR12MB1608 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.40.44 Subject: [Qemu-devel] [RFC PATCH v4 19/20] target/i386: clear memory encryption bit when walking SEV guest page table X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Thomas.Lendacky@amd.com, brijesh.singh@amd.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 In SEV-enabled guest the pte entry will have C-bit set, we need to clear the C-bit when walking the page table. The C-bit position should be available in cpuid Fn8000_001f[EBX] Signed-off-by: Brijesh Singh --- target/i386/helper.c | 39 ++++++++++++++++++----- target/i386/monitor.c | 83 +++++++++++++++++++++++++++++++++++++--------= ---- 2 files changed, 94 insertions(+), 28 deletions(-) diff --git a/target/i386/helper.c b/target/i386/helper.c index 05395d7..bbdef4d 100644 --- a/target/i386/helper.c +++ b/target/i386/helper.c @@ -22,6 +22,7 @@ #include "exec/exec-all.h" #include "sysemu/kvm.h" #include "kvm_i386.h" +#include "sysemu/sev.h" #ifndef CONFIG_USER_ONLY #include "sysemu/sysemu.h" #include "sysemu/hw_accel.h" @@ -1029,6 +1030,22 @@ do_check_protect_pse36: return 1; } =20 +static uint64_t get_me_mask(void) +{ + uint64_t me_mask =3D 0; + + /* + * When SEV is active, Fn8000_001F[EBX] Bit 0:5 contains the C-bit pos= ition + */ + if (sev_enabled()) { + uint32_t pos; + pos =3D kvm_arch_get_supported_cpuid(kvm_state, 0x8000001f, 0, R_E= BX); + me_mask =3D (1UL << (pos & 0x3f)); + } + + return ~me_mask; +} + hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vaddr addr) { X86CPU *cpu =3D X86_CPU(cs); @@ -1037,6 +1054,12 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vad= dr addr) uint64_t pte; uint32_t page_offset; int page_size; + uint64_t me_mask; + + me_mask =3D get_me_mask(); + + /* In SEV guest, CR3 will have memory encryption bit set, clear it */ + env->cr[3] &=3D me_mask; =20 if (!(env->cr[0] & CR0_PG_MASK)) { pte =3D addr & env->a20_mask; @@ -1061,7 +1084,7 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vadd= r addr) if (la57) { pml5e_addr =3D ((env->cr[3] & ~0xfff) + (((addr >> 48) & 0x1ff) << 3)) & env->a20_mask; - pml5e =3D ldq_phys_debug(cs, pml5e_addr); + pml5e =3D ldq_phys_debug(cs, pml5e_addr) & me_mask; if (!(pml5e & PG_PRESENT_MASK)) { return -1; } @@ -1071,13 +1094,13 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, va= ddr addr) =20 pml4e_addr =3D ((pml5e & PG_ADDRESS_MASK) + (((addr >> 39) & 0x1ff) << 3)) & env->a20_mask; - pml4e =3D ldq_phys_debug(cs, pml4e_addr); + pml4e =3D ldq_phys_debug(cs, pml4e_addr) & me_mask; if (!(pml4e & PG_PRESENT_MASK)) { return -1; } pdpe_addr =3D ((pml4e & PG_ADDRESS_MASK) + (((addr >> 30) & 0x1ff) << 3)) & env->a20_mask; - pdpe =3D ldq_phys_debug(cs, pdpe_addr); + pdpe =3D ldq_phys_debug(cs, pdpe_addr) & me_mask; if (!(pdpe & PG_PRESENT_MASK)) { return -1; } @@ -1092,14 +1115,14 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, va= ddr addr) { pdpe_addr =3D ((env->cr[3] & ~0x1f) + ((addr >> 27) & 0x18)) & env->a20_mask; - pdpe =3D ldq_phys_debug(cs, pdpe_addr); + pdpe =3D ldq_phys_debug(cs, pdpe_addr) & me_mask; if (!(pdpe & PG_PRESENT_MASK)) return -1; } =20 pde_addr =3D ((pdpe & PG_ADDRESS_MASK) + (((addr >> 21) & 0x1ff) << 3)) & env->a20_mask; - pde =3D ldq_phys_debug(cs, pde_addr); + pde =3D ldq_phys_debug(cs, pde_addr) & me_mask; if (!(pde & PG_PRESENT_MASK)) { return -1; } @@ -1112,7 +1135,7 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vadd= r addr) pte_addr =3D ((pde & PG_ADDRESS_MASK) + (((addr >> 12) & 0x1ff) << 3)) & env->a20_mask; page_size =3D 4096; - pte =3D ldq_phys_debug(cs, pte_addr); + pte =3D ldq_phys_debug(cs, pte_addr) & me_mask; } if (!(pte & PG_PRESENT_MASK)) { return -1; @@ -1122,7 +1145,7 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vadd= r addr) =20 /* page directory entry */ pde_addr =3D ((env->cr[3] & ~0xfff) + ((addr >> 20) & 0xffc)) & en= v->a20_mask; - pde =3D ldl_phys_debug(cs, pde_addr); + pde =3D ldl_phys_debug(cs, pde_addr) & me_mask; if (!(pde & PG_PRESENT_MASK)) return -1; if ((pde & PG_PSE_MASK) && (env->cr[4] & CR4_PSE_MASK)) { @@ -1131,7 +1154,7 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vadd= r addr) } else { /* page directory entry */ pte_addr =3D ((pde & ~0xfff) + ((addr >> 10) & 0xffc)) & env->= a20_mask; - pte =3D ldl_phys_debug(cs, pte_addr); + pte =3D ldl_phys_debug(cs, pte_addr) & me_mask; if (!(pte & PG_PRESENT_MASK)) { return -1; } diff --git a/target/i386/monitor.c b/target/i386/monitor.c index 7c39e05..04982fa 100644 --- a/target/i386/monitor.c +++ b/target/i386/monitor.c @@ -27,6 +27,7 @@ #include "monitor/hmp-target.h" #include "hw/i386/pc.h" #include "sysemu/kvm.h" +#include "sysemu/sev.h" #include "hmp.h" =20 =20 @@ -59,6 +60,22 @@ static void print_pte(Monitor *mon, CPUArchState *env, h= waddr addr, pte & PG_RW_MASK ? 'W' : '-'); } =20 +static uint64_t get_me_mask(void) +{ + uint64_t me_mask =3D 0; + + /* + * When SEV is active, Fn8000_001F[EBX] Bit 0:5 contains the C-bit pos= ition + */ + if (sev_enabled()) { + uint32_t pos; + pos =3D kvm_arch_get_supported_cpuid(kvm_state, 0x8000001f, 0, R_E= BX); + me_mask =3D (1UL << (pos & 0x3f)); + } + + return ~me_mask; +} + static void tlb_info_32(Monitor *mon, CPUState *cs) { unsigned int l1, l2; @@ -96,15 +113,19 @@ static void tlb_info_pae32(Monitor *mon, CPUState *cs) uint64_t pdp_addr, pd_addr, pt_addr; X86CPU *cpu =3D X86_CPU(cs); CPUArchState *env =3D &cpu->env; + uint64_t me_mask; + + me_mask =3D get_me_mask(); =20 pdp_addr =3D env->cr[3] & ~0x1f; + pdp_addr &=3D me_mask; for (l1 =3D 0; l1 < 4; l1++) { - pdpe =3D ldq_phys_debug(cs, pdp_addr + l1 * 8); + pdpe =3D ldq_phys_debug(cs, pdp_addr + l1 * 8) & me_mask; pdpe =3D le64_to_cpu(pdpe); if (pdpe & PG_PRESENT_MASK) { pd_addr =3D pdpe & 0x3fffffffff000ULL; for (l2 =3D 0; l2 < 512; l2++) { - pde =3D ldq_phys_debug(cs, pd_addr + l2 * 8); + pde =3D ldq_phys_debug(cs, pd_addr + l2 * 8) & me_mask; pde =3D le64_to_cpu(pde); if (pde & PG_PRESENT_MASK) { if (pde & PG_PSE_MASK) { @@ -114,7 +135,8 @@ static void tlb_info_pae32(Monitor *mon, CPUState *cs) } else { pt_addr =3D pde & 0x3fffffffff000ULL; for (l3 =3D 0; l3 < 512; l3++) { - pte =3D ldq_phys_debug(cs, pt_addr + l3 * 8); + pte =3D ldq_phys_debug(cs, pt_addr + l3 * 8) + & me_mask; pte =3D le64_to_cpu(pte); if (pte & PG_PRESENT_MASK) { print_pte(mon, env, (l1 << 30) + (l2 << 21) @@ -131,6 +153,7 @@ static void tlb_info_pae32(Monitor *mon, CPUState *cs) } =20 #ifdef TARGET_X86_64 + static void tlb_info_la48(Monitor *mon, CPUState *cs, uint64_t l0, uint64_t pml4_addr) { @@ -139,9 +162,12 @@ static void tlb_info_la48(Monitor *mon, CPUState *cs, uint64_t l1, l2, l3, l4; uint64_t pml4e, pdpe, pde, pte; uint64_t pdp_addr, pd_addr, pt_addr; + uint64_t me_mask; + + me_mask =3D get_me_mask(); =20 for (l1 =3D 0; l1 < 512; l1++) { - pml4e =3D ldq_phys_debug(cs, pml4_addr + l1 * 8); + pml4e =3D ldq_phys_debug(cs, pml4_addr + l1 * 8) & me_mask; pml4e =3D le64_to_cpu(pml4e); if (!(pml4e & PG_PRESENT_MASK)) { continue; @@ -149,7 +175,7 @@ static void tlb_info_la48(Monitor *mon, CPUState *cs, =20 pdp_addr =3D pml4e & 0x3fffffffff000ULL; for (l2 =3D 0; l2 < 512; l2++) { - pdpe =3D ldq_phys_debug(cs, pdp_addr + l2 * 8); + pdpe =3D ldq_phys_debug(cs, pdp_addr + l2 * 8) & me_mask; pdpe =3D le64_to_cpu(pdpe); if (!(pdpe & PG_PRESENT_MASK)) { continue; @@ -164,7 +190,7 @@ static void tlb_info_la48(Monitor *mon, CPUState *cs, =20 pd_addr =3D pdpe & 0x3fffffffff000ULL; for (l3 =3D 0; l3 < 512; l3++) { - pde =3D ldq_phys_debug(cs, pd_addr + l3 * 8); + pde =3D ldq_phys_debug(cs, pd_addr + l3 * 8) & me_mask; pde =3D le64_to_cpu(pde); if (!(pde & PG_PRESENT_MASK)) { continue; @@ -179,7 +205,7 @@ static void tlb_info_la48(Monitor *mon, CPUState *cs, =20 pt_addr =3D pde & 0x3fffffffff000ULL; for (l4 =3D 0; l4 < 512; l4++) { - pte =3D ldq_phys_debug(cs, pt_addr + l4 * 8); + pte =3D ldq_phys_debug(cs, pt_addr + l4 * 8) & me_mask; pte =3D le64_to_cpu(pte); if (pte & PG_PRESENT_MASK) { print_pte(mon, env, (l0 << 48) + (l1 << 39) + @@ -199,10 +225,14 @@ static void tlb_info_la57(Monitor *mon, CPUState *cs) uint64_t pml5_addr; X86CPU *cpu =3D X86_CPU(cs); CPUArchState *env =3D &cpu->env; + uint64_t me_mask; + + me_mask =3D get_me_mask(); =20 pml5_addr =3D env->cr[3] & 0x3fffffffff000ULL; + pml5_addr &=3D me_mask; for (l0 =3D 0; l0 < 512; l0++) { - pml5e =3D ldq_phys_debug(cs, pml5_addr + l0 * 8); + pml5e =3D ldq_phys_debug(cs, pml5_addr + l0 * 8) & me_mask; pml5e =3D le64_to_cpu(pml5e); if (pml5e & PG_PRESENT_MASK) { tlb_info_la48(mon, cs, l0, pml5e & 0x3fffffffff000ULL); @@ -322,18 +352,22 @@ static void mem_info_pae32(Monitor *mon, CPUState *cs) hwaddr start, end; X86CPU *cpu =3D X86_CPU(cs); CPUArchState *env =3D &cpu->env; + uint64_t me_mask; + + me_mask =3D get_me_mask(); =20 pdp_addr =3D env->cr[3] & ~0x1f; + pdp_addr &=3D me_mask; last_prot =3D 0; start =3D -1; for (l1 =3D 0; l1 < 4; l1++) { - pdpe =3D ldq_phys_debug(cs, pdp_addr + l1 * 8); + pdpe =3D ldq_phys_debug(cs, pdp_addr + l1 * 8) & me_mask; pdpe =3D le64_to_cpu(pdpe); end =3D l1 << 30; if (pdpe & PG_PRESENT_MASK) { pd_addr =3D pdpe & 0x3fffffffff000ULL; for (l2 =3D 0; l2 < 512; l2++) { - pde =3D ldq_phys_debug(cs, pd_addr + l2 * 8); + pde =3D ldq_phys_debug(cs, pd_addr + l2 * 8) & me_mask; pde =3D le64_to_cpu(pde); end =3D (l1 << 30) + (l2 << 21); if (pde & PG_PRESENT_MASK) { @@ -344,7 +378,8 @@ static void mem_info_pae32(Monitor *mon, CPUState *cs) } else { pt_addr =3D pde & 0x3fffffffff000ULL; for (l3 =3D 0; l3 < 512; l3++) { - pte =3D ldq_phys_debug(cs, pt_addr + l3 * 8); + pte =3D ldq_phys_debug(cs, pt_addr + l3 * 8) + & me_mask; pte =3D le64_to_cpu(pte); end =3D (l1 << 30) + (l2 << 21) + (l3 << 12); if (pte & PG_PRESENT_MASK) { @@ -380,18 +415,22 @@ static void mem_info_la48(Monitor *mon, CPUState *cs) CPUArchState *env =3D &cpu->env; uint64_t pml4e, pdpe, pde, pte; uint64_t pml4_addr, pdp_addr, pd_addr, pt_addr, start, end; + uint64_t me_mask; + + me_mask =3D get_me_mask(); =20 pml4_addr =3D env->cr[3] & 0x3fffffffff000ULL; + pml4_addr &=3D me_mask; last_prot =3D 0; start =3D -1; for (l1 =3D 0; l1 < 512; l1++) { - pml4e =3D ldq_phys_debug(cs, pml4_addr + l1 * 8); + pml4e =3D ldq_phys_debug(cs, pml4_addr + l1 * 8) & me_mask; pml4e =3D le64_to_cpu(pml4e); end =3D l1 << 39; if (pml4e & PG_PRESENT_MASK) { pdp_addr =3D pml4e & 0x3fffffffff000ULL; for (l2 =3D 0; l2 < 512; l2++) { - pdpe =3D ldq_phys_debug(cs, pdp_addr + l2 * 8); + pdpe =3D ldq_phys_debug(cs, pdp_addr + l2 * 8) & me_mask; pdpe =3D le64_to_cpu(pdpe); end =3D (l1 << 39) + (l2 << 30); if (pdpe & PG_PRESENT_MASK) { @@ -403,7 +442,8 @@ static void mem_info_la48(Monitor *mon, CPUState *cs) } else { pd_addr =3D pdpe & 0x3fffffffff000ULL; for (l3 =3D 0; l3 < 512; l3++) { - pde =3D ldq_phys_debug(cs, pd_addr + l3 * 8); + pde =3D ldq_phys_debug(cs, pd_addr + l3 * 8) + & me_mask; pde =3D le64_to_cpu(pde); end =3D (l1 << 39) + (l2 << 30) + (l3 << 21); if (pde & PG_PRESENT_MASK) { @@ -458,12 +498,15 @@ static void mem_info_la57(Monitor *mon, CPUState *cs) CPUArchState *env =3D &cpu->env; uint64_t pml5e, pml4e, pdpe, pde, pte; uint64_t pml5_addr, pml4_addr, pdp_addr, pd_addr, pt_addr, start, end; + uint64_t me_mask; =20 - pml5_addr =3D env->cr[3] & 0x3fffffffff000ULL; + me_mask =3D get_me_mask(); + + pml5_addr =3D env->cr[3] & 0x3fffffffff000ULL & me_mask; last_prot =3D 0; start =3D -1; for (l0 =3D 0; l0 < 512; l0++) { - pml5e =3D ldq_phys_debug(cs, pml5_addr + l0 * 8); + pml5e =3D ldq_phys_debug(cs, pml5_addr + l0 * 8) & me_mask; pml4e =3D le64_to_cpu(pml5e); end =3D l0 << 48; if (!(pml5e & PG_PRESENT_MASK)) { @@ -474,7 +517,7 @@ static void mem_info_la57(Monitor *mon, CPUState *cs) =20 pml4_addr =3D pml5e & 0x3fffffffff000ULL; for (l1 =3D 0; l1 < 512; l1++) { - pml4e =3D ldq_phys_debug(cs, pml4_addr + l1 * 8); + pml4e =3D ldq_phys_debug(cs, pml4_addr + l1 * 8) & me_mask; pml4e =3D le64_to_cpu(pml4e); end =3D (l0 << 48) + (l1 << 39); if (!(pml4e & PG_PRESENT_MASK)) { @@ -485,7 +528,7 @@ static void mem_info_la57(Monitor *mon, CPUState *cs) =20 pdp_addr =3D pml4e & 0x3fffffffff000ULL; for (l2 =3D 0; l2 < 512; l2++) { - pdpe =3D ldq_phys_debug(cs, pdp_addr + l2 * 8); + pdpe =3D ldq_phys_debug(cs, pdp_addr + l2 * 8) & me_mask; pdpe =3D le64_to_cpu(pdpe); end =3D (l0 << 48) + (l1 << 39) + (l2 << 30); if (pdpe & PG_PRESENT_MASK) { @@ -504,7 +547,7 @@ static void mem_info_la57(Monitor *mon, CPUState *cs) =20 pd_addr =3D pdpe & 0x3fffffffff000ULL; for (l3 =3D 0; l3 < 512; l3++) { - pde =3D ldq_phys_debug(cs, pd_addr + l3 * 8); + pde =3D ldq_phys_debug(cs, pd_addr + l3 * 8) & me_mask; pde =3D le64_to_cpu(pde); end =3D (l0 << 48) + (l1 << 39) + (l2 << 30) + (l3 << = 21); if (pde & PG_PRESENT_MASK) { @@ -523,7 +566,7 @@ static void mem_info_la57(Monitor *mon, CPUState *cs) =20 pt_addr =3D pde & 0x3fffffffff000ULL; for (l4 =3D 0; l4 < 512; l4++) { - pte =3D ldq_phys_debug(cs, pt_addr + l4 * 8); + pte =3D ldq_phys_debug(cs, pt_addr + l4 * 8) & me_= mask; pte =3D le64_to_cpu(pte); end =3D (l0 << 48) + (l1 << 39) + (l2 << 30) + (l3 << 21) + (l4 << 12); From nobody Sun Apr 28 19:04:07 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1489009185841350.547481309139; Wed, 8 Mar 2017 13:39:45 -0800 (PST) Received: from localhost ([::1]:58581 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cljJ9-0008P9-GB for importer@patchew.org; Wed, 08 Mar 2017 16:39:43 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52757) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clj7u-0007li-UE for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:28:08 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1clj7r-000613-NN for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:28:06 -0500 Received: from mail-by2nam01on0050.outbound.protection.outlook.com ([104.47.34.50]:15072 helo=NAM01-BY2-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1clj7r-0005zr-Cn for qemu-devel@nongnu.org; Wed, 08 Mar 2017 16:28:03 -0500 Received: from [127.0.1.1] (165.204.77.1) by MWHPR12MB1614.namprd12.prod.outlook.com (10.172.56.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.947.12; Wed, 8 Mar 2017 20:54:46 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=kvKADZ/GCCgHKX1hfkbY4bUnGB1IFcyQMWBlvdXUR6Q=; b=2U6ZwjYiRv3l+AX0TQskJJOjKvi5qs5dsuotuqfEtIzpvB2y9vuwUPBlieGemKV2ZH022E1W+MIRcRhLX0RPIiS89sAjJizUX4XZXvWO96wCw5Xcsn3ENMaFS62Ge78N73Bxq0l7acARbjWjnVIQ+WyRVFXqckFAuLV8X9/OHqQ= Authentication-Results: amd.com; dkim=none (message not signed) header.d=none;amd.com; dmarc=none action=none header.from=amd.com; From: Brijesh Singh To: , , , , , , , , Date: Wed, 8 Mar 2017 15:54:43 -0500 Message-ID: <148900648332.27090.14562192041474683540.stgit@brijesh-build-machine> In-Reply-To: <148900626714.27090.1616990932333159904.stgit@brijesh-build-machine> References: <148900626714.27090.1616990932333159904.stgit@brijesh-build-machine> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: MWHPR21CA0003.namprd21.prod.outlook.com (10.173.47.13) To MWHPR12MB1614.namprd12.prod.outlook.com (10.172.56.15) X-MS-Office365-Filtering-Correlation-Id: 5a4807f1-6fb4-44d5-711c-08d466655af0 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081); SRVR:MWHPR12MB1614; X-Microsoft-Exchange-Diagnostics: 1; MWHPR12MB1614; 3:awjC7i2g4Bcc7A7yUaDANWfPgPHWLLxT5QGO2/eEZ3UVPLVoRmpF50bbz5M/oVfEQSya/rslzZjREkVM+G7aoiiB1K3nw8i6FF9dGYOvI1Urhtz/AC30rVJmimoxrm5GwjlXodAy9skcBF10NstNVEsZ2djVpY+x7iozc3wBfO2+Ke/hBACkHW9K9KlSdYR8kpM3ePWbKPHJuJz/pvvydXBI3/M9I8IJvddX+ggXgvnUMvKhZoSFDg4eLrykVu4K8eI5Ihm1ETS6OiqJypeGS3OmK3xEjOy4+UAnt5Hr4Ik=; 25:Nid576+xBkwZt7eRMt6JraQ09wb7nHB7XmsmvvVeH+SrBZkSokRPiuh4OUJVtUPVNKYw4RCu1Ysyivpl+DKrxHK940ogAuAIAoW2qStUjU5HGo47BqQZ8RmN00aX2DxTMTooVnwxsJ/krsA/1jxDgGQSovZMOSAOcufIs/bKxz7amPErHc3yWtDCUu3pdRQ9P9SohOBG1YeyWzhh6LoQuz+hKA0hvDiGRLjQA+Qo4WGJoo+WTMGvB8feGgj3++TmPPd140/WCU/ajTP2yCyxbVTnrUaCJkHQXlfsAWrxOw1ka7io6C5WU+U55l1jTzTxsm4HTB65/XtryrBfWkbwaxovTvEDs4gGXXoelIO/LQ0Dn2P3fbuX6FBWU1kvYvaMHUWaBTuEpitr9uMkxO1e1GUgbBYpt5PBHUCTQHX9laOKl5Y37hMRdX/HtGq37Mu3 X-Microsoft-Exchange-Diagnostics: 1; MWHPR12MB1614; 31:RFg58uEkJuEm75qtyIc/mjVXh+aH8uNstRF/ieQb0bGX3/DBreee67lnGRlP/QR26p9bsUebNk98aWkQOOr9S22InMoWQ2hNY8EBhU+8bsmEDLBbE5B8v5LjGG7T7mSj1pYy6TPB2w5oyOGeItnQDf8iK7rwq+VHLifm7FxiX/O1JDjH1jcKgRW869oC7XFwAa0RZloKPCNDtRxpYmqIIwLaFEPy0cHS+G7j+OUv4oHlxs6dI9vwdFcj9vr2WMcw; 20:3X+DDhhtx8WsepBSe1g9VCfsp9YRK3oytk7lE2iSivFqFDy8WyH3n+3QJnRfSYrvovwau50bOmR9QEEkhPPv55g0jO6sQrkgOJzF+GvfG3l8s5BgBdcT1q5CFXJJsw5arxxFu6GnQMNFB12RzjVAwXbGwJJeNNQsTulK5QcryP37xqhwg7V5uASXAGtck7KYe28NfcOb9d5W9vBgCj7xJAXfljVEhmt8Rs4sSLqKTtq8FeiVb3LgJs+7QuTUuluicwZgVMVkm3LbsZxgHW1wUjeAlXDyWtjprPE+2Tiv8ZZHylIaF0VBPHeAQg1CsXTxY6Lx5Liz3Gm+WZre7j9UVeOoxXEHJMZM5GRJV/URixssKEzFrrXvTwOspueauCw0oD1QBoDgwpiT3yLb73mo4wrC5Du0JEYO7gsI4rFMWFAvE02FUUxibaOj90DQkEnx+Hvg4gF7dSEHKzqh5Cg8RLERJW0yA1iHKGA8Ia5FahW0lYMHHn4U24SLMTr0XJyd X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6055026)(6041248)(20161123558025)(20161123564025)(20161123555025)(20161123560025)(20161123562025)(6072148); SRVR:MWHPR12MB1614; BCL:0; PCL:0; RULEID:; SRVR:MWHPR12MB1614; X-Microsoft-Exchange-Diagnostics: 1; MWHPR12MB1614; 4:RKA5p5RGdQoqgcK7GWlP75eEt1XU09YC5Uo3mAzIlzbcei8W47LAhHl6PIvMNftnV6xGeAhReypt5LXuHxGgGa0D7ST6MxVX7Yn3uST0gjoXfkhwa24/y6usjcVCDHMl6WjTvHaQ86p9Vj72yWzk5Gt0tIDFwkNzEbq/B18AHW2M78xqIlL9IFUAOsGCZdzZWQisWOU/ARZTq8ntRkLhm23IeiuEy0gM++6p4D8DZYsDXPenfCnqGZPbZMAiS45fOJI3VkqaivSwXeY3aNMCPcQVe7c79r9ZskD3swT21ATUh/rWBx7o80THnKIoVC6rlYH08yZ/9IbUHUZNoIuq3LTWVrNtKpOPaCkKma2vLvx0KE+Vsp4HlGZWJPQfwWNyJPLN51ZMQEp81Dp7Out6L9H+1BgjIlSwq9JW3Ho/GMw9ldPNn/3w2gYgzzR2EgmGJRAqT4InmGIUhjn9aVZWIRg5MR6cgF3cbptV281ptpQgiWq9wFkBg9wQ34O0zdGz4uhzrKniHyLX85pJ9WYntxrenNL91sjA+gI5pAPAQS3MxotLe9yBC7Q89lR+EwVaroUJTHBLgPla6wBvtDsU9oDDZNIUUnVCyvvCvc7V647iPsPDuCrp0VbDcQ22hI5CDgjt/7Ru3+xBSBI+KRRLIPEOp7dcts7/hTAl3u9pzig= X-Forefront-PRVS: 02408926C4 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6049001)(6009001)(39450400003)(39850400002)(39840400002)(39410400002)(39860400002)(6116002)(230700001)(6486002)(9686003)(3846002)(53936002)(47776003)(77096006)(54356999)(54906002)(76176999)(50986999)(2950100002)(25786008)(90366009)(66066001)(189998001)(103116003)(42186005)(2201001)(2906002)(83506001)(305945005)(33716001)(33646002)(5660300001)(86362001)(7736002)(23676002)(4326008)(50466002)(38730400002)(81166006)(6666003)(8676002)(217873001); DIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR12MB1614; H:[127.0.1.1]; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtNV0hQUjEyTUIxNjE0OzIzOlBGTzlkcUY4WUtMZUtDV2QrVVk3ZGpCRmcw?= =?utf-8?B?emlwbVhkc1B6ZDhzZmJVUS9CcEExOXc1YjZlVmtGdjdHS21QWk5lQ05HcjJV?= =?utf-8?B?TU1zUVJVTmprVVVEeUxPWktCenl5U1l5TWNZNVd4Zzdkc0U4UC84MlZ0NzRt?= =?utf-8?B?T2laTzJvREtMRW5hNkZoZVpleTNZcjJ6YnMrb1FHQXNIWHJCS1BON0tUa0R5?= =?utf-8?B?UjlYYStzTHh3TERXWnkwU05oeG5PRnlOcVVpMGVaUmVKTFI5L0dqcXVMLzQ3?= =?utf-8?B?d3RUeGFteVBNUUVsYWpFK3ZPa3NGV3JGYmlWakNQV2w2RDBjOFpyb0pQYjcx?= =?utf-8?B?VjUwNHp1c3FCb3BTdi94NWtIN213clYxTXhCaDRnbTF4cnE1aUVCWVVRRlFh?= =?utf-8?B?cVRmQWhqd2xnU0JhYUV0d3ZFRGlvUGw2SUQ5ZThDREQ0UTAvYkpLNVRuTGNK?= =?utf-8?B?WDVkSE9CczczSE01V1dkWm10Q3lQRnh2L1JBRU41Y2dvb1NlL3ZSMWJjVkU3?= =?utf-8?B?cDhYbUZVNXpGNXpkbjcxTjU1cGtWWjZjMHJEMHpoNUVyVE4vcEN2dm9nSFVS?= =?utf-8?B?dG9EcDlrQ0xkZzBMaFN0VGFxL1JWa1Zvbm9nRXBFUXJOSDVTSmlUaW53eTUy?= =?utf-8?B?MHBEVm5MaGNIcHY3dkV4OUZpUEUrRTR6aWdyaHNmK2lzN2lOeHlkM3ZwNHA4?= =?utf-8?B?WTJBazNkVFRac2c5bXR2ZWZXVmZQeUoyZS9za3BoekZFQU9TejUreFA3bFFq?= =?utf-8?B?WHp1MlFoZWFMSXZ2L3p1STk0eWF4OStrNGI1bUtoMTduT2hqSnBpN1RDdEUy?= =?utf-8?B?ZWcwUXhZUjh3YjIrSnN0bVpPbC8yWXZlN0Rjdmh1U3JHTnhIbDNXNllvMktT?= =?utf-8?B?RVVZVWN5THBnMXFpSU1jbzN1eS84RTFLZGhyRHc4VkM0MDJ2MEc2aUJsN2px?= =?utf-8?B?RnlIV3l3TGZySjJNRGNwYWNQRDh3RTZIbWtlZFBzT1QyYmk2cTJXbnNMQmgz?= =?utf-8?B?bWpxUndDWkxzcWI1TEtiNVNNNVMraXRvbWlxNXBNRGNxZG1OVHhEV1VqdVdI?= =?utf-8?B?Z1RPYWExVUV4clhrMEhObWptNGh0VXhGVVF2bmcya0ZGS1ZrTkl6WTVqdGZ6?= =?utf-8?B?NDMzYWp0aEI2azhxNC83blM5OHNmcElqN1dwdFhvai9hU2pmMlRrTGFCcnFa?= =?utf-8?B?eGZ6RXJsQnpGODIyaXl6dk1wMXRKSUE3M0NKTkEvYVBPSnYzL1ovOG9pa2Rj?= =?utf-8?B?cXZEK1J2S0JqdHNJNDlRcUU4clhQV0dBRnBlZmgxU0lZSllWY3RJMzNLYjFK?= =?utf-8?B?OFpKdjVIYWd3TkZmdnFtbWkvTFJ5MjBIRGdKOVRUWFgxQkNzODZnWDFwOU1V?= =?utf-8?B?dFhGTXNESG5MTFpsYmlBak1ZMDNIVzFTa3dKZ0pQY0hWcWRHRWZGZ0F2ZFdv?= =?utf-8?B?VElMTktFVDlxM2FXUFJzQ1d4aVo3eXJLTTdseXNwVnllbUpFNC9tMUd2TkxM?= =?utf-8?B?ZENCZz09?= X-Microsoft-Exchange-Diagnostics: 1; MWHPR12MB1614; 6:IdRhRjHwfqYPFUQGjwODaaKXDvNhnErGxOrCg90GAFrqHf0e4lZngeqMnh27Hq40npWsAJI+wyZ6FPbNdgdn/TwagSQo4vCTbq1/k/+gH5V05sIZTupPsq8Q8Ig5koaCaxSMR22yU9ObxI805b4kxlPdJje8RBTKjABwygH9CGLTMH7a/L0Rw8aG3pwgi8RHKMwoyQyiUwdKXbt3RaFc+K8G4rWrhhSW+d5/3VjRGhNv9A47SaGMXsyusxApILcHuZ5NipWJeo1Sj0JfXD+jZSBHQMqZeJL3S75brVdsDof5u+jyboS6FgVhRhySJi03TN5q+orpyJ0rf/4YcoiTReIR3KSRUiUmiZGQkP/D1EswkfXioqCWRdigydb90kGZOD9s17WfItig46Lucab8OkqJopIpOG15aw8+pcyz9+s=; 5:Z/cgea08syxkkoPlEGUifleFnYP2hoEuAyGw2+Ag+bMJN3kuwTWbtoq/AHAxQ8/eaha1evQeEKjwAu6ewipDO+f3nAES5xPzhnma9gcXzj1Qa/5EnqFEMyLKNbWuAFkbPk5zfo9qfHo0e4CAl8QhTRKGJZeoJVOJCNcDdUo5vGo=; 24:dwLtcBpw5hJLwVL7XWfIAhabSR9OJnNmcELpa+3n/G7XsbmWDUGOUxAWKSw+8C1TNYdM4tqltv5hYPEUqQfYW6SV5zBZIwEVXbZHOwyKAWQ= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; MWHPR12MB1614; 7:1rtV714iHQss4F3CpaMQ/GOuG50XJgLhI05RXEPhZ9xpuxfAxAgP1fI9O0FF94gUoWBdcQ45no86RkN8MI3WmtO+q5RJ74FToznkxYasRugVLcOUHV6FMBUo1FwyW7Hy10QTaNtcxP3xaU8R3gn90780H56qKKz6q/s9yYfom5qnWm9kHnwMmM05dZ3DDdR7WUvWOU193gVGMKeHZSJgEYezVDqh9uz9YJWFAEVPp1uRV/U5dLYOoDFg++3YlSNM2ZfWLz6PgdgGnl7itWXsD1IyUGm/ltMUft5eIBC2yZDq4dUiv6/Zvdu2VI+JIVU2tALetDJhlIf7V5T6noP3gQ==; 20:H6pJ80H9SICGCsSPELH69bMcgjm9T5STnNv4mROVPXmDWjvfWCVgf13TPcKS5M7MceCYW6/j9YDRyKpyfWItjxiBlCHfgMESgPlIHf1CzDTJo4D4EpULJw11ERNMpZi8NnfxmG3LsVA+kAOdtDD0HlhkAyola7DuldJuIafUa4cEo6hbSCvrYu105wjttHjZMLzsvkWX6jZt0fCvpgpb35Ep1x4hOk7fBxf9qml7hjyC5XnboFCyAwW7vOrbHP3B X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Mar 2017 20:54:46.2483 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR12MB1614 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.34.50 Subject: [Qemu-devel] [RFC PATCH v4 20/20] migration: disable save/restore and migration when SEV is active X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Thomas.Lendacky@amd.com, brijesh.singh@amd.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Snapshot, Restore and Migration is not implemented yet. Return error when user tries to perform any of these operations. Signed-off-by: Brijesh Singh --- migration/migration.c | 7 +++++++ migration/savevm.c | 11 +++++++++++ 2 files changed, 18 insertions(+) diff --git a/migration/migration.c b/migration/migration.c index 3dab684..287c72b 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -37,6 +37,7 @@ #include "io/channel-buffer.h" #include "io/channel-tls.h" #include "migration/colo.h" +#include "sysemu/sev.h" =20 #define MAX_THROTTLE (32 << 20) /* Migration transfer speed throttli= ng */ =20 @@ -1221,6 +1222,12 @@ void qmp_migrate(const char *uri, bool has_blk, bool= blk, error_setg(errp, QERR_MIGRATION_ACTIVE); return; } + + if (sev_enabled()) { + error_setg(errp, "Migration is not implemented"); + return; + } + if (runstate_check(RUN_STATE_INMIGRATE)) { error_setg(errp, "Guest is waiting for an incoming migration"); return; diff --git a/migration/savevm.c b/migration/savevm.c index 3b19a4a..bf6e9b0 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -54,6 +54,7 @@ #include "qemu/cutils.h" #include "io/channel-buffer.h" #include "io/channel-file.h" +#include "sysemu/sev.h" =20 #ifndef ETH_P_RARP #define ETH_P_RARP 0x8035 @@ -2084,6 +2085,11 @@ int save_vmstate(Monitor *mon, const char *name) Error *local_err =3D NULL; AioContext *aio_context; =20 + if (sev_enabled()) { + monitor_printf(mon, "savevm is not implemented\n"); + return -1; + } + if (!bdrv_all_can_snapshot(&bs)) { monitor_printf(mon, "Device '%s' is writable but does not " "support snapshots.\n", bdrv_get_device_name(bs)); @@ -2245,6 +2251,11 @@ int load_vmstate(const char *name) AioContext *aio_context; MigrationIncomingState *mis =3D migration_incoming_get_current(); =20 + if (sev_enabled()) { + error_report("loadvm is not implemented"); + return -ENOTSUP; + } + if (!bdrv_all_can_snapshot(&bs)) { error_report("Device '%s' is writable but does not support snapsho= ts.", bdrv_get_device_name(bs));