From patchwork Wed Feb 28 21:10:01 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brijesh Singh X-Patchwork-Id: 879396 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="WpvgXMHq"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zs7ZG3Nh1z9s2B for ; Thu, 1 Mar 2018 08:12:54 +1100 (AEDT) Received: from localhost ([::1]:46946 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er91w-0002D9-GO for incoming@patchwork.ozlabs.org; Wed, 28 Feb 2018 16:12:52 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52822) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er906-00016g-D3 for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:10:59 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1er902-0005O0-GZ for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:10:58 -0500 Received: from mail-dm3nam03on0063.outbound.protection.outlook.com ([104.47.41.63]:8633 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 1er902-0005LV-9e for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:10:54 -0500 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=5wh5sKoS1Kacg2awiZ/kpoN2AfQkpAPFPoXLNyQ12p0=; b=WpvgXMHqQGKrfk4fW+lE3i85rGNxpxthqr5lXpsz0eqx8Y47cjqMGAO2ZUoIb84CY4s5RRtBk0+v2/DGB0hO/xjZ5HwFdCgOFNCIc+fEYHZ1B6cLcbT239xWZPuQ0cnoAnUUZLOD3GVb/5jjOrDNqKGzcW+Gmh0EEGPO+TkR1Pg= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; Received: from wsp141597wss.amd.com (165.204.78.1) by DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.527.15; Wed, 28 Feb 2018 21:10:51 +0000 From: Brijesh Singh To: qemu-devel@nongnu.org Date: Wed, 28 Feb 2018 15:10:01 -0600 Message-Id: <20180228211028.83970-2-brijesh.singh@amd.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180228211028.83970-1-brijesh.singh@amd.com> References: <20180228211028.83970-1-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: DM5PR10CA0008.namprd10.prod.outlook.com (2603:10b6:4:2::18) To DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 7eeab639-5189-41b1-537e-08d57eefbfcf X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:DM2PR12MB0155; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 3:aFSV8HZ8Zepc+7a6G94Mpkbr00QID5Mg7GDUs390ybgUHtf3XyJ2r47mYh0JdX9KNQEMnKUnUXlXp9jhwTh3y0OzZ5jRvEbFTB8N5exonZ7vJ5a3L6Bgvcrpmowf9UA+u8/3nCwerGYybBMSZlGL6oSToKwdnuZB3bJ3WQTaxjRpC78s1NMUaUK8lVeo13NAfZgCElJ7bOiFMuhFyBLjZyOA+SZcLrW3PCx1gwJLjrJyb5n47u8uJyiC3HUYim6C; 25:byiALyXxAnRMaCENqKFNMo2k4rk2sj2GS1fjaVz7dDQVY/1ViVez86RbmzmQ6kk0VdOJbdayZzUWcoWoO4w4nfbJZEdNEwsRhE598kzVw95e6BZJuna9gGLus9uAi8yHa6zZC5Q9y8HRJJ3sgmbcgOftUCh7Co7SDMmSurovVtA9+ppceewb3bDnsIC1AnxvjhwwQXc/z/PQbEYg/fNBZL37aC3C3LctZv17BB67rL7e/EirwDx+TfW5XZsqS85YXbcxkM2ZB5qo6L5imMG19fXdwKglA+rhI44OP4pySt6eOIIr+1TegW9qSiT2W1A3NC+rb8sR5UZ8nan9b1gG+Q==; 31:ACQK9osMkSY4NSx289i39b2QAtl2TcswBfiZ2kfHU/0VI928hXlnVHMEd25poRpuTRaKlQUsLZiyPDJhyT+uNaiywhc+RDvVjvb0vFh2r4/xWErAeWej3OaJai3QCQ4sX2W/wsznPfwe53yOh2GwdFpcliEgKuQRo8HJkwFZiHAfGj4tPqf3vyW3FYjEjYg24H96euFXNgeQmQKIAoJeNot2cbSjwEAMixmKYuXLic4= X-MS-TrafficTypeDiagnostic: DM2PR12MB0155: X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:XSI2Lz8avHOAFpDQ9IBVkQETQRj+Svf+qKnymXJpkaTTG174BVUVm/0pXCFHhyxVxNkrevDtbR9T/lYQSbN8iIANA3PrGHq6d/BuOxSc6inzPe1fpMCVJi49m5KYH9PG/0ZYf6gvnkCuwKgdah57MJRG/7kVyNwnQdXjL38iRtL7hBxrzd3wSvF4Qtiy+62YHQFXCgHw/wmXxyEpk4VhhHxe+mjV6vhGni8+TEcwWNcHWqJqLoZKx8AHpia2OzzsSIHRSQAfroU/5xBmlUcHPdIiSQU8p4a0H3FzQ5mHdtvkdwHikSYoo+4HspGyGmOCF4KwdhtQXOxO3FT4OU5Lw/fxpBtZh7FAx5mmohFZ0GCoVKss76feN+9/1nck5NUl+MHt9f45EUVFv3tnnRZOZ00T7jjbNF64S0GKlcQYtf878tXdbTOKh+edpctMUpM43Nm+c251m984sWV0z3LMah2IRcS/+LWedJuIm54Mj5PCATVtLQEdLP6o8yZNt1Wf; 4:NvosVHomJZOmlMdYhzJobLT2ENyclasy/FW/kIQie67s9IS6CHVZUPy3+fDZVtft/7ovTdoYGg3boayyJCp2l7irMLd4APqocrQ3caLd2aere0Y3aH5Izcyq/YSMRnJuF4yepBC6LTelkxvvbJ6VSWP7A0oePugyp2x8CXOnAe4qPZGIsIqpkmgpz9NP1+hc/ZyJMDSSPTVy5WThYVU7ojrBoZ4wPky+MF19KBgx6KOsQMy7ehdbuQWViXqH79Se2yXfuiCTmLM8HpYr9OY9qv40tosLADfUH4NBysmBLbufa3KHum/Ez8vjmix1Kk7RhQpkpHtF/AOE2jMR7KOGow== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110)(192813158149592); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040501)(2401047)(8121501046)(5005006)(3231220)(944501219)(52105095)(3002001)(93006095)(93001095)(10201501046)(6055026)(6041288)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:DM2PR12MB0155; BCL:0; PCL:0; RULEID:; SRVR:DM2PR12MB0155; X-Forefront-PRVS: 0597911EE1 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(979002)(39860400002)(39380400002)(396003)(346002)(366004)(376002)(189003)(199004)(6486002)(6116002)(1076002)(2351001)(36756003)(16526019)(16586007)(54906003)(53416004)(26005)(53936002)(66066001)(186003)(47776003)(59450400001)(2361001)(478600001)(8666007)(316002)(81166006)(50226002)(8676002)(8936002)(386003)(106356001)(97736004)(5660300001)(2950100002)(6666003)(305945005)(4326008)(76176011)(7736002)(39060400002)(8656006)(105586002)(68736007)(50466002)(7696005)(51416003)(25786009)(48376002)(52116002)(3846002)(2906002)(86362001)(81156014)(7416002)(6916009)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR12MB0155; H:wsp141597wss.amd.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM2PR12MB0155; 23:OyMUdvJN31VO8KvfxPlkYpP2g0siCYErDq2+QILnx?= +sLUE882TnYYiLgwDhuvd1wPpinlgTWSFlroACYAgGcRBB/LoRvSo6g1qqrICre4u4DEA8t0tvspyXHQcADTuOjlLNtHm9ULF50DyzgHyzItwG7UththtWP9GVMwyZ4n1+Y3Et6t98E1IM2ynxVdvpeiN4m0l8lHcCPgQwpilKH5OR3DQM7x0Ccpb5huoHKNaCjjFrFRO3+95zCTcwgRVEt/Gt/wIv2Pp/AdSsCH0xycKhezh6/vKWfviSMiotlacZsZnYxfakbNNGlqpqiaVjUtdyRLp4kbZmZPX/Txzrv3ShQOC3leUpQQMV+lQa0P+a9nM5LkYrHRzmLcEqAupUUo/32aOFc/hYWO+oApCJ9pGuo9yY88AwABDkgFx7ABPv5umY/JOQm/Lj1l8fAQZogkdn7J5Zo7TzJ3AI5JQsxcXz0uv+zKIYqa7wk3n/fIzvVrfD1aQ9EofI+1OinUqb8fR4/tocbzwVoBeZEuT+1XWblG7gqPhjZU+bowaOAzRt/oEGDYpnCxi78z45hJ6KB2pOWyif3RwPjSUKgFRtX56KnB6jFyG9dRmfTQOuz3H1rQVt69qHB8q9TNos0fmQdwCNt02OA8BSsPvvfOEGvrH/zO6yzr31cHareIzMnB2er9JN6yLvjVrd7+HYIRN8ln5BPVx7C/Jclf7EDqWeeFiLTj1yMSk2Ho/BZTYVo61VCREi4kaMtePC2gHEam/PgSD1caj3DgytsIRc7KLNlbtpLszF2je3Cy1ySzlGTiu2scfPj0jNRb1D20OzmctykIrtG0Ny5dTjOsuOgIjJ96vxeE4uS6uohzMWgNPdbSbD1h+43sKkTkraWyzTKn8MM1uPuzYVmvBLhtSw6Gi2lq8JFGWOEpwbXYzGuBSPw+dPzq4fLCN4NTnlJAkYXodePwYQHJb/2S5azPL102CsUTGpNqTjhs01GleBKhfrY/IKe/yzbvdH+my+VKt/wLPDy/PgTgxRkY48EK0fI5l4gCTNmSK5mLBK136+SnDn5F2oqlX1Bp/k4ChaHZJSN6BQY/K5M00uOYTuxZWWlMAw56pS1p6fOkQqExdOKoevJ/vOl+y1p2syWHXZCexE2DwCQZopWHLDoelAnL8VgqR9G634aPBGARJ7bsRMCqCL/K6INkfgBO5iz9gz+YltmN3HlMW1MS7n7W7oYOK8yl60vY0RANHEGZbtys1z+Vx3nESbbNS/9twuU7kQvV972/XTy+ZPprv1XA2czNF30wVE/vsJ8q9ZvjCqFi8odAnGQA9nra+GfIl2uxysMuUNrFM3XTZ+UmkbCryLJxsZgYiDkmlwgy8+azPRw8tQrZ2gwHDM= X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 6:T/8DMyOFGvLp2QWY1SH46hb68GYkiK+VtreOpoey63AMNXM+O0kDGfPIKSawotZXGXvFBK1dDpdBxjqe7gU1CdOzmiC56eDNNf616EteLiEvURk454Vy5UgrvIg4BHrALCv3Cg51QkRWCK758Q5KAgU5Foafwb7p0HGRVW5R+STf5hHg1BhZwjob13K3cRp87dxcpv1piURk50qxqM/YyeSDPr2XC6w/j8DpbK+iiL7l0kgsfRfXxrDQuzuiIo5wTh47DVgUnVZ/0beCdNoXiVCErPljOzOVh+A8uU4JFFgDe0fMO8zf6MHJgSduUfrG5h6PXOLyt5qUhbOI7h5zhWcrIi3oinEaDpNIs3bvhmA=; 5:ZlGudWb1q3cPyQReh40D6qaD1Dy/Qo/MDrZKhfRepoWpnFm+IT/fkBeYVAEOAkK8gNo8Gvi4QXApvlB1ly9vRRTQwj1qfrvU3g42ZS+g1u/3JwR1xUtueR3CTzkhTsCn4Luyp+7JSaRobgF5HPf39UWLsjJyPy0tNYusnkliMh4=; 24:+6H/BqIkvy9bbniSK0/t8ttRy5jF1uW0OUPL2bjf16hzkc9Y6DR0bbUGV3CJUv/YAx8ft732+ky6Zb8qrtQTWANNt69udNGrMb1attsYYKE=; 7:PxKpVecDimW9X932w3EDuT61jS9aOLTb6jvgLn/2n0UfCHITuQ27ulpVG2Wz2t6XhIduC6BvFJkN8BpMKlAaxX/e4dROzqZenvPJx5zmRh2/gp98d+2fkvKCJZYzL22rsOlxrXqvzUX6+bo2ge4j6ZNTSQ5ACkh1n/mf4jEZmJpEbj6hl2e3wjOFD390UXAfalLBnIyAVCi+dBFDxDSfwfg1oRkIukkk1MRST769tvHOj0l9PtVzOlrVgetvuk4g SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:S77jmph8/lA48Z6u3WlvQsf0y9ucAuQ8lfhxyI2IwX/Fc6sHOtB+taE28htcMGiVX9dTichw8EJuFR73TS1ULf20dRh8hwZHx/GaBMZi9zn+J8zTxlgVAZCIPy74s+FD6rgf6gwMwUzaVk13jb+irxMkGDXn6S1Rqtkxnkce/mc7mi26Iw5PeDBuKGUNS1LOBvUqmpsUynJWCUFaEXpn1JtHxCcUVPxwYiI8ikkqQvD5C7sxNlhIAznd4zhctXLO X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2018 21:10:51.6549 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7eeab639-5189-41b1-537e-08d57eefbfcf X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR12MB0155 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.41.63 Subject: [Qemu-devel] [PATCH v10 01/28] 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: Peter Maydell , Brijesh Singh , kvm@vger.kernel.org, "Michael S. Tsirkin" , Stefan Hajnoczi , Alexander Graf , "Edgar E. Iglesias" , Markus Armbruster , Bruce Rogers , Christian Borntraeger , Marcel Apfelbaum , Borislav Petkov , Thomas Lendacky , Eduardo Habkost , Richard Henderson , "Dr. David Alan Gilbert" , Alistair Francis , Cornelia Huck , Peter Crosthwaite , Paolo Bonzini Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Extend the MemTxAttrs to include 'debug' flag. The flag can be used as general indicator that operation was triggered by the debugger. Later in the patch series we set the debug=1 when issuing a memory access from the gdbstub or HMP commands. This patch is prerequisite to support debugging the encrypted guest. If we see request with debug=1 then we will need to use encryption APIs to access the guest memory. Cc: Alistair Francis Cc: Peter Maydell Cc: "Edgar E. Iglesias" Cc: Richard Henderson Cc: Paolo Bonzini Reviewed-by: "Edgar E. Iglesias" Signed-off-by: Brijesh Singh --- include/exec/memattrs.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/exec/memattrs.h b/include/exec/memattrs.h index d4a16420984b..08099e4f7e72 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 request from the debugger */ + unsigned int debug:1; } MemTxAttrs; /* Bus masters which don't specify any attributes will get this, From patchwork Wed Feb 28 21:10:02 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brijesh Singh X-Patchwork-Id: 879402 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="hp5IFAZ7"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zs7j929wZz9s15 for ; Thu, 1 Mar 2018 08:18:53 +1100 (AEDT) Received: from localhost ([::1]:46984 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er97j-0007IA-A5 for incoming@patchwork.ozlabs.org; Wed, 28 Feb 2018 16:18:51 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52871) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er908-000182-0c for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:01 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1er903-0005Qt-Oq for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:10:59 -0500 Received: from mail-dm3nam03on0050.outbound.protection.outlook.com ([104.47.41.50]:20864 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 1er903-0005Oa-Dx for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:10:55 -0500 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=LyS0CxVns4KUGMBSQGKYy7mSSRP8LkZrSp+9K6ACTig=; b=hp5IFAZ7HcUQw4K1njlZgvhKFJMpjwJCAALu4pGeoJNGas7be/bY3HvY+2HmMGyGSah9p1yWB6XGlsNYiTdEpyTvFhwKC1XJEXl/a0d5/tXkY47NA7xXVgdjPsFi2wctcYp6LzPORhiXGCuIKTmNjerIPLAqSD3YPr+SizL6uPI= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; Received: from wsp141597wss.amd.com (165.204.78.1) by DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.527.15; Wed, 28 Feb 2018 21:10:52 +0000 From: Brijesh Singh To: qemu-devel@nongnu.org Date: Wed, 28 Feb 2018 15:10:02 -0600 Message-Id: <20180228211028.83970-3-brijesh.singh@amd.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180228211028.83970-1-brijesh.singh@amd.com> References: <20180228211028.83970-1-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: DM5PR10CA0008.namprd10.prod.outlook.com (2603:10b6:4:2::18) To DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: acaaed56-8345-4f23-37c3-08d57eefc076 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:DM2PR12MB0155; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 3:vOouyl3qvfh0ekXlJ7V+WEwoC59Pxhw65im+hx+D6LGL54cOgzL9wvN5uIbQz7KLSEyaw/rA5in2/pZ+RgcyBrds5ReT3EWlcCtQ10XkBQQ6qv4BrsVNFhEqsmiUhhkNA16X6yrSwWZ/Qw7Wgag+TrpR8K9fYIgu77zQRpAXCQa2a7NV1BKSLxzoZUBVhIsWDYDZyXsjsgMqd2dHccLYaxG8jjaKjvc5W5GpcX+uobaBSg3undhBpEmxJDxrSc4Q; 25:SyJsoSFs83ZwT7aZeKqojU8541vFICnh15cghRk67S0wQqP1QDZhRwq5QoYLauD+z5jUfzXTst3lHk4xUJ8VrzrcmZbBJw8bh+hMFYsuX0lI94fUkQcCUSnnzHAtSiMZjnHNPUSUZAlXwvJo6xYwb2A6g4I3cwNhfFVal8ECTURBosJuyJ6BgZHEy3W3yP3vE/mz86McVAOdSyQ/5tnsPNUbo/i9AlKN1KyrAAbC7i1wlopMLYJdPHsMQHZcZ/BGD/vsBj0ehfkdB1OvMTLMv19t1quo/ZkH51Vf0mYAtKi1TK3PYqgeA4CEmCZyuCuNFwFKOVU5EVqpUusX6432vQ==; 31:sz5JcRoad07XONOmtx66+DbeJM5Uwf3pJrTYP/lpmDQH1S7d8+SOZj96U2EYKKL9cnmWDEpZOLK79IPp8HV+9Imdp32ox6Fc/fPzSC9Y74vS3eQh/Qp6GqP1HG1WpRpmAmnF3DTDIjJs9q2COWkjfwlABIROMwHQLuKYwSj5zq3NZY/lIqSfb2M8JXfG3mk/HQz8uF5ChUR3DcI5Pt1JsR5hXCW9d6Xr/9fLFWlY0HQ= X-MS-TrafficTypeDiagnostic: DM2PR12MB0155: X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:EXv4URTSHb9Nt6BS9wGDntV2/ezEr45GzOyR6lXGRXCgQXBPoGzRuPewhK4EanURyN+QisyVPzNN9LDdS/A4F0m4Xejt/2OQvBAHzw/50roQdSQLbGqU1c3Hi8ei0UoKCGXAu75wbM3LdiUlHSo2xMQ3jpHyT1wrNNs1Wv5hIZ4n0nwmJC17AcdwFsaT/p9wcxo0MhAQyvUrbv3v+sRgc7rbTfrzQu4uc5W+9RbPHhy002w4mzo1yqZlExn1PJOwDE/ZrEPtmoAG7FsG6D4z4vUkSCdBOVK6uukOxHBIjaJZ4kq68HYn1P3lx8upqdbp/N0jz5C3OTMqipgFWyPAgt0OirYKWY06UFh32RLM+AHijL7hXaogGRd06d7MD2doUWpNcuE6xt6y7W3a9De5ZwAxRBtf65qE93f2PoYxZu9Fhul7+47+vnJkwnFdPesYCdKiVmO4Mu+9fwGWL3EvH+ynFwFXLUymcVn368OOZvJqFBnvFHhBWw6O6MyuXONG; 4:f4BxyHzp0fRGRqH6TznHo4rnq+DSBc/c3UfY1GIr2UvQdmdCJcp3I9n8ncDRuepO6DlrlHytI0PmqBvA+25CuJNaJ0WoYgT+tVsu4lCsNwP1nk2TaPsHgtzF+DGPm8Yfpw5z7RJcaUqhzvAd/4sG70zkdOMtyTljisgRT2a9Y5Kv/cOimXzm5apfcEBmaInGI6mi+CtA3WkxJ2wkPG3yNH4IlZGqrd5lXQGlg+SzlgzgFaNN2itnhGpMLNMu2D9Qkt6Mtxjn+SBYZRxWyPsK92ak8M+VtezWF59pdVNuqs9GEF1nzmRXkuRUcL3Paav0FnYD7i1ZQTaD/CPJlPPneA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(85827821059158)(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040501)(2401047)(8121501046)(5005006)(3231220)(944501219)(52105095)(3002001)(93006095)(93001095)(10201501046)(6055026)(6041288)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:DM2PR12MB0155; BCL:0; PCL:0; RULEID:; SRVR:DM2PR12MB0155; X-Forefront-PRVS: 0597911EE1 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(39860400002)(39380400002)(396003)(346002)(366004)(376002)(189003)(199004)(6486002)(6116002)(1076002)(2351001)(36756003)(16526019)(16586007)(54906003)(53416004)(26005)(53936002)(66066001)(186003)(47776003)(59450400001)(2361001)(478600001)(8666007)(316002)(81166006)(50226002)(8676002)(8936002)(386003)(106356001)(97736004)(5660300001)(2950100002)(6666003)(305945005)(4326008)(76176011)(7736002)(39060400002)(8656006)(105586002)(68736007)(50466002)(7696005)(51416003)(25786009)(48376002)(52116002)(3846002)(2906002)(86362001)(81156014)(7416002)(6916009); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR12MB0155; H:wsp141597wss.amd.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM2PR12MB0155; 23:zS0qmJ2iOy29CjgduG3PGbIRC//85SR5rkFuagUe6?= K6KBY9+d5SUDdpbSq34ilyRKFFa+j6B6DFg8Ci3UXxj1/0bHZWDsCK+sPtpQLZxqsrRoiIJyHEWcPHSwGd7ba2uKR2SQ39Tv7AZNYka5enKijGqAurpZ0bYQ1+BcJvPSgAgQZz+UJbzC5zLbYPiUMNBN0QSGKnTNjbPpaNjfZaJ3CdYZe2S7fkSz1zahpZNHcV5cGQ0uIRBENdn2Cy5aDjjSre2uI8joVJt9Akw532U88gJ2Y3DOBkvrm1x9b8+/rPoBJhW6OTQj5zzGjF/0pkBivHVHPtUHaxmGqjJRbbJBU1slZMrdRZ7brtUZJhmhm4hXTD7T7Hnaujhw1PQCI4gCpVECuLDr+AzzUet5NHICKNiLvhgDL311/sek2Y6z4ut1GQi/u1sT3HTGkXjEdTTbcdDjsHQQSDgpwY3sFNGAzogg4Q/9udie9gHpzdvTFlqcFZ/4aaiUeYYGKxUp9sA5t6vz6MNsaO124aE12S2SHbTYoWzx3HiDVuYOv2400XwRvGW8UsqaPyAN0HfN5kcPlVgLEcfdeE26xdeVxBSSUrad3U5OfWN0sN8CWwjlfsDzzcHr/1PB7c/BGJQE01POkrujRTzP+reVCLD1OSUgfd2Ajnv2OAkmotaVlUXnZSe/cQXIJq63wFsYZePoFmTPWdO1RX98EYPwEdLEEFYmdb9KF4+B1g/fshATi1aJCZ5J02s9pjUDH57aaDStFBv80cpElZNl3717UHYaeqhXWuDwCGkT6mnTmRZvWGocS6LUJ07fwAZIfpkeYk8x3xhnS4/02/+G3ykbzoiYxgzx6RarBji+RL2/hRA3Bg85ztnVH92uuUNUq6yqVshcHrttm/vxARb0rGXXtFAnExCgmSCq3eq6urVKe45+KVhbWRFla8x6avXjFmrNqI9SWweHzkVorQmehHYEmtbBMx2yX3IsysCj1SV1csshnSzen1veXp81soAS8qkY9rHDQZEp+6TLV8AwXHyxkfhrbsgUXueEwKxBsa7oLQ3D1er3M9bdtSpOtAKcf2aE+8RX+4ILI0siFm+XCUQSineI95udO+fTf+Y66FzdkrXwtuzafkdPn7p0TzPJZquvCqVFCnVsotoVjWrPuiEhcmXinAZerAIbyWXAq1rq9HqLBqZWHi65ZjzAAO2cOxfdcV7GupAjilOK8GfwsvCoVUMJRc4uHXU6Q5T+lQq9XOKPwJiDpKzcohX8rMRu2b5qBvWw88m7JaBZEshCr+O8k6o11Gx6w== X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 6:cJNWgcK3SQYUzWu8wS8Sqrhio88hH5PyoTyQgnLw5FxFgrWJlzk1DZeotCxZOgUSaIgrLYqhciOLX8B3CzJRITSWchPdKPQBQpVtDkBxrGVsqYL7TgNm7QlGleWdE+upNiUXvH4jwus8dIjdHB6/G6oOJ4lanm469Ats1f44FrMq0OZbYmo26TIwk2Z6x0nTGHIhZq2/5T2mfq9lhIdMIho36+U8UW2YSKy+QHEqSj8VBImTXGovcqpHoGqUK4P98Rz6bBUecVU40Qg5ctspK2VoyxLTH1KapJEMgpoCz0pwAIkbXu62A1dALEFiamQJtZE7vQsXAVyNiEHv5tNGhQOW+Gy6wFzhRPjATR4ZePM=; 5:hOMjQJbUMY/DkjreZaAkaRuZoetcEGwNEVMzN+9F7gMKseUiW05FmXO4VbYxqwxAz+oZAMN5pezqdKANwLOY04TTWQe4OVr/p3TYXwfUgjew3LndnIbMTyrWJwYblUzTWq7PeZRBfi76xftdV1DILuN84GrY3Aobd3+yu/wAcLY=; 24:jWvBerq0niKHim7xRF/qkXiPMBtA4JjamMS5CmZyIL6UWljgMaiNdSo1HNzZlnv5Wde5N8eQrZb5vYVLxQ+vGJVtPsz3PhJ0eAYnCwgOA+k=; 7:iywgmJmGJo4xaHoZfZj9DnfLl1GjnfRWZog71s2V43kodoJGik4XAzr90RPWhGPUx2K3yvKzeZfjjo49ZgNuopbz5oT+iHGhQ1vvPnU2h0I1913P0bCV3pFr3oX7SqZ1W3C/eqf7zZQr9Nu8psy1JuduwFjwTIea334uWdm/AvoDwVTOtXHeQwNP2u7URpoVKC8ZcXTghxLLSfIJQld9Jc2rUBGovvRrJJCm9DlETuSXoW+mBs5lrnhQWzbip0qE SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:hVzICWPS/WWsgIXh1VuDJ0jYUkUoR+krQc7vC2DWNZsG+yfLSRR2wwy5Gr2fZSTN1BoM7+8aZFdHlVP8If9vu0y6Upy6SAWSGTDujnIpiLb2M+kfkutRw8PKu/pDbH9zrTSvUZj4A8r9vyZf2y7kkK/EsiRRxvQ0uI39GD/0cZFCM6CNkT1jx6kqv/Bovybj1C73WKt1rWwt6p7138/eY6ps2SyQ27qMwRTyq9+iw2JzyjJo2Y9POnloCgPFktgO X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2018 21:10:52.6706 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: acaaed56-8345-4f23-37c3-08d57eefc076 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR12MB0155 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.41.50 Subject: [Qemu-devel] [PATCH v10 02/28] exec: add ram_debug_ops 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: Peter Maydell , Brijesh Singh , kvm@vger.kernel.org, "Michael S. Tsirkin" , Stefan Hajnoczi , Alexander Graf , "Edgar E. Iglesias" , Markus Armbruster , Bruce Rogers , Christian Borntraeger , Marcel Apfelbaum , Borislav Petkov , Thomas Lendacky , Eduardo Habkost , Richard Henderson , "Dr. David Alan Gilbert" , Alistair Francis , Cornelia Huck , Richard Henderson , Peter Crosthwaite , Paolo Bonzini Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Currently, the guest memory access for the debug purpose is performed using the memcpy(). Lets extend the 'struct MemoryRegion' to include ram_debug_ops callbacks. The ram_debug_ops can be used to override memcpy() with something else. The feature can be used by encrypted guest -- which can register callbacks to override memcpy() with memory encryption/decryption APIs. 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 = mem_read; ops.write = mem_write; memory_region_init_ram(mem, NULL, "memory", size, NULL); memory_region_set_ram_debug_ops(mem, ops); Cc: Paolo Bonzini Cc: Peter Crosthwaite Cc: Richard Henderson Signed-off-by: Brijesh Singh --- exec.c | 43 ++++++++++++++++++++++++++++++++----------- include/exec/memory.h | 30 +++++++++++++++++++++++++++++- 2 files changed, 61 insertions(+), 12 deletions(-) diff --git a/exec.c b/exec.c index 4d8addb263a0..4408cd26c989 100644 --- a/exec.c +++ b/exec.c @@ -3054,7 +3054,11 @@ static MemTxResult flatview_write_continue(FlatView *fv, hwaddr addr, } else { /* RAM case */ ptr = qemu_ram_ptr_length(mr->ram_block, addr1, &l, false); - memcpy(ptr, buf, l); + if (attrs.debug && 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); } @@ -3152,7 +3156,11 @@ MemTxResult flatview_read_continue(FlatView *fv, hwaddr addr, } else { /* RAM case */ ptr = qemu_ram_ptr_length(mr->ram_block, addr1, &l, false); - memcpy(buf, ptr, l); + if (attrs.debug && mr->ram_debug_ops) { + mr->ram_debug_ops->read(buf, ptr, l, attrs); + } else { + memcpy(buf, ptr, l); + } } if (release_lock) { @@ -3226,7 +3234,8 @@ enum write_rom_type { }; static inline void cpu_physical_memory_write_rom_internal(AddressSpace *as, - hwaddr addr, const uint8_t *buf, int len, enum write_rom_type type) + hwaddr addr, const uint8_t *buf, int len, MemTxAttrs attrs, + enum write_rom_type type) { hwaddr l; uint8_t *ptr; @@ -3246,7 +3255,11 @@ static inline void cpu_physical_memory_write_rom_internal(AddressSpace *as, ptr = qemu_map_ram_ptr(mr->ram_block, addr1); switch (type) { 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: @@ -3265,7 +3278,9 @@ static inline void cpu_physical_memory_write_rom_internal(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_write_rom_internal(as, addr, buf, len, + MEMTXATTRS_UNSPECIFIED, + WRITE_DATA); } void cpu_flush_icache_range(hwaddr start, int len) @@ -3280,8 +3295,9 @@ void cpu_flush_icache_range(hwaddr start, int len) return; } - cpu_physical_memory_write_rom_internal(&address_space_memory, - start, NULL, len, FLUSH_CACHE); + cpu_physical_memory_write_rom_internal(&address_space_memory, start, NULL, + len, MEMTXATTRS_UNSPECIFIED, + FLUSH_CACHE); } typedef struct { @@ -3596,6 +3612,10 @@ int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr, page = addr & TARGET_PAGE_MASK; phys_addr = cpu_get_phys_page_attrs_debug(cpu, page, &attrs); asidx = cpu_asidx_from_attrs(cpu, attrs); + + /* set debug attrs to indicate memory access is from the debugger */ + attrs.debug = 1; + /* if no physical page mapped, return an error */ if (phys_addr == -1) return -1; @@ -3604,13 +3624,14 @@ int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr, l = len; phys_addr += (addr & ~TARGET_PAGE_MASK); if (is_write) { - cpu_physical_memory_write_rom(cpu->cpu_ases[asidx].as, - phys_addr, buf, l); + cpu_physical_memory_write_rom_internal(cpu->cpu_ases[asidx].as, + phys_addr, buf, l, attrs, + WRITE_DATA); } else { address_space_rw(cpu->cpu_ases[asidx].as, phys_addr, - MEMTXATTRS_UNSPECIFIED, - buf, l, 0); + attrs, buf, l, 0); } + len -= l; buf += l; addr += l; diff --git a/include/exec/memory.h b/include/exec/memory.h index 15e81113bac9..4a18bb3b38ec 100644 --- a/include/exec/memory.h +++ b/include/exec/memory.h @@ -223,6 +223,18 @@ typedef struct IOMMUMemoryRegionClass { typedef struct CoalescedMemoryRange CoalescedMemoryRange; typedef struct MemoryRegionIoeventfd MemoryRegionIoeventfd; +/* Memory Region RAM debug 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); +}; + struct MemoryRegion { Object parent_obj; @@ -262,6 +274,7 @@ struct MemoryRegion { const char *name; unsigned ioeventfd_nb; MemoryRegionIoeventfd *ioeventfds; + const MemoryRegionRAMReadWriteOps *ram_debug_ops; }; struct IOMMUMemoryRegion { @@ -655,6 +668,21 @@ void memory_region_init_rom_device_nomigrate(MemoryRegion *mr, uint64_t size, Error **errp); +/** + * memory_region_set_ram_debug_ops: Set debug access ops for a given memory + * region. + * + * @mr: the #MemoryRegion to be initialized + * @ops: a function that will be used for when accessing @target region during + * debug + */ +static inline void +memory_region_set_ram_debug_ops(MemoryRegion *mr, + const MemoryRegionRAMReadWriteOps *ops) +{ + mr->ram_debug_ops = ops; +} + /** * memory_region_init_reservation: Initialize a memory region that reserves * I/O space. @@ -1938,7 +1966,7 @@ MemTxResult flatview_read(FlatView *fv, hwaddr addr, MemTxAttrs attrs, void *ptr; MemoryRegion *mr; - if (__builtin_constant_p(len)) { + if (__builtin_constant_p(len) && !attrs.debug) { if (len) { rcu_read_lock(); l = len; From patchwork Wed Feb 28 21:10:03 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brijesh Singh X-Patchwork-Id: 879399 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="PbzUMoiI"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zs7dZ6ZFVz9s23 for ; Thu, 1 Mar 2018 08:15:46 +1100 (AEDT) Received: from localhost ([::1]:46964 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er94i-0004gB-Sk for incoming@patchwork.ozlabs.org; Wed, 28 Feb 2018 16:15:44 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52869) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er907-000181-Vy for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:01 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1er904-0005Ry-1e for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:10:59 -0500 Received: from mail-dm3nam03on0050.outbound.protection.outlook.com ([104.47.41.50]:20864 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 1er903-0005Oa-PH for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:10:55 -0500 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=r6GQfGuGm+wLvKUu8RfgirHG417qT/+/YW4V3jFCKtY=; b=PbzUMoiIJT0h+ILRKMbWkp/gUHexptbd9wIuXUicPdSlv65oCpUQ0s5X7hf1qmEzjp752qVs8+/Mfp0RsP9YAvcup6MTkKU9PTxVi3Ct3v4NObHNV9qWL+8wNMI61l1Hcxy87tHYRAh8iQt/HTdcPNeeYdXlelvCx0gnoFMK8LQ= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; Received: from wsp141597wss.amd.com (165.204.78.1) by DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.527.15; Wed, 28 Feb 2018 21:10:53 +0000 From: Brijesh Singh To: qemu-devel@nongnu.org Date: Wed, 28 Feb 2018 15:10:03 -0600 Message-Id: <20180228211028.83970-4-brijesh.singh@amd.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180228211028.83970-1-brijesh.singh@amd.com> References: <20180228211028.83970-1-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: DM5PR10CA0008.namprd10.prod.outlook.com (2603:10b6:4:2::18) To DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 77439e46-807f-41ad-6b91-08d57eefc10c X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:DM2PR12MB0155; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 3:V5Jfu1rtF5AvNymrrIa3r0lUGWYQcEyFyby1WidNmdmto4BieJu6sZ2tEuWGIUxAavvtPPXaERBXrpGeYWJGmVhnBGYNwpmXGUjNcUEgdWP0yk/kjhn/RtpvqQfOHlllIOlMQU0MKGkqj4s2TzUK3mCZKvXlQDjDJHtVj/8Aatr7cuQtG6qcVsiuEkqiZmTK5UNwxN5ANmtyp/TIty/4D8OZuwixMXz/R8ta77G02Ai4BGiGSmgxispq7uRcJqkb; 25:dhkgR1QNQPzcq3dzR41Cd0/Y1JDU1wYy3Bfr+hCVlIzVSgvo2fuln5fuzMB57chLNDOFX714F2TXsyCD34SmvttJqUakDI+wOH7dQTy3K/5oRRiA3kIH0GDKCBFtPU40+tRrfHFpU/Eu/y4Im1kuZ5ZaN27quo0X+6sYVas7A5v5fJWaHZttbigTQIVZG9kZtFzlAgRJQojO2ryEM8u1lbnRV+Ix/intoYKOsaWdBhi/vX8gXTLgD96PmgVKAxDVT75Oa7O+HiZB5Vv7D9gYzDDcmpM/b1vjJXg4OcoHbPSmQFdJ+/vqq4Z+rhahTJHZ4MxU6P0bAtOOOrFFFHaOXA==; 31:h6sX2EKe2rUYw0pV4y0s2E5icOBXRFplqQEZGDajorr8L5N0ToKPDouvpLFLl3IyY9uUS8fDsHdARoMIGyScga1kE7J8R+IrmF0VEYqytyznkiltqut6ZyI88MMYDqyR2nismEZgVMv1WUAUPucXcs740IJkW/sSXGwl1ClM5ORPdjm6TgTuMV9olQRGMPdJV8XSr4nGxYO4sfxRxn6vGXcaZQVp2S1C/M7rVsCkfSY= X-MS-TrafficTypeDiagnostic: DM2PR12MB0155: X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:iXLhdnZPl5dwDFUk70isuK0H1Ukv0WIbe46ku72OdhBcf7RcKFJ/juBOKcoh+mXrsCWzjFgqyfnt7bf3yB2xHdKyNV2YpTvC/bBudf/6segoyN8TvaZx+wE0tWn2rQAnWUVQYkBfambf2cIFQQC+5PnHKAZ3vjdQAjj+WmzkwksRqMhOJxcsCVOatB9vKJD0GnlSNEt77CQjZ22CT+rcGHRaCoUAIDgAa3NfwtvTMkRLs7z4vlJp1JzESafe/yIQibVPS4Ie7MUOPy2ocSXRrE4DtMDGPvhAz0kpw3yuKYakhTe3uL6J8Zx/RNysCjBavSj/35ie7IUHj0BJIfTcliEmd62dfgCAnuP98bzcI4y6zBVOZq7EyAkKoH/fiU+7M9G0RIdvVbePRp3IIHBz+xwjV/bu3O7OqBJKZ1Da3ew6XUsHg5xuayuayxRXSuCAcru94X+Al5AkVq4/tud6Fiw8Xs8rFEaFtU8QLbCmoMb2TF7EC1azb2JjYOW/fO4d; 4:1md7UJzCVyusr3L6w1kl/+MlHo/eQnS0XFo1jvV7CL/eKRS8h5W8+RdUhp4zV/dbM6EwEZlpCbFs25Ly2UMjv4RM4RrkW8bnXCdKqSUHj8FDAbJdifNbvm8mVyp+OuLk3nRcot9wUJQ53LSAk0z95lgoG8trm0wjVKA0Utdhh6v4Fb5dsxPX5M289O/IJQn1e+JYlWBkM2HquFJeO/Lv+94WPmlbmDMCclUEyjdTrIZQ5S8YFsaIv1msm5/h3he0TRojwj6vnGG9r3c0yLMC1ZNsIx2G7e/Xme43f/knZp1+p+Jrq6hj7QU84FK3GZ1VAGQOcnjFj/DAaRbqNEp4dA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(85827821059158)(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040501)(2401047)(8121501046)(5005006)(3231220)(944501219)(52105095)(3002001)(93006095)(93001095)(10201501046)(6055026)(6041288)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:DM2PR12MB0155; BCL:0; PCL:0; RULEID:; SRVR:DM2PR12MB0155; X-Forefront-PRVS: 0597911EE1 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(39860400002)(39380400002)(396003)(346002)(366004)(376002)(189003)(199004)(6486002)(6116002)(1076002)(2351001)(36756003)(16526019)(16586007)(54906003)(53416004)(26005)(53936002)(66066001)(186003)(47776003)(59450400001)(2361001)(478600001)(8666007)(316002)(81166006)(50226002)(8676002)(8936002)(386003)(106356001)(97736004)(5660300001)(2950100002)(6666003)(305945005)(4326008)(76176011)(7736002)(39060400002)(8656006)(105586002)(68736007)(50466002)(7696005)(51416003)(25786009)(48376002)(52116002)(3846002)(2906002)(86362001)(81156014)(7416002)(6916009); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR12MB0155; H:wsp141597wss.amd.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM2PR12MB0155; 23:5nn3JwmRUzmZyknTY/GRdaqBIEXbPHs55sxVloG+e?= hgYHFnt3oYl2EyHsWPkUXNw47XGSkJQZWrxICKaLVF5Akf5sgGh7w1G4HJe6pSmiqyGi7WzkGxyS54Bgxs+5UsnRHxQo7AVVt+t1AIiPuqao7vE+0HOg8aVmXzv+l6Yf2wCtzNvN+T4ItJdNoN9e1lAY3h9WHN906eLOYASZbBMUs3PI3/xFdh7/HBiAMuC6P3LFDURwU50hHo1Z1cyZEeSjTVie8TQePgB1ftuvMIFDdBYNpv1v6Tx8Ehu/eVFxBSTODzJooPNxxcyZi2LmSkoFrowNmT8/SJckcQBXcPKaga0UlMPJ4tdR9bSMXxfIVua2/wnc/qZyYrhbzQ9RImWDPQk+Mf6YSJ4F0IjxVzqMn2atmpzD7dlQf18iZ0lkbeiM/1Yfp40rZA9CaZSEnOzLDPt3nYfoepdlKTS+s1pRt4bD33bjuHxRKxPfY/cHtCbwYF9Juczq7jYc5IhQ5e8TB0UHAnnwKyHWrhNLKW1NL0vxZnmoqNdHyY4kkrWgYa6lne5IGVvVd2gCBZIfC+p9EhkeRrPBChly5zijikOMrX0S/RKCBAUDaEuP9K9tZAO+iTiR2TrFslS/btIMxRIZ1nvTtSnBtqQhHOizQuUsHaPeY8I1a2tCt7u84/TF43pEzQMV6UxLuwnTP9C4ewHEgHpqx3ezWy+aPn+Vq+my9pCf07iVGA9uD0CkBsfRFQRbRwwnaXdV9tuzR4A4tJWPy6tKHZ4IRxTf9ctJ8EszBFO50dehJwVshIMW3fVdDFsE5pCz87T5abQOkZ6dGI+zX6IyUuZxt3ue4Fh00CkSIhltmvGzUsuqUKVYr980k5oh8zuJomamTpVa4CEpfONZDW3dtTDDA4XiDVPDghhOCphIRC+WmI9SgvoxdXwrY6DoUBFULQvkc1tyeadfAhE3XBVABw+78CQg6x9MEy/F7PcRyC5UooGFt+F9dfKJcCOze0qdzhB3dQZ7b2XKpuO/6WMoJMB5dNn08iOzly1cQirt+msySNwxw4jLqwBU7kb+RZPBC/g04F+MY+7ReW+2NgaoWHsnDYdJaHnrW6dqoBMmB1gGKqDAGlcyy1Y9fCzAtkZH7Co3AdzcgzosdWXqHlFfK5Yu9QsUDQNYdhnz3jCPOVBCfatAFqScM/1UuKi0vWDHw2sjigI9egqTDxJo31KYa52D9U0D35PNWcL3fDg/2ilB840wBIOmIpbq/LSuw6ZMZlVwNnCNniRDlrUUhYMfv7zPh8Ru7CBu0zW8Q== X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 6:F1VGxlJXIIVs7GVDJcFHKE1R2wxUloWY1sgKCX0mPOZmhUE80v6W8IJPW/edmc8nPM1fA04n4JB60QD0xCNJjbgGQ9IIdLBopuBomzqFA0vnm+XHy5vOXGGvIBv4QAPKgacI7bF3m2nwv+nPSD+rZ+v6trnkGkbHrFqTU2QwZ9ufEdxWfvZPUI3Mi0CQ/nYK3X/gS27VxOw7CBZZtyjT4S1VSDhcQGtZYN7tvHtZogUtZxS9Gup3emh/NQKUsmTaLNmCByy5Z0fN22rsDo3zVeZxdzbPeX/ccKZU8loh+9YGIMnEL0MIEnvjfudzdWmmALcJxlHnyucam/z0hyFSayVHbvEDEbqpvUNdRTZmgMg=; 5:quJgAW74hpTxGzzPf4mvS+GkhGJcczZIk7bBWWmmecQdqtHZJcvCCCewVnr0S/K8R65Ow4b83IJY4MB6b34lqnt3SdQz5eOuivLZJCyXez/q5jlsn9j+D25RMzV978jpndEp1oox7swm2mjxpuCx/HoOTNjifwgvsGaQiU2bTro=; 24:1W8x4r5GylP/sQKqOYaZB6o8UsHPlz5bJoAMiWN2fZ87OKu8Bd+iQcHhpZC7mYZ53baaxudN4bQzhFrkLH34NdrYWcqKFjmMPOL9Ip2za2E=; 7:XIjyu1CSIabDkn6xFG1JMZecjZRh1fgSvRGsSrDIQAIybLBYnm7j6GRyI7qwb1zKmkY4/oNJ3P/eSz3kSPp3TfKYgU+PZH42EaIYUjlULzACnirPzAAG82ofVKwBYlXdeCSsz0sgGe9nUSw9wLESDim8CnjDQ/yz3uO7XwbbJOWbjfCDE1qtUPGP7HFOGoiEbxiMWgMTshep1juNE1sXrlD7lXpJpNK1WcbWc3/PZKA9dENjAChPT9FnU1Bp1Dl6 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:QwpM21zt6goizaKVhTMnA1TzvK/WBCMRXwvaqE8j7BVe4fJwoVAl1lRcskoxaA6dRJh+9bkCh3ShGTSmpNZrwHLSCG6zRGnpC3WwQo1CegakC8UUEPfkKLSIdGE3D2L72z9nj3ygkP5AItApd4DiQmRsmT2D1LCG/etpqMQPg0I4NF/56xEZyp12X2hdUIqguwDI2rmcn2OI1jhXTq/OLjI9LQ2SH1Pu9Noz7/vE8DJA6dpqdjFrNu9VlPbrKg3g X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2018 21:10:53.6705 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 77439e46-807f-41ad-6b91-08d57eefc10c X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR12MB0155 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.41.50 Subject: [Qemu-devel] [PATCH v10 03/28] 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: Peter Maydell , Brijesh Singh , kvm@vger.kernel.org, "Michael S. Tsirkin" , Stefan Hajnoczi , Alexander Graf , "Edgar E. Iglesias" , Markus Armbruster , Bruce Rogers , Christian Borntraeger , Marcel Apfelbaum , Borislav Petkov , Thomas Lendacky , Eduardo Habkost , Richard Henderson , "Dr. David Alan Gilbert" , Alistair Francis , Cornelia Huck , Richard Henderson , Peter Crosthwaite , Paolo Bonzini Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" 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 Cc: Paolo Bonzini Cc: Peter Crosthwaite Cc: Richard Henderson Signed-off-by: Brijesh Singh Reviewed-by: Paolo Bonzini --- exec.c | 40 ++++++++++++++++++++++++++++++++++++++++ include/exec/cpu-common.h | 15 +++++++++++++++ 2 files changed, 55 insertions(+) diff --git a/exec.c b/exec.c index 4408cd26c989..633be92d2b3a 100644 --- a/exec.c +++ b/exec.c @@ -3596,6 +3596,46 @@ void address_space_cache_destroy(MemoryRegionCache *cache) #define RCU_READ_UNLOCK() rcu_read_unlock() #include "memory_ldst.inc.c" +uint32_t ldl_phys_debug(CPUState *cpu, hwaddr addr) +{ + MemTxAttrs attrs; + int asidx = cpu_asidx_from_attrs(cpu, attrs); + uint32_t val; + + /* set debug attrs to indicate memory access is from the debugger */ + attrs.debug = 1; + + address_space_rw(cpu->cpu_ases[asidx].as, addr, attrs, + (void *) &val, 4, 0); + + return tswap32(val); +} + +uint64_t ldq_phys_debug(CPUState *cpu, hwaddr addr) +{ + MemTxAttrs attrs; + int asidx = cpu_asidx_from_attrs(cpu, attrs); + uint64_t val; + + /* set debug attrs to indicate memory access is from the debugger */ + attrs.debug = 1; + + address_space_rw(cpu->cpu_ases[asidx].as, addr, attrs, + (void *) &val, 8, 0); + return val; +} + +void cpu_physical_memory_rw_debug(hwaddr addr, uint8_t *buf, + int len, int is_write) +{ + MemTxAttrs attrs; + + /* set debug attrs to indicate memory access is from the debugger */ + attrs.debug = 1; + + address_space_rw(&address_space_memory, addr, attrs, buf, len, is_write); +} + /* 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 74341b19d26a..fa01385d4f1b 100644 --- a/include/exec/cpu-common.h +++ b/include/exec/cpu-common.h @@ -77,11 +77,26 @@ size_t qemu_ram_pagesize_largest(void); 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 len) +{ + 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 patchwork Wed Feb 28 21:10:04 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brijesh Singh X-Patchwork-Id: 879408 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="PdKdcu4g"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zs7qg6GQqz9s15 for ; Thu, 1 Mar 2018 08:24:31 +1100 (AEDT) Received: from localhost ([::1]:47024 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er9DB-00041N-S0 for incoming@patchwork.ozlabs.org; Wed, 28 Feb 2018 16:24:29 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52950) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er90A-0001CI-G5 for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:06 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1er906-0005Yk-Bu for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:02 -0500 Received: from mail-sn1nam02on0055.outbound.protection.outlook.com ([104.47.36.55]:37280 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 1er905-0005WK-SP for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:10:58 -0500 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=o8mazHsW5D0pp2gjnH8NpYuWPllwQnh8z0vOJrpOplI=; b=PdKdcu4gczv67hwgBq+kMCfcCcAN+F6sQwACJorUzwS5HJSzB3x4PeLDIRnsZGmmO2UgK9Hk1SXkVAH4X/43h6AcQNINGWORttxfqFwOZpnwYMBTiQSFyjzIe72GNqZ9yhKjkQRBdOuZ2FqGegxS7as4sDKdwtJqbvCJf2C3Wig= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; Received: from wsp141597wss.amd.com (165.204.78.1) by DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.527.15; Wed, 28 Feb 2018 21:10:54 +0000 From: Brijesh Singh To: qemu-devel@nongnu.org Date: Wed, 28 Feb 2018 15:10:04 -0600 Message-Id: <20180228211028.83970-5-brijesh.singh@amd.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180228211028.83970-1-brijesh.singh@amd.com> References: <20180228211028.83970-1-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: DM5PR10CA0008.namprd10.prod.outlook.com (2603:10b6:4:2::18) To DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: a8541b11-5b52-4f75-01c7-08d57eefc1a5 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:DM2PR12MB0155; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 3:liQqFpf8Wr1uDYURgbnvXPKWA8WNt7sbq3vLuQJ9VBm5JSxzjczvZ0OG94SPb+K+G68gsg1HEYEkwgIRPN+WZvGUDLNLk9SHbN/r2FAFKMvYQzkgGOR1piLqxSuxPPbnIbmh60oO6vwWVfcvuIGAjcyeBL7XLuhy9uY06nq6fiWPjCRcjypmONdE3+sm5T5AHzOHtM/VC9jTsNFKKSYQfzjuOk5pqLQTMW2hNND2RY4XdLTpfg0UT4nqj77nNnGE; 25:ZZdNyiIEmM/hImZmkHi326OtdFGOKmT765kPBYT1DCVg8sc1QmB/gDkaiLOGjRsyHh8CPf2504mKKu/DUkGce50PSWDJMZ0cT5IXSjA+ma906JF8l4qZkuu3J8vFthnsOcA9w/i/2qQaolKGhHflvWhmOtxWjGYpAyv6pllCPYQEDLL3oZS0gOCQ4whavlnNNEof1TvmGsiOeEr4V8dU8P5Zn6/8hka9DjRkYie9cV4lnq/aJfVEkAAWqmoxtkLKel6ZJkQMXR4MxvfZgPS6sd0CTLdWPF2rmbFajZYooKBQPfhWhPHA4gkzvD9fde/o0NauELXUIpCw7/ifMCbZZA==; 31:MRijiXuXz4OhKUoqCKU2jq8EdPc0uXSknbbjTE/CkDHFORz2f8K1yI551ISN6w+XxNovYgUa951+0YV0kfQ6TwhStJ3Kpfgq5envlo+H+nWr93eqNWb+/4V74tZGaY2aXWoVLdMChqrxtnQO1YNIp9ivRsgJvYPHgP2NKS3WAsNdOf4bay24+dGLz1wDxYrUW/AEJvEvxCXytwdIhtFdUCUxiWlNkdZJ7zEreztqD7g= X-MS-TrafficTypeDiagnostic: DM2PR12MB0155: X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:Z2e1l8AP4f42hXv3WNuheSy4Mt5dbVf80G2m39inB5kRiPMh86ORkFEcEWd17vf8WCG07vUEl9oEK7ahtEIOgiEoqJDdys4e8cdctYyUwy/TGKvJvJTzQiHLoIKyQpI14sHZo1QIRi7Et0m1zVuf29e0Odtkk7jdc6wOZ7JOTQPRCDAo+F5WdqInXhDsm/Uja8iVenRl7SDCrE0NRcsRg+qJHmOjG9GmbFG1t/g0v0SkB0mRnI9TwcTSiw/O3T6KJj92pnbQnp9ZSMFj+btLd1J3Jafk6/BiAnri0EpHFXJ5AwPMbBTddZVNHVbHZvwVdNdHE/EnPGE7W/DHClBgSCHcuWIZ0JpUGtcOnAjiaXd1mDS0O1CQ/JJsafkBDB+3HocAkhrBX3rHu9MbTblALi/dwmjEzQEOnWuzlnmLmptRHn2dJmXUugQmw4HOFtqgVbwqHtrPHrjKS7/iN14u4taS08utkG9fqbzg1g0dgO7NsEsFydX2h3D8wBqeqyQP; 4:7L5no/8gimXlGQ54ZbHKsfg8e43wpymJK42SSI+XQ6mlHgC1ePQbfDk6XJJYh8cUvOD0oqDG6SngT1FfVF2cvS4D9EYK7sSvc9cVe6xYm48R9R2ylhSNpiwqs3pktAzDw1IfIm+vNMahqYkUMj+bwFTyaRYHaKadq5Jimx1Dl3MVh+T3TDzyvHmVg/4iYn0o/WjV/0bC+3WqFgjg7tVsi+s97fUiOA9mqFIe0pczAk6oid2cjmOPU1u1+hniHgB20A0IWqdTFywLSlfIoOwYjS8430j8VdYxyrcIh2+UB7BTU8pFjjCVPfct/hqiOPoMkIQq6+myOC55mi0Tfhc2Pg== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(85827821059158)(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040501)(2401047)(8121501046)(5005006)(3231220)(944501219)(52105095)(3002001)(93006095)(93001095)(10201501046)(6055026)(6041288)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:DM2PR12MB0155; BCL:0; PCL:0; RULEID:; SRVR:DM2PR12MB0155; X-Forefront-PRVS: 0597911EE1 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(39860400002)(39380400002)(396003)(346002)(366004)(376002)(189003)(199004)(6486002)(6116002)(1076002)(2351001)(36756003)(16526019)(16586007)(54906003)(53416004)(26005)(53936002)(66066001)(186003)(47776003)(59450400001)(2361001)(478600001)(8666007)(316002)(81166006)(50226002)(8676002)(8936002)(386003)(106356001)(97736004)(5660300001)(2950100002)(6666003)(305945005)(4326008)(76176011)(7736002)(39060400002)(8656006)(105586002)(68736007)(50466002)(7696005)(51416003)(25786009)(48376002)(52116002)(3846002)(2906002)(86362001)(81156014)(7416002)(6916009); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR12MB0155; H:wsp141597wss.amd.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM2PR12MB0155; 23:DtSg9WEMbmCIcEOVAwEGWlXyZpBfeIPQU6KJ1fvYK?= or3E1LrDS/AAJ3wTJaOJrp/lnBtUyPwBz7hqlkzK7XhEzRBaUXKFRBfhhPlq+kXS4bvHv9AwTYREGFW7v3yBMVB1Gu+jjUTybHOIrOgFxE6MlexGgbSr4u2m9XPxH8X5QqiScax9ZbUurjn9gd37LSSKymTgglaLNe8NtukdlJ2NSwlUSzNNZsKBLakq5h5e4RfoY3xZVxpKx1ekyvzhmwiwKYtzU381ObSkRnFj4oEulNHwbDRTrxPfiiWkfEk7u1rrPDMFAzuY0TtManjZGvalfiv9yJp+nmq/ETFxvtkaIvXuTqWh+AaREgkrTt2KO3evX+37vnb4L/4LAWuesv5a/tP0kPDZEJLfIepD+JzQ88cvFLvnG3gteGGcPtRR/j4AX8Fc+1dgHyY00kjF7sZT+guRUtPykQYEkoq9UvKBup1dgmISGqhtUc9JakmJfjp/6+Gu7/i8xqhjpeLT4iuHIKrtmPfA4RzVLHIt36bhIOdGpdwAedgApUJzjSrlw25L63vxwKqGXwnfoBHNdiprT9L6w5Jr4YkB/YLWfItBOzk+Yxl/v2R3vxCQw0N3HwMnys7t7NdG7IsPmuzVGaigbPOPWwY8d27XadEK8kVaMPjjNs88iHQ8CZDwPorSy7v8Y0AR/m8u3GZzujG0Qg6p+DLtKGoPNGaE2JfOYUQIGDmu6T3JkwskifidQV0hysWyAKIRBjvs0zb5X1tkTUezADJB8T8crIvF1H/0NA6dTQ4x3V5lDA0L8Uv2fHOtrZ5UXqlZyfb3wbKGn5wEFvaP/XR2ERRB0jw29+j/gQwNWU+zMpMFOmrGfn3ZTmyw2HiODYJ9Qibr4YbqOFF/VBDPAO9ZaVLpPGW3iBJEOFxF+NwP1OUqbc7sciVqKg/BA08SIZmSFa7OYKOelkwSjdDErDNUzEWj7v6T8lt7cy4PWc6IU9szcCCN57n0Ci5ARU6xuXjcE1lEqArNpZO19k8wuq9VIguJCQgOkUqwPXdnBE3+qNT5uCPA3RJ6xN7YNhHrRIVqCyfmFT9dHGf9ZkMQurecnziqlfPtBwe5mcvA6fqRWnjq/VQhihOkg0YMt40ZhMSIMVSCt0a+JsKhGnSaKLaLWYtsmW11QQLWKR7CFoUwvfRKGuuKNNtjpG3xaMDi7UtmNvpE8yU+4EKW9MsAGvPufMgt2c7X13KsEqvnW69vjLKxNuxud1j8W4Ez9MDBWWGL996dtvyPUterFN4vqgAY0jGmPKcihlVRUR1Cg== X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 6:pOsQ1YnUuGkoBdjRLMqcY3lptYWn/unK32li4KUNfS5YaOob+kmP2x/oHewTCdpEHts0kI1nungwJBcu1vFJRlOCb4oBqlDZJFGCqoQ8a7tSmavSuf+ZdEm4V8+6wWb5yiggNpGXedcuD1kLAAyvot5O4cJPNQSQMdf8yBVnpUIhw/u0eEJMK+0WlQkkOnIHgDQaofWRXQIPmxLU5834qchPGUB6VnsBvJIWOmGCPCpilekygb5UWqutQu3xrjP58xIRAVFhVmhdxoeRZ496fvcRiI5yQrg5qXIz748DxJR73bE1NfkD+6D8HoZ1rMZ82oMu5dqSgf7cCcCyrYExaQ==; 5:ZxFVXKsxMGnBsZAqMecZ74GZvaiOW8jElYdh+MBA1JVXemFlPXoZd/1c4xbzi9tTyhg+GheCpHntJEIcZHQI6oOtkBr0qtwRfztnEeXhBfcZmy8AXSefdJ+OeFdbewEo0HdFAXObb6XD01kMeeFFOp8lRsqA8QNJE5w0ueRaX8o=; 24:v2eZiIEpwuUs2ZH7RAX92XbQCAfEd6SCDMu2OKzVGGuZk7QbhVLpCsD2ylcrQDKM2bBK/RxqX3RjZdUkvAwjD+wNiz5BNhXWj1du8m4orZM=; 7:kUl6kfjxTbdt0JhiiwROQTrRnbMErTPgVZ41Qjzqf4pzzS07jTA+4/D6120ocp3WZOKKSSfS4TdRIt1/lrEZYHDfBz9gCzcxqBY29+CztHIUB/Gfo0HrQ0lxknbfp4kOEadVlCvm+sFd7c/onzu8yHKOnQyzMMnNuDJ2hlb2rJ2f76ZpH4KBXVt3XeoVcLA5FuXF8rzE7scYy1Gi8qLXhM1RnDpaFn1PNjn9HhJi/ld/Xxf/eLDehYndxnYYijDO SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:HbpfbmMSCwF3LZ4UJHhd5ivL+xL76ICs39ERG1a1P4SA/7ajJX3LS+M/efJTckZo+aYYb4KDFVrR0rbV0PN0RMac7Y+HsLpFP/6yui8zAh6v5XkaObjLhELhZJ3iIaYhRRZqLgp7ZG35jd/wCwmrDGRZ+5NJjjTmG+tPkOacB5p5bHoGcUDlmP9fRYXchlmvenU2EobPp29+PHNBrTi7KEmDDU3CXnPHHqzxrTckUjoqwuINbRRgfN4QA2RJJpnx X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2018 21:10:54.7018 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a8541b11-5b52-4f75-01c7-08d57eefc1a5 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR12MB0155 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.36.55 Subject: [Qemu-devel] [PATCH v10 04/28] 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: Peter Maydell , Brijesh Singh , kvm@vger.kernel.org, "Michael S. Tsirkin" , Stefan Hajnoczi , Alexander Graf , "Edgar E. Iglesias" , Markus Armbruster , Bruce Rogers , Christian Borntraeger , Marcel Apfelbaum , Borislav Petkov , Thomas Lendacky , Eduardo Habkost , Richard Henderson , "Dr. David Alan Gilbert" , Alistair Francis , Cornelia Huck , Richard Henderson , Peter Crosthwaite , Paolo Bonzini Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Updates HMP commands to use the debug version of APIs when accessing the guest memory. Cc: Paolo Bonzini Cc: Peter Crosthwaite Cc: Richard Henderson Cc: "Dr. David Alan Gilbert" Cc: Markus Armbruster Cc: Eduardo Habkost Reviewed-by: "Dr. David Alan Gilbert" Signed-off-by: Brijesh Singh --- cpus.c | 2 +- disas.c | 2 +- monitor.c | 6 +++--- target/i386/helper.c | 14 ++++++------ target/i386/monitor.c | 60 +++++++++++++++++++++++++++------------------------ 5 files changed, 44 insertions(+), 40 deletions(-) diff --git a/cpus.c b/cpus.c index f298b659f467..fdd40d9e8ead 100644 --- a/cpus.c +++ b/cpus.c @@ -2214,7 +2214,7 @@ void qmp_pmemsave(int64_t addr, int64_t size, const char *filename, l = sizeof(buf); if (l > size) l = size; - cpu_physical_memory_read(addr, buf, l); + cpu_physical_memory_read_debug(addr, buf, l); if (fwrite(buf, 1, l, f) != l) { error_setg(errp, QERR_IO_ERROR); goto exit; diff --git a/disas.c b/disas.c index d4ad1089efb3..fcedbf263302 100644 --- a/disas.c +++ b/disas.c @@ -586,7 +586,7 @@ static int physical_read_memory(bfd_vma memaddr, bfd_byte *myaddr, int length, struct disassemble_info *info) { - cpu_physical_memory_read(memaddr, myaddr, length); + cpu_physical_memory_read_debug(memaddr, myaddr, length); return 0; } diff --git a/monitor.c b/monitor.c index 373bb8d1c371..d77edc4bb692 100644 --- a/monitor.c +++ b/monitor.c @@ -1361,7 +1361,7 @@ static void memory_dump(Monitor *mon, int count, int format, int wsize, if (l > line_size) l = 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"); @@ -1567,8 +1567,8 @@ static void hmp_sum(Monitor *mon, const QDict *qdict) sum = 0; for(addr = start; addr < (start + size); addr++) { - uint8_t val = address_space_ldub(&address_space_memory, addr, - MEMTXATTRS_UNSPECIFIED, NULL); + uint8_t val; + cpu_physical_memory_read_debug(addr, &val, 1); /* BSD sum algorithm ('sum' Unix command) */ sum = (sum >> 1) | (sum << 15); sum += val; diff --git a/target/i386/helper.c b/target/i386/helper.c index 9fba146b7fb0..58fb6eec562a 100644 --- a/target/i386/helper.c +++ b/target/i386/helper.c @@ -757,7 +757,7 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vaddr addr) if (la57) { pml5e_addr = ((env->cr[3] & ~0xfff) + (((addr >> 48) & 0x1ff) << 3)) & a20_mask; - pml5e = x86_ldq_phys(cs, pml5e_addr); + pml5e = ldq_phys_debug(cs, pml5e_addr); if (!(pml5e & PG_PRESENT_MASK)) { return -1; } @@ -767,7 +767,7 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vaddr addr) pml4e_addr = ((pml5e & PG_ADDRESS_MASK) + (((addr >> 39) & 0x1ff) << 3)) & a20_mask; - pml4e = x86_ldq_phys(cs, pml4e_addr); + pml4e = ldq_phys_debug(cs, pml4e_addr); if (!(pml4e & PG_PRESENT_MASK)) { return -1; } @@ -788,14 +788,14 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vaddr addr) { pdpe_addr = ((env->cr[3] & ~0x1f) + ((addr >> 27) & 0x18)) & a20_mask; - pdpe = x86_ldq_phys(cs, pdpe_addr); + pdpe = ldq_phys_debug(cs, pdpe_addr); if (!(pdpe & PG_PRESENT_MASK)) return -1; } pde_addr = ((pdpe & PG_ADDRESS_MASK) + (((addr >> 21) & 0x1ff) << 3)) & a20_mask; - pde = x86_ldq_phys(cs, pde_addr); + pde = ldq_phys_debug(cs, pde_addr); if (!(pde & PG_PRESENT_MASK)) { return -1; } @@ -808,7 +808,7 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vaddr addr) pte_addr = ((pde & PG_ADDRESS_MASK) + (((addr >> 12) & 0x1ff) << 3)) & a20_mask; page_size = 4096; - pte = x86_ldq_phys(cs, pte_addr); + pte = ldq_phys_debug(cs, pte_addr); } if (!(pte & PG_PRESENT_MASK)) { return -1; @@ -818,7 +818,7 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vaddr addr) /* page directory entry */ pde_addr = ((env->cr[3] & ~0xfff) + ((addr >> 20) & 0xffc)) & a20_mask; - pde = x86_ldl_phys(cs, pde_addr); + pde = ldl_phys_debug(cs, pde_addr); if (!(pde & PG_PRESENT_MASK)) return -1; if ((pde & PG_PSE_MASK) && (env->cr[4] & CR4_PSE_MASK)) { @@ -827,7 +827,7 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vaddr addr) } else { /* page directory entry */ pte_addr = ((pde & ~0xfff) + ((addr >> 10) & 0xffc)) & a20_mask; - pte = x86_ldl_phys(cs, pte_addr); + pte = 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 75429129fde0..55ea10deb8ef 100644 --- a/target/i386/monitor.c +++ b/target/i386/monitor.c @@ -68,7 +68,7 @@ static void tlb_info_32(Monitor *mon, CPUArchState *env) pgd = env->cr[3] & ~0xfff; for(l1 = 0; l1 < 1024; l1++) { - cpu_physical_memory_read(pgd + l1 * 4, &pde, 4); + cpu_physical_memory_read_debug(pgd + l1 * 4, &pde, 4); pde = le32_to_cpu(pde); if (pde & PG_PRESENT_MASK) { if ((pde & PG_PSE_MASK) && (env->cr[4] & CR4_PSE_MASK)) { @@ -76,7 +76,8 @@ static void tlb_info_32(Monitor *mon, CPUArchState *env) print_pte(mon, env, (l1 << 22), pde, ~((1 << 21) - 1)); } else { for(l2 = 0; l2 < 1024; l2++) { - cpu_physical_memory_read((pde & ~0xfff) + l2 * 4, &pte, 4); + cpu_physical_memory_read_debug((pde & ~0xfff) + l2 * 4, + &pte, 4); pte = le32_to_cpu(pte); if (pte & PG_PRESENT_MASK) { print_pte(mon, env, (l1 << 22) + (l2 << 12), @@ -97,12 +98,12 @@ static void tlb_info_pae32(Monitor *mon, CPUArchState *env) pdp_addr = env->cr[3] & ~0x1f; for (l1 = 0; l1 < 4; l1++) { - cpu_physical_memory_read(pdp_addr + l1 * 8, &pdpe, 8); + cpu_physical_memory_read_debug(pdp_addr + l1 * 8, &pdpe, 8); pdpe = le64_to_cpu(pdpe); if (pdpe & PG_PRESENT_MASK) { pd_addr = pdpe & 0x3fffffffff000ULL; for (l2 = 0; l2 < 512; l2++) { - cpu_physical_memory_read(pd_addr + l2 * 8, &pde, 8); + cpu_physical_memory_read_debug(pd_addr + l2 * 8, &pde, 8); pde = le64_to_cpu(pde); if (pde & PG_PRESENT_MASK) { if (pde & PG_PSE_MASK) { @@ -112,7 +113,8 @@ static void tlb_info_pae32(Monitor *mon, CPUArchState *env) } else { pt_addr = pde & 0x3fffffffff000ULL; for (l3 = 0; l3 < 512; l3++) { - cpu_physical_memory_read(pt_addr + l3 * 8, &pte, 8); + cpu_physical_memory_read_debug(pt_addr + l3 * 8, + &pte, 8); pte = le64_to_cpu(pte); if (pte & PG_PRESENT_MASK) { print_pte(mon, env, (l1 << 30) + (l2 << 21) @@ -137,7 +139,7 @@ static void tlb_info_la48(Monitor *mon, CPUArchState *env, uint64_t pdp_addr, pd_addr, pt_addr; for (l1 = 0; l1 < 512; l1++) { - cpu_physical_memory_read(pml4_addr + l1 * 8, &pml4e, 8); + cpu_physical_memory_read_debug(pml4_addr + l1 * 8, &pml4e, 8); pml4e = le64_to_cpu(pml4e); if (!(pml4e & PG_PRESENT_MASK)) { continue; @@ -145,7 +147,7 @@ static void tlb_info_la48(Monitor *mon, CPUArchState *env, pdp_addr = pml4e & 0x3fffffffff000ULL; for (l2 = 0; l2 < 512; l2++) { - cpu_physical_memory_read(pdp_addr + l2 * 8, &pdpe, 8); + cpu_physical_memory_read_debug(pdp_addr + l2 * 8, &pdpe, 8); pdpe = le64_to_cpu(pdpe); if (!(pdpe & PG_PRESENT_MASK)) { continue; @@ -160,7 +162,7 @@ static void tlb_info_la48(Monitor *mon, CPUArchState *env, pd_addr = pdpe & 0x3fffffffff000ULL; for (l3 = 0; l3 < 512; l3++) { - cpu_physical_memory_read(pd_addr + l3 * 8, &pde, 8); + cpu_physical_memory_read_debug(pd_addr + l3 * 8, &pde, 8); pde = le64_to_cpu(pde); if (!(pde & PG_PRESENT_MASK)) { continue; @@ -175,9 +177,7 @@ static void tlb_info_la48(Monitor *mon, CPUArchState *env, pt_addr = pde & 0x3fffffffff000ULL; for (l4 = 0; l4 < 512; l4++) { - cpu_physical_memory_read(pt_addr - + l4 * 8, - &pte, 8); + cpu_physical_memory_read_debug(pt_addr + l4 * 8, &pte, 8); pte = le64_to_cpu(pte); if (pte & PG_PRESENT_MASK) { print_pte(mon, env, (l0 << 48) + (l1 << 39) + @@ -198,7 +198,7 @@ static void tlb_info_la57(Monitor *mon, CPUArchState *env) pml5_addr = env->cr[3] & 0x3fffffffff000ULL; for (l0 = 0; l0 < 512; l0++) { - cpu_physical_memory_read(pml5_addr + l0 * 8, &pml5e, 8); + cpu_physical_memory_read_debug(pml5_addr + l0 * 8, &pml5e, 8); pml5e = le64_to_cpu(pml5e); if (pml5e & PG_PRESENT_MASK) { tlb_info_la48(mon, env, l0, pml5e & 0x3fffffffff000ULL); @@ -273,7 +273,7 @@ static void mem_info_32(Monitor *mon, CPUArchState *env) last_prot = 0; start = -1; for(l1 = 0; l1 < 1024; l1++) { - cpu_physical_memory_read(pgd + l1 * 4, &pde, 4); + cpu_physical_memory_read_debug(pgd + l1 * 4, &pde, 4); pde = le32_to_cpu(pde); end = l1 << 22; if (pde & PG_PRESENT_MASK) { @@ -282,7 +282,8 @@ static void mem_info_32(Monitor *mon, CPUArchState *env) mem_print(mon, &start, &last_prot, end, prot); } else { for(l2 = 0; l2 < 1024; l2++) { - cpu_physical_memory_read((pde & ~0xfff) + l2 * 4, &pte, 4); + cpu_physical_memory_read_debug((pde & ~0xfff) + l2 * 4, + &pte, 4); pte = le32_to_cpu(pte); end = (l1 << 22) + (l2 << 12); if (pte & PG_PRESENT_MASK) { @@ -315,13 +316,13 @@ static void mem_info_pae32(Monitor *mon, CPUArchState *env) last_prot = 0; start = -1; for (l1 = 0; l1 < 4; l1++) { - cpu_physical_memory_read(pdp_addr + l1 * 8, &pdpe, 8); + cpu_physical_memory_read_debug(pdp_addr + l1 * 8, &pdpe, 8); pdpe = le64_to_cpu(pdpe); end = l1 << 30; if (pdpe & PG_PRESENT_MASK) { pd_addr = pdpe & 0x3fffffffff000ULL; for (l2 = 0; l2 < 512; l2++) { - cpu_physical_memory_read(pd_addr + l2 * 8, &pde, 8); + cpu_physical_memory_read_debug(pd_addr + l2 * 8, &pde, 8); pde = le64_to_cpu(pde); end = (l1 << 30) + (l2 << 21); if (pde & PG_PRESENT_MASK) { @@ -332,7 +333,8 @@ static void mem_info_pae32(Monitor *mon, CPUArchState *env) } else { pt_addr = pde & 0x3fffffffff000ULL; for (l3 = 0; l3 < 512; l3++) { - cpu_physical_memory_read(pt_addr + l3 * 8, &pte, 8); + cpu_physical_memory_read_debug(pt_addr + l3 * 8, + &pte, 8); pte = le64_to_cpu(pte); end = (l1 << 30) + (l2 << 21) + (l3 << 12); if (pte & PG_PRESENT_MASK) { @@ -371,13 +373,13 @@ static void mem_info_la48(Monitor *mon, CPUArchState *env) last_prot = 0; start = -1; for (l1 = 0; l1 < 512; l1++) { - cpu_physical_memory_read(pml4_addr + l1 * 8, &pml4e, 8); + cpu_physical_memory_read_debug(pml4_addr + l1 * 8, &pml4e, 8); pml4e = le64_to_cpu(pml4e); end = l1 << 39; if (pml4e & PG_PRESENT_MASK) { pdp_addr = pml4e & 0x3fffffffff000ULL; for (l2 = 0; l2 < 512; l2++) { - cpu_physical_memory_read(pdp_addr + l2 * 8, &pdpe, 8); + cpu_physical_memory_read_debug(pdp_addr + l2 * 8, &pdpe, 8); pdpe = le64_to_cpu(pdpe); end = (l1 << 39) + (l2 << 30); if (pdpe & PG_PRESENT_MASK) { @@ -389,7 +391,8 @@ static void mem_info_la48(Monitor *mon, CPUArchState *env) } else { pd_addr = pdpe & 0x3fffffffff000ULL; for (l3 = 0; l3 < 512; l3++) { - cpu_physical_memory_read(pd_addr + l3 * 8, &pde, 8); + cpu_physical_memory_read_debug(pd_addr + l3 * 8, + &pde, 8); pde = le64_to_cpu(pde); end = (l1 << 39) + (l2 << 30) + (l3 << 21); if (pde & PG_PRESENT_MASK) { @@ -401,9 +404,9 @@ static void mem_info_la48(Monitor *mon, CPUArchState *env) } else { pt_addr = pde & 0x3fffffffff000ULL; for (l4 = 0; l4 < 512; l4++) { - cpu_physical_memory_read(pt_addr - + l4 * 8, - &pte, 8); + cpu_physical_memory_read_debug(pt_addr + + l4 * 8, + &pte, 8); pte = le64_to_cpu(pte); end = (l1 << 39) + (l2 << 30) + (l3 << 21) + (l4 << 12); @@ -448,7 +451,7 @@ static void mem_info_la57(Monitor *mon, CPUArchState *env) last_prot = 0; start = -1; for (l0 = 0; l0 < 512; l0++) { - cpu_physical_memory_read(pml5_addr + l0 * 8, &pml5e, 8); + cpu_physical_memory_read_debug(pml5_addr + l0 * 8, &pml5e, 8); pml5e = le64_to_cpu(pml5e); end = l0 << 48; if (!(pml5e & PG_PRESENT_MASK)) { @@ -459,7 +462,7 @@ static void mem_info_la57(Monitor *mon, CPUArchState *env) pml4_addr = pml5e & 0x3fffffffff000ULL; for (l1 = 0; l1 < 512; l1++) { - cpu_physical_memory_read(pml4_addr + l1 * 8, &pml4e, 8); + cpu_physical_memory_read_debug(pml4_addr + l1 * 8, &pml4e, 8); pml4e = le64_to_cpu(pml4e); end = (l0 << 48) + (l1 << 39); if (!(pml4e & PG_PRESENT_MASK)) { @@ -470,7 +473,7 @@ static void mem_info_la57(Monitor *mon, CPUArchState *env) pdp_addr = pml4e & 0x3fffffffff000ULL; for (l2 = 0; l2 < 512; l2++) { - cpu_physical_memory_read(pdp_addr + l2 * 8, &pdpe, 8); + cpu_physical_memory_read_debug(pdp_addr + l2 * 8, &pdpe, 8); pdpe = le64_to_cpu(pdpe); end = (l0 << 48) + (l1 << 39) + (l2 << 30); if (pdpe & PG_PRESENT_MASK) { @@ -489,7 +492,7 @@ static void mem_info_la57(Monitor *mon, CPUArchState *env) pd_addr = pdpe & 0x3fffffffff000ULL; for (l3 = 0; l3 < 512; l3++) { - cpu_physical_memory_read(pd_addr + l3 * 8, &pde, 8); + cpu_physical_memory_read_debug(pd_addr + l3 * 8, &pde, 8); pde = le64_to_cpu(pde); end = (l0 << 48) + (l1 << 39) + (l2 << 30) + (l3 << 21); if (pde & PG_PRESENT_MASK) { @@ -508,7 +511,8 @@ static void mem_info_la57(Monitor *mon, CPUArchState *env) pt_addr = pde & 0x3fffffffff000ULL; for (l4 = 0; l4 < 512; l4++) { - cpu_physical_memory_read(pt_addr + l4 * 8, &pte, 8); + cpu_physical_memory_read_debug(pt_addr + l4 * 8, + &pte, 8); pte = le64_to_cpu(pte); end = (l0 << 48) + (l1 << 39) + (l2 << 30) + (l3 << 21) + (l4 << 12); From patchwork Wed Feb 28 21:10:05 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brijesh Singh X-Patchwork-Id: 879406 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="VAe3MLar"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zs7mX6Cx8z9s23 for ; Thu, 1 Mar 2018 08:21:48 +1100 (AEDT) Received: from localhost ([::1]:47004 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er9AY-0001Vk-QX for incoming@patchwork.ozlabs.org; Wed, 28 Feb 2018 16:21:46 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52953) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er90A-0001CO-In for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:04 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1er907-0005ZU-2u for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:02 -0500 Received: from mail-sn1nam02on0055.outbound.protection.outlook.com ([104.47.36.55]:37280 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 1er906-0005WK-Gf for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:10:58 -0500 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=aE4yNXMmUgjuIpIRT9y8gCB2iUHwV21ewqVDSWZRWyw=; b=VAe3MLarLHmhMIAfZ+p0J+GycCXb8BTaJCVTfiwUxr/7vmj42Xryitnm014r9/UEFD4O5HSgXBaE94vW58Jy7jXF6wIuZSmWctD0qwFTbDQyxwLvIq7M6Xv6dTAClUZ5ZNLj6D7jZhp7VOgRQpKpESYioqGOViNKlY/SJYcKZwk= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; Received: from wsp141597wss.amd.com (165.204.78.1) by DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.527.15; Wed, 28 Feb 2018 21:10:55 +0000 From: Brijesh Singh To: qemu-devel@nongnu.org Date: Wed, 28 Feb 2018 15:10:05 -0600 Message-Id: <20180228211028.83970-6-brijesh.singh@amd.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180228211028.83970-1-brijesh.singh@amd.com> References: <20180228211028.83970-1-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: DM5PR10CA0008.namprd10.prod.outlook.com (2603:10b6:4:2::18) To DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: b7baefbc-198d-4225-e78d-08d57eefc22c X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:DM2PR12MB0155; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 3:n1sibJ4T+7P4yVNPaz3N+NzLhxgvaWpGrsC6df60y1IZ+w6f8ipOlWeQgiwTY35rMWXaqHj8g4fpMPzlGThaBzJQ+g0ZcPB2aPNj66Eu2bDBwAH6wyHSepEg1v/+n0s43As+YbraVi3XdnrL7ME1S4UIunxxLDBQnxhToJok1KnGJ+t4XC7A0KnwHDyD+NL248EJAZIaKoSnbOUord4LUE42+I90FWfSHdFT+EG305pj31aTzwpJT1N6qxoMszdC; 25:dVfNvKKrxT/3ZEcJFLC6HtAoalsbCCqD/lMKgUZulKJhmEfhl1lWZ6n5us2uy63otX6T9ZC/row7h+8hF4Wj3xo6TsdHJa4yAU12MuuNUL2gN/tD916Kx25/tWSGjHliRNs+H6lYE89eUcelRa46AG27pJHNbkHA3I/fxmrSAb9CoEyAZcYMJMSvQeWBxG/AZ1l5BDCLtFjEgLVn3FZbdKXJ1LbhsvXY/X8Q5Af8WUA1IlCHlHB0z6oez6WN3IqKRJ1+ZHWmLnAHGaaLm4QE3OteMpn3+1By5CmPYGKK68oI2tPyUJdp73i66CMWSxaVWVuagAdigXtvKcOTHrKGWA==; 31:1nWVvwTT6DUN7GSrgvtDiBsORn4BN+hXLJzC6c4gf1McKyx1U1h/JNBN122suTFdfIdEt4PSaXXtRWLMhA+fS+xPCLC1c/b7RY8cmcZEQDS7H3pvYd3C4sg8DDKWqv6G8hKoe/WaJMXo7cAXM1s/C3f34s8/EbTS9jCUUoTS/bbtPROruGdekKSijleWAJh3g2NliHGl9cEHNRyZZrIJ9LEib7iMsj+7EGwLhh+y2P0= X-MS-TrafficTypeDiagnostic: DM2PR12MB0155: X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:fEZYOwcEgAIloKWbMJlaW2yvEdyTvUkyGjqru59N00pf1jBRrri/N+x05dyIO+xdsbBy2t2h0UkGQox/lAUzdz9d4X9w20YrGxpsCGbIfchiSVqOVdIEhMAJbG1t20uYM5rSji4U45loT82lZZrP5W0v+LvNDhHYtsavccf4SoSFoH8ZiXRRoEvaYledkvwyI5bfyLHadJWIS6UvNR5gmPagTdLsf/JW42/FwK9ylLWPgvv+j4DiH4wmKl66edHtkDNc0tqKx0tvAXqsoevTo3Em9Lujj493rfscWfCodQ3WZFD6b7gpjbebCaypbsVr9OJg4KWRm78Yc+zWv8MayruipFoA5wUTEul2MZrXNyAxwsf2usLF3fvzIzmdJSWlBlEb5G/bXuh5qWu6kTmnEqfrl5oW6XnOhmV3hz93CWl/fn/XecRxHCApp4blKx6Us6Dj4e0gMBI5OJ+z/V6kpaCC5Vv0G+JVFJxUsdLCunjIrBQ5HKqDDGoaweVr1XxE; 4:HVZZlTZvACgHG+nTooan0UmTpvS6p6CscaLRqY60SdA+i3843kzqVjaN2iK2nP0x8bA21lgtdMjGi9V35oXeqWMxqMh30bikI/OpzkiBO5wCwOZXE0EKNMGgdiemZoCGKr4Ywm7VIqVY+16jwb2i5a5Exz1CE25sOI6nDbjcpBXF4dSFfkyAAPgS2KZzhFsQ4BkuXtuy8/9+mnJWZex9KhjRc+ed1e/8QurEX8rO3NPYv0zdXTY5VoTZl/UrIqZNQ8KkndSkZ3xVh3X8PjXto1iFIPFA7WnjWT2W7Pq5reYyiNJGoscSZPzed4ndLwyauaii50dj57ZsoVz7u/RiSg== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(85827821059158)(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040501)(2401047)(8121501046)(5005006)(3231220)(944501219)(52105095)(3002001)(93006095)(93001095)(10201501046)(6055026)(6041288)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:DM2PR12MB0155; BCL:0; PCL:0; RULEID:; SRVR:DM2PR12MB0155; X-Forefront-PRVS: 0597911EE1 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(39860400002)(39380400002)(396003)(346002)(366004)(376002)(189003)(199004)(6486002)(6116002)(1076002)(2351001)(36756003)(16526019)(16586007)(54906003)(53416004)(26005)(53936002)(66066001)(186003)(47776003)(59450400001)(2361001)(478600001)(8666007)(316002)(81166006)(50226002)(8676002)(8936002)(386003)(106356001)(97736004)(5660300001)(2950100002)(6666003)(305945005)(4326008)(76176011)(7736002)(39060400002)(8656006)(105586002)(68736007)(50466002)(575784001)(7696005)(51416003)(25786009)(48376002)(52116002)(3846002)(2906002)(86362001)(81156014)(7416002)(6916009); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR12MB0155; H:wsp141597wss.amd.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM2PR12MB0155; 23:oa724p5GgQ9BTOHWFNvskKZf/EgrViTvNIJYM/emp?= AyQ/wPVU+aLWIvwC8OpEg3XxB7/VVU9IqY8doDe3hxdwQAC2DQERsWLNhLb936gbxWPjTGpP52ydU8sG2BUm8+PtCg5n5QL/mJ1w8Gz0sBpwhICCOaGkJJBN6hpiezApWgd2srSN12bZnyXiLSqRj+u/4npw9G8Yac/c2OvfMN4WoLfxyvB7Lj8XdpobiqOMwEmSQaNFWYGbBbfoDQtL0kiV7eCY+hEx0bgufL0RKtpo9eryi4Mnv36CYkm6lZUnvnkz8zxJoB8l9zIVNK2l8Y+5Sp4vNBERATYbxsJ9h0ZbYGd4QHVhvHlNtyqBRXfd2nsP8BGPOaBl0Tawyg1LV4H70rQM8q4AH/t1pVt8Tqn65OxTUzOATM2MT7nQtBsVzphcEpiSWCbIwdnPspSnKsl/8b2sdAuQVLzB2jgowAsVnlcYytpX31smtGQZFycqtRQZnsPx2LM5cNu3mjJ4B2U6nwWaLQhe7GvRl5cotIGTnxiE48tCm2yQ2XdPta5jQt14t+G3dWCF1keHDWxwgL072cM5sxcKZi+tmdSJpi+Hf1/8Ws/2LShqaeXaoEIJtvHg0X5XXGlxSkqggjRem7Chsob5dyqiv5p7EOejc2x4o/Fe03s5iYJV9N2IUXNnELbLAI/d0Y3xBwshsf22OksbVuTvbbJoFMEaACUk7tGtL9ge9PlphFhTyC2bHfduUoBX+d++tRGZWvDocQBnCoU04OpOA3GNOIvRjBEWAiMTSBWDTyee1D/gntDiGIS+0qWpNEzCzGvpghqSncxkPXTxsOZSiilKGCu7N6Q0qRNFs1lI7Xh29Evqk2f87vSTjq6a0fLsz+GC/2soN6E2Y2kpo6pE+m9aAe+pJvpcdCAk02Mq6L6B0lnKkXsYysGI14bFiLRj2Z5vAS5oGiOOnhIZiBzVj2Qk/xYc8Ga7dcapRVbRdQfHaB/KH8gPQXVxr8PJb/NAh6JOGglugS07JM9HG77ixQecdci9Ruedrw2RKv4MoUCi4Sxn5r2/cNotb7VeYOARJUVAgmC8Mh9g7RGQlYo4EJUu8FoPQ//2+uklxFCHcFRTsEZUWdrf+1AnHr7gqvq3m08Qw2spH78GbDI4PmHi2kyZk+UDSRO5V4DHuMCXjbE7V4Wg02kXEqIC9Pba7LxJmQsi83DauU3Mq4VJoh1nt3eyPXOGdgi6hTN3zN8pNA4bP+B4GVAzPl1tsIOY2LgUkn+ODM5PhxDBmeM84wmz2Di1FZrSoz0zsqq/7zsSNbRV8qL03QVjSjqX2I= X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 6:L6isFH21TGbTNijZEm/fDO5vA+Hp0/vWz3Aq8mK228Gpzf9CXCL6+dc9oegY9PAHS1lxLoCIJrxcMQnBQvSj0E48pM0UryWqNMbyW66M+UvYWbsuRW4PDTOJbrJV5Mc36KDARVqAWrJOefaXp4dGkjTbvwToeCpeAIQHoWFuCIFma9yv95zW+ZE9DhygnrkU++kpMmMle5itxZ+0rMJnDlVsSFJA+jdZ1lX917jrIQRPpUx/gljGT/FV469v+Ld3RkXe6X3bgp+1ZBS4WB8b0MY9u6jOA5OqMuQjpb+G8cbzKa2vSURlAq+6buDRBtbSxafB8iv3sAjHAoKmUxdcu4Jx86ae9RjkQm2yWL0VqBY=; 5:EsbSJ5aOstv1mWqLQwfzDBvHDfWxXHXIu594N3cqle1vpS8JTHHG4to2mM7MiMSqcVqNPnD6og/5Od8r4PdazjjIgUHo1ZmfHQHXdk891AB0Yt2mjDf2jOBh1LWiHYJYsUTCQlpG7pMvmjOSggR7/Oa1QbMzc8hSRjWwTDNwxjw=; 24:PQpNAa5gt83o5Ctg84UU0OU3J5ojLUE58MaTa+ptcpcv3RoWAaqHZTxoiGmywKM/xJsyTrGQypHr9nRiK0rWZufQgSmYiPIvCpfFLFWKBLY=; 7:0jGxTB1PdaHVbKX9mjlq1UXFVQf0edYSGdAHvUzsAcpdbuqlfNnk1bSJziab1JTBQlL8NtOOve5JbC1/gunOYk0P+aaw26Pi9hc/eJvwap6+M3se0cFzaxOfAY0MM/s7/XBq1ZjTKgsuHgJcgl8nHDu26zBHMGo1yemQd8PkRWlGi8qDrkGBWuWgOe+jtezvc0sm4Ajq1mv/Z1gU5JXd5zJmlOSYKA4kCumR8zd9prHBWWTDAh4S4w/EeGfl5toN SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:ULsCOIzlwiDubBJu8yEmr9252yAnkKfWEJpweDiYgoe1nVy9+p10i8Q36QVyB4C576vSc3JQdpEkb2JNIvbTwsXVK+y3Y06KGupLtmYtPSgDUTVg2camvjGjac2Lnqz9WeQvxq88qr+cg2m7UBKZBP57FRkA005PEgA2z8h1yXdg7jHpejKgz48EmaOw+OSnMPdSpI7AgSzbBfBWnpZmAV5pAKPkhkCncKX0s9yjRTonmTLU4UIuEASEn8TfAzTT X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2018 21:10:55.5768 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b7baefbc-198d-4225-e78d-08d57eefc22c X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR12MB0155 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.36.55 Subject: [Qemu-devel] [PATCH v10 05/28] machine: add -memory-encryption property 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: Peter Maydell , Brijesh Singh , kvm@vger.kernel.org, "Michael S. Tsirkin" , Stefan Hajnoczi , Alexander Graf , "Edgar E. Iglesias" , Markus Armbruster , Bruce Rogers , Christian Borntraeger , Marcel Apfelbaum , Borislav Petkov , Thomas Lendacky , Eduardo Habkost , Richard Henderson , "Dr. David Alan Gilbert" , Alistair Francis , Cornelia Huck , Peter Crosthwaite , Paolo Bonzini Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" When CPU supports memory encryption feature, the property can be used to specify the encryption object to use when launching an encrypted guest. Cc: Paolo Bonzini Cc: Eduardo Habkost Cc: Marcel Apfelbaum Cc: Stefan Hajnoczi Signed-off-by: Brijesh Singh --- hw/core/machine.c | 22 ++++++++++++++++++++++ include/hw/boards.h | 1 + qemu-options.hx | 5 ++++- 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/hw/core/machine.c b/hw/core/machine.c index 5d445839e89e..414e6e71092d 100644 --- a/hw/core/machine.c +++ b/hw/core/machine.c @@ -334,6 +334,22 @@ static bool machine_get_enforce_config_section(Object *obj, Error **errp) return ms->enforce_config_section; } +static char *machine_get_memory_encryption(Object *obj, Error **errp) +{ + MachineState *ms = MACHINE(obj); + + return g_strdup(ms->memory_encryption); +} + +static void machine_set_memory_encryption(Object *obj, const char *value, + Error **errp) +{ + MachineState *ms = MACHINE(obj); + + g_free(ms->memory_encryption); + ms->memory_encryption = g_strdup(value); +} + void machine_class_allow_dynamic_sysbus_dev(MachineClass *mc, const char *type) { strList *item = g_new0(strList, 1); @@ -612,6 +628,12 @@ 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, "memory-encryption", + machine_get_memory_encryption, machine_set_memory_encryption, + &error_abort); + object_class_property_set_description(oc, "memory-encryption", + "Set memory encyption object to use", &error_abort); } static void machine_class_base_init(ObjectClass *oc, void *data) diff --git a/include/hw/boards.h b/include/hw/boards.h index efb0a9edfdf1..8ce9a7a21d3d 100644 --- a/include/hw/boards.h +++ b/include/hw/boards.h @@ -243,6 +243,7 @@ struct MachineState { bool suppress_vmdesc; bool enforce_config_section; bool enable_graphics; + char *memory_encryption; ram_addr_t ram_size; ram_addr_t maxram_size; diff --git a/qemu-options.hx b/qemu-options.hx index 8ccd5dcaa61d..a6648ca073f2 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -43,7 +43,8 @@ DEF("machine", HAS_ARG, QEMU_OPTION_machine, \ " suppress-vmdesc=on|off disables self-describing migration (default=off)\n" " nvdimm=on|off controls NVDIMM support (default=off)\n" " enforce-config-section=on|off enforce configuration section migration (default=off)\n" - " s390-squash-mcss=on|off (deprecated) controls support for squashing into default css (default=off)\n", + " s390-squash-mcss=on|off (deprecated) controls support for squashing into default css (default=off)\n" + " memory-encryption=@var{} memory encryption object to use (default=none)\n", QEMU_ARCH_ALL) STEXI @item -machine [type=]@var{name}[,prop=@var{value}[,...]] @@ -110,6 +111,8 @@ code to send configuration section even if the machine-type sets the @option{migration.send-configuration} property to @var{off}. NOTE: this parameter is deprecated. Please use @option{-global} @option{migration.send-configuration}=@var{on|off} instead. +@item memory-encryption=@var{} +Memory encryption object to use. The default is none. @end table ETEXI From patchwork Wed Feb 28 21:10:06 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brijesh Singh X-Patchwork-Id: 879398 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="e1ZsnuNg"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zs7cQ1RM5z9s15 for ; Thu, 1 Mar 2018 08:14:46 +1100 (AEDT) Received: from localhost ([::1]:46960 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er93k-0003oR-6M for incoming@patchwork.ozlabs.org; Wed, 28 Feb 2018 16:14:44 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52954) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er90A-0001CP-K4 for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:04 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1er907-0005a2-IN for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:02 -0500 Received: from mail-sn1nam02on0055.outbound.protection.outlook.com ([104.47.36.55]:37280 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 1er907-0005WK-95 for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:10:59 -0500 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=FFCItbhe3z5LnOPkxBvVYDwqD9Hfm01bHo8CiUMEhsQ=; b=e1ZsnuNgZ5l9g7kDvigBzuQ/3sabovU7I5pL+BoBWu/McmrTZzm7q2ek/dCif/KtC8oHQnceWSrnb5eJBkktrGjDY+ys+wbBd4qKT5LA6mrOz6uptHxKK2nfIWuOYSIdrKeEDgyiTGOELHnjc6CFkqeoO/ghn1nDaxWxODfpKPQ= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; Received: from wsp141597wss.amd.com (165.204.78.1) by DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.527.15; Wed, 28 Feb 2018 21:10:56 +0000 From: Brijesh Singh To: qemu-devel@nongnu.org Date: Wed, 28 Feb 2018 15:10:06 -0600 Message-Id: <20180228211028.83970-7-brijesh.singh@amd.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180228211028.83970-1-brijesh.singh@amd.com> References: <20180228211028.83970-1-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: DM5PR10CA0008.namprd10.prod.outlook.com (2603:10b6:4:2::18) To DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: c44f2bfe-6afd-4a06-40ee-08d57eefc2e9 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:DM2PR12MB0155; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 3:/cMauwqCjAyl3F8C/PKK+s06iXxO4nPpCPK3eAeEEKlS0WfQRgP7ue1pZ2XIUMPPo8h/Ipwl8NHJ48qiA4CPSmbk6MeqEVq5F5yO6Svb+8moUQXcSu3YJlv3TJAaPx5+Q+suEbLm+sLDndNZQ0fe9RzWYlLo+VhuYNFPMa7Qa98i8IWwkm91HCoWKvOWcpr9EbR2qLSYcCvfngoqVC7RZGZ8aAV1Zl56A2ZpcQv0TIjL3CyBYT7BXUembhUO7OH/; 25:xs/GC0Cg+ptnmhfQv7mLKTswZuSIlmSiwgyw3skXRL9VGyCnEQjqhpwvE1gZCDfsjV2Xi9a8XWRMR5FT8N0GQskdlzzQyLAh41qt2bB9t2NU1WI2+LPjntJHMU45j49V7Mqqp2IygQD/LBrepAiUYhZFn9r7K9vadMb//qxrLQJNB2rrEeqeS3aqGB4Sp+jOhFMOI8lwf2oZp82+PUkWCE1vDNCDQzSAZBcLuAtP43h8FDUG03we5AwkUba36HOmzPSYuTfZnQPzzNCqtCBLu8Nbyh06uYDYsWknXnj7+F0qGyuD2nHjIMZ9LmA1C9PBHYZ5HHidvt0BAH2ZlMsEmQ==; 31:bA8bjz9GQACbknusntU5i2CVljHei18rWi/cCtStY6UniG0CfQ4dd7r9br1V9o6VA90d8hGl8YDaTxQI87SSrbatx8DP8vcep50NtE0toJ5HXrmzYiHWyO4UwNJIYGxXgFPLKpDHWNkJbj0d+kMNXSf3nYwMUtE1uFnq9ar1Prw3LVNrRR5dNg87+/uOO86HuPslsLotY1cVgO2ilpLEeFPUFJerVzl4lYNV4g+G7zg= X-MS-TrafficTypeDiagnostic: DM2PR12MB0155: X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:O2VjxWzQ7JdyreWlTc4M9mylRI9I9EUjMT5ERvSud04FvwkC7wtJEzDuKWwM/1TtDSzm8zuF8Lcr0gZ+OUbPlwd0X9zsvUO9S0sIp1u7/e2EpwSUqKqPS84vIHyMvpVcU8Z7gCIntvFxuUIAYMrP+dMrmTQhNz0X1xZLHpkFdvjJY9Dm7+GuHvshSOjMH0yQx7gL4tlooEEGivoz6cT+AvX1tfncwEj5imiI3CqfHfiImWKPpKuZQLzCb0TzE3dSQuN5qFgRogC49kmu+67TqtI1QwLMtn/iePSKV6pYET8hQYpWJk6ShsyAbdKlzut1hO6mwzeJ0t4XCPWDjAOj/Hnys7gYKG1ww1FOsWX2fcV6yWN5PfIHSjM7bamHWdKkBlDszSYrMwtMy7muI7TAuQaMPWVEXIxAcNqtH1GDBczZJ3Uwxg7FiGAuLPtSg8mzr0Kzy/Llt1APGZVPer7L0WI3hUQV4Bon1Fn9Uq4o7KtYoxqYI2MqYxIfgJ69Gild; 4:SY/SFmU882BC1hMQi+1TVHsojj6XEiTJUvB1KnyPEBnJfh0618S5cKKDsfc9ZyyAy6FZuTamM/RXTSl8CdupCa0UHaNezV8SynDLugnhRz09ZZcwOw7muFQd/WgvTJCa2LtM5DqHcbmpZUM6+GHVdx4jFJsKQ+i1Ha+xw2ufGU/7KqRgsWZJt5RWg6Lfph8dQukomnHQbqvnpmUgZLfjD/bTGxNhWe2F4woZ4aFEFDqzHG1k01PA/O4YisMQvvkwrSsic9bKYehFZ0JeW/NITnUPVt+p86APGMR+eGIdBcaC7Hui6TtFglCno1dYNiaBIUEUlD+v3v9BOGNaWa+soBVMJEwFhlz2uKLYSig06f5iQ99Ps0+v2HofK3PrxqaY X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110)(190383065149520)(104084551191319); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040501)(2401047)(8121501046)(5005006)(3231220)(944501219)(52105095)(3002001)(93006095)(93001095)(10201501046)(6055026)(6041288)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:DM2PR12MB0155; BCL:0; PCL:0; RULEID:; SRVR:DM2PR12MB0155; X-Forefront-PRVS: 0597911EE1 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(39860400002)(39380400002)(396003)(346002)(366004)(376002)(189003)(199004)(6486002)(6116002)(1076002)(2351001)(36756003)(16526019)(16586007)(54906003)(53416004)(26005)(53936002)(66066001)(186003)(47776003)(59450400001)(2361001)(478600001)(8666007)(316002)(81166006)(50226002)(8676002)(8936002)(386003)(15650500001)(106356001)(97736004)(5660300001)(2950100002)(6666003)(305945005)(4326008)(76176011)(7736002)(39060400002)(8656006)(105586002)(68736007)(50466002)(575784001)(7696005)(51416003)(25786009)(48376002)(52116002)(3846002)(2906002)(86362001)(81156014)(7416002)(6916009); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR12MB0155; H:wsp141597wss.amd.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM2PR12MB0155; 23:ICiVRZOACfBpcOrFr1WAtyyBPT7KMGLr/J9l18INk?= QqKNF1MfvOo4ZxKKfOXtHy4ZcV8EcmajUMUAt6ofFcXQmjUvVQ9tDTBGYfu4aykelvN3ZA0Hg3vVP6Kq8Jj5kUqySAjR0DxWkWYh+z0XB6Eivu0pQ8fZgdxSRD7aDKIYvqW8kp+haIbHzi2oQcKhUGhdycZ4do9dVEOJGAXiljhltYXOlB+6Hp/t8R9UhfIVaev64HjbXt05Hd7169i5IEiwQ/y/dspmvay3TJpsghNWiKGpyXAD+1OfxSeGWQqjGOUa/enKPQuddDqXWdUZ9XNyx5KqPPcQnHOZIwW21GgX/+yilFG7zrg6MkHCdb1K4bamtdhjpk81WoS8AjJ/q8C6m95aOftPxunLkkg/680959yumGslQAWqh2/GK9nw0ytymSePuIU+2/sWQ9FA7VdvdIR/ei2BOCatugKGXVDzHgR1v9i/oSC6bhsxdYdyGfmuH1Q/lhVIlCDn9GEUfZ1bUsej9BHVhpnRNaMPAvx7vg7pfo6HSQ6INXTi0KEjDdrwLHU+GW1Y0Ah9Zi1dsZJJDoHDRkaFTlXEPYG4YZDMfbo8whkIJr/eTqyJ2j8HKLbnKEpMwFBnrjVuy6zZRNywCFpT3n/7+RkfedJ0ShIBbu5186noLOvVDq978/o9FAnNpws8eOZb7cytAuV3UVItmuW8+OuTmXgdhmZTaDvNzFiHHF4XrAk4Nm4iLoxxLwbBM6vEXosM3l8ewtGKoIzgRi9nIoffjsHuYxOdtSDGJ2vJPvPdFRUWMUG5xaCxcELnJwZiunUeTWIuf7k/+KL12Fn7kdkuMh5Of9v0J2gFeKNEpWWHiSsBvu1JJPVFQJ/6+NhHoYKFwKvKsf3zhFhoFRWddFQDMJKd88gMKObAs6SXHlAetozHoC1eP1wtfGN4gkf7u5o53qQeDMeIFpYVu0/O/oi7lGQFr3k9EfrcErN0zu9RSLDbeIv6kMVvsX1nLcPvsB9/DGao6AvdyBT32tAv62c/EF53SKQI7VkPHRnN9nCpGFgfYwMar9/SlEQK7OZ7HNui2eCJ2BzKTiObgUtGc9W3Wj2etsCkiZasx1ECKk0RIob1YKZLqzMFwspjsRE0EnEa3sP7ab4RcWpm9FyBNtmjIOtyt7GAWrF3fRGgi2Bl3BOHvWJb+RYu/xBwONIw7sew4aCLM+aJXtX9uxRTk2Khns7jOCraGO5SMFOk4/6B8STG6x4i86nqxZ63ggAF3y5DsipB2MnF7INR6StxdYQ8ZRwYLU1vEY92gZ81p2hahZ5Hw8MKccJwiRX1Xz2+sR31Rh9h0pTYlnV X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 6:I9Xs+CkjEhE1Vr+cCvUMnskC23D0CHgg0AKSVrPNSyf+y9xLYYITCzne/txXmKiVwAb9YVAndc7/2FQzWnLgwlWfgSfY0+ApH+pQucIqPwJZnhc1CAuGGsdUjfWGyOnV37c92SHYuQ8RlymcdIHWj0IEoWmya+ZBJX+ctqDD9b3C5PlG5H7VbjUxX/hkVEeO7SO5iy7ps9Q4UcxjVuZvUNueQorZhdYm+LehhiADJnIiSZ99RVQnS6iqAzO60Taf312MgiMkTlBASHI/cnB4iTQFAisp3NqINfNT+jA+bvJJif5/YbFa2O2N72WpVCNv0kxwZJ+6+D+v50p3EK8rhFh53dYkohoULg596HX/hOU=; 5:o7C6N42pycOznF6aN0pogRxaew6NubOAV2LIjuFTLjK51Q+U/GzW1PR17q1OqHUexwpCCha2pvHJ7ydmGRLsCvOpazO9d+bt9t/oGEb6kM9CnRzztDcHcuxm2JDfAKMECHQk1f7zJRT0Ih5APla4ddO+Ls7uCZcQYIxZ0XY6rJE=; 24:ljWmWo8oMhzwfQE4HzvVYa1R8t31IeIBrxss7HbWuU9Rsy5TPyYfVZN0mfl233P1dinKZqMCJCCWNVCW6Cgi1R0WnHSVmsY4miUgyU14cCs=; 7:zAo9p94HJrJrn7uvjNLgmLkq7YuRoZaradH8N02MR2hSUhDrh+L5i2Z/zEEvPauZWTSbuCbV3jcvVcxHhYoyp+h2URh0416bMBjZZp6UZEZonn0Fd8uSHnlgfuvY2qfHXBcqUlHaNxjt6j0AwX6a+Na3pjiIeApWTdJsQ1NDff7wGIM0gySlgb5DAEJbg9srBDFAn0qUTM4rQKZB+anco0C2Uk/UkoK5J4LwagLRPIDuK0ynOV7ZndJHr3FZTj+k SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:vvld7UyH1vVivyjD/8U7acFazOth7XkBeVQnYkeIGCkMN3P9Xow/QWt5nD1tTZzl0YZb2dEq0Uj0GWUcVTCHAYwPe5eZS3r4tr2XC4qUDDbRlNCZmmJwuoxOmt015sB7YG9mriGacA0yHu2GhDgNpKeSORhS8hb+IQ9fxii2kLaZJCj3pk/yBuF3JJQBZnGgDVaCZiCU8t9lzzXPxhXCxN8UxggRs/kIDil8u8/E51DdwhCkd0FTov2vz8C7dSp2 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2018 21:10:56.8268 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c44f2bfe-6afd-4a06-40ee-08d57eefc2e9 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR12MB0155 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.36.55 Subject: [Qemu-devel] [PATCH v10 06/28] kvm: update kvm.h to include memory encryption ioctls 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: Peter Maydell , Brijesh Singh , kvm@vger.kernel.org, "Michael S. Tsirkin" , Stefan Hajnoczi , Alexander Graf , "Edgar E. Iglesias" , Markus Armbruster , Bruce Rogers , Christian Borntraeger , Marcel Apfelbaum , Borislav Petkov , Thomas Lendacky , Eduardo Habkost , Richard Henderson , "Dr. David Alan Gilbert" , Alistair Francis , Cornelia Huck , Peter Crosthwaite , Paolo Bonzini Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Updates kmv.h to include memory encryption ioctls and SEV commands. Cc: Christian Borntraeger Cc: Cornelia Huck Cc: Paolo Bonzini Signed-off-by: Brijesh Singh --- linux-headers/linux/kvm.h | 90 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/linux-headers/linux/kvm.h b/linux-headers/linux/kvm.h index d92c9b2f0ed2..aed22309950d 100644 --- a/linux-headers/linux/kvm.h +++ b/linux-headers/linux/kvm.h @@ -1362,6 +1362,96 @@ struct kvm_s390_ucas_mapping { /* Available with KVM_CAP_S390_CMMA_MIGRATION */ #define KVM_S390_GET_CMMA_BITS _IOWR(KVMIO, 0xb8, struct kvm_s390_cmma_log) #define KVM_S390_SET_CMMA_BITS _IOW(KVMIO, 0xb9, struct kvm_s390_cmma_log) +/* Memory Encryption Commands */ +#define KVM_MEMORY_ENCRYPT_OP _IOWR(KVMIO, 0xba, unsigned long) + +struct kvm_enc_region { + __u64 addr; + __u64 size; +}; + +#define KVM_MEMORY_ENCRYPT_REG_REGION _IOR(KVMIO, 0xbb, struct kvm_enc_region) +#define KVM_MEMORY_ENCRYPT_UNREG_REGION _IOR(KVMIO, 0xbc, struct kvm_enc_region) + +/* Secure Encrypted Virtualization command */ +enum sev_cmd_id { + /* Guest initialization commands */ + KVM_SEV_INIT = 0, + KVM_SEV_ES_INIT, + /* Guest launch commands */ + KVM_SEV_LAUNCH_START, + KVM_SEV_LAUNCH_UPDATE_DATA, + KVM_SEV_LAUNCH_UPDATE_VMSA, + KVM_SEV_LAUNCH_SECRET, + KVM_SEV_LAUNCH_MEASURE, + KVM_SEV_LAUNCH_FINISH, + /* Guest migration commands (outgoing) */ + KVM_SEV_SEND_START, + KVM_SEV_SEND_UPDATE_DATA, + KVM_SEV_SEND_UPDATE_VMSA, + KVM_SEV_SEND_FINISH, + /* Guest migration commands (incoming) */ + KVM_SEV_RECEIVE_START, + KVM_SEV_RECEIVE_UPDATE_DATA, + KVM_SEV_RECEIVE_UPDATE_VMSA, + KVM_SEV_RECEIVE_FINISH, + /* Guest status and debug commands */ + KVM_SEV_GUEST_STATUS, + KVM_SEV_DBG_DECRYPT, + KVM_SEV_DBG_ENCRYPT, + /* Guest certificates commands */ + KVM_SEV_CERT_EXPORT, + + KVM_SEV_NR_MAX, +}; + +struct kvm_sev_cmd { + __u32 id; + __u64 data; + __u32 error; + __u32 sev_fd; +}; + +struct kvm_sev_launch_start { + __u32 handle; + __u32 policy; + __u64 dh_uaddr; + __u32 dh_len; + __u64 session_uaddr; + __u32 session_len; +}; + +struct kvm_sev_launch_update_data { + __u64 uaddr; + __u32 len; +}; + + +struct kvm_sev_launch_secret { + __u64 hdr_uaddr; + __u32 hdr_len; + __u64 guest_uaddr; + __u32 guest_len; + __u64 trans_uaddr; + __u32 trans_len; +}; + +struct kvm_sev_launch_measure { + __u64 uaddr; + __u32 len; +}; + +struct kvm_sev_guest_status { + __u32 handle; + __u32 policy; + __u32 state; +}; + +struct kvm_sev_dbg { + __u64 src_uaddr; + __u64 dst_uaddr; + __u32 len; +}; #define KVM_DEV_ASSIGN_ENABLE_IOMMU (1 << 0) #define KVM_DEV_ASSIGN_PCI_2_3 (1 << 1) From patchwork Wed Feb 28 21:10:07 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brijesh Singh X-Patchwork-Id: 879410 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="23opWp04"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zs7tH3w1Mz9s23 for ; Thu, 1 Mar 2018 08:26:47 +1100 (AEDT) Received: from localhost ([::1]:47039 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er9FN-0006JX-D9 for incoming@patchwork.ozlabs.org; Wed, 28 Feb 2018 16:26:45 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53009) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er90C-0001EV-DF for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:08 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1er908-0005b6-G0 for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:04 -0500 Received: from mail-dm3nam03on0070.outbound.protection.outlook.com ([104.47.41.70]:26918 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 1er908-0005aB-9I for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:00 -0500 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=K0rG+9OhEX2pAYXJhYpkvMIzreLnbL1Kngbvv5Wp/bM=; b=23opWp041J0Q9ookMGdgCYuRKexGO44hiuwGsjxueZ6ae6rfk3Rvpi6AB3l1o/ZowwEcPV+7wVIcrp6FhY4x8XuLFZhdLXD1QuUfsHZiOyRaY9nKZPonBlH6NVWBf8eOYUZyU7ryl5Ap/H0xM3FHUhHSiFH0TrDKqlrs0OGYAMc= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; Received: from wsp141597wss.amd.com (165.204.78.1) by DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.527.15; Wed, 28 Feb 2018 21:10:57 +0000 From: Brijesh Singh To: qemu-devel@nongnu.org Date: Wed, 28 Feb 2018 15:10:07 -0600 Message-Id: <20180228211028.83970-8-brijesh.singh@amd.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180228211028.83970-1-brijesh.singh@amd.com> References: <20180228211028.83970-1-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: DM5PR10CA0008.namprd10.prod.outlook.com (2603:10b6:4:2::18) To DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 57d1898e-108b-4b49-9bcf-08d57eefc386 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:DM2PR12MB0155; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 3:YldRD06WEnL8WFcjANwzc2l8eDmQ46+kJespFIiYtF+zI3lGNxu6aq1iQPU8v+S2U/LYcaRjq6g3etts5qBUlOwpbmr+mykF5VoTd1dfy/kBuRCHV2CU6EB4l2WBZfJnWse2HZCYolR5c7Ktkz2N4+cS31lxERp9b346hwHJFfAxTfqRpJFhsg1GXtY2ZSEuXcS0DRFxAbPINmebIFeYZiZxwn3PQXukCpW4+i3Bq7u48MU8XjtyIsTh81HU8QZ+; 25:c/QItXtNxvirqFebnGgvHME1vrD/fZiIWDyQBxCP5j8a3e22UzUPFuTx/CpAQXNzDzrMVDidpiKgSCzyUWCAOObS7RjkyPQsrp159LH/CtMMCXH1vTfxF7VDa2MbZJLIhhQTuW2UQcn5EVCZ/qMkrzHQlAalsTElwUoxT+dDR3K4qu3fqSUabZn3vR0V4C9oi1/KriI5wBjz0tF6uPflaVtV+JLeSvSe22YtEqxnBpuRlXw1p1f72bkcS7BO3Cn15la7e0cnXq7orFSLp02KGsvHiVZiPkAXpQEyAkA5FRHPls5tyPNse/QrcP72yADyXne0T0uo0/kAkumJPboVZw==; 31:YUhgklIEYWM99X+qP7TNQNhUfe0ioKTmPbB4m3FtAI9s4bvIS25SwKtplbMy9wcv+AnQ6Em0wxZXWoSaDDKG8NKQJqP7SqpTp/6qWTPzwpSu9aet+7S4/Bs+VGar+qyGEs5xs5HdeLBPrI23U7Gj1xLASVbxko0Oy4Lw2rZnpUIiGRD0FOwOov05NLN5HukNCQZ2oBfqgeYLBXHpBPIPjekana2wEH0FgVX9VDRJSvo= X-MS-TrafficTypeDiagnostic: DM2PR12MB0155: X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:TzPr8BrsGbamlgM3bZkoI8tcvqNurJaAXpA3f/MytHTADrj46Xy/lKvk1ZEKZJOnoOc+c1qvjCZ1/lLk3oMBFZ4FD8B7a7qKsmiXXQrtmPwAcBDMPODrbWC1QFXxt9sYbd+frQ1NmvNwj0NZrgtvd6Xb4gChOaUFpzh7FblIpt9fSO+AfwLCN+Ky5LtB69qiJ4qkjKT1Gl+IZax/dEwKQ9KzgLwf+cWe95KgdyQBhEMQIAiIAs/3pHypjkAt9zlqV7JYsZN4tZsJrdD4hBmffgY5dj0HuCGFkHfobZWqGZbosqJpMOz+POb+v5MF1DCO1YGfsgp5jNZ1T42h/Zf3AhAXKGI++zbpsgnMLM+AlDT/eQ4elhXR2KXSeBp50heIes/OSwWbxTnjCnjkWlw5okVdy5vMrRXYfrmejNm/DvETEQnCrvrxxjoLSoSeGaxE4XzeB3MGN3lZ93/1jNzt1u1bABO/9KM/YwziTYgDf++MYWv2dB48++/auNOd0Pyd; 4:imwPKTmzhDgBHFVZvYCM2JC9DmPf0irwC7SohpnCtGpG+4KG29n0GetTNFOUu9iTMHzJqIU5kfaFnHIZAo44eaqFnQKJu6+YdaICixpp3UokS4lXUrw3KmKx7l87BjAlmumnOS2aWSJTHM8O5JRvX7LDCOGpSa2i8LOunYYW39Ldpa1CAYoG/Au5rB9cEKE5Hv+fKC7I6qp/NHINXLuMT0NbOnAa1s29HP5cBIh8PBRqBDhPLx82h0xPlXAkanzMaDhny/UVb5OJRemOwKIyp/iLRuasZpmMui1QaKx8Y+5NXaZk1XuvbQGQUuWNLCRc X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040501)(2401047)(8121501046)(5005006)(3231220)(944501219)(52105095)(3002001)(93006095)(93001095)(10201501046)(6055026)(6041288)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:DM2PR12MB0155; BCL:0; PCL:0; RULEID:; SRVR:DM2PR12MB0155; X-Forefront-PRVS: 0597911EE1 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(39860400002)(39380400002)(396003)(346002)(366004)(376002)(189003)(199004)(6486002)(6116002)(1076002)(2351001)(36756003)(16526019)(16586007)(54906003)(53416004)(26005)(53936002)(66066001)(186003)(47776003)(6306002)(59450400001)(2361001)(966005)(478600001)(8666007)(316002)(81166006)(50226002)(8676002)(8936002)(386003)(106356001)(97736004)(5660300001)(2950100002)(6666003)(305945005)(4326008)(76176011)(7736002)(39060400002)(1720100001)(8656006)(105586002)(68736007)(50466002)(7696005)(51416003)(25786009)(48376002)(52116002)(3846002)(2906002)(86362001)(81156014)(7416002)(6916009); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR12MB0155; H:wsp141597wss.amd.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM2PR12MB0155; 23:kWH8GWBl4TLPdJsuFNLccpNy/HHcZiFs4ZfOZHSA3?= 27e4SIoEvRPNoy+CiKOFCouOWxwL+/bgzUDnQmL4KtFlSIFtnQ2pva2+HAhFsn7EjL/fDKX0KGjEiKnW477WFGojBiJTH3g0ZozP6sA4yVkAmY1AAfoc1kFuXe1guqJlfIoY5qv4K4c4dyiPEZZX9y6Vd8NkkHBKetdqiVahkT8e53bgkFsW41a4DbvMqIFCKcg1BS5c52htAMVPnt96bysqzVNouTytBKqQzpEs9Bd4EwoodwmtaqZsGbj23yEgXdK8gGV+yqgNavaT+cndIHWo7Xq9QShE/b/Ku051iVESuMFURTbFT24LWQVqRkn3w2NNdQriz5Ri2zWdNprnkoFYj9w1j3wBCOiuP/z2G4YN1T/WQP9cnxRIb4qgRf1tzw9n5OEFCOZN4FK6agh4SbWzrKU31elO+IBhiNlEqpPt0UqsaEp2o6nppZb8T6/tBRH6cOi+F7V0Z+tdfCMRiVTy6r1E/W6GDLXIOthNbAqbiUZcsSuSxLT3/cKLQRhEMgs+NtX5SafepVwNoeVTjigSRcaXbFxFKto5gnDfScOGE/4/7wIvbPApYc+xqOaL7XZeri846Oi+bNfdfjRV7trg6Iab3XD8mfVryPJwjuXNKBoBx3NUoS5NO3sRdfU7OWVH5O1aB89cNH/zlX6+M2lr7iW771VkIEI9V3yeThODVxY+vRsHsV8Hp4tjP6nhLBJP9I/Do/TDPFz0LsenNopaiWtisBu6biLkKW5gvxFQkuojaBJGlaMoZQ5+dRWapb363KaShpSmotw2L2NsOm4jFgUKxRWjMdKPylMvqNpOaY/6CR3RpCOiCuDmyyo3aLajsvB0ZkjvZuomnzstXSmHWoEKQbKazvMW5qsf+5CxSn0S7ijWiT36HJB4/bO1uOWXk7/5OCGpviRb81D1bjzkZD9WQRq65UluAOdRB4vMpnuLEHUInNS+1kAYVEpc4VbURE6CxtWtdu5hh7HgoNu9Efqt4E56rKhmcO99ovfFOjxGQhBDoLPXM/cOUGqcvWdO5JzDDafnKuU8XurSh8iFrRHMQdXETbkX2Jye39F2FDN9kBAhR1ztx1iieT8prrxsSEVNOg6wY7T2tq1CcTgi9+pnDDsygIs4DdTQcPgj4WP4+R2xwIp1p1ByB9gHo+pR4NP4FxqqZ0iAxKWjKTf7jzEw5CbZDrPnB+uJ/P/GhVjepuqsWAkHHcLRYZZyZdHrqdb+KO17OCsTnyFEJ5txFod6awEQ3oXAXKuRxCBq+CnJJBe78CUftR0/xNWx5av2UQVnbC3xsSFg3mo4ONl00wTrkMR1iZqynXFUqLAWw== X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 6:KqnmXjyb0XZWGPoVL90C8sSQHZBm89slr4LXk8Woo8qSabS+47uxHiLHiU06MqvDm++xgzfdWxHEZpTfuRwo1WW8TWkxO8YFv4Jl/4jxg1V5g5hiVti+XkQVajIPV6s7hj7i0GwzE+M5iwCqwrOyCnnlSBtei9WDS08k/Hb3oiuz8tMN8WZnQcD4qpn6G/mL6Mlu+KWk1+ZGqzt/vZmrOhvMMq8x+XvppNgi9xaEG6pw6Dw0+/Oe7BGHIwTGIl/qpwYxc1l/TYCO8535d0/wrt10aIApJltEHffUKCPgJ8PtrmKk7nR1uf+PEudL4zjn5dMG61eExHtb6oPuVUlSWrdj4v8HEkZgtc/s9yrBX+c=; 5:BxxGXrg/hK9vgDWRjklUZyzkzJw80gbuWT0u0fMaoA6j8mA+FIfLxgbTcNruK6RhEwPvDKG3YzQtv5GSI74ztBRsgV+yAex8IutcKBmHQA4lV728MS82JPS2Bfogk6+foC0SB/jX+K1HSTIlkFNTHfgisqO1Y5V9yhoSMUGkwZ0=; 24:8Di0oPSANfzczhn3voavVwNQ2J8l8hc/jTqQJ7XihPvOxHK9s8VKK42IUpikHhdlaY/6e50lQW5dgJq9HYYB9MkoxNkGMDfvySJ9hbn5WOs=; 7:TtODrObqb/B7QBehS/i+1IDGBe+EJzgrm9Q2crEGMWoVi9IZqGNbAujKaKnVoyguHgbRowmC7y7e8kUxmH8o8PWy8dzNTtvosyYrEotKpxzIo55qJXuHPS4mSpAPxVTp6Na2mNjrXEa+FIf61d/KKzdRo82E4K2gd3bhbSTTRf6UdRNa3Jwq3RtjxDaikQ7Pu6LkM/wDnFr2VlhwNhk2sdWZMUiuGQWBNTxXxNUyOFuSsFgZ6nGmn5YSruTZPqSt SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:Ah7Om4XRpkTCkWy1V6yZFAW3w46Xo6FrVFet7PsuUXSDnVjGQRN3KaSUUtkhLog8zfmyKKMxNNTR5EAl4d6bETDnM1xTyyD4E9cCFKI6dNSQ2UQKKlabDsTvlDN0UfEyf6+XnePASMuyKfl2bvmphtTXVVqAmICZ+tiVT4iVUXCGLnttNIIaLwswShtsl4TgG+/k5VTIzUZvbn19TnskJpgw1rt4+EVX7fNJcIVmAANDJYCm3mMKaeMtQG2J1kwu X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2018 21:10:57.8424 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 57d1898e-108b-4b49-9bcf-08d57eefc386 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR12MB0155 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.41.70 Subject: [Qemu-devel] [PATCH v10 07/28] docs: add AMD Secure Encrypted Virtualization (SEV) 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: Peter Maydell , Brijesh Singh , kvm@vger.kernel.org, "Michael S. Tsirkin" , Stefan Hajnoczi , Alexander Graf , "Edgar E. Iglesias" , Markus Armbruster , Bruce Rogers , Christian Borntraeger , Marcel Apfelbaum , Borislav Petkov , Thomas Lendacky , Eduardo Habkost , Richard Henderson , "Dr. David Alan Gilbert" , Alistair Francis , Cornelia Huck , Peter Crosthwaite , Paolo Bonzini Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Create a documentation entry to describe the AMD Secure Encrypted Virtualization (SEV) feature. Cc: Paolo Bonzini Signed-off-by: Brijesh Singh --- docs/amd-memory-encryption.txt | 92 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 docs/amd-memory-encryption.txt diff --git a/docs/amd-memory-encryption.txt b/docs/amd-memory-encryption.txt new file mode 100644 index 000000000000..72a92b6c6353 --- /dev/null +++ b/docs/amd-memory-encryption.txt @@ -0,0 +1,92 @@ +Secure Encrypted Virtualization (SEV) is a feature found on AMD processors. + +SEV is an extension to the AMD-V architecture which supports running encrypted +virtual machine (VMs) under the control of KVM. Encrypted VMs have their pages +(code and data) secured such that only the guest itself has access to the +unencrypted version. Each encrypted VM is associated with a unique encryption +key; if its data is accessed to a different entity using a different key the +encrypted guests data will be incorrectly decrypted, leading to unintelligible +data. + +The key management of this feature is handled by separate processor known as +AMD secure processor (AMD-SP) which is present in AMD SOCs. Firmware running +inside the AMD-SP provide commands to support common VM lifecycle. This +includes commands for launching, snapshotting, migrating and debugging the +encrypted guest. Those SEV command can be issued via KVM_MEMORY_ENCRYPT_OP +ioctls. + +Launching +--------- +Boot images (such as bios) must be encrypted before guest can be booted. +MEMORY_ENCRYPT_OP ioctl provides commands to encrypt the images :LAUNCH_START, +LAUNCH_UPDATE_DATA, LAUNCH_MEASURE and LAUNCH_FINISH. These four commands +together generate a fresh memory encryption key for the VM, encrypt the boot +images and provide a measurement than can be used as an attestation of the +successful launch. + +LAUNCH_START is called first to create a cryptographic launch context within +the firmware. To create this context, guest owner must provides guest policy, +its public Diffie-Hellman key (PDH) and session parameters. These inputs +should be treated as binary blob and must be passed as-is to the SEV firmware. + +The guest policy is passed as plaintext and hypervisor may able to read it +but should not modify it (any modification of the policy bits will result +in bad measurement). The guest policy is a 4-byte data structure containing +several flags that restricts what can be done on running SEV guest. +See KM Spec section 3 and 6.2 for more details. + +Guest owners provided DH certificate and session parameters will be used to +establish a cryptographic session with the guest owner to negotiate keys used +for the attestation. + +LAUNCH_UPDATE_DATA encrypts the memory region using the cryptographic context +created via LAUNCH_START command. If required, this command can be called +multiple 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 encrypted +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 the firmware. The guest owner may wait to provide the guest +confidential information until it can verify the attestation measurement. +Since the guest owner knows 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 destroy's the cryptographic +context. + +See SEV KM API Spec [1] 'Launching a guest' usage flow (Appendix A) for the +complete flow chart. + +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 DEBUG_DECRYPT and DEBUG_ENCRYPT commands access the guest +memory region for debug purposes. + +Snapshot/Restore +----------------- +TODO + +Live Migration +---------------- +TODO + +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_Virtualizatoin_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 From patchwork Wed Feb 28 21:10:08 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brijesh Singh X-Patchwork-Id: 879413 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="SzVS2viZ"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zs7wp0d1Yz9s23 for ; Thu, 1 Mar 2018 08:28:58 +1100 (AEDT) Received: from localhost ([::1]:47052 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er9HU-00086C-5j for incoming@patchwork.ozlabs.org; Wed, 28 Feb 2018 16:28:56 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53100) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er90E-0001GP-WA for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:11 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1er90A-0005ew-Ep for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:06 -0500 Received: from mail-dm3nam03on0049.outbound.protection.outlook.com ([104.47.41.49]:8130 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 1er90A-0005ck-2c for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:02 -0500 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=MWWfgMdlwBU0CV2YmlXe4JiTwLkJXSlg7ILLAqBIC3s=; b=SzVS2viZdax+mL3A+jcTg/pd4GKvR1HVZL8rDsQhwkmbuBvvErnaxAwUaLDQ4yKC1USr98lyoBFa4SrclMvHPpKTEtrgJW3DopAeCf/Mj7LOzd5JGHPSYK2FKWjr67klX5BjZIAds2DbELqPpZ4aArcoECq6Tdu++JB+GNugEuk= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; Received: from wsp141597wss.amd.com (165.204.78.1) by DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.527.15; Wed, 28 Feb 2018 21:10:58 +0000 From: Brijesh Singh To: qemu-devel@nongnu.org Date: Wed, 28 Feb 2018 15:10:08 -0600 Message-Id: <20180228211028.83970-9-brijesh.singh@amd.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180228211028.83970-1-brijesh.singh@amd.com> References: <20180228211028.83970-1-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: DM5PR10CA0008.namprd10.prod.outlook.com (2603:10b6:4:2::18) To DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 5ca106fe-9b2b-40ea-f536-08d57eefc442 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:DM2PR12MB0155; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 3:ycnhHI+ieZTLXJN454V3rzXu2jPhwjQyJaCLrhTuyY+a50prZ49TnWtzV0GPv/1FcQwzaMRxzaLhY96dG1o9KcBiDr+mQ62F48nZ/2OrCnMdDGGY2NK+PxJ25owq3eRkYcVc8oZcUt0wgoP2IAISPYbmxFg5wTeRWp8nPErAwi8zoXKtDUqi84VciY2LJ9TlNC7zTX6OtUBXNMUmWTVDcg4prUoCX9j4uLdY7aKUnMoO8/joXDB3hyZ1qQpjiDi8; 25:cV7tyxXFj1N1Bixoqif83hd+dO3atnReNAGQeU9rxIaYl8BtkYaX2oJde0DLJJMTR8FPV6p6NY+WsuUQ4qOFFtW7NHBAXfrO6kOULt+sni9TeZGt6bicoWbKSit8jd5xSrUxpbAF0bNceX4XH5IjXcPHhVF+wW5UFSEFnMnQpZBp5HPu+Bt3jVJbiixqif8xi61McojfvfityZrJliZ5/Ga3pR2/njynLJoOX6Um1fEyoMhyPBeyRtcdMYZlyQVXr1iQtQp/2bh1B6fQ7YUaB9ERaj6wr7Wo5QbZT0Pg0hTdQFtOX+bLnvo2mSrW9tZ6cG57Wne5DSpkoCKpqNCwwA==; 31:7YOceQakGkytxii3Os2pxWq2HWcFjcJFC1IwnF8y0zP74DmySwK3VtgyOSdpfwgdViNeN6HbBxmpbOgojo0TeHILWE/VlEBEb0scVb/bndfj5PzTSXtRYrTqc6LbcLksJhmhnQJX+AkQuBPf9b2Os9LUheOUNS4hPCRslSEAMW3WrggiWu51oFuV51Vd57ZTJY36+B8o/i64xbODsEQbjKygTrg0q3OfUO2HBxzHEKc= X-MS-TrafficTypeDiagnostic: DM2PR12MB0155: X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:NRhEvsD/iV1WUyXC8JOBiJCgEmOAwPVyMoNyQOth2U1ertjpr4xi7jncSjM9ger/3167fOgE/8poYkieFfKIrUTgD1RgxtHaH3BzuQiS1uEdjj3pcdahoIL2KZtYnZmJOizy8rKMR3YA6co9zLX5u6w/hwjJ47rej4n9iJB27pyXeiJqcDNJBfOqF0BgF4G2T2pXIxVLjuyxUmynEMNPenUS1H4OemXPFnGXz6Q2KuZ6BP+HGKFsNEpQGd0LuE4ks2s4K0kRmvikqtP312Z9vGLYbmZTUxlgyWxyIxXVBAlda/mTvQ9qKbbDsoFCCdr5q3Bn85S41SdpUORHkUG57J0xOZPq1YvF9hs5pdgttqhUhKrmfZV3BLjaFtgMxoGPJbW7Zq/gUMTSnlnD2PsIAndIFGZmASkSPxclwQEUbzAkSef+uq4uNHdQwh+5OP9J1uKOiaGzEKfWuyOHWzgvtWseacZjQsCb9roC/bUT2m26xGTY/OdZ01TJDzGTpmhO; 4:+clUKoc6oLYWERqdUEoTyPhbriAvNwfd+Z98ks9rlLpd6c8z6xT39KFxVQD+d3+GNORMIQ8RjExP941AcYCmd2onP62TU0BbFRmVolrl0mtHNGvil0XxNBc5AVvkP0ZMjLuwYrvGPMgK704on+xCGh6nBLsxJ4iNMMA52aNUhkT/mnHfp5GNrPPeQ6M/E3oseO+Cej/jfCrDHM9RN1ajs+1wpQDk9+GHsPe4E3dBMpJmVFIjeY/maeU2zBYuGCw8S7JW4eETT2gRxnBuLtvGZtRdyarKa2wJAhwFqGFKLPlxS7cTSacrhDk0BrqPxu/Cm5LaquW8qPfAZmqztrSqgg== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110)(17755550239193); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040501)(2401047)(8121501046)(5005006)(3231220)(944501219)(52105095)(3002001)(93006095)(93001095)(10201501046)(6055026)(6041288)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:DM2PR12MB0155; BCL:0; PCL:0; RULEID:; SRVR:DM2PR12MB0155; X-Forefront-PRVS: 0597911EE1 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(39860400002)(39380400002)(396003)(346002)(366004)(376002)(189003)(199004)(6486002)(6116002)(1076002)(2351001)(36756003)(16526019)(16586007)(54906003)(53416004)(26005)(53936002)(66066001)(186003)(47776003)(59450400001)(2361001)(478600001)(8666007)(316002)(81166006)(50226002)(8676002)(8936002)(386003)(106356001)(97736004)(5660300001)(2950100002)(6666003)(305945005)(4326008)(76176011)(7736002)(39060400002)(8656006)(105586002)(68736007)(50466002)(7696005)(51416003)(25786009)(48376002)(52116002)(3846002)(2906002)(86362001)(81156014)(7416002)(6916009); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR12MB0155; H:wsp141597wss.amd.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM2PR12MB0155; 23:+IhUmh+UNyjBTE9nnzOwBJ9RHb4Kx57oJ/OqsT9+N?= KdXJvZNXUZzDNoJp7D9fsIO3+M6kML2h1wz9cyBq42p5wB5nMeBnzK5Xy8G6Qt08lr/SkykgfAOyy9WQnkqgYG+8fL1RGh9+eG0nA/j7tNwjjVkosAPqFGgqWHJ78DD6IQ2kGQ7pXGY7zqE9fCW00n/xqKmNttr7PAedkG1a3URbYbku3NQWHBv2OOiVqKbz6BlffpwIb4g5+YLpG2Zp6drSL/9N5ef9/4/SDPpXD24HnH2C7MVzbOx4mO9ypPlxBx9Ri1B2kO7T+okV/YZdlgMWhwnDmEuWVH2+zSDLcoyQSyo0UqkyBJG3SuTG/ztWgUTvJnb6P/z8d4oz12SmLF5BdOvbgR6xfngwOb7CT1rWDo36ebDHC5n/1shck3PMNq62ZQOuj8O0tYS/CwDivjSLTI0zT0F/F8xCQUZ+Q+zIGiZqj/PxkWhIT1M6tBALRZmsEeAnH9A3cJGBmvlwuud+rwQ2IFWAogBONMPMSqHsj6/3xqXTwR2J/EE+yUBmgHIyt86t8FTTLTSoNkttzQPf8TDiYvuAzrWuhkZHGkRuTpl2WegOL4qpY+6ty/xy++MCActio4+sO74uSTDwez0kAPB6S6EbO9R63qv7Vzf4pKqv7SwbM6QyqO1BhIa1q7PPhYbfzF1WKwBHEFPeosmgXwVxycpR6BvyfQb25XslbqRZf+pWuvTcFpyiPdywELy4sMsQAtUroYPGRiYMMhH5lwsP9Dgjc2gea1YOkK5rqlo21w5MCmSuyJVPKXsr12crHLzEgYYhU2x0G6oroe0VbQGtFHVYWR5EeUhoeZ78fd3utuGbFS6//siyII9a7koMPdNmeR+hjfE50CUoxOVCnM+iHRjAq4TJQkNVNtPngu/WK7+v2I4GfPBPBpL0gPmQU24tNAt+fks2mYOSHg4K/7r6rr9h3x6TpcTNpVo6SEO6OMQri1jDgcjzzN2LB0SPiSgyDvmkq4qJfezI1eOIsWcut+qDvOx38MxQpHUuLwAK71YBlV3TA/zbNS2Aj8ypVG4W39QIS67lOCG2x3RjZu/8xi2o+eA13UwTgxTtgfRVVY9yFm7Ko0Ck4Et1bqL0J9U92I50iwpgC+tZwSgJZRkku9BHER7TRLJYhH7oPjsIp30y/26INU8GuKlfFTH7eK/28Ikz+ARCQA+1ibA4U+90I2DG0hL9O8+9Kzx2kxRIlMm8/P/2By6D12mNCmMuhOfP+SB6al6sNvfeiwsSlZlgVlKlQdySfRTuO37UA== X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 6:3CZjLTy6viTPu2iUoaW4sjrFrt1UmxYnOV38oCerDl0u2nhmw3czBg9F0GSVu741u27e9GvJTRIAYZ8W4FHU/pP6MDfNT8nYdnFGnMuSrY7sxQj8s7dm7ntItxR19HgT/B6h94BM1JyP0CDnz5Wj4uOagUaRWM/q2Nabm4wz5r19RV/D2ZIr42a5k9g50Modfb3jyr7EoNFQ1ujYRSo1jvEwGGVX3toqd6bhjeK9QS+dwZxGYoqD9fE4SarmWBsIVPcPIWhfWtJjK2I+5gGSqv0HIztDf0t94cA6z+AyHjDqBhE2eb1eXJTzp5rBk4OwMqfsH6OErp9QRa6pPZ/sgxj4CSDVdYZuRDOEPV9Rq4k=; 5:6Y5tQRcNHid0cvXwNbvK7oeZAilzDRp3Uh98wbCtACRDKQC0Q7HoznPn5hGSmn865nCihXC4jyLaV9IZACDqWO3qVC76UCFKcZjtWX4wrRSfnwUbbjMpw9MVOK+PfEYZyLbB8yfFR0kz3HgMRR4kkLAbvvflePY69IgLYiZUlyk=; 24:yPsqCWbx9Vpi0VO2Df0PUXaUW/lxKmhErai7c3b5fl36ckRVnnFHv5iVpT7a6xLVH1Xay9VIa5gH2g4VI3InBQZttSTkW4dnPiPu3XKwiSk=; 7:NOOpEQqU6nuyUeaDx/vjXVR4qs5q48yucWZJexngdgAz4Qicbu0w7BIZ5bMgysNDTwM8Vxg5KwtQj0D8hoHORQ12gVX4ErD3Dn6+s+aav28snWMTljNalGHZWbXSvgPx4M+X2Ctr7btuFn27ifdiJfXA1hOSiPlmDroSJQY/S792c9x+FnGMY1ffv3fBuqhuiM0X/4ZHeLX5VF9NrMcNpfswWzrbHC4cxqzQdTrv8f+vpj5yhPLeIokLwgxF+KUO SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:CCkRcGtrKZfryK5pxVj6pt/BRG60suZTW4SENO/+riQqgUFIm69NSo7SNOwietkkIx+MtAj55XFELWZHX5SeHSfJIAwAK8jR8sh3rm3mm5v1y7kgLJRInMz1+8Zf15sRrlS1/c1faRsYduEtWTfw8Y8zXn3jmlSJo+mbadzpL/gqZecK/DVs18um5+F5i0uDEfZu4LiEB165lPUPs4jnj+NMzaMj9CMdzqvu66Dea/mjcWrziGefqURbeZ/da85n X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2018 21:10:58.7643 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5ca106fe-9b2b-40ea-f536-08d57eefc442 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR12MB0155 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.41.49 Subject: [Qemu-devel] [PATCH v10 08/28] target/i386: add Secure Encrypted Virtulization (SEV) 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: Peter Maydell , Brijesh Singh , kvm@vger.kernel.org, "Michael S. Tsirkin" , Stefan Hajnoczi , Alexander Graf , "Edgar E. Iglesias" , Markus Armbruster , Bruce Rogers , Christian Borntraeger , Marcel Apfelbaum , Borislav Petkov , Thomas Lendacky , Eduardo Habkost , Richard Henderson , "Dr. David Alan Gilbert" , Alistair Francis , Cornelia Huck , Richard Henderson , Peter Crosthwaite , Paolo Bonzini Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Add a new memory encryption object 'sev-guest'. The object will be used to create enrypted VMs on AMD EPYC CPU. The object provides the properties to pass guest owner's public Diffie-hellman key, guest policy and session information required to create the memory encryption context within the SEV firmware. e.g to launch SEV guest # $QEMU \ -object sev-guest,id=sev0 \ -machine ....,memory-encryption=sev0 Cc: Paolo Bonzini Cc: Richard Henderson Cc: Eduardo Habkost Signed-off-by: Brijesh Singh --- docs/amd-memory-encryption.txt | 17 +++ qemu-options.hx | 44 ++++++++ target/i386/Makefile.objs | 2 +- target/i386/sev.c | 228 +++++++++++++++++++++++++++++++++++++++++ target/i386/sev_i386.h | 61 +++++++++++ 5 files changed, 351 insertions(+), 1 deletion(-) create mode 100644 target/i386/sev.c create mode 100644 target/i386/sev_i386.h diff --git a/docs/amd-memory-encryption.txt b/docs/amd-memory-encryption.txt index 72a92b6c6353..8711da9ed598 100644 --- a/docs/amd-memory-encryption.txt +++ b/docs/amd-memory-encryption.txt @@ -35,10 +35,21 @@ in bad measurement). The guest policy is a 4-byte data structure containing several flags that restricts what can be done on running SEV guest. See KM Spec section 3 and 6.2 for more details. +The guest policy can be provided via the 'policy' property (see below) + +# ${QEMU} \ + sev-guest,id=sev0,policy=0x1...\ + Guest owners provided DH certificate and session parameters will be used to establish a cryptographic session with the guest owner to negotiate keys used for the attestation. +The DH certificate and session blob can be provided via 'dh-cert-file' and +'session-file' property (see below + +# ${QEMU} \ + sev-guest,id=sev0,dh-cert-file=,session-file= + LAUNCH_UPDATE_DATA encrypts the memory region using the cryptographic context created via LAUNCH_START command. If required, this command can be called multiple times to encrypt different memory regions. The command also calculates @@ -59,6 +70,12 @@ context. See SEV KM API Spec [1] 'Launching a guest' usage flow (Appendix A) for the complete flow chart. +To launch a SEV guest + +# ${QEMU} \ + -machine ...,memory-encryption=sev0 \ + -object sev-guest,id=sev0,cbitpos=47,reduced-phys-bits=5 + Debugging ----------- Since memory contents of SEV guest is encrypted hence hypervisor access to the diff --git a/qemu-options.hx b/qemu-options.hx index a6648ca073f2..f961b62bcbb2 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -4313,6 +4313,50 @@ contents of @code{iv.b64} to the second secret data=$SECRET,iv=$( + * + * This work is licensed under the terms of the GNU GPL, version 2 or later. + * 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 "sev_i386.h" +#include "sysemu/sysemu.h" + +#define DEFAULT_GUEST_POLICY 0x1 /* disable debug */ +#define DEFAULT_SEV_DEVICE "/dev/sev" + +static void +qsev_guest_finalize(Object *obj) +{ +} + +static char * +qsev_guest_get_session_file(Object *obj, Error **errp) +{ + QSevGuestInfo *s = QSEV_GUEST_INFO(obj); + + return s->session_file ? g_strdup(s->session_file) : NULL; +} + +static void +qsev_guest_set_session_file(Object *obj, const char *value, Error **errp) +{ + QSevGuestInfo *s = QSEV_GUEST_INFO(obj); + + s->session_file = g_strdup(value); +} + +static char * +qsev_guest_get_dh_cert_file(Object *obj, Error **errp) +{ + QSevGuestInfo *s = QSEV_GUEST_INFO(obj); + + return g_strdup(s->dh_cert_file); +} + +static void +qsev_guest_set_dh_cert_file(Object *obj, const char *value, Error **errp) +{ + QSevGuestInfo *s = QSEV_GUEST_INFO(obj); + + s->dh_cert_file = g_strdup(value); +} + +static char * +qsev_guest_get_sev_device(Object *obj, Error **errp) +{ + QSevGuestInfo *sev = 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 = QSEV_GUEST_INFO(obj); + + sev->sev_device = 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", + "SEV device to use", NULL); + object_class_property_add_str(oc, "dh-cert-file", + qsev_guest_get_dh_cert_file, + qsev_guest_set_dh_cert_file, + NULL); + object_class_property_set_description(oc, "dh-cert-file", + "guest owners DH certificate (encoded with base64)", NULL); + object_class_property_add_str(oc, "session-file", + qsev_guest_get_session_file, + qsev_guest_set_session_file, + NULL); + object_class_property_set_description(oc, "session-file", + "guest owners session parameters (encoded with base64)", NULL); +} + +static void +qsev_guest_set_handle(Object *obj, Visitor *v, const char *name, + void *opaque, Error **errp) +{ + QSevGuestInfo *sev = QSEV_GUEST_INFO(obj); + uint32_t value; + + visit_type_uint32(v, name, &value, errp); + sev->handle = value; +} + +static void +qsev_guest_set_policy(Object *obj, Visitor *v, const char *name, + void *opaque, Error **errp) +{ + QSevGuestInfo *sev = QSEV_GUEST_INFO(obj); + uint32_t value; + + visit_type_uint32(v, name, &value, errp); + sev->policy = value; +} + +static void +qsev_guest_set_cbitpos(Object *obj, Visitor *v, const char *name, + void *opaque, Error **errp) +{ + QSevGuestInfo *sev = QSEV_GUEST_INFO(obj); + uint32_t value; + + visit_type_uint32(v, name, &value, errp); + sev->cbitpos = value; +} + +static void +qsev_guest_set_reduced_phys_bits(Object *obj, Visitor *v, const char *name, + void *opaque, Error **errp) +{ + QSevGuestInfo *sev = QSEV_GUEST_INFO(obj); + uint32_t value; + + visit_type_uint32(v, name, &value, errp); + sev->reduced_phys_bits = value; +} + +static void +qsev_guest_get_policy(Object *obj, Visitor *v, const char *name, + void *opaque, Error **errp) +{ + uint32_t value; + QSevGuestInfo *sev = QSEV_GUEST_INFO(obj); + + value = sev->policy; + visit_type_uint32(v, name, &value, errp); +} + +static void +qsev_guest_get_handle(Object *obj, Visitor *v, const char *name, + void *opaque, Error **errp) +{ + uint32_t value; + QSevGuestInfo *sev = QSEV_GUEST_INFO(obj); + + value = sev->handle; + visit_type_uint32(v, name, &value, errp); +} + +static void +qsev_guest_get_cbitpos(Object *obj, Visitor *v, const char *name, + void *opaque, Error **errp) +{ + uint32_t value; + QSevGuestInfo *sev = QSEV_GUEST_INFO(obj); + + value = sev->cbitpos; + visit_type_uint32(v, name, &value, errp); +} + +static void +qsev_guest_get_reduced_phys_bits(Object *obj, Visitor *v, const char *name, + void *opaque, Error **errp) +{ + uint32_t value; + QSevGuestInfo *sev = QSEV_GUEST_INFO(obj); + + value = sev->reduced_phys_bits; + visit_type_uint32(v, name, &value, errp); +} + +static void +qsev_guest_init(Object *obj) +{ + QSevGuestInfo *sev = QSEV_GUEST_INFO(obj); + + sev->sev_device = g_strdup(DEFAULT_SEV_DEVICE); + sev->policy = DEFAULT_GUEST_POLICY; + object_property_add(obj, "policy", "uint32", qsev_guest_get_policy, + qsev_guest_set_policy, NULL, NULL, NULL); + object_property_add(obj, "handle", "uint32", qsev_guest_get_handle, + qsev_guest_set_handle, NULL, NULL, NULL); + object_property_add(obj, "cbitpos", "uint32", qsev_guest_get_cbitpos, + qsev_guest_set_cbitpos, NULL, NULL, NULL); + object_property_add(obj, "reduced-phys-bits", "uint32", + qsev_guest_get_reduced_phys_bits, + qsev_guest_set_reduced_phys_bits, NULL, NULL, NULL); +} + +/* sev guest info */ +static const TypeInfo qsev_guest_info = { + .parent = TYPE_OBJECT, + .name = TYPE_QSEV_GUEST_INFO, + .instance_size = sizeof(QSevGuestInfo), + .instance_finalize = qsev_guest_finalize, + .class_size = sizeof(QSevGuestInfoClass), + .class_init = qsev_guest_class_init, + .instance_init = qsev_guest_init, + .interfaces = (InterfaceInfo[]) { + { TYPE_USER_CREATABLE }, + { } + } +}; + +static void +sev_register_types(void) +{ + type_register_static(&qsev_guest_info); +} + +type_init(sev_register_types); diff --git a/target/i386/sev_i386.h b/target/i386/sev_i386.h new file mode 100644 index 000000000000..caf879c3b874 --- /dev/null +++ b/target/i386/sev_i386.h @@ -0,0 +1,61 @@ +/* + * QEMU Secure Encrypted Virutualization (SEV) support + * + * Copyright: Advanced Micro Devices, 2016-2018 + * + * Authors: + * Brijesh Singh + * + * This work is licensed under the terms of the GNU GPL, version 2 or later. + * See the COPYING file in the top-level directory. + * + */ + +#ifndef QEMU_SEV_I386_H +#define QEMU_SEV_I386_H + +#include "qom/object.h" +#include "qapi/error.h" +#include "sysemu/kvm.h" +#include "qemu/error-report.h" + +#define SEV_POLICY_NODBG 0x1 +#define SEV_POLICY_NOKS 0x2 +#define SEV_POLICY_ES 0x4 +#define SEV_POLICY_NOSEND 0x8 +#define SEV_POLICY_DOMAIN 0x10 +#define SEV_POLICY_SEV 0x20 + +#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. + * + * # $QEMU \ + * -object sev-guest,id=sev0 \ + * -machine ...,memory-encryption=sev0 + */ +struct QSevGuestInfo { + Object parent_obj; + + char *sev_device; + uint32_t policy; + uint32_t handle; + char *dh_cert_file; + char *session_file; + uint32_t cbitpos; + uint32_t reduced_phys_bits; +}; + +struct QSevGuestInfoClass { + ObjectClass parent_class; +}; + +#endif From patchwork Wed Feb 28 21:10:09 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Brijesh Singh X-Patchwork-Id: 879397 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="WD6LgVJr"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zs7bN1k4Zz9s15 for ; Thu, 1 Mar 2018 08:13:52 +1100 (AEDT) Received: from localhost ([::1]:46954 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er92s-000315-54 for incoming@patchwork.ozlabs.org; Wed, 28 Feb 2018 16:13:50 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53141) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er90G-0001GU-1D for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:10 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1er90B-0005gy-Ay for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:07 -0500 Received: from mail-dm3nam03on0040.outbound.protection.outlook.com ([104.47.41.40]:59821 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 1er90B-0005fB-1W for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:03 -0500 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=B6gnT3uyVUyoZ27tLe09lmyBTnf5vpR95dAS54UHHP8=; b=WD6LgVJrKdG34diTJ8LDI1jK14aV/3lw7YpQx3QcZJVzOxPxxwW/pMRIhyneT1sqxoR5XFOFVeUyrnYd4fvtQiyky7jGtw8C7r+CSzgt3PbySRkdYHXcsMokpu37OQN8NWeG5K0I5R6Bh0SOcBJZqCpKnInbs0foLSXr6gECA2k= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; Received: from wsp141597wss.amd.com (165.204.78.1) by DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.527.15; Wed, 28 Feb 2018 21:10:59 +0000 From: Brijesh Singh To: qemu-devel@nongnu.org Date: Wed, 28 Feb 2018 15:10:09 -0600 Message-ID: <20180228211028.83970-10-brijesh.singh@amd.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180228211028.83970-1-brijesh.singh@amd.com> References: <20180228211028.83970-1-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: DM5PR10CA0008.namprd10.prod.outlook.com (2603:10b6:4:2::18) To DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 3667bfcd-36f4-4d5c-6453-08d57eefc4d4 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:DM2PR12MB0155; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 3:BJi2pvb2vT2ZJpKB6G7qQ+TMEMtwxWrgzvh8X06KT7wVXd209/+4RqJMKhTFREKPIiU/aCfni9JUjX7QPX/hjYFZYHza4S3r//TS94BfuBk3cKd7INEmPCYBj8z3QAfnCTW1jGTohsW/vmj6BDhBD/2HtBjCBFQ0i9zebllaqT6I7BKJ7TxhSqrY34hyxw8kEaVP1zXZrtTWY8XnDaS64musfNriW5eyCp8+rhLCVMUdtUijAQxW7vyOo8oF/sib; 25:jPgbOyL76QVgDekEOBNeabv4R1dg/by9uJIFVpQtrzGET422eBhnkJiOC7g40QXBVJnMTdhChfL8hUOYk5RFKpXe5IjB091OcYV8+1ATG/wWwEh5IN7CJh3aXXrbHzuPht9OVWvJkQGdDzUig+7c9UL6OdDlYVzWAQfUZe2BL5qt5vnIzfJ2pyDrXFW34gufvpjXNM1AJjYBygiNuFC+HptafDAnmdduwp4+zNcj/u3ryfVgp/Y1zugwp1SZ56JjoN517jqqf+D54+4fN76shFVzSW0wfHd0BRok5T5ByxDASrfhA7ovSulK0nQBnkxbjlligmtfP4T67BSyFvYznw==; 31:o4SUMj8kUZtNLgkugAGX9dcsFcemFojaWcwxbJRJs/HCaCwPexrqS6CULkYJOQYIL80hHnN+B6Kx+pPfjGAZ9IY7r8LA/yClObM/l61gfhvbX60VoFbWXOTFeHtsKDc4b75YLO8WSTP4/QBWZ+CF59y2tRQXsYz4FuX9sdkOCDJew2egVfTCJ0Nk5sVdmU8Kby4d2zsO9YvW1wLvQ7sLctqsJPz9SJPk7b2BOvkqjlE= X-MS-TrafficTypeDiagnostic: DM2PR12MB0155: X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:cMfzyjtPRBduTPkoPM+N2WS/v/ZFTjFSUliutXHPhosydRXXgF3uwEzbj/xZI3JEmPHH+asOMDA0hf5dv3MqQhe5pP1FytovcTiB/MDXaSsjS2QErhNKLx7inAKNT2vfQATekHCI2Gjv+wVMIWz+G/s8SpkWIqAMPJxBgJD3D2h48Kk8af0tI46UTl6RbM8sIAfoxhIeU2XWhu8YCe/2GK3Rrh3LiCab8J+KfWNwciLgzmIpZnBG+EUnEOJafY8q/oEXk1TdMcoZAaqRzXSnfCwoZBrepSf3QtfNgu8YCaftV0EzvE6igcVc/fHEwUolfJQ8z85gpf19Zo/w4J0Ju46KWbdFZQ+PXwzABtHHP2yQMHFOtlCvgkrYFAoaLtaIrcd43lJh3av2uWGOFNLtRTW07tk4Tqn0Cc0BTLyFisDNr3Ifl3bm/vQuMSLXaiB3rIe0T4qewses8e5EJc/e09NDrcru9Cn1VNWsBhE7FM4yfM/0D8fX8CiJUQ3FnJbK; 4:uMGsiFs3QfDcKCoTkZyKSsfDgclhNxkQYAehadcsctkaYFgX9Tl9InknDiFA1J5B2KgMC+CjhlQhaY1gZxrEivJBA6zLBy5t6oic6NtdhrbmHW6z34VXOjN3HC4Xhz3222z2noJ5avlYssocfBPHMSkJOtWigBZqq+Y76FSlRZj1UIrrHHdAHhRIkqYXtBdjbiBeUW+olAmPKszRZNzEUwOithBUTJccF8brlxh6a9m+VG4qBOGhZjsMBd4i5YS0Bt2WrdRccrFLw2ijCu5Qa5G0xWTBxH9kDEulxnXeWIW1dkdgnolLCazkPc6ZRdp6 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040501)(2401047)(8121501046)(5005006)(3231220)(944501219)(52105095)(3002001)(93006095)(93001095)(10201501046)(6055026)(6041288)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:DM2PR12MB0155; BCL:0; PCL:0; RULEID:; SRVR:DM2PR12MB0155; X-Forefront-PRVS: 0597911EE1 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(39860400002)(39380400002)(396003)(346002)(366004)(376002)(189003)(199004)(6486002)(6116002)(1076002)(2351001)(36756003)(16526019)(54906003)(53416004)(26005)(53936002)(66066001)(186003)(47776003)(59450400001)(2361001)(478600001)(8666007)(316002)(81166006)(50226002)(8676002)(8936002)(386003)(106356001)(2870700001)(97736004)(5660300001)(2950100002)(6666003)(23676004)(305945005)(4326008)(76176011)(7736002)(39060400002)(8656006)(105586002)(68736007)(50466002)(7696005)(25786009)(52116002)(3846002)(2906002)(86362001)(81156014)(7416002)(6916009); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR12MB0155; H:wsp141597wss.amd.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM2PR12MB0155; 23:ExVx8sFasYm4fCLk6Phmma6eLO2oSgQcT4lBXqfZf?= ydXUBjQWZ4Ye10Qdnh7SDVMplo3akWxnU0DgMlYKj7SVjdrZOQD7nQXZR3dUqImiVN6XKq+oj0sQOFxsyI/NEBgs88GwTZEK7RADuTTfQ1NX93Rj5MCEdeXXRawWVbYquho//0dCiOE6OdzidYnwdkvtHCYm5gNEuuoCE+Re/XFL6VGb0RKM4XMhUeYyD3/KLSBvvWwG1dCeifLhwTFgo6R6LjKqzIbdBvQV1OtS1/xkhI7MV54Qo83Bhg2k/qef5fNN5rXWQ2m2Oic2WSjh5Jl3lsA+i1pT7zlWcB157PiIMUIsZ1pEvOmCFTuepLY+tsCUmA4Cvw2PoB0nukjvsItsWoQQqENco4XyshFnza+c/S2Hhz05drpPp5XftGyGk5/JaRekqjWUHt05z4iVBHk8l4fZLp22t/SfT+maBnkar/bXnW7phZSGQMvs9Tw2STa9AaHwqZ26GRbveytOUaKBBtnlpNw+585b0i3topoHW+bDhf0XLUZANVjpF0asbkXWNqqmeAo0njYlfKZ4ght4ScEi5zE8rNt5qmHZbpalvk/II/c3QTgx0OlXgctb6Jt0j/U+/3+I9Jn6y89pzeQbin+r/fwLKf17ipJNGS94It3paj8oLo7Z5EFY5NCffgMd4EM82ozjb7CS/dEtxDZLkCGs23SjZftzW7nN7HUSzhTB/3CdOJ11xf/tsZ3pquiIqRwM3VI2BYsx4qljCpNPSDOiGsAT8raDQS+srher44mlFBJxNtiC86wXww+X3ag4b2LJDcoRcR15V28EUVM31Ulz3eQWJJ47kqiq0qx+q2SSdUhEKtGpr13NWsVShF8GHglOFekxmoTGm9h8hZR45WUFj0iBLw3erX+TSpKx8hr9A+G/voM6QI2BNAKt/uOH/BXzYabutXa93mYTWHDZf/xWyyxznoCQ3UZpMwgY3Er9V1M+RL48ItoeJYnz+sxGE39vHITULhhrJCL2J+q5paPuwMydSfC0HGwaUIvxPoxQUBXNeRZJdrqqAChksjwA3/dVFP+k8ovwDeWshhtw30BiE0sGyQgKjePJwZJLvshJI5hVLJpRfHCgZdJ7VrmIuE1fDHd90fJFTl0LkfIO5+QNdi44yIPyvRe3qSVSfL/6gmHU3fQH7i6FJ7QVmN8MpRF7TFMdViaes3qU2CQVCkRhcdS1HoXIPdOoNbiV038IAgKuNjroCD9Gmov+ik+to+n/tQkF3bNEaEErmMZ X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 6:DWT35i3fgAH4J9S53AXaO8l/RIzOz+S3yE4sTqRrdRtJw6XuoL6cQML9mhnJexFGO3Q9wHI2Uop5gl6sNytKicYsp5EfurYywQLBDlyIOeR756iQQDpe9zoclrfHVSzvJ3ZZlzuKmqdw4oGg2F6mhsjMDrMFcMMeU23oCYP5IEmDP5n47zZRlaescZWy1EYnn4oyGI4LmBenN0dpsYdNdospwsw3P1AsVxzeU7i/t2M3e8cJGpw9vVPs/0BHNJ6HLO+FEzUnfw4UHyEISPZDZOYmp9FkM+v7ULaGO/t0iTsixlgxOfyme0+B3uzPSMl/GsqMtf6dWQhAHIknsih6Sxq8QoHSzuTlKswMl0Z2xQc=; 5:gxJK1M/TAQOJBXLleCtinsR0jDRHbb66Vtn9NDLfmzBk95CTpgdyFgKE+8e7acfVmFXuhUXRKOA+jZ3HayR9Gl4KMqDHEwNovstllAmTfQJ4iuIDQPfKmJj2VpFc/zMf3rfEXI+zug3K0bE/Md1Gt0Um5lXPmdAGkarr+uSicdg=; 24:/Iva4e8tpHOXOL72ZvQHf4lUd+JSYZ7cgCgk5wwhgnEf6IXKYMllyQval8hfhp0mFNG/3EUjMe/DHGyYKxuu9JZijJUtQMhl7GJW1H9IjEI=; 7:f7yTkXlRysDXkNFJ3ztwY4l+I430BuyVW9DgwPAx4GewZLlCj5e7hW0LHZX+r7bB8CmElwOxIulRdggVBXLB2/lqbjF+c6A3sLoCPgwq5JyRRz7Oyg4iFkGH2qkm+oDJVE2gsGAIB/UW93lzj++KXYAEUQOWL1qDCy82uar7CjmscwB7Bif9YDdLIGN5dytcG1zByDX2Grcx8pntzBV7hEYgv5ITCIZHp/n8KhnNt5GC0aH3xYcYPsYA/jE81jh5 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:TYM4Fffl0AsMcSoQ3+4SZcQSrMlCvGldl0Ur8m8MRCd1SvF92T5a3i4d7qxhZ1XN3bhu3hrynU9hK/FewUDDrlmNxO/0hGeg42JAaJr/M95t3510VTWSIzkBORZXMXLdGtrRGWYwoNvvKeywhUa6SMpBU7Eqva6y0VqEinygA5fhCz/jaBwA0UefFFJeKjsO6KZJwFnLMJjmcTTXRebI7/vrDvqaqMnB+/t2ymScexP7UsBom74yn3gW7/8vQhC/ X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2018 21:10:59.9986 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3667bfcd-36f4-4d5c-6453-08d57eefc4d4 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR12MB0155 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.41.40 Subject: [Qemu-devel] [PATCH v10 09/28] qmp: add query-sev 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: Peter Maydell , Brijesh Singh , kvm@vger.kernel.org, "Michael S. Tsirkin" , Stefan Hajnoczi , Alexander Graf , "Edgar E. Iglesias" , Markus Armbruster , Bruce Rogers , Christian Borntraeger , Marcel Apfelbaum , Borislav Petkov , Thomas Lendacky , Eduardo Habkost , Richard Henderson , "Dr. David Alan Gilbert" , Alistair Francis , Cornelia Huck , Peter Crosthwaite , Paolo Bonzini Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" The QMP query command can used to retrieve the SEV information when memory encryption is enabled on AMD platform. Cc: Eric Blake Cc: "Daniel P. Berrangé" Cc: "Dr. David Alan Gilbert" Cc: Markus Armbruster Signed-off-by: Brijesh Singh Reviewed-by: Eric Blake --- monitor.c | 7 ++++++ qapi-schema.json | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++ target/i386/monitor.c | 8 +++++++ 3 files changed, 76 insertions(+) diff --git a/monitor.c b/monitor.c index d77edc4bb692..356d550aaf2d 100644 --- a/monitor.c +++ b/monitor.c @@ -983,6 +983,7 @@ static void qmp_unregister_commands_hack(void) #endif #ifndef TARGET_I386 qmp_unregister_command(&qmp_commands, "rtc-reset-reinjection"); + qmp_unregister_command(&qmp_commands, "query-sev"); #endif #ifndef TARGET_S390X qmp_unregister_command(&qmp_commands, "dump-skeys"); @@ -4157,6 +4158,12 @@ void qmp_rtc_reset_reinjection(Error **errp) { error_setg(errp, QERR_FEATURE_DISABLED, "rtc-reset-reinjection"); } + +SevInfo *qmp_query_sev(Error **errp) +{ + error_setg(errp, QERR_FEATURE_DISABLED, "query-sev"); + return NULL; +} #endif #ifndef TARGET_S390X diff --git a/qapi-schema.json b/qapi-schema.json index 0262b9f20bc6..467a06460ead 100644 --- a/qapi-schema.json +++ b/qapi-schema.json @@ -3189,3 +3189,64 @@ # Since: 2.11 ## { 'command': 'watchdog-set-action', 'data' : {'action': 'WatchdogAction'} } + +## +# @SevState: +# +# An enumeration of SEV state information used during @query-sev. +# +# Since: 2.12 +## +{ 'enum': 'SevState', + 'data': ['uninit', 'lupdate', 'lsecret', 'running', 'supdate', 'rupdate' ] } + +## +# @SevInfo: +# +# Information about Secure Encrypted Virtualization (SEV) support +# +# @enabled: true if SEV is active +# +# @api-major: SEV API major version +# +# @api-minor: SEV API minor version +# +# @build-id: SEV FW build id +# +# @policy: SEV policy value +# +# @state: SEV guest state +# +# @handle: SEV firmware handle +# +# Since: 2.12 +## +{ 'struct': 'SevInfo', + 'data': { 'enabled': 'bool', + 'api-major': 'uint8', + 'api-minor' : 'uint8', + 'build-id' : 'uint8', + 'policy' : 'uint32', + 'state' : 'SevState', + 'handle' : 'uint32' + } +} + +## +# @query-sev: +# +# Returns information about SEV +# +# Returns: @SevInfo +# +# Since: 2.12 +# +# Example: +# +# -> { "execute": "query-sev" } +# <- { "return": { "enabled": true, "api-major" : 0, "api-minor" : 0, +# "build-id" : 0, "policy" : 0, "state" : "running", +# "handle" : 1 } } +# +## +{ 'command': 'query-sev', 'returns': 'SevInfo' } diff --git a/target/i386/monitor.c b/target/i386/monitor.c index 55ea10deb8ef..f429b1fc5383 100644 --- a/target/i386/monitor.c +++ b/target/i386/monitor.c @@ -30,6 +30,8 @@ #include "hw/i386/pc.h" #include "sysemu/kvm.h" #include "hmp.h" +#include "sev_i386.h" +#include "qmp-commands.h" static void print_pte(Monitor *mon, CPUArchState *env, hwaddr addr, @@ -665,3 +667,9 @@ void hmp_info_io_apic(Monitor *mon, const QDict *qdict) ioapic_dump_state(mon, qdict); } } + +SevInfo *qmp_query_sev(Error **errp) +{ + error_setg(errp, "SEV feature is not available"); + return NULL; +} From patchwork Wed Feb 28 21:10:10 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brijesh Singh X-Patchwork-Id: 879401 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="l06sWdIi"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zs7gw4pzZz9s23 for ; Thu, 1 Mar 2018 08:17:48 +1100 (AEDT) Received: from localhost ([::1]:46981 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er96g-0006Pv-KH for incoming@patchwork.ozlabs.org; Wed, 28 Feb 2018 16:17:46 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53142) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er90G-0001GV-1P for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:10 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1er90B-0005hC-LO for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:07 -0500 Received: from mail-dm3nam03on0040.outbound.protection.outlook.com ([104.47.41.40]:59821 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 1er90B-0005fB-Bc for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:03 -0500 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=cOnc1P1wctgY1YibWGFUBBzMdBnXweNpGN6vslTLgiU=; b=l06sWdIiercKFzTqmIhnTrbsUiVBMrrqQ6a5PbWC9lQU+ic/8cbThUglITVRcjtUgRID6pqF0fdXlzkKh+AD1VzBSAnGAhYfyJcciSO6Q4RnnR+3E+Tf2C7MPm0fjliRD/sdGzWXGy+3fQKEb8wNEMAYJgU+Pne5xeQ0qdDhIv4= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; Received: from wsp141597wss.amd.com (165.204.78.1) by DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.527.15; Wed, 28 Feb 2018 21:11:00 +0000 From: Brijesh Singh To: qemu-devel@nongnu.org Date: Wed, 28 Feb 2018 15:10:10 -0600 Message-Id: <20180228211028.83970-11-brijesh.singh@amd.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180228211028.83970-1-brijesh.singh@amd.com> References: <20180228211028.83970-1-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: DM5PR10CA0008.namprd10.prod.outlook.com (2603:10b6:4:2::18) To DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 8cb9dee5-7879-41c9-d37c-08d57eefc565 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:DM2PR12MB0155; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 3:B7W2gj8SYc+roTRjSQ7CkL/uzLpBCtsE5kwHnsfK2ee+ExMf20/ve8Hj9DxVudKUrDMMVZ9dWXCHIT4G5t7UHivR4W/pb+rYVEHkB343XRNSt1NFyYL7MC2sQt0eOFaGgAbseD4gXTs4xdUmKlnh6BdAz5QLKyDI5XUkbNeljpWGR+QjJQ2CT2q9jTjYLsO5vvuWm3qb3ZJP+oHhFg5XB5kQ0n4saMx42W/cZG0zWIb256gdiBWmivugCf5UCS5H; 25:SjiVobwK/dABQ3QvvKIHnUM0zJOLFsRhy2IgUoKJlIEmHMWc8jCdECfiXwAg2IILX/Bo/Y9H1j9fjnEUjcjSSGnC5hbQp3o3mir6uvosEgUfpoaD+ZdCeMqJ91ue5+upNMGO51jZLYqX5RU/ooalPf1B5IMyKmRA2erGmXn9hxSpqH0zgf0lh83gvSjMVywzBTcBA+3D1pnIQTh5zy1aLyS7XnJICqqzohRCB4m3sidy738ePNB28jlNFoh1mzF00FWauSj3p3ZBn8yUCo6lPHw6sni4Yxm6snjmEPcomYCJ6I9lwtTVLEJpcULLY5jGA9d1VokMK4oM95bvq4WeMA==; 31:FtTMa9Gt+Xymm+DjslIQngDx5ChODNgtIYa3p1lPFuilhpWvJ+M4ZoQoYu+YiHSJD+/7VrXXCySoeO1ij5lYczrL5Fzi4gutMLhPqfH/Na0TM2omDn06PjVjZTzEHVmOkMt7aaSi3qCt4r4QEewyOOctO2dXaGrc0HX3susbxuZXntxo52BSeeH8LweI0Jv8XV/QCiqElSS2o1PJrl2ukgCeove9FSw0nWLJw+LDgdQ= X-MS-TrafficTypeDiagnostic: DM2PR12MB0155: X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:8aNUuPpQ4vNNoAa3hlNFQnKqfOYBy+zEMW/e4IAPxRGxVqcSElxAATZ5DEGyZ+YbGJIcuhnfxXhn+vvPjKVIl36PqtYqxsBYIx0ZNtgKd+z5siujTmKiY8qyZSZBfNEqwg/B71DWxOJlCxIAn3yOQ2RSQnToZGDhvRqT3HUS/FpgyqVvRPFe8N4iGbGSfqACnzqllkRUZeo+T2mV4mHQFMCUcu8RCNmi1GiGjMTSoz14tEiYUMW9docFCIVeBUDSvGSTncCdXM16HAw4Lnh0vlqwc34cU2XSFQ3e6vg82xxdr3hzalcBW7B8ephV5ww4i+mokY0/Z6gFaXlMouD1FBYtw/Wq/gBqnIdICxjD0MFx1+AGOdoRPT5DlM875c85mHgc7OQXVA/z3uQVMv3Rk8MCjHtl5Ef93GUMTexzDYoBoSp5RmPGlzuv9wXAGW8n3GY7DbaQNU8zX9XMdCLpu4QTRv1fd1VW16/+iDxIbbDkyY9wSFyxdqTJBlNHxrzf; 4:Vk3hblJdr/Pb0rTfjkzK0EmQj6AYa++RnRXZ00+T2owoYDjDtUZOtPVXDigQQSA1jYvzhfnLxWu3flODXbYSrNNWjItA6oN2MrBaMk19yT+ZmavWvQwJJOjjMoqNjyYnLh/q8ZldDvf5Jc3n6BIsWKseGA7UoI/IEwf3/43feYZUBRlW74OKKkwoSUwANQMh1IbENexUWZyW6O+vdKAjbsc5MTRITI+KIdZV4DYB/ItY7zQmVXYp1gFYLXnUb72bmAR1BrpUxmgO0Y5TJx3no58F2ebfiPTtLvO5YkCRfqZujvmrp7ThIOzcyYbSqMYD X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040501)(2401047)(8121501046)(5005006)(3231220)(944501219)(52105095)(3002001)(93006095)(93001095)(10201501046)(6055026)(6041288)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:DM2PR12MB0155; BCL:0; PCL:0; RULEID:; SRVR:DM2PR12MB0155; X-Forefront-PRVS: 0597911EE1 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(1496009)(39860400002)(39380400002)(396003)(346002)(366004)(376002)(189003)(199004)(6486002)(6116002)(1076002)(2351001)(36756003)(16526019)(16586007)(54906003)(53416004)(26005)(53936002)(66066001)(186003)(47776003)(6306002)(59450400001)(2361001)(966005)(478600001)(8666007)(316002)(81166006)(50226002)(8676002)(8936002)(386003)(106356001)(97736004)(5660300001)(2950100002)(6666003)(305945005)(4326008)(76176011)(7736002)(39060400002)(8656006)(105586002)(68736007)(50466002)(7696005)(51416003)(25786009)(48376002)(52116002)(3846002)(2906002)(86362001)(81156014)(7416002)(6916009)(2004002); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR12MB0155; H:wsp141597wss.amd.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM2PR12MB0155; 23:VITnJPspp/Iw1qJ3jiofP0aSWnE50xUPHkV7SN6Ot?= vO93l40iQbvx4YXkYcPAYhoQxYfCcwMnSQLJ8ByUT9Me+X32KXYGoFVtMqzXFxgq+mKzzMy+5FY3Ndj7cOkCi9/34Dz+CoxxpN/BuFUl1k3K82dx68zueb5RjUEiFddqitjvnurbwf9CJ6hdAjfmuEYzGu7Os0bQOL6PYD7zJT4yUkVJuIg5afnLwNMTyBbEV+uaUv1yGJcMbKalOydF03cJh6BoqSFi8uO2o1oNyPLrzsKc6dIJqI2Rr3KoNS85iOI4HC4Wdc21E9e4w+boloSB2AEAtEE/bFriu8UPH/Fo7ssC4pAFtqgOmeGo1dFOXEUnUNsRaMxZOxLrOSlAa8tq214QAdCHFAl+84dF2gFy+poosGpAH++vFtLCvzpls28spQYJMY+lBWMnDKWGZ6jYyEN8X2K3TMxEG2qqG01rmWBtuXwzd9WaICfmByLF8ewjWApdD0TePZqL4+1Hi8hyQ/unMd75QI19wk2+qEDz+W7sRhTnCiccVHBd38QOdU0P6LRiUR+472bONFfc4OuYWi5rJvkS7NsrSLDVnerncokT27JQ0V23+DpWHh+nVxGXJ3LEZW7BKWMDNcyqm1KqlHVGxzy9bMt1kiYwpiTnJvn36ZrpAM2VS8Q9PizPVOx1l3aAHZJHzfgRLI05TFLobSycEf5uJnhOTD9jNZeC/4xBXD6g9mneyPU78u/rLR98+DtG9M8IgxugPO97rBaWlkgBqcw2aWBDtz1naygh8O9CON2qRen8dmthuTWdGpmzrtC+51cL7Cu8RsLXX1FAPikQVy0zLrMdW5dV6nO6xBUU8eX1n/tOXwwBMCsrfc4R6EkoNH0B6nG/7cKoiyN4iZLTdF/vcEskNHzI2WGJA4bZvP+t3bSPn322ADnXJcWPsYfMbiX3ubW9IC/zJAZ3a7xTihVRTNO1wLPEJBfmRTgR5Y/kuacS9bFBQ8vKldP3dpnyKmRYXqZgEA5GmSGwQEVckO8PkBp7eFH+vfOUKUXkRI5EBdgb8iIINHDE6DSnA6NFyYkaHmBWaQnSNo2vUMm2F9jR31AXBDVkYqkYOWdEyGhjz71Gx+uh7Chu/Czhx3XsSH4wD9RAD9r8uPfZouHMy9gqUcVFkKbbehTCponuERkht+uRF+P7Yni4Levn2B07poKSRaSkOBr3iZgvMM99AorUKN4IbJNm0A9HK7q7EHI0zT0JK07qzTagIppP0UaY8QTnob742sKeO0ASXd+U8nJL4tqD99zWAL0C4M+OLiMhtLyKGLxCTO/0njSWY9MlfHUS2T4ofE1J6/3mqqc6lFsdqaGdVCARap52A== X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 6:VIVnPXbeqyeXsFdzPfKqRQzFtT2Kcoqj3LjLlZ9DnCO7hdwbNTYa6/zbKDqkVU8zedtP+ftOXRZ41nbpxqtbLZPJ3z/emqtpVtKljsUuQuvzE4L2/m8idTTjGxJDUlUwELG6z64xJUoGg3x31+L0gfmNkPQk0UZHEQsNHDoFBtFItguM/QOarg2S1M/OwRSTtFZFJ4SxBD+8Iv8XqZ0Px1sDxmBdrMNC+EQwRVguY+5uDvrj4yLogwkf2/QxvR0tQFeDgLuFC8SLkILte98fek/NoX0P1Qwnw8ls5y4bFW7ToCYHminGzx26jELNK7A0QirOpkefi76Rx/5m7RPc+R7QVtIfwsPATjHpqtu/fkU=; 5:HX1Kcipu0jg5O/T6fFZyMfhIolFumoWBfqtzJ66cRCo0PPSoxKoXFouA89rksVDuE6DieUUnOKFOPPei+zE+VLLG/WyUDuctIP9o+eUdtpUi4B5mW72/KlwVaePeR9blT2bXrgvpjvivRcTRhgk79HOtWaaitL0cPiuo0cGVvlA=; 24:F6/ti+viFB2bSDfe08QgHEe+RPYWdKleRbaYFvcmevJAypCBxJtqw+wGX7300jN7QGgZctIwZtBkDRSWrfzGDyYpJn8HIX22Jj360cyCWDg=; 7:gCBd95GmLyleUJ1sCySxB83aWUNJCjylpfPlWdJnIwL9MvFu/WoVdWT2LAgRrOalCHow/5w5PreTJ/2KFLheaDOfnem+TbQDFkR0iwYbU5ylsJgBTOzH9E/HFmN3cI3h235oHX7Xu3yG8FN72GA2Iut0Zjrush384grlxl+651m2GaQ11n4KgsJWd9rJAizB2LPwoPOaLYnJNqn93B/3q8JjTDaeP0av0PjjAQCWVsg3EGYLScEkAHQZRbg6HiTH SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:wiSEqTF3hwrLwl+wcob2BWWgQ/5VYX6g4TEIDKLVZjduE0M+61UcIAxoxU1G+BZZchiV6Mr6+vh/cDKZty5iWH482Y+9H4cjCtzgfGtSvDvPOcEWxjrMeA7l8JbhxDn5LhqC+IZtE9DW7pNo1n8fMwqx/psLoZ4TtfmVKcTzEobAVrWmuWs018OPxa8lp5/OyHHm8zuIlGQSnPWWd2ei6Q2RdYtsaZNWVWqNKPczkyAprH/S+mMlpxcMNKKq+OZv X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2018 21:11:00.9674 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8cb9dee5-7879-41c9-d37c-08d57eefc565 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR12MB0155 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.41.40 Subject: [Qemu-devel] [PATCH v10 10/28] include: add psp-sev.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: Peter Maydell , Brijesh Singh , kvm@vger.kernel.org, "Michael S. Tsirkin" , Stefan Hajnoczi , Alexander Graf , "Edgar E. Iglesias" , Markus Armbruster , Bruce Rogers , Christian Borntraeger , Marcel Apfelbaum , Borislav Petkov , Thomas Lendacky , Eduardo Habkost , Richard Henderson , "Dr. David Alan Gilbert" , Alistair Francis , Cornelia Huck , Richard Henderson , Peter Crosthwaite , Paolo Bonzini Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" The header file provide the ioctl command and structure to communicate with /dev/sev device. Cc: Paolo Bonzini Cc: Richard Henderson Cc: Eduardo Habkost Signed-off-by: Brijesh Singh --- linux-headers/linux/psp-sev.h | 142 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 142 insertions(+) create mode 100644 linux-headers/linux/psp-sev.h diff --git a/linux-headers/linux/psp-sev.h b/linux-headers/linux/psp-sev.h new file mode 100644 index 000000000000..33e247471ae0 --- /dev/null +++ b/linux-headers/linux/psp-sev.h @@ -0,0 +1,142 @@ +/* + * Userspace interface for AMD Secure Encrypted Virtualization (SEV) + * platform management commands. + * + * Copyright (C) 2016-2017 Advanced Micro Devices, Inc. + * + * Author: Brijesh Singh + * + * SEV spec 0.14 is available at: + * http://support.amd.com/TechDocs/55766_SEV-KM%20API_Specification.pdf + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#ifndef __PSP_SEV_USER_H__ +#define __PSP_SEV_USER_H__ + +#include + +/** + * SEV platform commands + */ +enum { + SEV_FACTORY_RESET = 0, + SEV_PLATFORM_STATUS, + SEV_PEK_GEN, + SEV_PEK_CSR, + SEV_PDH_GEN, + SEV_PDH_CERT_EXPORT, + SEV_PEK_CERT_IMPORT, + + SEV_MAX, +}; + +/** + * SEV Firmware status code + */ +typedef enum { + SEV_RET_SUCCESS = 0, + SEV_RET_INVALID_PLATFORM_STATE, + SEV_RET_INVALID_GUEST_STATE, + SEV_RET_INAVLID_CONFIG, + SEV_RET_INVALID_LEN, + SEV_RET_ALREADY_OWNED, + SEV_RET_INVALID_CERTIFICATE, + SEV_RET_POLICY_FAILURE, + SEV_RET_INACTIVE, + SEV_RET_INVALID_ADDRESS, + SEV_RET_BAD_SIGNATURE, + SEV_RET_BAD_MEASUREMENT, + SEV_RET_ASID_OWNED, + SEV_RET_INVALID_ASID, + SEV_RET_WBINVD_REQUIRED, + SEV_RET_DFFLUSH_REQUIRED, + SEV_RET_INVALID_GUEST, + SEV_RET_INVALID_COMMAND, + SEV_RET_ACTIVE, + SEV_RET_HWSEV_RET_PLATFORM, + SEV_RET_HWSEV_RET_UNSAFE, + SEV_RET_UNSUPPORTED, + SEV_RET_MAX, +} sev_ret_code; + +/** + * struct sev_user_data_status - PLATFORM_STATUS command parameters + * + * @major: major API version + * @minor: minor API version + * @state: platform state + * @flags: platform config flags + * @build: firmware build id for API version + * @guest_count: number of active guests + */ +struct sev_user_data_status { + __u8 api_major; /* Out */ + __u8 api_minor; /* Out */ + __u8 state; /* Out */ + __u32 flags; /* Out */ + __u8 build; /* Out */ + __u32 guest_count; /* Out */ +} __attribute__((packed)); + +/** + * struct sev_user_data_pek_csr - PEK_CSR command parameters + * + * @address: PEK certificate chain + * @length: length of certificate + */ +struct sev_user_data_pek_csr { + __u64 address; /* In */ + __u32 length; /* In/Out */ +} __attribute__((packed)); + +/** + * struct sev_user_data_cert_import - PEK_CERT_IMPORT command parameters + * + * @pek_address: PEK certificate chain + * @pek_len: length of PEK certificate + * @oca_address: OCA certificate chain + * @oca_len: length of OCA certificate + */ +struct sev_user_data_pek_cert_import { + __u64 pek_cert_address; /* In */ + __u32 pek_cert_len; /* In */ + __u64 oca_cert_address; /* In */ + __u32 oca_cert_len; /* In */ +} __attribute__((packed)); + +/** + * struct sev_user_data_pdh_cert_export - PDH_CERT_EXPORT command parameters + * + * @pdh_address: PDH certificate address + * @pdh_len: length of PDH certificate + * @cert_chain_address: PDH certificate chain + * @cert_chain_len: length of PDH certificate chain + */ +struct sev_user_data_pdh_cert_export { + __u64 pdh_cert_address; /* In */ + __u32 pdh_cert_len; /* In/Out */ + __u64 cert_chain_address; /* In */ + __u32 cert_chain_len; /* In/Out */ +} __attribute__((packed)); + +/** + * struct sev_issue_cmd - SEV ioctl parameters + * + * @cmd: SEV commands to execute + * @opaque: pointer to the command structure + * @error: SEV FW return code on failure + */ +struct sev_issue_cmd { + __u32 cmd; /* In */ + __u64 data; /* In */ + __u32 error; /* Out */ +} __attribute__((packed)); + +#define SEV_IOC_TYPE 'S' +#define SEV_ISSUE_CMD _IOWR(SEV_IOC_TYPE, 0x0, struct sev_issue_cmd) + +#endif /* __PSP_USER_SEV_H */ From patchwork Wed Feb 28 21:10:11 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brijesh Singh X-Patchwork-Id: 879420 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="tEarZCcr"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zs7zM3Lm4z9s19 for ; Thu, 1 Mar 2018 08:31:11 +1100 (AEDT) Received: from localhost ([::1]:47066 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er9Jd-0001cy-F2 for incoming@patchwork.ozlabs.org; Wed, 28 Feb 2018 16:31:09 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53225) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er90I-0001JR-J3 for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1er90E-0005kE-7P for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:10 -0500 Received: from mail-sn1nam02on0070.outbound.protection.outlook.com ([104.47.36.70]:44829 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 1er90D-0005jA-UH for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:06 -0500 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=M1UPcIPpiilLCBUSEmRQ8qsIlcetyf1b5ryoNs1kFUs=; b=tEarZCcr4XsVIfQVMR56RmdLSUG6sJl+dhJwa5GCWixHgeXJkqQk0PU4gmWijTdtKdqm0rtJ9XFY0ZlAvubk243LA5yO0R4DgIE1WnFl440IQDw8ky0NFPOxPnVIqTk/0/WyHvPyGcGU6tNPYR6K1BK2vpUu4RSNxgF0hTQExFA= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; Received: from wsp141597wss.amd.com (165.204.78.1) by DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.527.15; Wed, 28 Feb 2018 21:11:01 +0000 From: Brijesh Singh To: qemu-devel@nongnu.org Date: Wed, 28 Feb 2018 15:10:11 -0600 Message-Id: <20180228211028.83970-12-brijesh.singh@amd.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180228211028.83970-1-brijesh.singh@amd.com> References: <20180228211028.83970-1-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: DM5PR10CA0008.namprd10.prod.outlook.com (2603:10b6:4:2::18) To DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: c87b98a1-d13b-4f3e-2e63-08d57eefc603 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:DM2PR12MB0155; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 3:+hxo8Afgp2Ll/liPeQrqOYLBqqRq865G3+3Q8YXsRHX1t7SbSpeeydwU7V2bFI0ZxcsXg12vpKTY341/WSIEvCv6dfIhCsXcfh24LlORknHbf9+WhYY7xve3T+ojuX7GUJUbP+bAWpGUdgHPS1S/KzhDfj+0gKf2k2+7dohTk+gRxwN7pEuq/OtiKbX7LzrSMZ0+KfqoLfO/IYKYz7WFhLEJA81KdrRLnlvK1u9k03lBbfv+bI7KXp0pUs3TycSg; 25:oOBHCWKJwJBDTD4lD0ES+v+c3nDMdTi8FCXBR8wKD6dW7eUybkYJ5OWG9qLPRT7drF5AfI4YfoxJpeG+lLCqnKlB5/nCn3JU7+BP+FV2lsuY34YAAFABgNiKtz5/zhq2CrNwUrfCL6ltsplKkuC5H/70rvJZeAHr6GOIlgDgfyYh4OxqofwhSAEifYRClAzbxEl4XHFluH1oPc4u3M2n34NAzIdic0hijeBEdDO18sv0u1xJGDyBsRtkddOK2L2tJs9zVs15e9yKigGuvNRwix2+HD8VY7mhiq2e5jopwXP3bMxfEQDaMimgCzq3E2gxLQ0gmhkbnAImDo0eWYx6Og==; 31:PeBHn+zRh9ROmoxGXMpgd/Zkl9Yf3jolIDVuP+CssfO3iacWh45/3Y6SmK4THGjsIYWvdAgL8DlZTYVlckeWeuYNvdQJNViSJRGOhdat2dwPpRDCRqtuLq9xyYfDjA8extVrqfAsKkORNt51y800se7IPv+7JBn/1j8L+JEOelxFjVBSDXAG176Ds/4BHJ0mc9ZOYK3CD0J++JaiXOav7TJkC0j8kmxFOeWrgFsMr9I= X-MS-TrafficTypeDiagnostic: DM2PR12MB0155: X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:Yfe16EsTo4+vfAtny1UoN18Cr3/VLz6BNOJKa7Fu1ozQUbxCGoHYbgUZQ+g43/BaPbD8lxGPSYn2zDcslbzDu0DLf7NO4WJ1nUHwEXZmZ1UEv5FBDXHyBGlOWmr2zf6MpDTjwN+xSuFfgsJzdg40JtBMyjBzxYqDfn/MDW9tTAq62mYzhfThIrMH1wbupdQN8fDd+QZZ7raBIT+lrn6ZyBmx3ShwimAxRYQhlIeHCy8ykqbqTWohcL7oON8suSnIvOX2viFzuTyiqFJO+UaXWosnEvwI6rNGPTpGahCbhaC/fMSZdTy5qz/wPL4XMIuCFqeZnxm0PQc0aszoGDXZXDAA3vkeycemiK4jBLR4fRQYRqo7ez7kb/Ul4BlsSsW7UT3/jwGoTSiefpEQJ9cvb7uTdQS1QcDFJ92Q84ymNPUj9Ojlo8MaxF7fOhYfLoF7tTpiNG+H1vJIiDmSEyhUamdxjccpZ2V9kFjsdtgdf1Z30KjONiMXgb0QuUSUiKa9; 4:TU3LU26KiqOrrBd+pVdAg9TynF8hCGzqQ4uvOGztZbsbK5uG7jWD0ZMBd975tmqjHVnR16FmgIQ47uC/s1AGDTlzj/nSZM5tkmwjVYOG+nIiDmD3OsQ7hvWjoDamxA1s26CR+Wl38TvoSUlHg+W9tuKdfcuygeMgBJbJy2WzR9xNJHM39gxY/QP4Quf9DJVxagNZZP0aUzzvJnRpeFaIRJpvZT88bD+VGAf9LiiK9ftka5aan8WMsnmzmPu0joXq32nCAR9AJzBeloqaYdLO8YczHEHalLTmf77L+Pm3CBmJ5jJAz6CeSsuovuivBxpO X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040501)(2401047)(8121501046)(5005006)(3231220)(944501219)(52105095)(3002001)(93006095)(93001095)(10201501046)(6055026)(6041288)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:DM2PR12MB0155; BCL:0; PCL:0; RULEID:; SRVR:DM2PR12MB0155; X-Forefront-PRVS: 0597911EE1 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(1496009)(39860400002)(39380400002)(396003)(346002)(366004)(376002)(189003)(199004)(6486002)(6116002)(1076002)(2351001)(36756003)(16526019)(16586007)(54906003)(53416004)(26005)(53936002)(66066001)(186003)(47776003)(59450400001)(2361001)(478600001)(8666007)(316002)(81166006)(50226002)(8676002)(8936002)(386003)(106356001)(97736004)(5660300001)(2950100002)(6666003)(305945005)(4326008)(76176011)(7736002)(39060400002)(8656006)(105586002)(68736007)(50466002)(7696005)(51416003)(25786009)(48376002)(52116002)(3846002)(2906002)(86362001)(81156014)(7416002)(6916009); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR12MB0155; H:wsp141597wss.amd.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM2PR12MB0155; 23:ihNqmBB2vF/y59be4pz43NIFajwDW19lh1/HUvRLn?= e0W7xwQRouwQj6ga0g64/WO8Sk56x0sIvD7n8gTmgCPAWCj0/30+P9q5bIfcoVjwZ6uE/XYUXC8Hdljv4+D9jCBvJBLn+Wg9Gmc9vQrAUVRQJSmw892C7pKxK5s4fukEJrXKtiyCMxDwGinPwgiLwW9evP05WvpMLgLVNeJisQzdpottXa27F/mqPnoQZg2d5i+hifnncaXKIt6MhfaI5zXp6y/NAAdi1L9zTc4mUGMa2WpkV7su6V9nDy4JXvm0xtBxL98mKUe3NRw2rPOqsCTHzO09YOy7cLdWcJxtUG48spjVpgGpd15H2EAHeCXeVCuzEqsxdBMK9zgtIrbZHKlh5ZwZyedXTqEbYT2tL7MX9T3MByVyOYqlE9XKc1N9PKlUIv0FuVH7ci25PK/weQMobfhGuMcygNL2spd/NeTjyfNkoyHAH/Kttg1gENdo84beuyLkQwZ0Seup60uLxiJ0ZLzqIqzY8G450W6Qlka1zOcBWVk3Ei2H2guyA3u2/kRgM6Z9oCxX8CTefsuCAs6DPJrBlz7R0o6ArY5lquGwcLg7GQlnRPw+9pHLKAYzjoZCrE2MVNGi5kbGNpGwJxnrL+TjxyCU/XSCnMRFDGXgBoti3Y/oNrCkgHuuvYyd0dNIPSg/6VcYBpNbrMPWmKZxlQcsuH35OvQkZxhoPTzSKKdY+oDRND4q2DtYG4lAi7k6cyO0ByM35mCwMH9Q8Xz0WfLO1LU9jYN1g3kVCX+OhlB5LDaPiuW4DaA6CfZXQkr2pwstvP+rQRVGTAhlMl81SrF0gZoVsQVIaNtsSDPA8H3mAozSrFXeiwqxVmSdBVi6kXayCS3zRE7fiYYoTCqBQKtb7cbvzydae/8mQqCuJI5QwwVmgHnexOt5ucLjH8FHQO/QIIsLr9T4QxYJMY6o28OziT2cjOGltLL7I77v+KS9zddc+iCI1bk8y0fuo5aMXtgAEyRxTH9142DiVq7nYfGNTuDjvCDu8Bw+mdV19izpNUJQYsLizEMirdSpTU5RmzFPgJeWO6Ymz0uCScJnJmxH1CjiB4hN3MvT+C/Pondf4gsaWZfNutinOZ2NjLguLd19on3ZqAhB1Xrqc4otSZoPmvuz+/LRXvuQ+5tG5PbzLFEGFDDrCUgO0DRyWXunkfdN6iHAGu1mO7UZB53ol5bS38F+woWk3OtdMmKvHD3q5B55PYjP7oDqmBTuBiTiSgiXoqUyN6216H4rrID2ukGkQMU/6IqMRR0m8vqAERMki0trOQ7PSTlcNvzf4E= X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 6:jGFbUNynKer52QYEqR7wr6I2DXY9+mdyuRSS6sIVa2D4pZVDoV0OQJRKPvhFOBK1XMgb5A1V6Q6/fNHx1B6OJvZvLmhQX9lBlwW/DRT51u+TIKNQNGQa3PHRiBLbgLFt7TnqLVn4zQAW15iB6zY9MyzxQJiBahyErajmWlAk++oT8u/ze5pFK/oLLpAENNz0Nhpzt3JR30BWkKIkgdvYJZlA38COWOWJCuAaRG7qjnBZdx709KQJKR1TMMl41kVE3pBMpl2wwb6fS24k3ssBJQwadZuJm1pTfkpFIsTGntkj3SCvAr4FwiG6XKLpylse5CQIda44o6x+FbhEnLeaZOg4Jh+dKvuy5lmjzG8yfz0=; 5:tSlKwdPCLL1MUj8d6ntMQFcczNYUtF+yNlLHoU8vn3DyE8wTwgpoOT9FO3NjQbgbJZsmwtgsqWkI1+gaBsnvNv0Qb+WQIGzJ/yRfowmXV1KXBMyo1Oy06DqTPybDTHP7f9wvNiExxUlOMkTm5XqD2sKAGsFjgvKOONs+nYblTFs=; 24:UWDLzKdvXOJ6kG2cY3a10QwPCMmLs4ltf0x3o9aijj+Kku/h1NWj4tuhZbGXN5QxBbntBEJ4zFONqPOIQ/xNk2d7gskPkl1arc9ZHVRjtTo=; 7:bpItJvdGQ7M2WDHlXBd/b02CkgwEjvzIT8eG80fbVgzqkQlzC4qaMsGuYAKmKSkQ6J/dKNXoIGsx/LX99ZJYL0Kvn4xLkFb/tZZW+Jl4V5gxKyRM/ngpZQHUXURgOamj4TGkLD0oO2LdR39Flx9C0PMOzWQRsvf8PF3F/EvrUYP9X3xaxPdp5tBwka1gu/n4odxWYK3/WrdK8hEzFw/Y4R5uF/Oj5oxSZ+snY+cYu6s0XwoIQBEqV1kwolnsx1Zt SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:ML0A+0VtXMdU9OiCj49cpLJLnIhb+kBoehPZ6tehZ5Z1lVNMwTTiBdx3Rgj0wDz7adJTwmdOPhWEWTGXZ0qYAjXriwvCATl39VME2M/zd+KnFdBLx9nc1bhuAfStaUA8HBU9109w4/PBlqDvtbL9RERFLLz/OLMQ7IBBItOLdzTY37qx9zmOuG1fN3zBNMD2Cx17uUfE/eQJFhz0xow6ar+uxl7yKqW/dl/rKmb4HGtPAHFnrJOYLwpOq/A+nAPy X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2018 21:11:01.9361 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c87b98a1-d13b-4f3e-2e63-08d57eefc603 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR12MB0155 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.36.70 Subject: [Qemu-devel] [PATCH v10 11/28] sev/i386: add command to initialize the memory encryption context 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: Peter Maydell , Brijesh Singh , kvm@vger.kernel.org, "Michael S. Tsirkin" , Stefan Hajnoczi , Alexander Graf , "Edgar E. Iglesias" , Markus Armbruster , Bruce Rogers , Christian Borntraeger , Marcel Apfelbaum , Borislav Petkov , Thomas Lendacky , Eduardo Habkost , Richard Henderson , "Dr. David Alan Gilbert" , Alistair Francis , Cornelia Huck , Richard Henderson , Peter Crosthwaite , Paolo Bonzini Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" When memory encryption is enabled, KVM_SEV_INIT command is used to initialize the platform. The command loads the SEV related persistent data from non-volatile storage and initializes the platform context. This command should be first issued before invoking any other guest commands provided by the SEV firmware. Cc: Paolo Bonzini Cc: Richard Henderson Cc: Eduardo Habkost Signed-off-by: Brijesh Singh --- accel/kvm/kvm-all.c | 15 ++++ include/sysemu/sev.h | 22 +++++ stubs/Makefile.objs | 1 + stubs/sev.c | 21 +++++ target/i386/Makefile.objs | 2 +- target/i386/monitor.c | 11 ++- target/i386/sev-stub.c | 41 +++++++++ target/i386/sev.c | 222 ++++++++++++++++++++++++++++++++++++++++++++++ target/i386/sev_i386.h | 29 ++++++ target/i386/trace-events | 3 + 10 files changed, 364 insertions(+), 3 deletions(-) create mode 100644 include/sysemu/sev.h create mode 100644 stubs/sev.c create mode 100644 target/i386/sev-stub.c diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index b91fcb7160d3..300fc3cd44ce 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -38,6 +38,7 @@ #include "qemu/event_notifier.h" #include "trace.h" #include "hw/irq.h" +#include "sysemu/sev.h" #include "hw/boards.h" @@ -103,6 +104,9 @@ struct KVMState #endif KVMMemoryListener memory_listener; QLIST_HEAD(, KVMParkedVcpu) kvm_parked_vcpus; + + /* memory encryption */ + void *memcrypt_handle; }; KVMState *kvm_state; @@ -1636,6 +1640,17 @@ static int kvm_init(MachineState *ms) kvm_state = s; + /* + * if memory encryption object is specified then initialize the memory + * encryption context. + */ + if (ms->memory_encryption) { + kvm_state->memcrypt_handle = sev_guest_init(ms->memory_encryption); + if (!kvm_state->memcrypt_handle) { + goto err; + } + } + ret = kvm_arch_init(ms, s); if (ret < 0) { goto err; diff --git a/include/sysemu/sev.h b/include/sysemu/sev.h new file mode 100644 index 000000000000..3f6a26e92789 --- /dev/null +++ b/include/sysemu/sev.h @@ -0,0 +1,22 @@ +/* + * QEMU Secure Encrypted Virutualization (SEV) support + * + * Copyright: Advanced Micro Devices, 2016-2018 + * + * Authors: + * Brijesh Singh + * + * This work is licensed under the terms of the GNU GPL, version 2 or later. + * See the COPYING file in the top-level directory. + * + */ + +#ifndef QEMU_SEV_H +#define QEMU_SEV_H + +#include "sysemu/kvm.h" + +void *sev_guest_init(const char *id); +int sev_encrypt_data(void *handle, uint8_t *ptr, uint64_t len); +void sev_set_debug_ops(void *handle, MemoryRegion *mr); +#endif diff --git a/stubs/Makefile.objs b/stubs/Makefile.objs index 2d59d8409162..31b36fdfdb88 100644 --- a/stubs/Makefile.objs +++ b/stubs/Makefile.objs @@ -43,3 +43,4 @@ stub-obj-y += xen-common.o stub-obj-y += xen-hvm.o stub-obj-y += pci-host-piix.o stub-obj-y += ram-block.o +stub-obj-y += sev.o diff --git a/stubs/sev.c b/stubs/sev.c new file mode 100644 index 000000000000..4a5cc5569e5f --- /dev/null +++ b/stubs/sev.c @@ -0,0 +1,21 @@ +/* + * QEMU SEV stub + * + * Copyright Advanced Micro Devices 2018 + * + * Authors: + * Brijesh Singh + * + * This work is licensed under the terms of the GNU GPL, version 2 or later. + * See the COPYING file in the top-level directory. + * + */ + +#include "qemu/osdep.h" +#include "qemu-common.h" +#include "sysemu/sev.h" + +void *sev_guest_init(const char *id) +{ + return NULL; +} diff --git a/target/i386/Makefile.objs b/target/i386/Makefile.objs index 76aeaeae2750..741cb080eb17 100644 --- a/target/i386/Makefile.objs +++ b/target/i386/Makefile.objs @@ -5,7 +5,7 @@ obj-$(CONFIG_TCG) += int_helper.o mem_helper.o misc_helper.o mpx_helper.o obj-$(CONFIG_TCG) += seg_helper.o smm_helper.o svm_helper.o obj-$(CONFIG_SOFTMMU) += machine.o arch_memory_mapping.o arch_dump.o monitor.o obj-$(CONFIG_KVM) += kvm.o hyperv.o sev.o -obj-$(call lnot,$(CONFIG_KVM)) += kvm-stub.o +obj-$(call lnot,$(CONFIG_KVM)) += kvm-stub.o sev-stub.o # HAX support ifdef CONFIG_WIN32 obj-$(CONFIG_HAX) += hax-all.o hax-mem.o hax-windows.o diff --git a/target/i386/monitor.c b/target/i386/monitor.c index f429b1fc5383..e2f02c4be95c 100644 --- a/target/i386/monitor.c +++ b/target/i386/monitor.c @@ -670,6 +670,13 @@ void hmp_info_io_apic(Monitor *mon, const QDict *qdict) SevInfo *qmp_query_sev(Error **errp) { - error_setg(errp, "SEV feature is not available"); - return NULL; + SevInfo *info; + + info = sev_get_info(); + if (!info) { + error_setg(errp, "SEV feature is not available"); + return NULL; + } + + return info; } diff --git a/target/i386/sev-stub.c b/target/i386/sev-stub.c new file mode 100644 index 000000000000..c86d8c139237 --- /dev/null +++ b/target/i386/sev-stub.c @@ -0,0 +1,41 @@ +/* + * QEMU SEV stub + * + * Copyright Advanced Micro Devices 2018 + * + * Authors: + * Brijesh Singh + * + * This work is licensed under the terms of the GNU GPL, version 2 or later. + * See the COPYING file in the top-level directory. + * + */ + +#include "qemu/osdep.h" +#include "qemu-common.h" +#include "sev_i386.h" + +SevInfo *sev_get_info(void) +{ + return NULL; +} + +bool sev_enabled(void) +{ + return false; +} + +uint64_t sev_get_me_mask(void) +{ + return ~0; +} + +uint32_t sev_get_cbit_position(void) +{ + return 0; +} + +uint32_t sev_get_reduced_phys_bits(void) +{ + return 0; +} diff --git a/target/i386/sev.c b/target/i386/sev.c index ab42e4a456d2..80569f4bcf49 100644 --- a/target/i386/sev.c +++ b/target/i386/sev.c @@ -18,10 +18,88 @@ #include "sysemu/kvm.h" #include "sev_i386.h" #include "sysemu/sysemu.h" +#include "trace.h" #define DEFAULT_GUEST_POLICY 0x1 /* disable debug */ #define DEFAULT_SEV_DEVICE "/dev/sev" +static SEVState *sev_state; + +static const char *const sev_fw_errlist[] = { + "", + "Platform state is invalid", + "Guest state is invalid", + "Platform configuration is invalid", + "Buffer too small", + "Platform is already owned", + "Certificate is invalid", + "Policy is not allowed", + "Guest is not active", + "Invalid address", + "Bad signature", + "Bad measurement", + "Asid is already owned", + "Invalid ASID", + "WBINVD is required", + "DF_FLUSH is required", + "Guest handle is invalid", + "Invalid command", + "Guest is active", + "Hardware error", + "Hardware unsafe", + "Feature not supported", + "Invalid parameter" +}; + +#define SEV_FW_MAX_ERROR ARRAY_SIZE(sev_fw_errlist) + +static int +sev_ioctl(int fd, int cmd, void *data, int *error) +{ + int r; + struct kvm_sev_cmd input; + + memset(&input, 0x0, sizeof(input)); + + input.id = cmd; + input.sev_fd = fd; + input.data = (__u64)data; + + r = kvm_vm_ioctl(kvm_state, KVM_MEMORY_ENCRYPT_OP, &input); + + if (error) { + *error = input.error; + } + + return r; +} + +static int +sev_platform_ioctl(int fd, int cmd, void *data, int *error) +{ + int r; + struct sev_issue_cmd arg; + + arg.cmd = cmd; + arg.data = (unsigned long)data; + r = ioctl(fd, SEV_ISSUE_CMD, &arg); + if (error) { + *error = arg.error; + } + + return r; +} + +static const char * +fw_error_to_str(int code) +{ + if (code >= SEV_FW_MAX_ERROR) { + return "unknown error"; + } + + return sev_fw_errlist[code]; +} + static void qsev_guest_finalize(Object *obj) { @@ -219,6 +297,150 @@ static const TypeInfo qsev_guest_info = { } }; +static QSevGuestInfo * +lookup_sev_guest_info(const char *id) +{ + Object *obj; + QSevGuestInfo *info; + + obj = object_resolve_path_component(object_get_objects_root(), id); + if (!obj) { + return NULL; + } + + info = (QSevGuestInfo *) + object_dynamic_cast(obj, TYPE_QSEV_GUEST_INFO); + if (!info) { + return NULL; + } + + return info; +} + +bool +sev_enabled(void) +{ + return sev_state ? true : false; +} + +uint64_t +sev_get_me_mask(void) +{ + return sev_state ? sev_state->me_mask : ~0; +} + +uint32_t +sev_get_cbit_position(void) +{ + return sev_state ? sev_state->cbitpos : 0; +} + +uint32_t +sev_get_reduced_phys_bits(void) +{ + return sev_state ? sev_state->reduced_phys_bits : 0; +} + +SevInfo * +sev_get_info(void) +{ + SevInfo *info; + + info = g_new0(SevInfo, 1); + info->enabled = sev_state ? true : false; + + if (info->enabled) { + info->api_major = sev_state->api_major; + info->api_minor = sev_state->api_minor; + info->build_id = sev_state->build_id; + info->policy = sev_state->policy; + info->state = sev_state->state; + info->handle = sev_state->handle; + } + + return info; +} + +void * +sev_guest_init(const char *id) +{ + SEVState *s; + char *devname; + int ret, fw_error; + uint32_t ebx; + uint32_t host_cbitpos; + uint32_t host_reduced_phys_bits; + struct sev_user_data_status status = {}; + + s = g_new0(SEVState, 1); + s->sev_info = lookup_sev_guest_info(id); + if (!s->sev_info) { + error_report("%s: '%s' is not a valid '%s' object", + __func__, id, TYPE_QSEV_GUEST_INFO); + goto err; + } + + sev_state = s; + s->state = SEV_STATE_UNINIT; + + host_cpuid(0x8000001F, 0, NULL, &ebx, NULL, NULL); + host_cbitpos = ebx & 0x3f; + host_reduced_phys_bits = (ebx >> 6) & 0x3f; + + s->cbitpos = object_property_get_int(OBJECT(s->sev_info), "cbitpos", NULL); + if (host_cbitpos != s->cbitpos) { + error_report("%s: cbitpos check failed, host '%d' requested '%d'", + __func__, host_cbitpos, s->cbitpos); + goto err; + } + + s->reduced_phys_bits = object_property_get_int(OBJECT(s->sev_info), + "reduced-phys-bits", NULL); + if (host_reduced_phys_bits != s->reduced_phys_bits) { + error_report("%s: reduced_phys_bits check failed," + "host '%d' requested '%d'", __func__, + host_reduced_phys_bits, s->reduced_phys_bits); + goto err; + } + + s->me_mask = ~(1UL << s->cbitpos); + + devname = object_property_get_str(OBJECT(s->sev_info), "sev-device", NULL); + s->sev_fd = open(devname, O_RDWR); + if (s->sev_fd < 0) { + error_report("%s: Failed to open %s '%s'", __func__, + devname, strerror(errno)); + goto err; + } + g_free(devname); + + ret = sev_platform_ioctl(s->sev_fd, SEV_PLATFORM_STATUS, &status, + &fw_error); + if (ret) { + error_report("%s: failed to get platform status ret=%d" + "fw_error='%d: %s'", __func__, ret, fw_error, + fw_error_to_str(fw_error)); + goto err; + } + s->build_id = status.build; + s->api_major = status.api_major; + s->api_minor = status.api_minor; + + trace_kvm_sev_init(); + ret = sev_ioctl(s->sev_fd, KVM_SEV_INIT, NULL, &fw_error); + if (ret) { + error_report("%s: failed to initialize ret=%d fw_error=%d '%s'", + __func__, ret, fw_error, fw_error_to_str(fw_error)); + goto err; + } + + return s; +err: + g_free(sev_state); + sev_state = NULL; + return NULL; +} + static void sev_register_types(void) { diff --git a/target/i386/sev_i386.h b/target/i386/sev_i386.h index caf879c3b874..68019d6f39a5 100644 --- a/target/i386/sev_i386.h +++ b/target/i386/sev_i386.h @@ -14,10 +14,17 @@ #ifndef QEMU_SEV_I386_H #define QEMU_SEV_I386_H +#include +#include + +#include + #include "qom/object.h" #include "qapi/error.h" #include "sysemu/kvm.h" +#include "sysemu/sev.h" #include "qemu/error-report.h" +#include "qapi-types.h" #define SEV_POLICY_NODBG 0x1 #define SEV_POLICY_NOKS 0x2 @@ -30,6 +37,12 @@ #define QSEV_GUEST_INFO(obj) \ OBJECT_CHECK(QSevGuestInfo, (obj), TYPE_QSEV_GUEST_INFO) +extern bool sev_enabled(void); +extern uint64_t sev_get_me_mask(void); +extern SevInfo *sev_get_info(void); +extern uint32_t sev_get_cbit_position(void); +extern uint32_t sev_get_reduced_phys_bits(void); + typedef struct QSevGuestInfo QSevGuestInfo; typedef struct QSevGuestInfoClass QSevGuestInfoClass; @@ -58,4 +71,20 @@ struct QSevGuestInfoClass { ObjectClass parent_class; }; +struct SEVState { + QSevGuestInfo *sev_info; + uint8_t api_major; + uint8_t api_minor; + uint8_t build_id; + uint32_t policy; + uint64_t me_mask; + uint32_t cbitpos; + uint32_t reduced_phys_bits; + uint32_t handle; + int sev_fd; + SevState state; +}; + +typedef struct SEVState SEVState; + #endif diff --git a/target/i386/trace-events b/target/i386/trace-events index 3153fd445488..797b716751b7 100644 --- a/target/i386/trace-events +++ b/target/i386/trace-events @@ -5,3 +5,6 @@ kvm_x86_fixup_msi_error(uint32_t gsi) "VT-d failed to remap interrupt for GSI %" kvm_x86_add_msi_route(int virq) "Adding route entry for virq %d" kvm_x86_remove_msi_route(int virq) "Removing route entry for virq %d" kvm_x86_update_msi_routes(int num) "Updated %d MSI routes" + +# target/i386/sev.c +kvm_sev_init(void) "" From patchwork Wed Feb 28 21:10:12 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brijesh Singh X-Patchwork-Id: 879405 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="m79dy4Bh"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zs7lS6bqQz9s23 for ; Thu, 1 Mar 2018 08:20:52 +1100 (AEDT) Received: from localhost ([::1]:46995 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er99e-0000VX-Vm for incoming@patchwork.ozlabs.org; Wed, 28 Feb 2018 16:20:51 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53224) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er90I-0001JQ-Hv for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:12 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1er90E-0005l0-MF for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:10 -0500 Received: from mail-sn1nam02on0070.outbound.protection.outlook.com ([104.47.36.70]:44829 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 1er90E-0005jA-Df for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:06 -0500 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=nUgAYimDtIYs4xXrQMQ8fSgH5oA0U7OSiSH9APPkoJ0=; b=m79dy4Bh4ces13xB/mAniNmZF2cecBPEsOLhuaY9ApnDD/9YBGursAxRKXhODICHuF9iCAVveI0I7wps+lh0bPXqXk9JFAGCjdxLhGzhoSIFCr0hjybdlXh+tyA7U5AcQ76+ZXiM9UunTRoLWGY3kZQW2StxaFneKs7kOgEhV5g= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; Received: from wsp141597wss.amd.com (165.204.78.1) by DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.527.15; Wed, 28 Feb 2018 21:11:02 +0000 From: Brijesh Singh To: qemu-devel@nongnu.org Date: Wed, 28 Feb 2018 15:10:12 -0600 Message-Id: <20180228211028.83970-13-brijesh.singh@amd.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180228211028.83970-1-brijesh.singh@amd.com> References: <20180228211028.83970-1-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: DM5PR10CA0008.namprd10.prod.outlook.com (2603:10b6:4:2::18) To DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 170a9b79-8f1b-4fd9-3b30-08d57eefc692 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:DM2PR12MB0155; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 3:6ZwpyoIk1PLEeRhpEUzfcee6V+to/hFdmeeahpl0lOR7mI2W+z8jP3RzQRT3Bkue/HLNF4KUIFzF2qwIP33EnGjJKrrXV8XWnhu2B0j3TRz9utPnMOEvAS5b5AsAr2J4ZDVDzoyQ988JnmDAV0iZk3XJfAA3bR1+m9GzefiTuMhFEvL/3csVePebYAPJMU8GtH1oCcnlOhH/24ThDe7UVrRW4RAXR385OIiR+iIJliz6T/z/hOz1+GniCNl4vQSw; 25:nWcGnyABpO5TPxL3dP8K1oIvVxJa44dwMFi4zqxN7R5Ls7MXQlI+KyVKWfXktGUlov5KH9lT4owJFRegUqPAy1ysbERLyrKeveSfWc2k9fWeA9aJ3pcBXmjn5ztjMAAJOB42zSolYUrNe5sknRkvBeuo/o4L7CNTR/2OK6TToc1FgA9qcY+h1R7NGStZp8ybpOi/rpK8IeF4Vz0+0Ot4XAewP7OH87ZWDM/GYfCE0OEyxVvJVwGo0G+MZ3eENtrg0072ElAqDK5cirTyjXYnNQZbg57CGdh/WuV3g4J2RDMDGiDsLsNgvSAOWGpr3scTMTT69aZD++GXuKqCFjZfWg==; 31:9mNkYBIhSB2c/xd8+yr8yYpg5D1Ka5peyc6TG3LMAq9iDcSatfQeY0AtOSrFC9ObrMxODfiH5yMWNqK6mvtKFQzKJBfDsZkQLR4NIPrKEQndViOQSdImfISflxgtLw7hfjAtvVNeEsOfzns5YLv3hTDjHZyOwGbGiDCWajBLOqeFxoToYXH/6tPUyNfpFYmxBBGQ4X7jqCjEaT+6r8K+im8cCbi+GQTlEuHWrWqYOyo= X-MS-TrafficTypeDiagnostic: DM2PR12MB0155: X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:NyvBOP1gDVtBD3el13eiyvOf02CiXlBmmYrk5GVv5BclAqw8D5StEoRaHKSPyHboNGcLmN8SnFUbXUCzJfc/4ijFSwDB2Mr7odPVmLhmzqDcwLUPsRhv3G/SYrzV8CkCkxZ1tBLECieKABsjdt4zD04RGuwhOGATqJdtwVsDhpTbLMOQfxuO2ZLKxXZ0FwSsoUQSkYs9j9THl/u91451alTQIkCaeUe4DqkrCv5mr8eX7y6dkfJ2Ys+pugHMWudInjWJqLJIdv6bewWqZijWvWlY7MOwcKgYkJOTF6yCYsjFluPNuyJ0SX7OXC1G75lkxLRFeImO59Tc9z2sixpJxDYac8qShcOehSvB461C4/kCX1aVaN309dLhn5nLLurZLOZcNFDa4QwmRcHL9zF5xlxZKswDPmwmI2emp3ghkd3FKlW2VVkSpVEKjwyqf/M551Pl/0SovvuPMcGBABv/ts/RCAZNpFcOFqqLWRmfiMdvoYeyZG8f2Kdn7oygtRG4; 4:1HxA5mCRQRQskShKUO8CkQoaRsMmQKlKOUEl2S/2slc69TNBNtW6HtBi11jTYiOfPwPh12xr/QbB0mqGrcWuLuZQ1YMyROPEgEK5K2ySr/YQLCQVPhz6xCrGSDlK/A0ZsP2EzACh3LsLCpGMvrItwxin7pLnrIDkDYM/9W3xGSX1bB26SP+xduC6XC8ccDkKKF5Yrqpy9JFwJGgwJLH3BJD4DgTbruelGuX5Oiryz3AEktTYvgy9Oepfd/s+rglTLc2EIyBCniidEZx89xa9UMnRu98m3lclBIjPZbQa+2zpKYUm+eyu3We2USR7cLB+ X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040501)(2401047)(8121501046)(5005006)(3231220)(944501219)(52105095)(3002001)(93006095)(93001095)(10201501046)(6055026)(6041288)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:DM2PR12MB0155; BCL:0; PCL:0; RULEID:; SRVR:DM2PR12MB0155; X-Forefront-PRVS: 0597911EE1 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(1496009)(39860400002)(39380400002)(396003)(346002)(366004)(376002)(189003)(199004)(6486002)(6116002)(1076002)(2351001)(36756003)(16526019)(16586007)(54906003)(53416004)(26005)(53936002)(66066001)(186003)(47776003)(59450400001)(2361001)(478600001)(8666007)(316002)(81166006)(50226002)(8676002)(8936002)(386003)(106356001)(97736004)(5660300001)(2950100002)(6666003)(305945005)(4326008)(76176011)(7736002)(39060400002)(8656006)(105586002)(68736007)(50466002)(7696005)(51416003)(25786009)(48376002)(52116002)(3846002)(2906002)(86362001)(81156014)(7416002)(6916009); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR12MB0155; H:wsp141597wss.amd.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM2PR12MB0155; 23:Z2Bx9CtVEzXPgkQZFYZ2f2jHEIGTm9JpErenxBoX4?= DoTp7SPOHKxvnnMaekpIJMZhqYfsIx8xN23wivtFcUPF4Evv0XmNokj4TjWv1xT/b3zsI6gYQVjAtllIcx4kNMHA+RlKyQ0dvlyKoVmGu5t8R7KTBHrOv0Nmkj+mazMyPlM2xc8KaTKc48olijccn3FJ6x5zgIUCaVeQPBRcq2YYY024MulHyNyMdkN3lGbF5Yndx14Wr6MnUJ6qwHqLfEf09WjTyEXpOigR5s59oLv5UxA7S6EPWtQJTan6kxv+FNVRSd1SKvgWIovDtVvPqSu/WVtKg+NF4h45MNZENFnVD+Tymb5vBNmAtYhk4RB+VZ4nF9ER8u4Gs0iGari6MeZ7ZhUkREE/G6YcGBqfoyF9k5AHKn/OXLl6e73XcRD032aMw7QRvIxqbUWRdQ2L9rEVHR8BylbwPWVrG7EzHfE7MHsf59Ouja9kPTSbNqEJgn6BHY7UkN71bN2cvGUeHi+4LPh56QZfICm9m7Mj5tSu1nB5ixXHeaR7Nj80bynYqnRoyzyG3GLM3a7+i5Xs8xXEweVZb3IqtHLWhhf/7p2tN6LggKGb3oDvJ4OGtwHKinXtiYF4Pol5dThc9sJyjSNLQtdPTHdx3BTf+b+M4TOYzJrFIcmMuXhffVDLCW+FyCjEYc08pwADAkcP12deQyAS7tdutUS9RNZ4dGgeYXwTfHGH/GdHJTFwP1pTtUSKZUIoHvkYPQCIXFUZV2VYexp4GdsXoZ5iBDcldj3MfD1y62clYqvRospHEF/PZe9ZagvIse6dxSKfx76tVV73rMsEpwUwoNA1TQO8EY9xv8gWiPXyiqnN9PeafX6KJLg8hR2EkSM5FOXXrOez60tV3U9KH5o9M1z9KR6QHMRC0rsAiKrzrhIboUCpHLKfI5gpPdYCq9bJ1iIWI2YjbhkYuzq03uvFFQYHA7UvJtMq+2vl0jf1n7Za2glO4dn+8b2P6AgUy8MdADShx1DI/7ux7kfzWxF+H8kl4grqSGzEdtQ1WGMd/0Y7xTcu8UGcd4hOXaybWApm7XKPzDfwLMfSKAxAqfOzsF+uXx59RXJ6z/wOV2Y7VEcbOwJg8nPT6kAjKbkbQ5Ehim7mW5yQ2CszfW479jvAGI2ISkmvcyJOFJeoiZqCMXYFludsB0w2Ca5KQHcsGysm5al3Q0jR2OokE2wMMXjQG2jFcVvb/gsFSROeYvYWZL+1LlHeVZK85x3LqtjtmdMRwqvKAq6OuyQGPArxEl6hl3MA3JD7IE1lCOZ0O96+66ocM3tLvyN/uuVQag= X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 6:RyN70OS9LH+h6El79f91OGLB+Q8BtMZWJkM20HmIuLOLbRnW3OQPvWoJzc912TSVNBrzeogj/Ulwb4x0Kw1mkjni9PiRtNKiY0r0nCJreSuddFmi+Fj2iTjpFMAgJb16B2qkkB7WTB6lkKjFoHf2B3VfkAZ+442xKZec/GGRbymyfimKoqNQEH6BIuRASOzcyxzY87Kmr8s63L4AK1FFyCfSnAYSmPtpEbnGQhU3JYkrmpcY5sEI8PI4bZMpjdH/9+3fb7STr0dyc0XEssKgC1niQpXHtgv7tha793/C6V0ke5WedE1lsM4m3zub0BUEpnXooCvdM7QFVRqa4EE8e1w1qfIY0o+UVGKLkgJLerk=; 5:iCh/1N4nMWOmdyR8xr40g7fabQh1/I33hyTAgTf7GrdLGxy4qSJ2opW8Ts0dS/D31Fj69D4m3OmkRiNnpvRoZicl/YLyH+9Um4QidMksgpkgAtlhUu8EnX39Yle7Ih/rZCBOTH672ebNbwUrXzwKXKCQhPBY20UqmXk1T3r0d/A=; 24:O4a13Yz9p4dKev853yCVdY1eUX3AVq3s5/DVHRmOSOmwbg7+oh72t1xKimTTr2qnYbHXwttpV7NXfHbErnFUuqlIFYEeN55JOeJaIq1xHaw=; 7:G7/kBBkTu40my6uZLrTICyLNhQzNlwntSluhM88uVNvdEN/rXkPgRLXpWAJXJxvQgEyOn9+LWUpfeSqEk6GvU9q9Ddyuyhqjw9V6IxaWPKkIuEZa2SUemc1o6Ps4r4E10sdPSKD/vZ9YkHwNWH9EolMPkXpZV7SVO7OEsu9hfrrP80fJf8oa4pQqIG6BCfAFrkTLjrMSkk4FdATNWzAZOiQOm9hmLCuijIlwO5klENLQJCYV/IW5YmzqHTgBcAqx SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:52Hzg1G14x7tlmG9339M5J5niZs2QyLIRHpzRKYLwdAc76QbBMMhCoVW9rIWneWYrraDDCbopx6tQBwfJ4jtH8rT34mP0r+zkEiPZyw1qdOJXcN8+4cuBoT1QoUUnOvHM13+ygcKvkWB4MLY9ZKkErrgdjR0DKkXtwRzxvNwtxYX+t3T6yMFG6mF0XNjyWjv1Hd8igTTD/QlxKiIhxwFiHmbmJEgqpRYQVTLuxUzqavSZLMz37GJ5maGaCLZ8phk X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2018 21:11:02.9830 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 170a9b79-8f1b-4fd9-3b30-08d57eefc692 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR12MB0155 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.36.70 Subject: [Qemu-devel] [PATCH v10 12/28] sev/i386: register the guest memory range which may contain encrypted data 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: Peter Maydell , Brijesh Singh , kvm@vger.kernel.org, "Michael S. Tsirkin" , Stefan Hajnoczi , Alexander Graf , "Edgar E. Iglesias" , Markus Armbruster , Bruce Rogers , Christian Borntraeger , Marcel Apfelbaum , Borislav Petkov , Thomas Lendacky , Eduardo Habkost , Richard Henderson , "Dr. David Alan Gilbert" , Alistair Francis , Cornelia Huck , Richard Henderson , Peter Crosthwaite , Paolo Bonzini Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" When SEV is enabled, the hardware encryption engine uses a tweak such that the two identical plaintext at different location will have a different ciphertexts. So swapping or moving a ciphertexts of two guest pages will not result in plaintexts being swapped. Hence relocating a physical backing pages of the SEV guest will require some additional steps in KVM driver. The KVM_MEMORY_ENCRYPT_{UN,}REG_REGION ioctl can be used to register/unregister the guest memory region which may contain the encrypted data. KVM driver will internally handle the relocating physical backing pages of registered memory regions. Cc: Paolo Bonzini Cc: Richard Henderson Cc: Eduardo Habkost Signed-off-by: Brijesh Singh --- target/i386/sev.c | 41 +++++++++++++++++++++++++++++++++++++++++ target/i386/trace-events | 2 ++ 2 files changed, 43 insertions(+) diff --git a/target/i386/sev.c b/target/i386/sev.c index 80569f4bcf49..8ee6159b2bfc 100644 --- a/target/i386/sev.c +++ b/target/i386/sev.c @@ -100,6 +100,45 @@ fw_error_to_str(int code) return sev_fw_errlist[code]; } +static void +sev_ram_block_added(RAMBlockNotifier *n, void *host, size_t size) +{ + int r; + struct kvm_enc_region range; + + range.addr = (__u64)host; + range.size = size; + + trace_kvm_memcrypt_register_region(host, size); + r = kvm_vm_ioctl(kvm_state, KVM_MEMORY_ENCRYPT_REG_REGION, &range); + if (r) { + error_report("%s: failed to register region (%p+%#lx)", + __func__, host, size); + } +} + +static void +sev_ram_block_removed(RAMBlockNotifier *n, void *host, size_t size) +{ + int r; + struct kvm_enc_region range; + + range.addr = (__u64)host; + range.size = size; + + trace_kvm_memcrypt_unregister_region(host, size); + r = kvm_vm_ioctl(kvm_state, KVM_MEMORY_ENCRYPT_UNREG_REGION, &range); + if (r) { + error_report("%s: failed to unregister region (%p+%#lx)", + __func__, host, size); + } +} + +static struct RAMBlockNotifier sev_ram_notifier = { + .ram_block_added = sev_ram_block_added, + .ram_block_removed = sev_ram_block_removed, +}; + static void qsev_guest_finalize(Object *obj) { @@ -434,6 +473,8 @@ sev_guest_init(const char *id) goto err; } + ram_block_notifier_add(&sev_ram_notifier); + return s; err: g_free(sev_state); diff --git a/target/i386/trace-events b/target/i386/trace-events index 797b716751b7..ffa3d2250425 100644 --- a/target/i386/trace-events +++ b/target/i386/trace-events @@ -8,3 +8,5 @@ kvm_x86_update_msi_routes(int num) "Updated %d MSI routes" # target/i386/sev.c kvm_sev_init(void) "" +kvm_memcrypt_register_region(void *addr, size_t len) "addr %p len 0x%lu" +kvm_memcrypt_unregister_region(void *addr, size_t len) "addr %p len 0x%lu" From patchwork Wed Feb 28 21:10:13 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brijesh Singh X-Patchwork-Id: 879412 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="3T+C4mYA"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zs7wS13DTz9s19 for ; Thu, 1 Mar 2018 08:28:40 +1100 (AEDT) Received: from localhost ([::1]:47050 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er9HC-0007rQ-7x for incoming@patchwork.ozlabs.org; Wed, 28 Feb 2018 16:28:38 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53230) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er90I-0001JV-Ki for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:12 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1er90F-0005lc-7J for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:10 -0500 Received: from mail-sn1nam02on0070.outbound.protection.outlook.com ([104.47.36.70]:44829 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 1er90E-0005jA-UI for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:07 -0500 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=ZVExlbGHVFEGy6qxYIpKzGK89UZ2R9/8R7hGyP3onSs=; b=3T+C4mYAc0ODUIipyXwjzN6uIhCvoKKtf0kbtq0UMNqB+146RJLfZQJsAfp1pSM5GGMu+XF9QJZsXiNE/YftlPaFDGhq9j5m1Yt/YJvVzt3PDf/+gpki3ZtLZDz1BF+fO+H4hZEbwIiOhECQkh908D1ZFpfLJTiDNnjdSzfGg7Y= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; Received: from wsp141597wss.amd.com (165.204.78.1) by DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.527.15; Wed, 28 Feb 2018 21:11:03 +0000 From: Brijesh Singh To: qemu-devel@nongnu.org Date: Wed, 28 Feb 2018 15:10:13 -0600 Message-Id: <20180228211028.83970-14-brijesh.singh@amd.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180228211028.83970-1-brijesh.singh@amd.com> References: <20180228211028.83970-1-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: DM5PR10CA0008.namprd10.prod.outlook.com (2603:10b6:4:2::18) To DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 25e7a9d8-efc8-421b-420a-08d57eefc79d X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:DM2PR12MB0155; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 3:kcMCvzDc8OlcyvMuFdQjRvjFqRUkfPo12vR2ITZumF9mWdTDkpjNLRAdgw6kILD1osrfvKvAo/LNcmI0t8MN8qPIqjUsR6MMJkLbsDevK+u8rvdeVfrYTC60zfNJXmOdqailxmjugKyM6H04mFTfzKrc6JaYDCZelmfNZCeaWHsGzRQPoDT14kR5EKnwbISKnsCq+JkUqjJgqg2mnKv072S8fG6BqWNsBR2idn4+p4Z5EcT578AWq/DDgJ2r++wZ; 25:mHMlTAPp1IIF5l4JAt2a7MD2JwbGCXP+INMY2XVdOvP8ot9Am/ZSYbyyTO0nHBwq+UMtHbcyW60A1TLQGn+2MDtiAb90aLFVDuzaxUOPLAjf2/lCi2K+NbpSON6UIOKWCq0S7X9ztX7ZM5sRCsD+ygyvQe3PEx8bixbW6keC4vIoY9z1IYATkJzLIiOyfq1CVMCtsN8/k6SjEiNRsHJim3f1ZgjcvCh3Oql+3hytiTO2LgzuTJS3vUwXfPY29V5GqIYXRbv/MLWuTJXRdv75uh5VS1fDHN2m1czbtCfBLCHNivTx0nW6sjJp/UFjaKkqaxmt9AsMPHABseBbukAKFA==; 31:C1/n/eZPC8s0rR/jUBPOb4XRqZC3+abF+DNgxGPDA+faS0FcadGSuZN/FTZLJTH/Eya6lXRoW29+GIbkIiSSvEWvqT2z+iP6OdM4zS1TZ8Uj01SkLIB6/Ubts86oOU2yy/+Jxka7J/AZxsXzteASKkdHqU5lc0hcyplNAFRZt26Lu9OusMVqdizI2HWpIr8h2NhrSE5Wmd8ScFBRhKVxukk6Th3aOoTNAIkTRBBiuaw= X-MS-TrafficTypeDiagnostic: DM2PR12MB0155: X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:1bbNgjJFi5SXCFd9m2Wd8TEIuxXww/8U5lLurhDu1FHHCMSmeVSYQ2OITSHPbQmYPGfDIokP21zUtIAQY4vJbU4iQe+MOQhIL8bvOkYYmJYSVmDViNTqrLmEiEizutOZbbOzkmSN7fRUpUQ0qF4vgKN+Rc044kVvpS9f6XDoiWvMGrMcRByXb7lrtY7beAK1Ccb9e8ObR1RWmDZwYhaS9N+lUzTbfbV0mVhaiZ49MMH4vRWiTAubj1oOVodRuOkV1F7bf2NcDGuP1GTmUeWN5ik3VlfD6B8Jk2RFrylR61WMetF4awF+GvkhBkawCIwKDZp5nBo0oFN6xZs1tymyixNnMcJN9tkm3WhgMCbghz9Mv0/qYvj85XrCIDbbupAmpfCQ4UKiobXHYT4kA88yFYT5H4aD37vdy4M26zav0lWqv0OzTYU2/kl0W2MuPz6ELYmrPWbjq4zMayDGuVcnzKGoUJsrMJSwA+DT7AdMhmxWkL+ti7tDrGlIitH0Q06S; 4:b0YJCFX5TIIlGjQxx+8HkPl/3JaUq07uyNJIJqFbukDNeHNg+Ebsy6yaSEA8Wcy0SlR1bzCCLbkxlud5NdqxU84il4R909284hRQKfkEEJ88DlfvMQwAKBlQkVNxrIVHIg1T5tzdyv+C961SAzyhW3Rn0ATFeT637OVYz7uM5CehsHj22pXn3f5DGyHfeOPxkQ/NVlGcPUj5sZI2Eg9qTX1ulZ2XlS1gJETV+ZfLi4zVuc4hW5Zp3SF+UsVxzZVnDDoyno+weWucRQn0BfGwoPuNqSQPtakZ9DG6DErtLttVNXE9tSpIKXtPDjLBX+LP2ODi5AwOhKvk8SlR2KFajw== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(9452136761055)(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040501)(2401047)(8121501046)(5005006)(3231220)(944501219)(52105095)(3002001)(93006095)(93001095)(10201501046)(6055026)(6041288)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:DM2PR12MB0155; BCL:0; PCL:0; RULEID:; SRVR:DM2PR12MB0155; X-Forefront-PRVS: 0597911EE1 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(1496009)(39860400002)(39380400002)(396003)(346002)(366004)(376002)(189003)(199004)(6486002)(6116002)(1076002)(2351001)(36756003)(16526019)(16586007)(54906003)(53416004)(26005)(53936002)(66066001)(186003)(47776003)(59450400001)(2361001)(478600001)(8666007)(316002)(81166006)(50226002)(8676002)(8936002)(386003)(106356001)(97736004)(5660300001)(2950100002)(6666003)(305945005)(4326008)(76176011)(7736002)(39060400002)(8656006)(105586002)(68736007)(50466002)(7696005)(51416003)(25786009)(48376002)(52116002)(3846002)(2906002)(86362001)(81156014)(7416002)(6916009); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR12MB0155; H:wsp141597wss.amd.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM2PR12MB0155; 23:IXKrMfm1vKC9KBrwy3lO7KaqD5g6u+0mtfEQD7Orh?= qPq5Tkedvx25Qp2EkqXO44XQRgjMJ7Bs5ywgvT2yHiQ0NI/Qs3a+ivAWTdvISGV/GeNLVs6oMlTWkTR6TO3y4L6E8y3QGU6gq8YBpgyAbkY4NjWraRvElP0moi8qNaBtKHbMPXBeRL/Ojtdz0bzUIcg5Qh1KfOQkgb0WRn/Sg5W9McDaZ3x2PKqiZgQwhycTza3jbtIo8v0AHujMp2s31rKebXozTdk4NQgDteLaTiVs/hbbL8WQNeHV50hqaxeeUlVsDdPyImspQPZQGG3yh8p6LAO9/Xls4j/kLk98mnxZyXOasTIxD79tKxHrxnoCYIoKGxwBGfamjTrVg1O9QX43iKbhC19CGxlxXExXuURt/hpcolBRUszo6sK4dQRw5wZOtdFK3TqsQuHu1dbuPLXSprZ/4gfBsYgppx6J/ENLulutb2JIJeBZwF+T/GRwKLzXJO1i/f0g+4KYmcvH8At7ZSsbE8XSSYx8zLfN0xU0kKx4nPy7l6WjRtSdyD4X/d8kSIsXSdpSJF6w5/SFuIES2O1SyiEZ358vMl8n+YA0FSUEGdOGbPdbGtK45sAuBbINRXCS93eZrylZdS6+KtaDc40zbZOP3nDqZ0XUbskQhCzirLqgXYTvEOuYHWDVvIa7dHFu/19alaD/yWj3vQ06bBPZZII9olADu7x6OvdLz9gOnxHcjfEgasaGBhqppMDFdJcfvzZZ2jLqV+soCbG+tLInc1FOz9CpLkQRylydkdyQhKaLFPa85pIRe7JuN2sZvRFmy0V2NWvLjSb32pJqD+3NJqBs+nFNuQZFlr6HyZKUFHJ+YXm7HUs2xfo+jOsdvQbPjDwwj/pZWZ6NgpZHdvAfS/UHyLpYxWdf9r+wNHSod4jN8iqu8erl4KFNbooyzvZVdx7t9gNjF6UZOBTYi7PaaeZttQZnaXx0oVNvZlZHJRth5ux/EY5KnhCowCBTJAmAL6eLGfEIx47nQZP7yxTZ4k+n+Fyd/buzujRjzRFgJrwUmJIULf1NshMcB6J6QOak1+euNR4hTkRRKJwWvfn9WV03xkQohGYU/yTXQpu2JcCW9wVgFYKgPQYA1lh90UfmgIQrknbeEy+jtywlY4neebhVH6WVY5ICggAp/fch+p/1PO6fBr4S+XlRAffg65AnbzALRMJH0i4kqJeQCUcafb8hxg38gWz43UuUoaaWWWHKuKOpFXMI0IiAigaD56gED9sHfk7hr+bJZcF+2w4p4Sn4iBUCdJ4XRyvguLVzNvK/fSBXyfiG5IttLc= X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 6:6Xey/t/ZhG9j0qMoUzhG3FPCL6sPCn60VaU7K8ybV82A/E690p9/M7luCXEpX72FidIwAEvSwqsP4K3TZZF0aRdvC0t5YzGzQenSvPCJw/fAScqcv7yRfmoDs7YoJxBy3cNlE+0zw2bE4zmmzFb6Z75lr+ae5NDfLBAJw81hNfC4DU8NQ7089V+sAd6GqvwQtgyPWE41NGJ1Z63wxGHG91UEJz9vSyEcB3RM2r/nl1Vo9WjryHaBHNrUpFIhaUlIMmJSMItScwhB8ajyFtrH5Mg+IUQmZejha3D9LKk3b9RaNFeaQBJwbFwVNBGmN3X2GgpZ43fmVzEnAWp72AwnOLBF3n/pMAXnUPN5u4EYwgE=; 5:50xbURNLLCHvT7LvPy27nU37v4VAIRRNcK06DpiYzKM+oryTjwufaCcwqmHVQc6DzcGOIcT5o/vhZ2ZoR/c18UtORyXaiEFdZhg+zVLBcAKzm337rUsWU5pT7jlrHmSpcSZUX47EO6GtvjFyvo3Vv6fO/f6A/yt9UiVsC2a56+M=; 24:irDNnqvQ/ebV7cPyQhVRXAY3LddzFys3iMpVLkxIQIYdbf3pPjDQ8mE6bbk7nhEBQLKjFdYdWZI9ByHlg+jMCAtrbFlDzwnVoE4hK98xMOE=; 7:qgp1Qz7GKMKiMRA9+KS/zv641gTkjXsTfSmPrG1KnZL/hj4mTh2EUpUt1odD1htz09BvjFnSlGRbBKnnbSsCB1SKB3ebWr/ZyeLH2NqVf3xq8rW0E2ve2qvpoewV3ujiW/yXmAFBJ16gtNiGbpkKY0E4LvYMa0GUWlmgaqAauil3nS2Pduzl9XGGqqA7WosRUa8EOwyUgEiN2AbvDAyD7+BhGKD2f01t0d2AnDWKy2mtKXsDTdQaFcjCPB1706u6 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:f81gLJ1IA+RVuWEDknz2/PHeyrw/8x63umjWDSZoC0H7UKLSZvduzGIKO43ZQ3W/JI/lDzRjzBf/scOumk1tVEbrUPUdsYSRXIyl2dK2h+42UkaRfrssd9/ouHt6CeJIGwSMPpWuFt9FsFQJBc1YlPTKNulegHrfVKGOnZ6dsmT0GDG0k89RCCJWP6zQT0KWnyJri1TEZ9Fb01Zk5DjsoMtNsmi5WT+1APqeAQRHPlZjb8r8In9W6KIgaDRSwsXn X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2018 21:11:03.8580 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 25e7a9d8-efc8-421b-420a-08d57eefc79d X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR12MB0155 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.36.70 Subject: [Qemu-devel] [PATCH v10 13/28] kvm: introduce memory encryption APIs 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: Peter Maydell , Brijesh Singh , kvm@vger.kernel.org, "Michael S. Tsirkin" , Stefan Hajnoczi , Alexander Graf , "Edgar E. Iglesias" , Markus Armbruster , Bruce Rogers , Christian Borntraeger , Marcel Apfelbaum , Borislav Petkov , Thomas Lendacky , Eduardo Habkost , Richard Henderson , "Dr. David Alan Gilbert" , Alistair Francis , Cornelia Huck , Peter Crosthwaite , Paolo Bonzini Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Inorder to integerate the Secure Encryption Virtualization (SEV) support add few high-level memory encryption APIs which can be used for encrypting the guest memory region. Cc: Paolo Bonzini Cc: kvm@vger.kernel.org Signed-off-by: Brijesh Singh --- accel/kvm/kvm-all.c | 30 ++++++++++++++++++++++++++++++ accel/stubs/kvm-stub.c | 14 ++++++++++++++ include/sysemu/kvm.h | 25 +++++++++++++++++++++++++ 3 files changed, 69 insertions(+) diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index 300fc3cd44ce..4468c8fe002c 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -107,6 +107,8 @@ struct KVMState /* memory encryption */ void *memcrypt_handle; + int (*memcrypt_encrypt_data)(void *handle, uint8_t *ptr, uint64_t len); + void (*memcrypt_debug_ops)(void *handle, MemoryRegion *mr); }; KVMState *kvm_state; @@ -142,6 +144,34 @@ int kvm_get_max_memslots(void) return s->nr_slots; } +bool kvm_memcrypt_enabled(void) +{ + if (kvm_state && kvm_state->memcrypt_handle) { + return true; + } + + return false; +} + +int kvm_memcrypt_encrypt_data(uint8_t *ptr, uint64_t len) +{ + if (kvm_state->memcrypt_handle && + kvm_state->memcrypt_encrypt_data) { + return kvm_state->memcrypt_encrypt_data(kvm_state->memcrypt_handle, + ptr, len); + } + + return 1; +} + +void kvm_memcrypt_set_debug_ops(MemoryRegion *mr) +{ + if (kvm_state->memcrypt_handle && + kvm_state->memcrypt_debug_ops) { + kvm_state->memcrypt_debug_ops(kvm_state->memcrypt_handle, mr); + } +} + static KVMSlot *kvm_get_free_slot(KVMMemoryListener *kml) { KVMState *s = kvm_state; diff --git a/accel/stubs/kvm-stub.c b/accel/stubs/kvm-stub.c index c964af3e1c97..5739712a67e3 100644 --- a/accel/stubs/kvm-stub.c +++ b/accel/stubs/kvm-stub.c @@ -105,6 +105,20 @@ int kvm_on_sigbus(int code, void *addr) return 1; } +bool kvm_memcrypt_enabled(void) +{ + return false; +} + +int kvm_memcrypt_encrypt_data(uint8_t *ptr, uint64_t len) +{ + return 1; +} + +void kvm_memcrypt_set_debug_ops(MemoryRegion *mr) +{ +} + #ifndef CONFIG_USER_ONLY int kvm_irqchip_add_msi_route(KVMState *s, int vector, PCIDevice *dev) { diff --git a/include/sysemu/kvm.h b/include/sysemu/kvm.h index 85002ac49a54..d69bd1ff2b07 100644 --- a/include/sysemu/kvm.h +++ b/include/sysemu/kvm.h @@ -231,6 +231,31 @@ int kvm_destroy_vcpu(CPUState *cpu); */ bool kvm_arm_supports_user_irq(void); +/** + * kvm_memcrypt_enabled - return boolean indicating whether memory encryption + * is enabled + * Returns: 1 memory encryption is enabled + * 0 memory encryption is disabled + */ +bool kvm_memcrypt_enabled(void); + +/** + * kvm_memcrypt_encrypt_data: encrypt the memory range + * + * Return: 1 failed to encrypt the range + * 0 succesfully encrypted memory region + */ +int kvm_memcrypt_encrypt_data(uint8_t *ptr, uint64_t len); + +/** + * kvm_memcrypt_set_debug_ram_ops: set debug_ram_ops callback + * + * When debug_ram_ops is set, debug access to this memory region will use + * memory encryption APIs. + */ +void kvm_memcrypt_set_debug_ops(MemoryRegion *mr); + + #ifdef NEED_CPU_H #include "cpu.h" From patchwork Wed Feb 28 21:10:14 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Brijesh Singh X-Patchwork-Id: 879415 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="0lZIOhuk"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zs7yy68JYz9s19 for ; Thu, 1 Mar 2018 08:30:50 +1100 (AEDT) Received: from localhost ([::1]:47064 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er9JI-0001Ms-VA for incoming@patchwork.ozlabs.org; Wed, 28 Feb 2018 16:30:49 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53248) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er90J-0001Kh-ID for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:15 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1er90G-0005nd-J2 for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:11 -0500 Received: from mail-dm3nam03on0070.outbound.protection.outlook.com ([104.47.41.70]:21753 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 1er90G-0005mW-8b for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:08 -0500 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=tglDSRA0Wf3d4LuSlxSwjpbPm2ipKj4COIAm3R1QIiE=; b=0lZIOhuku/imNZ4/GmSeO+pRNai24lTXdrACGpcniZMbbauxR1s6HH7nlC/E2yH049WadIbMvQORLu8juQsCCTV6I/+y1/diYVxG2nlq1JumzBD47qEOJE6J7nJyzVcvwk8JJn2jGbKdavT7YLBC8xWc0HdPZ0Dr4ly+aXX9zMU= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; Received: from wsp141597wss.amd.com (165.204.78.1) by DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.527.15; Wed, 28 Feb 2018 21:11:05 +0000 From: Brijesh Singh To: qemu-devel@nongnu.org Date: Wed, 28 Feb 2018 15:10:14 -0600 Message-ID: <20180228211028.83970-15-brijesh.singh@amd.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180228211028.83970-1-brijesh.singh@amd.com> References: <20180228211028.83970-1-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: DM5PR10CA0008.namprd10.prod.outlook.com (2603:10b6:4:2::18) To DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: a38fb40a-0088-483a-75d3-08d57eefc833 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:DM2PR12MB0155; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 3:JOudQtP653F+wbf9dcIvAnKIexWed6OSegUDoRn32xjzzi9xOy4ZNTRjDVcdAtlnZBkczOARqN1sM6i5txlJ6PQvvboBB0U4oD0XQAMHCEMaja5oXLs4XihJnk5vEwkldnJoh1JcHs7YOQAAt6KLYsq7e0GsXF6hnDh6DFLvH0H4jYIFkuYhyLeTRC/iThVrH2ig2Ku2OhRHELaM3YoHas74KPRp+3louIAbegJtnEi5sHJSRvuWQSQTZjrWsdb5; 25:qVOuVxAPpSDdW/YjNs01pNtE8qv3Op2EZg5kmkYf9a28OUBRNjV6xyJWOCS4N3HRdbC6MLfiUBQBIaal4hONxJBX/+VDr4AtBuVCDAJXB6jqkSSjbKw0LLM5wOBlj7v31bE9kGYJREFX+An/jUXZXxSPwp5dDPUfX4AHNKhuAc6m3I/cZWMMwgaQxlCh2FeA1DDzVI9UbyrZInog6FvZTMhJaseF3Bm6VIVKiWM8Vis2lGMKb0GE9huWTmRLQZ1p/pnh+33pJ4rQ7xZkNcAlTmKAygr6NKdC9Ak+aubdIRxNHKg2rQ/Ft3NOpgClVjAe/oRBdgxy+PHGCZQgI9lWcw==; 31:kR09fzIPUySOAOzKrDDVqUAKyBvWHsw331NPcO5oLmKep/o1VAKMhWsZdYm8ltqcLZGp5ipwW1Tgn6tTHM7Gqi8lWQLPaSIE1FF7vzmGk9YOc4blYD9nqiu9aQKZsDPlrWwuwH2H+u/MfHVjhGnRwEeQfISgF6q9uhoaWQPqIahkCj5c9yIpw5FQBD+BfcLn2CpLBhy/jegTgbFidlSijLw/EFTFvZO5WVi1M4LC4xw= X-MS-TrafficTypeDiagnostic: DM2PR12MB0155: X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:5KW4B2pcE4cJw1vl/aaONnS5QB05qGziDyduEN45sRymlPAxFkjCLPTtLO0JxeCqC51zwZQETJyklmnp5eiRbNYMszeU2zoEyZDXoLwC3bTXvI+PM/kd27/10M7dpiMXEO4C5GPHJK8kxtgwJyVySOEDvbU2ysi/LgVoMjpIHbdnXzNkVO/Jr0H+S9fLJ6xIWgPIkkL7TK6ypyoP5QSfCs0Txkt1scH7ra9GneEM6fvoZHxQAg+zveuNNFiZ3WWSkTX3ZSaD5Plj+fhMcpflzOQ6yKvTPmZuek+eSk7c7ywsc/XMdh3yjQizLnwj9IlRKfZjV9N4VR8XxP3BHjcYBTp83IzH2D0rXsmdW4CjmcgukWsF1DWI4JPARKLMrpt1JiYiygW7VnCWgUYfJgVmycNqnwzVSrVMF7fIuRO8xYI5Ak1ns1XMS7q6K+zb/p+7gu8f2YtXOk6fP5buVDQNtSZ+I3wC0C1QgF4HatUaYCbOThr2Tc+IUrq6OJrnJBf2; 4:flyK29JFeWwkg9koTP8ja6n04ZFQkMedgn/7aXizPORcCW/zmphsoEGVaCl0UL0JCNjKHHoAVmCe3R+l7S+3BGfTjJkSxBsRSgW2GY8esafJv7b+ftbpJhEySB9P7jjzB6vGVNn+B8JOLuZRUCjyK4NjiUhUMp6+nUraP6ISUvviuzigV/RxrIEdPDgKvOZGWqeIoVoewWCsobjC3tLEO8+AYFpgJghn1zA7aCw6qzeo62soFWAi0KSVP8Rz6w7OACCkjI9+mOEgKYnCTmEyvbb13gFd43/WGkDXB/vgER9mMRAuzxGPRItu5JOx0Vmy X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040501)(2401047)(8121501046)(5005006)(3231220)(944501219)(52105095)(3002001)(93006095)(93001095)(10201501046)(6055026)(6041288)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:DM2PR12MB0155; BCL:0; PCL:0; RULEID:; SRVR:DM2PR12MB0155; X-Forefront-PRVS: 0597911EE1 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(1496009)(39860400002)(39380400002)(396003)(346002)(366004)(376002)(189003)(199004)(6486002)(6116002)(1076002)(2351001)(36756003)(16526019)(54906003)(53416004)(26005)(53936002)(66066001)(186003)(47776003)(2361001)(478600001)(8666007)(316002)(81166006)(50226002)(8676002)(8936002)(386003)(106356001)(2870700001)(97736004)(5660300001)(2950100002)(6666003)(23676004)(305945005)(4326008)(76176011)(7736002)(39060400002)(8656006)(105586002)(68736007)(50466002)(7696005)(25786009)(52116002)(3846002)(2906002)(86362001)(81156014)(7416002)(6916009); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR12MB0155; H:wsp141597wss.amd.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM2PR12MB0155; 23:cLGO0WbiU0YzltpCTLQ247k3+3ks6wX6YXIusMM5J?= IwZ+hixwteIo9zeFRCpSVU5nRGWoqTaJqBclMWCDmp7YcuyC6OHEvdQeurzXh0gjCLrQ6oEoSwugP+2awoyLSU4+Aq5CQeZZBdlGT/oZ1mhRnxvXdnbste962GMMKWthsMh/xE69gH5DhxPfrFQQuxXo8/bKSENdH5CHAeH16pMXN4MGHUUypn88RipngouS79LYAswN7aWoCuFnK02t8JHSRCrWtWCFgInun6BvvB2Wa0j/m6D67gUL/qBkWpmgyPj3pov7+q3bJleihr24ayO9Sx9z+JWdQe9Bj7lj0dizNCTQS+VCdSMENOJSXQGxv40Ohvk4lsO3Aa+yMjYIwk9svqm9uHCsawuQ4cQmmmSYwaA4GBCBtHxNPjJZrOH3aIkU9GvlM02w2vgJdyM7XvfQ1AnjXnnn+eOppMplKAx7uOVmuIQ0/oSCrlzjRa8Mf/93RRTlFTsYExoYHfI5brH2x0b6dzF5vNjOkJO2xtvI6Q9o2sqh1VpTYTxGk4kH4+g1Lxp6jW+zARkjgH2y6XjpBFFgGQ4Y3NhUx6dXX6G8NQU40/gm4kh4eY44ECgfQcmd/d1uJyAMkZcHS+QKKMGwfbF6Q1CwN7c4DLGN9NWX+jBXn5DzaQXQcFx8lyns9Ik8VL2bPN5GwaRhUwncBH6nclnOCsH1CAjJ8noO6ZQAcTy9AzfuTgTNfkTRYTzcEFiTuuCri5LEQQkVs51fLoIzgxdKTrYa170xY0XNqdYZxEP3rdCWiUNovH+pvn0roNTU3ubl+P8shi/DdnSnWIfUnGdSNl0L/Vnke7bHDUyh2FNNl8w2pFuHEA/impMDTJJ5W87LiVC0rvr1E/ztZMmm2ZJ2VPT4X6opFmZjUK60pthnZLbdxdCVbSppus3rvXlomFI1rrEAgYccEFSfhzsEWkc8Ob3WBmsMzlvxQRzlpQW+WGWKgCOHk7Vo1A6Ag9GdTrXtgYVg1U01czreMrWITHo0p2dCfwBvczRT9/KhB0aO7l8rt+HNM5ZnwkSvfcps4PVvqgF93wib/F04XhCuBcG+yONDhEPUhSMtaSpjRwsFQAwTzp9wnRkeRv+Vna7Lf8gd/AW3wiuXNXsWopRlbc5Ikp1A2PXj8ig2rG3SWcA8WZTeUxF0xsqtPr70/h4dUbF/IEbNGNtuzohHerDh1zXqQ68Y0S1DAcPIASTmt/qY+vIMGgbd1I7Lz0Q2VecYToBhgUpTH+a2JgGoid8 X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 6:3PG4Lh6GsSqzzYCHGltUxk0b98Ccry/jxerDYefpuZVhxfMb+QaPGexCCjqNXLAz2Cud3AjGsqc4H19bP7y4D4Ps2EKGnEb848jSbJ+0AP15Sp6NUd1sMzQWp1HBFsqPLvcVl9RQOCvL3U5k5TczsIa03VKJrddycPe8Lfo9VpDlhiDffxFC1dJSbEZwkcehnjThoajHHEi4yUDVjDTya3Z+RNK0AjKmNLRxSv7ytAUlWSR82PlpdgeX2AE7GPlVS9qSdJSAd0Qu6oWoM1nxbBmNhT7SROgRSNw8Ru9oqRC0GDaDdYI1cfJBZMmN11eQPvNIcTWhju0y4Mp67xIZ7T4D4IZS2bzgihpGNz48w8Q=; 5:ylSfB8Htp3Ko1aTfroxlwFOYY5J4V+7pSYqv4eZyluJGl8UCnnCzWWsb0G0HZQSuTny2qmTOOpMKR1l/0KRBFg/I1HbQy+iQzsBShZZJdEZH+SakmEr8K9JcS6FtqCIp9ykXgHAWdabdqVYruLzmTJ8AGiC8UaepdoBArzd/9xQ=; 24:Secr6/YftyPRGTDWAX+hL5CvOCXM9qSgH13sqn9UwGY4tYIdfCJ6+IDaDC9fQPlN30jn0L4u3RgnU/g81IAqhbY8TtF1w6nn6hp08N6qKeQ=; 7:xtRmjOkd5Jsriq7h341yGtwQa8xIavvqsMrnbHpeznZC/MJLNvdNDWylR8CmAbZYIgvACEK1Rxwawg3wAZgvbI5t7tNHfuW+RrWS01nb0RScC7cW2q45WbZJ6LsNhOmrPxD8DswdTaC8ngpFKPIsDTtArbWBsId2qiaTlfn4ycxepOz6mUWvchKOTT3+LVaLZRcPbh6ygLcBy13ZtXqDDwBjiS5vhxEg77iJCgyuSfz6cy1QS7AvNgGIzTxk1QCJ SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:yr+inPVd6aPm95NEmAznlUO7GQZIbPnEC/mV/VvuyRDaWGlUyu3jy68qaNZwXFn4+wgqxPgji48Igi5NeEoCUlroNG4a4ueQpZx0VhMKQdtIis9ZpMF0yjEt4r1lLbfq8xKv12YpN8w52FKziKTf1Nh+cdCutJv2d9UxsBApn5VDJesgtq+4H0OaHxQCbH9hBn/2tzl4DVHUVxUCZPLFdz49FP4hkZ5ZCCXLoTeHs22z7petzhP/YipZ1t8akjqZ X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2018 21:11:05.6236 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a38fb40a-0088-483a-75d3-08d57eefc833 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR12MB0155 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.41.70 Subject: [Qemu-devel] [PATCH v10 14/28] hmp: add 'info sev' 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: Peter Maydell , Brijesh Singh , kvm@vger.kernel.org, "Michael S. Tsirkin" , Stefan Hajnoczi , Alexander Graf , "Edgar E. Iglesias" , Markus Armbruster , Bruce Rogers , Christian Borntraeger , Marcel Apfelbaum , Borislav Petkov , Thomas Lendacky , Eduardo Habkost , Richard Henderson , "Dr. David Alan Gilbert" , Alistair Francis , Cornelia Huck , Peter Crosthwaite , Paolo Bonzini Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" The command can be used to show the SEV information when memory encryption is enabled on AMD platform. Cc: Eric Blake Cc: "Daniel P. Berrangé" Cc: "Dr. David Alan Gilbert" Cc: Markus Armbruster Reviewed-by: "Dr. David Alan Gilbert" Signed-off-by: Brijesh Singh Reviewed-by: Dr. David Alan Gilbert --- Hi Dave, I updated the patch to address your comment on making this x86 specific, but still kept your R-b, if you don't agree with changes then let me know. thanks hmp-commands-info.hx | 16 ++++++++++++++++ hmp.h | 1 + target/i386/monitor.c | 20 ++++++++++++++++++++ 3 files changed, 37 insertions(+) diff --git a/hmp-commands-info.hx b/hmp-commands-info.hx index ad590a4ffb2b..ddfcd5adcca6 100644 --- a/hmp-commands-info.hx +++ b/hmp-commands-info.hx @@ -867,6 +867,22 @@ Display the amount of initially allocated and present hotpluggable (if enabled) memory in bytes. ETEXI +#if defined(TARGET_I386) + { + .name = "sev", + .args_type = "", + .params = "", + .help = "show SEV information", + .cmd = hmp_info_sev, + }, +#endif + +STEXI +@item info sev +@findex info sev +Show SEV information. +ETEXI + STEXI @end table ETEXI diff --git a/hmp.h b/hmp.h index 1143db44a760..4ca1a77b2c1f 100644 --- a/hmp.h +++ b/hmp.h @@ -146,5 +146,6 @@ void hmp_info_ramblock(Monitor *mon, const QDict *qdict); void hmp_hotpluggable_cpus(Monitor *mon, const QDict *qdict); void hmp_info_vm_generation_id(Monitor *mon, const QDict *qdict); void hmp_info_memory_size_summary(Monitor *mon, const QDict *qdict); +void hmp_info_sev(Monitor *mon, const QDict *qdict); #endif diff --git a/target/i386/monitor.c b/target/i386/monitor.c index e2f02c4be95c..e664030dbd72 100644 --- a/target/i386/monitor.c +++ b/target/i386/monitor.c @@ -29,6 +29,7 @@ #include "qapi/qmp/qdict.h" #include "hw/i386/pc.h" #include "sysemu/kvm.h" +#include "sysemu/sev.h" #include "hmp.h" #include "sev_i386.h" #include "qmp-commands.h" @@ -680,3 +681,22 @@ SevInfo *qmp_query_sev(Error **errp) return info; } + +void hmp_info_sev(Monitor *mon, const QDict *qdict) +{ + SevInfo *info = sev_get_info(); + + if (info && info->enabled) { + monitor_printf(mon, "handle: %d\n", info->handle); + monitor_printf(mon, "state: %s\n", SevState_str(info->state)); + monitor_printf(mon, "build: %d\n", info->build_id); + monitor_printf(mon, "api version: %d.%d\n", + info->api_major, info->api_minor); + monitor_printf(mon, "debug: %s\n", + info->policy & SEV_POLICY_NODBG ? "off" : "on"); + monitor_printf(mon, "key-sharing: %s\n", + info->policy & SEV_POLICY_NOKS ? "off" : "on"); + } else { + monitor_printf(mon, "SEV is not enabled\n"); + } +} From patchwork Wed Feb 28 21:10:15 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brijesh Singh X-Patchwork-Id: 879429 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="DbTLyYGr"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zs81w2Mgyz9rxx for ; Thu, 1 Mar 2018 08:33:23 +1100 (AEDT) Received: from localhost ([::1]:47087 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er9Lk-0003Ma-0T for incoming@patchwork.ozlabs.org; Wed, 28 Feb 2018 16:33:20 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53350) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er90M-0001Mo-CK for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:17 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1er90I-0005pG-0s for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:14 -0500 Received: from mail-dm3nam03on0076.outbound.protection.outlook.com ([104.47.41.76]:5440 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 1er90H-0005nz-A5 for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:09 -0500 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=tVTE6NRJ3EHEyEedXxi2En4HYScIpW4xZBR9GZNP7P0=; b=DbTLyYGrpjq8SLIrgxJF4bUhX7Xs2/DShI9ATtW0zOGjlKt5onUpj/CUUYbHTvn1MZTygKcsbJb8fhAaYi378RkY/MhRLuSsAD7YyJSIsfvpwKPIJ18bIVImvW/MLxkqsX/75D6uIlBUzM6kGv+zHCNu//tePe+pXOhbXixCfYg= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; Received: from wsp141597wss.amd.com (165.204.78.1) by DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.527.15; Wed, 28 Feb 2018 21:11:06 +0000 From: Brijesh Singh To: qemu-devel@nongnu.org Date: Wed, 28 Feb 2018 15:10:15 -0600 Message-Id: <20180228211028.83970-16-brijesh.singh@amd.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180228211028.83970-1-brijesh.singh@amd.com> References: <20180228211028.83970-1-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: DM5PR10CA0008.namprd10.prod.outlook.com (2603:10b6:4:2::18) To DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 81e107a8-efc4-41fa-a9bf-08d57eefc8c9 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:DM2PR12MB0155; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 3:J1futQBcVXoyz1h7PDHDkt8gfKkWhz3zoOo7eX+tL/GhpgsXqJX6acQhpbxCoXij8D2lNlFr55dXMm0zJ2Eaas8+uS3joqTEosoNHRN0XbKXLYE2XeTrjQG53JayiO1/zG0pdcNrnMCLAYxtQT2YcuNzvvXvDVetgJ2cZLfoEg2l1gXxjmxRYf9uo97AypGANvFAlo0rNhuwtns+buDbqMKAddH9v+ritQPNUNdLLAyZxopC4r0xzhOslnt5iXHm; 25:IdUKCoHjgGuidfoQEzniyQPq1aCnEWm4Hw7QP7AItXD2zvqFFoklkDkxuOzS2U65h0LJdsLPJap2XE+nS4GFLxYwm2wtSDM/zzuF4KRg6aWrX9BcV3uldky0rUMfBtk8cZL/uYRmoEcs5Fj/KfaadpteNSaFD8Kvd0oH8362wyaplCNIHkZgKo6CSdzX67pqYq52Cy0R0EoJBrdMS4cXJa6JpcDkKrE89X2PypOZxF84tVQy5VeGEH4I3cVm9Adz50YDQnp1glm8OixwEbandv71CPa7IoYmh2D1PUs4g0jhZ/AnFaoqF0Mwi4Z2E64xIcFCTr5R7D6kFbW/6khEow==; 31:BdlqOMTygtnDNt7h/Lp6GrWkhyV70rBjtxR4im3rTGXvr5Sc2BC28CEbU2fqX2rx1q57NEIeyN5gcRihqlQ3CuQtuB8wh6rdc/N59ovNb+iSXI8TLuu3UcyQDCo/pK7UdSuzK06NkX8g/THgie1B6vpe7753BpfmZFKB/NKdJWZN5Ff5/vaTleeHrm0o1X+qhTlqcnjeb+vOD2rQbfV1IaynNaMlo0SX9ZWbKUYFUi0= X-MS-TrafficTypeDiagnostic: DM2PR12MB0155: X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:7mgvpmDncvsXWFKtU+o5V/SH3XQaTGIwDySyIGAClisR3mI9ISf5MHty2x/Y1gpCFEx5EyWowtyXxGdUQYGT3FQE+69rxpLW5rR6f0BSYRJM42DHMxEmsG6tHIHntiWY6ueaqbzVK5SqMb0LEAYG5o9l1V55taUytyGIU/oGEMrI4sJyuqvA8zpbpvXBE5NS6l9eOO/aEfR+DqpCOeK9IsjRORb7uKIoub9tAhJgHK74EcILKQCQDMbnEilrcHjV9E1V5xa1UBNfE+PfAWzC28rxM2zC5umom668vmkbcf8lkvpk3n5al/bBlirI/cEw79QelQyhvpT37HNSbrGG8V3kUiRVfMwfNW55Xa1eCdwERm6JVN5WDyzbKy+IMaIM1sVTQgkvct0VBimfvYFNq0qG8E1kuHXVY2h6S5qf05l041U6L+VzgyPzDJdJUmX0qo+0jHurgtVGGaxjWQ8uiJQFnlYs6neTYup4pQisdLpr4UYiPKhTEcxxl3WXwlil; 4:aW2yOX5bdekg2xjfG090uFsWX4DMw1YOa94qHePUXHiPjFni22EGZisZ3iVaw4L9iVW9juCf8Gjw+d0ctG/Mttn/Svm+JCg3bo4NI9BFJ/TowoP2KdZolA2jWvrw9G6uu3/JAPS9Q0DzSM3SvgZDgBsecdoPr28jaorP5usQqsLY3n3FrW3+PNcPN0vxKFgF9a9kj8s3JKHRfP27LGpTZzJXWarkP61jryvBXHGjDlI0Z5WRVfGMBmbtNtKTrr55rlAWOzBQE8kCw2spkGqB+3VbqCUA8CP11q9VcoEgN20R6E8Q1SCBfAuSxyoFeQsk X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040501)(2401047)(8121501046)(5005006)(3231220)(944501219)(52105095)(3002001)(93006095)(93001095)(10201501046)(6055026)(6041288)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:DM2PR12MB0155; BCL:0; PCL:0; RULEID:; SRVR:DM2PR12MB0155; X-Forefront-PRVS: 0597911EE1 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(1496009)(39860400002)(39380400002)(396003)(346002)(366004)(376002)(189003)(199004)(6486002)(6116002)(1076002)(2351001)(36756003)(16526019)(16586007)(54906003)(53416004)(26005)(53936002)(66066001)(186003)(47776003)(59450400001)(2361001)(478600001)(8666007)(316002)(81166006)(50226002)(8676002)(8936002)(386003)(106356001)(97736004)(5660300001)(2950100002)(6666003)(305945005)(4326008)(76176011)(7736002)(39060400002)(8656006)(105586002)(68736007)(50466002)(575784001)(7696005)(51416003)(25786009)(48376002)(52116002)(3846002)(2906002)(86362001)(81156014)(7416002)(6916009); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR12MB0155; H:wsp141597wss.amd.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM2PR12MB0155; 23:OXy07GGOsx3PYORgPSbNH/j8Z+p7GeI4xmBRkhkwy?= IM0zLr9aBBu/cYYPfe6IOC+D1ZuD7vilxuaD4wOaHiOSQ/VLNot/PEmSk7ceesn7wTBQZBhBAGbuY4WRuqnOHe21xk9q08M2/e4ePoyYaZGB/2g28BfZ5snGfz0BJnzYx3MYSB1o1UJNhNJXtsvKHCqFxNoRpE/1cjUZKfsOtnkpdhFfemeCKZjFSRZWmHOHzqtEdTI1ivhHZ3y3pQqH094H0tSlMozsEZWUBDc0Oh1vKLjJlt3nuffkDU0rS/aQJwkxNb7BEyMJEG+ycFgmYJwiL87+HUIQNUxQjIcVCjLgqTifyvYeWrq87Detj5/m08n0TrYUxdvc/0NWC3lwUGqrBCfT3XKU3Qyf/V2beBLIUAq03txx4WpGl7m8ZJ/OxaaZz6WIteZ8s8izlPFdOurkmK3sPMksLYj8lJQg1X7o7kDvQDBpCKbWq0GxccQ5rSExLY1XICDshm4DCHtQv45ht2Z6aZJkOhX5bocKrRFkTJbUzGeiR1De70V3UK/Fjy1uG0FPfdUTvRgBuzWUH7PlzK9eAnQcVAU97RMmUH2jHPjcdjKI5zstLssHIaAIWN2Et0YhPaoAJjxZBx1jzNpptk8sasjfDqhNmGTmvIP/l72A0WrH5IaJ/9EXeEzfPKoIjsO8zBp2ERIyVCzfYyZ1WKhINWHWuapMv4ofDwqZoKqC821WYsFdzkB6uTegBL8I5OlM3XanpwGNwvPTgfQN+DtlXfCce7fCfS1erjKeI52k02EQhZKH/aOb6S9TXN7zwXd9HOgckPAgaUPbteWNi9G6HTWN8cVO/LXuW6B95/ExGtuTtRe++8glccQaB2rvjX8cyuoKL3Xr60t0D6KTIP92nrNJTYowz8eUNOqx7WSvhHQYjvA9/TfWoowbMPxMxEse0Z/Igp97mzqI3X44Kk/ptbJN4zD7ofvw85PLIQoSQYsmCb/hFkLbDOE8VHH9jpMXqPRN8jQDZ/eFuo1kFzVQ+ItvpIfnxgKHskjC+CzOx+BkjYybiem1qJirTlcCqnYht6W2nHaVetWd3ypSOfFqj81dJMRLzKopzwkW85tV1J/BCRetL+BvasMl7I0UBCSGVqhmHOqno2dPcXvkxS9M8AVukBs/6qev/LjhgH7yX8ra/ktB2TPyCYvHC2E5V1AL9Uwl4A2Gz42l2Cd7R+Z0xZXx7gCdrVYKgP0kFKSfyLEqhStwIjoAWol1CIN90UfSY6kInz02Yc9Y12ePfesGwCQ2JUYgZ9f0ocbOwEARSuSvjb4USCYDQVp0TRwn3oizzngESj/6nGej6cY X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 6:irAYvNkN0sQlColR7NuxVsOx90BpwxEqrCkhwaZt3I5nFUA8W7M1oax2YIX5RtLYSlj56FKD3VkiIBexEkytpR9SVnKwaJnYfE93CKtiKBaHfDdzwochmC6zTqtfOLnsssYhB7xqL2eE0T1HXQtHw0kE6fq86xiNAb939vNNy/MdhZ0tlQ1/JdXWaJxI4w8TQiYjlBbMEqKyBsUDA1kZx21pbqLAChUIo3VcsmApsZyy+ccbrzKNVvdK4kfALNsDH8T+ppFA2gI/Ls5HJi9dt/yIaIleNqos4QnTaiFG5jztUaZtvtKex9q1MFVcK/FSTv2MYjT8OcMrZF3bN/JfGS4YhtFV8mxiRRv5vhBE25A=; 5:njsBZyLO5u2IXGOaq/E0xV7x8RvVmH0kTnX0ibwUdPLO6UjhXAAS3UwHlu+TidjOc5eNFMnM7Ecqc8UNe6Q4dhWpUOEr13OQJidnGYIgnFgW33prT9sG4cYoS3pFlbmlJTqYVFafJ1mxUaX9wc0GHZzn4bwAt8OFLZ5BRkokkww=; 24:ckosZNINBHAIyYuklXz0UoajCoIjMvH8Yigezezc2x/D8kdRPQV72YflTkcmTwD+ybV4B7GrGCCYr4pvtnZSuX/98UVB6fpeB4horVPWK4g=; 7:U6SCPBs9YUz9kYlrgGoxKtvUI44LZmfQ5ejiHGTv0Fs3L+lc7JsgwzEKJB4qR5pVgrl2sqmHKGWhtepvhW3Cxb+vEpymjDWXo+xsB++3BR1J90uvjwWYKzx7Z9xT1d305E8nfdX5fWRphnSAlA+acRATWUFJcA0lswwI9XDwQGtQ50Z+Rj/S4Jjw8Jf5H9rQvEtiW8E5HmrfSPFSY2pzbsWxjOF5zr5nZJyc0GbLZfp47hTk3DvVZkjsmuZzsw29 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:/9j10T1XLVxV/HHy0raQfBO+o35JFWEd4VkfbLrEyaZL5Qn+S7ypAkRpfW8DpYf4EdT9oHBRMWbJkm7OuFBzW6OLpLWTHP5Md2czAZc6IzCUdIbcYgaWZ+QwnGZ6dsY6u5bhqVhu/kqaOxSn105OFU3lcHDeRMaPQ8Zrla/J9WtRQzcnwbA+Cwg4JJtnP2OUyDDNGvatt1A1pM+9kNgvjGVK6YRmldI49LTnRfsx64YlzNgot1u/6N0478wK3VG5 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2018 21:11:06.6392 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 81e107a8-efc4-41fa-a9bf-08d57eefc8c9 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR12MB0155 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.41.76 Subject: [Qemu-devel] [PATCH v10 15/28] sev/i386: add command to create launch memory encryption context 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: Peter Maydell , Brijesh Singh , kvm@vger.kernel.org, "Michael S. Tsirkin" , Stefan Hajnoczi , Alexander Graf , "Edgar E. Iglesias" , Markus Armbruster , Bruce Rogers , Christian Borntraeger , Marcel Apfelbaum , Borislav Petkov , Thomas Lendacky , Eduardo Habkost , Richard Henderson , "Dr. David Alan Gilbert" , Alistair Francis , Cornelia Huck , Richard Henderson , Peter Crosthwaite , Paolo Bonzini Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" The KVM_SEV_LAUNCH_START command creates a new VM encryption key (VEK). The encryption key created with the command will be used for encrypting the bootstrap images (such as guest bios). Cc: Paolo Bonzini Cc: Richard Henderson Cc: Eduardo Habkost Signed-off-by: Brijesh Singh --- target/i386/sev.c | 86 ++++++++++++++++++++++++++++++++++++++++++++++++ target/i386/trace-events | 2 ++ 2 files changed, 88 insertions(+) diff --git a/target/i386/sev.c b/target/i386/sev.c index 8ee6159b2bfc..b867ffbc0eae 100644 --- a/target/i386/sev.c +++ b/target/i386/sev.c @@ -100,6 +100,17 @@ fw_error_to_str(int code) return sev_fw_errlist[code]; } +static void +sev_set_guest_state(SevState new_state) +{ + assert(new_state < SEV_STATE__MAX); + assert(sev_state); + + trace_kvm_sev_change_state(SevState_str(sev_state->state), + SevState_str(new_state)); + sev_state->state = new_state; +} + static void sev_ram_block_added(RAMBlockNotifier *n, void *host, size_t size) { @@ -400,6 +411,75 @@ sev_get_info(void) return info; } +static int +sev_read_file_base64(const char *filename, guchar **data, gsize *len) +{ + gsize sz; + gchar *base64; + GError *error = NULL; + + if (!g_file_get_contents(filename, &base64, &sz, &error)) { + error_report("failed to read '%s' (%s)", filename, error->message); + return -1; + } + + *data = g_base64_decode(base64, len); + return 0; +} + +static int +sev_launch_start(SEVState *s) +{ + gsize sz; + int ret = 1; + int fw_error; + QSevGuestInfo *sev = s->sev_info; + struct kvm_sev_launch_start *start; + guchar *session = NULL, *dh_cert = NULL; + + start = g_new0(struct kvm_sev_launch_start, 1); + + start->handle = object_property_get_int(OBJECT(sev), "handle", + &error_abort); + start->policy = object_property_get_int(OBJECT(sev), "policy", + &error_abort); + if (sev->session_file) { + if (sev_read_file_base64(sev->session_file, &session, &sz) < 0) { + return 1; + } + start->session_uaddr = (unsigned long)session; + start->session_len = sz; + } + + if (sev->dh_cert_file) { + if (sev_read_file_base64(sev->dh_cert_file, &dh_cert, &sz) < 0) { + return 1; + } + start->dh_uaddr = (unsigned long)dh_cert; + start->dh_len = sz; + } + + trace_kvm_sev_launch_start(start->policy, session, dh_cert); + ret = sev_ioctl(s->sev_fd, KVM_SEV_LAUNCH_START, start, &fw_error); + if (ret < 0) { + error_report("%s: LAUNCH_START ret=%d fw_error=%d '%s'", + __func__, ret, fw_error, fw_error_to_str(fw_error)); + return 1; + } + + object_property_set_int(OBJECT(sev), start->handle, "handle", + &error_abort); + sev_set_guest_state(SEV_STATE_LUPDATE); + s->handle = start->handle; + s->policy = start->policy; + + g_free(start); + g_free(session); + g_free(dh_cert); + + return 0; +} + void * sev_guest_init(const char *id) { @@ -473,6 +553,12 @@ sev_guest_init(const char *id) goto err; } + ret = sev_launch_start(s); + if (ret) { + error_report("%s: failed to create encryption context", __func__); + goto err; + } + ram_block_notifier_add(&sev_ram_notifier); return s; diff --git a/target/i386/trace-events b/target/i386/trace-events index ffa3d2250425..9402251e9991 100644 --- a/target/i386/trace-events +++ b/target/i386/trace-events @@ -10,3 +10,5 @@ kvm_x86_update_msi_routes(int num) "Updated %d MSI routes" kvm_sev_init(void) "" kvm_memcrypt_register_region(void *addr, size_t len) "addr %p len 0x%lu" kvm_memcrypt_unregister_region(void *addr, size_t len) "addr %p len 0x%lu" +kvm_sev_change_state(const char *old, const char *new) "%s -> %s" +kvm_sev_launch_start(int policy, void *session, void *pdh) "policy 0x%x session %p pdh %p" From patchwork Wed Feb 28 21:10:16 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brijesh Singh X-Patchwork-Id: 879430 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="bH2K4Krs"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zs82C6DgRz9rxx for ; Thu, 1 Mar 2018 08:33:39 +1100 (AEDT) Received: from localhost ([::1]:47089 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er9M1-0003Z2-Ls for incoming@patchwork.ozlabs.org; Wed, 28 Feb 2018 16:33:37 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53351) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er90M-0001Mt-CN for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:17 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1er90I-0005pu-F6 for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:14 -0500 Received: from mail-dm3nam03on0076.outbound.protection.outlook.com ([104.47.41.76]:5440 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 1er90I-0005nz-3k for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:10 -0500 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=4viPuM/wzu/T/G/p8WcgHCW7smbA4wFTTr1Oc8Oeu0c=; b=bH2K4KrsUoIRqDYerJZN1oF4436hEqjkzqqFXQ4Mx3fPDLccaBnFJcjKfa95f6OtTS8QlEOK/PjYQ/090YT67ORSumHgXyfGcxMTCUOq3aDXcIXEKEeHsKUh5wLo1CE5Fm4P+Kt4SzU5uuy1sEO5v70U/BkWhrbUramoqc9OC0k= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; Received: from wsp141597wss.amd.com (165.204.78.1) by DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.527.15; Wed, 28 Feb 2018 21:11:07 +0000 From: Brijesh Singh To: qemu-devel@nongnu.org Date: Wed, 28 Feb 2018 15:10:16 -0600 Message-Id: <20180228211028.83970-17-brijesh.singh@amd.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180228211028.83970-1-brijesh.singh@amd.com> References: <20180228211028.83970-1-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: DM5PR10CA0008.namprd10.prod.outlook.com (2603:10b6:4:2::18) To DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 80c4bb46-2780-4a22-3ce7-08d57eefc9a0 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:DM2PR12MB0155; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 3:qrYmeF1WsxxpGOGQoX7UxlzvqQ871bDLUnYCpioPJ6sR3RSvq+PVh0KZSXCZOfAH/RVJSIxeTAaL6Ej2uOca6q6kmBHQGwpMc5ccayv6884ohvJnX/iAIVjNwzgk8FKsQJjp18Qs5RW1qtp90VxIYGPn700qygxxVcWEfCP0IyhXP6kbVoWN12o6FHEkVKE/44ZQXl7dm4M7WZmI+vC6L1U83HAXXTzsb83jOaO4hzV8ZF8YyMSVF6AngIY1hiZS; 25:uE/8CtL0G+LD4ZxMZPzgYcFPWi7IiD45vabkLs97U/plwvhHtW7B3b5xg77GW2K0rhxEdGF5+HiCVlmNjnN/b5skUBqwuDfN5FIGZTN+aMUCUvR18OCUUgQ7rovb84a7cXiraOhYvN5R4w36AJIxGM29scvLGYupmb1ksP4CMXdaiFA7OnRdYXUnd2Q9A1BCByWBnEjte5bcqRxZ5XFBboY+53uWUayJlOJlXSsqbrCNO+mcYdkTwi3YFrdQwWDJ4MYF0fpAEAc57BJhurq0KRBNARM5Oss++Vs+/eXw+ueiLGrUbKTjeFHNsq6DDQoQOlV8oiCX34TiaihlVn+v3Q==; 31:bNMcYQJB02Lb31BH1G87+7dlFUcW/lfLIfPcaV3l5Um8o2I5f06az9NZ32e+rR5FmidBdooqFiU8ZM7tb2eFJBDBFPdKcLZCiL4gM+Jzq1c1VjeqTNayErLxYyr56wv23QwYaNsv9KWzIu/Gld86Ux/V/1vohludPbDszZkfzZSWsSFnHR2B1xqZYc3clo8m3N0cYrjzlGWOd7JcCO9eefUo1iUXK1p/mYG57p2entw= X-MS-TrafficTypeDiagnostic: DM2PR12MB0155: X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:uQKfetoWUKrZYINJatBbUHJnIvtljNkAz3HcP7GomICLh53+u+awN4c8bdELIRdbTB6bJf49Qj3/kdseU+pY5wxP3u+sR1OYMgmTWpvuVJVD11RJZMqg8H/znawzsxzScYSh1vbemdRPSl6WOEvvVXca3IqOJw4DusH2WfbZxuj9d+G3da6PXSIfeaydY/wYBC3+YZV/YGAGg1bbGHz8UNz3w5xJnLjLBnFVymL+a+4BprCwf7rxEt8ly2LFqjQ+qTP5AZ/kdphBHsUHcQpwb60mbLCfGtJ6Bh10ihNFNNG3l6qQzvaxAtmUaNni6OKGWkRLIiuxy/CbwGDhdt83AaC02n9bU8h3raF+zAqIJcGuS6XHXOW6YMvRmJP0o5emzjOpA5cxCphSZKuUPIXj3DINSvCw9snpNvFWdOTlL+kC/mFxBCH2bqULbXdWHApVYLyVSVwRRCE15hQza5zvtrhEpk7wXQ6qFTAj5ZTebEKos+OcuNnb5Hl18fKd98Te; 4:H+FHNYpHPbtrgI/OoHfNAlYdaeRIVVBOyxZ4j/EGRsILYPBLxXl4keHAnbuka3XAYuRY4ew4Wz6k4ubBLWQulwv3U+a/9qBa4Wzf1TOAlMmUiaz2Czw4YuYVBAJsAktHrG+qksKs+IdOFr7kKIxCXk5/c1JEZMZVMsUFSfUVeetYLsCK0XHP14Eh9/lWB34w0P0oasK7bLR//X8CbI0E5JDXweJWjsuNNnrMuEdSeYSmw7bStB+gn4RP+BQVVbWe+s8OalSk3ACpJpTRQjmMJN29OYDrj/Pu32ssd/Q8ESYa/yDNKVlqyM87UAgpKREz X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040501)(2401047)(8121501046)(5005006)(3231220)(944501219)(52105095)(3002001)(93006095)(93001095)(10201501046)(6055026)(6041288)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:DM2PR12MB0155; BCL:0; PCL:0; RULEID:; SRVR:DM2PR12MB0155; X-Forefront-PRVS: 0597911EE1 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(1496009)(39860400002)(39380400002)(396003)(346002)(366004)(376002)(189003)(199004)(6486002)(6116002)(1076002)(2351001)(36756003)(16526019)(16586007)(54906003)(53416004)(26005)(53936002)(66066001)(186003)(47776003)(59450400001)(2361001)(478600001)(8666007)(316002)(81166006)(50226002)(8676002)(8936002)(386003)(106356001)(97736004)(5660300001)(2950100002)(6666003)(305945005)(4326008)(76176011)(7736002)(39060400002)(8656006)(105586002)(68736007)(50466002)(575784001)(7696005)(51416003)(25786009)(48376002)(52116002)(3846002)(2906002)(86362001)(81156014)(7416002)(6916009); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR12MB0155; H:wsp141597wss.amd.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM2PR12MB0155; 23:RCsZwPZVsU7LoFeFgsO/8Z5SD1rhqYH3RqXswxmrP?= Rm3hlXde3YlnNYWSZ7bUGWyzVZUc+U8XbJjM7FMr5HO2x+pKYhdi2z10IXrYLB5v/YG53vj7lRHdMJEOk8PcEKft7zl1aaG3pdcIS1sWl5v55Yqwrs7slJXQibcwG86beTrTBTmk+5njTVRmgNpA6ZnDKbWxLUK2oJm+EnbL4PZVmk57IZF10h5t5J2nnbzJcibs490R7kW8alet9k044sExk1NhrIi+t1Q1xiUjubhNLV+rL3XuCHHdtoaLfF7XF2/D2MZ9d2/OyUZoJ53iqIL+wiJSmqCzS1qe5c4KF1IN+X9sqUKqJYvHCYD8Ypb598vCmmm8+5plUr/oK1vo7aFUovMguU1kSmV3tsuCLMt1odYyEvlZli5oAUD2wRI6oJZO3SkQ64cCxJwLS/wd+YlNej3n39MRh1vf0T0Da2tmTdGO/qKjCiUZf+fufGia4MUwOw+azXNjgvKv1thHOBa8vZWoTt1s1p7XsfXKWAPzQG8MBf0OqSS85ZkqFjKHfK2QwkDmt4UshUPhCdlIJ1kod4XpDGvXSRsqkt8mctb3lX1ZwVLyxktgfTXksqzDbE0whpFlWOImF5FckL+eFprgwn0gLc+pLAhaJyufGOKLtQ4ehv2PjW51Mss/kgFrSgnx5W9+VeLDIDVU4K9hvLQwEAEIMc9JoPnCSWkeWDuLW7M18ZUz9t70wlgCm8N70p7gKqM6IQ6UTcrPPXbb+4yg3/NeZcS2AWChciK8mkHlpyl4I2YWrlsKGkB3XblolRvwvTZZIYbzSa9ZzaLxqYCO4Tk4kTi9n7sgDIylVIfRuxLgjtwPDjCZ7+/EgsZwBG92mAW+AruZd6NcC7fMeqpev/4tShXxmmBaLoRwD7hbkMVwUjdhvUJTo+Txjyd7nux+CKwHheAkfswzihDB24MNOxlCnfcb0pgA3wq8WhaY6NN7GEweM1m386DqPbikQ/scmlIyj80tN1BQx884MNfzK7HdkNM7FGclOsy+GrVQ5gQJbz9qC1IRMDEFuzgXI5QCA21GZysqRKJd6QtJlGq8UQf4bbEl7+6RdcrKTytDK4PTCilWf/1YDx8nCSMcRyddgVDyz0dLN9pOOucGgCdMYJGub//WoL/jJrKNbwaA9niDqLRLhhzpUupeDY9Im0cZkd0I4KtHNKn6wLfYqTIXgDq/PXBb0NO50tsyc3lyt3bWoSbp+jfqZOX/+7e3Yyy0ZK91AlXxy3fFjm7Zv8su5tUv4n7b/mkQzWXOHFl4E7QivaGVwRcoBJNqcHV0nGHRANZfGD5FXk/I6OqVuXX X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 6:XbI0jxk6wSobEM15PWG4HOPZt6sUEgRjMs88R8XqB78BJ1X5AR7DcCrimsvVt4Yxa1RWGeec1fV+NRmvlc6TYKe9UWAdIITwYstIMDjgSOZ3fYGZagi3JsNWUoLgxgfDfwonynYtlReAc4tJFsVccPCFCMkL9AH+WNWFq3Btx8ZBSB4XNMvw/ib4GLxtWsHRyfxGMdJ2T6Jf+dnLSPw4GTWnx33K0q2qxJDW4oRFh9DLOR4p98RDgZRikfvf3X3ZwikF66wwyNZJhD7A7va0ApK32N3Hu/MIun6HhxTbOeZP2bi4s2TI7yVL0cZ1/RQTZLhN1JMnpIBYrMYF4JgCx1dx13y2luTDydGAgylEeTI=; 5:93nckpKlUV/n5KbWLlmMNrCGmwZrMSNRaKlnl7235hyKQUL/ElTyPZ8A1X7ilE3NqdPQPSoL2SS0O0Xn+wDQLk5H4A1PphE0Ur7EAQ99sNIwjhQNkHHy22SmvcUKXwiEgaYkqIMGW/jtHoHicRVz5Dg5VfPuPPsezDy6gMlfdhs=; 24:J0Jm9uZ3iQf34V6xNzeYCQR/wGcq42EbtqZWQHmKEjqShwZpA4c59Ws7aiBEEW9ICqmebF/zpYEJ5e89p6AjmBDpvv5nbiXKorVJtLMdQUI=; 7:1cF4uQerxRfOREPsdsWi7Sjxlit2finqc1hoUHoqyb9XkjJIrlNJgvQpO6zDQlkaj8+TMGBfKfOKKmTeV9c3ejt4fQFj0fMK7Li7i8JNWsTQkYyNB9pYkLQ9PxUnwqnCLQsCFluwwSn4lR1oQATF+qgDwBwBwUzU8iahuQXgib7ttYFNNl1uafGfvzlNsjSsH/GjWeYL0xEcDzeLtY95d/6QwAphnGMibLWmYITeQEa29WN0z4w4sEAb9q7AFv+f SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:4DJhNUlgb8qJTsdTvr3YfXmwuJyk9AwdeLP6B6Ri78/Wnc/tMMxch0AzM8U398SM96yNmV/ulDZSrvHrnv5c5wzoO9jlv4x7AJGgnS+TlZT9Qjn1Uuav5e2zkjZetVRNyOh0JTKji2ugCMVkxooIir5NOxMJ1UpnUh417EmxB9TJhbztus/Nk7k1bEA6W2d5mAitST+IwNOXJyPc8EYjxEHgLuo5fbjOFLvqeNG2nytzMR2LFBPZzq7+TE5NDkVD X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2018 21:11:07.5923 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 80c4bb46-2780-4a22-3ce7-08d57eefc9a0 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR12MB0155 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.41.76 Subject: [Qemu-devel] [PATCH v10 16/28] sev/i386: add command to encrypt guest memory region 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: Peter Maydell , Brijesh Singh , kvm@vger.kernel.org, "Michael S. Tsirkin" , Stefan Hajnoczi , Alexander Graf , "Edgar E. Iglesias" , Markus Armbruster , Bruce Rogers , Christian Borntraeger , Marcel Apfelbaum , Borislav Petkov , Thomas Lendacky , Eduardo Habkost , Richard Henderson , "Dr. David Alan Gilbert" , Alistair Francis , Cornelia Huck , Richard Henderson , Peter Crosthwaite , Paolo Bonzini Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" The KVM_SEV_LAUNCH_UPDATE_DATA command is used to encrypt a guest memory region using the VM Encryption Key created using LAUNCH_START. Cc: Paolo Bonzini Cc: Richard Henderson Cc: Eduardo Habkost Signed-off-by: Brijesh Singh --- accel/kvm/kvm-all.c | 2 ++ stubs/sev.c | 5 +++++ target/i386/sev.c | 43 +++++++++++++++++++++++++++++++++++++++++++ target/i386/trace-events | 1 + 4 files changed, 51 insertions(+) diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index 4468c8fe002c..4974c00c46fb 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -1679,6 +1679,8 @@ static int kvm_init(MachineState *ms) if (!kvm_state->memcrypt_handle) { goto err; } + + kvm_state->memcrypt_encrypt_data = sev_encrypt_data; } ret = kvm_arch_init(ms, s); diff --git a/stubs/sev.c b/stubs/sev.c index 4a5cc5569e5f..2e20f3b73a5b 100644 --- a/stubs/sev.c +++ b/stubs/sev.c @@ -15,6 +15,11 @@ #include "qemu-common.h" #include "sysemu/sev.h" +int sev_encrypt_data(void *handle, uint8_t *ptr, uint64_t len) +{ + return 1; +} + void *sev_guest_init(const char *id) { return NULL; diff --git a/target/i386/sev.c b/target/i386/sev.c index b867ffbc0eae..a25722bdb934 100644 --- a/target/i386/sev.c +++ b/target/i386/sev.c @@ -100,6 +100,13 @@ fw_error_to_str(int code) return sev_fw_errlist[code]; } +static bool +sev_check_state(SevState state) +{ + assert(sev_state); + return sev_state->state == state ? true : false; +} + static void sev_set_guest_state(SevState new_state) { @@ -480,6 +487,29 @@ sev_launch_start(SEVState *s) return 0; } +static int +sev_launch_update_data(uint8_t *addr, uint64_t len) +{ + int ret, fw_error; + struct kvm_sev_launch_update_data update; + + if (!addr || !len) { + return 1; + } + + update.uaddr = (__u64)addr; + update.len = len; + trace_kvm_sev_launch_update_data(addr, len); + ret = sev_ioctl(sev_state->sev_fd, KVM_SEV_LAUNCH_UPDATE_DATA, + &update, &fw_error); + if (ret) { + error_report("%s: LAUNCH_UPDATE ret=%d fw_error=%d '%s'", + __func__, ret, fw_error, fw_error_to_str(fw_error)); + } + + return ret; +} + void * sev_guest_init(const char *id) { @@ -568,6 +598,19 @@ err: return NULL; } +int +sev_encrypt_data(void *handle, uint8_t *ptr, uint64_t len) +{ + assert(handle); + + /* if SEV is in update state then encrypt the data else do nothing */ + if (sev_check_state(SEV_STATE_LUPDATE)) { + return sev_launch_update_data(ptr, len); + } + + return 0; +} + static void sev_register_types(void) { diff --git a/target/i386/trace-events b/target/i386/trace-events index 9402251e9991..c0cd8e93217f 100644 --- a/target/i386/trace-events +++ b/target/i386/trace-events @@ -12,3 +12,4 @@ kvm_memcrypt_register_region(void *addr, size_t len) "addr %p len 0x%lu" kvm_memcrypt_unregister_region(void *addr, size_t len) "addr %p len 0x%lu" kvm_sev_change_state(const char *old, const char *new) "%s -> %s" kvm_sev_launch_start(int policy, void *session, void *pdh) "policy 0x%x session %p pdh %p" +kvm_sev_launch_update_data(void *addr, uint64_t len) "addr %p len 0x%" PRIu64 From patchwork Wed Feb 28 21:10:17 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brijesh Singh X-Patchwork-Id: 879431 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="ibYgY1wT"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zs8412th7z9rxx for ; Thu, 1 Mar 2018 08:35:13 +1100 (AEDT) Received: from localhost ([::1]:47094 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er9NX-0004jE-Gm for incoming@patchwork.ozlabs.org; Wed, 28 Feb 2018 16:35:11 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53418) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er90O-0001OV-0k for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:17 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1er90J-0005sE-T1 for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:15 -0500 Received: from mail-sn1nam02on0054.outbound.protection.outlook.com ([104.47.36.54]:29150 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 1er90J-0005qv-JB for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:11 -0500 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=hswdwbRPMNmiaZsogZDUeqLXXHCPFLfZq54ztWs1Z9A=; b=ibYgY1wT+Smza6AZsR9wrrtQaHo8C666usfvupe2Qiim6A8sYLeARNI7pqYkreyiPw0fCM28jPU0WBprPY+4J8TCugxEhrQYtOV9VaIOxw4xOJsY1PB82sSG8v0QlFYCqebBqL29ElDwNSLZD27tVQr8PXdP9lpyyEfPl9bHZlk= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; Received: from wsp141597wss.amd.com (165.204.78.1) by DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.527.15; Wed, 28 Feb 2018 21:11:08 +0000 From: Brijesh Singh To: qemu-devel@nongnu.org Date: Wed, 28 Feb 2018 15:10:17 -0600 Message-Id: <20180228211028.83970-18-brijesh.singh@amd.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180228211028.83970-1-brijesh.singh@amd.com> References: <20180228211028.83970-1-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: DM5PR10CA0008.namprd10.prod.outlook.com (2603:10b6:4:2::18) To DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 4d85f485-c5da-47d2-70b6-08d57eefca36 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:DM2PR12MB0155; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 3:zALQFjbB/502A+QK2mKWJD9mTUzwbBhs6TIdfmASYOu9QfqO08i49CHqRpY5JRTflxKNMUSaiP6iD7jSXeDmponry+ahAf/WquqGZjp6hEnOnWrkQ42UqI1F4zd5WoCbuiXf8rc9gVPx25lhSFK1fNz1RExhRCWxxE9cdpTUduFeFlWEsgWp/mbmXm09qA4Su3NhN4PirPycP0lCY5myo3sYAJH3tCpmjP5tvDpggjHwt4G6cJjiXjHMgCjrioAj; 25:ulsj/MGtOpocLmKmEIKb0CixxjpYuHzVtMNDcitnvQimMfkkKN7K3VtkvRp0grpuBl+opRAAum1PLrn6+qB60arN6VKvPP46ZaJ2ZD5gjtFQJHfjc0ncPLonjZAs6SgBq8c2RvoLZksuGsI4a8Uog0adt2zs0exctNjfj23enp6Jn5pottmyw+FSWyWSVfIYnWgfasGWdMyGW9TqFVIznftgs7vit5zpty+64193QPDsc4njuR33BoaQDvvIu++q8pK8fv4tkxuw6D9BU/2N7BrVHC0z7uPd4eriYzW62ufRjl4j6KEYpDBBN7KR9CDsRHZKwlFOH+PHaSHLs8UnoQ==; 31:cOXa7GuT4jBIn0eO1sDjj5EFHL9pcrT7B0AhSC/byRoifQFzxaSgZP2+DwPebXdNrbBUTuMNZHi2Q6XG7Lpj5DtHMEEOjkJP/zZsG8xb7qlCUc1oWdeYYtlZENyVSbiRWBSI4QhL8yi4tM+RYAUypcuNB6zsZopdsm2mRItSpBEwlKSSb+/Zkg+/zNahIvvt4s2bJF4sjxIdBauAWuDvl9oFo3ilOYAGiCLqoNoi6XY= X-MS-TrafficTypeDiagnostic: DM2PR12MB0155: X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:HYBENyZ1/nDI9TgdSiINh93bw7wEkUOtOhvZbbXqVE+P7RBbLBrgCImn8MGcguZNJdHAa1B4apn0zSAd0WO2r+JNFVojo0t7AT6KT9rR3htaE4s+SkxjIBw+Ry9f1ahbKVPt3RMnX2W7YHxFJUL/yo+NeesUABDDLAM6g/M/zy2LPEkcnQOpTz0YvVwI+US4feNDj9P1bu3T9P5BHd5bQ9g7LgbHPudqcMqCJbu77g5VhlNJYDFuKnL5X6p0lUUAv/PRs6dIodlIUpow6J8wp9ZkJCvYG4CrOFfxPpappnaGI0pD7+p4B3ey9yr073iZLNLwveNQILYVHxqi8smlXny3SxSIFZXVmupCVdFqahvElW4NV5a0DHzNMIEb4BAwruutyfpWJVri+/uAChlkzlNb1NJ0jd6HwZp+TbE3iO5mq2BykXpAaqxwcHgV7QL3CVL6U7ni/y7U2z5y/FFLG7+DkvCqDudPUM4Nm7GnMP8afNRIlw34JqqOFclzSG/T; 4:zcolT2KVPFgpvgU/YdsmWjFRf8E5w6RlrQUC7EOjz0A5/5tPZEN8XB9JQVbbQ6Wu0MAlZnR2f8s4hyR1SX95vGYGxq6LudkF2sMdYrMS8Vv8loKkwntamFW7WitZIOh4ry0QGC4ae1aktAgDpc2ONCMjWqLfL/MRD6OgMVbC73Kh6nkude6EFbHxR56qja+9xElStjiG28d12HlBAR0tNit4QEsN+a9LNsa1224LvHJ9MCt/QkI4joVRZ4+NxpuuMQcWbbg6lWO4MtzMYzV9a5qCL5jsQOVUTkbyWa12j9phsKJpfqMBxv/UJbld7oXL X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040501)(2401047)(8121501046)(5005006)(3231220)(944501219)(52105095)(3002001)(93006095)(93001095)(10201501046)(6055026)(6041288)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:DM2PR12MB0155; BCL:0; PCL:0; RULEID:; SRVR:DM2PR12MB0155; X-Forefront-PRVS: 0597911EE1 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(1496009)(39860400002)(39380400002)(396003)(346002)(366004)(376002)(189003)(199004)(6486002)(6116002)(1076002)(2351001)(36756003)(16526019)(16586007)(54906003)(53416004)(26005)(53936002)(66066001)(186003)(47776003)(2361001)(478600001)(8666007)(316002)(81166006)(50226002)(8676002)(8936002)(386003)(106356001)(97736004)(5660300001)(2950100002)(6666003)(305945005)(4326008)(76176011)(7736002)(39060400002)(8656006)(105586002)(68736007)(50466002)(7696005)(51416003)(25786009)(48376002)(52116002)(3846002)(2906002)(86362001)(81156014)(7416002)(6916009); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR12MB0155; H:wsp141597wss.amd.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM2PR12MB0155; 23:KCkMg/2K2fxXGkdyWslgkqW2L/o26+J8pf3F2N6As?= w1ilu/OnPZijYBnAlLhWzdrRYPnOfmai5jx1As0MxiEJRlWk01YqBzn3ne65J3ak2k+nIVnLAfhLCUBmvPkkUhZystyRDH4DO7456Ml2ffgBmN5U85TdLSKIjO+kuWW6uOEQ+g2ITqqm6FzOAhVLw3IehYx9FiZiHtUIrwCY9R/0ET8Z4i+2O52/+HVIFViZw8t+dJi7cdbBP6WkTBoYWyytoS0mR1OYnS7XESNYXbe7pB1QuX5yZ3UIiFDJkzMXShvKlY63ouVvtuDgkEaB+6L6tylyeK0S/+nOvrDu4K4geveaOpyNRhzDmOCw90Hsq/7pom+3xBgA/BZJX8Muf4jQX0Lg/D/Oa51er9otTrcxlVYgeXzjqtJV1qZOl2DVky5ln1aPN4E00n0tuwu14xPJnWCV6wUpf5M0SLTwL3CO1ChdmfR706FzafcXE3KfnikkKZzXzM8pCettw5cIjPGxWgDz16se57jWei3PC3CmDd5c+g2rlesTU/Ud/r4E+XYggM0+MH8F1Lt25bFqZc/lpsM3zyaZEzJb1x5g/oKFQED8o9qBid4nAVwota27wNQ0oQpJHEMbXal5SHBchLWCioWJz3QNYYzeNrM4c67vJNu5VFljx1nVl49+ENFKRAuBnUwDPtfoZ+V3lqDF99A4u93+kGFks0vfqHuXGZKVcAlKNSXGRMK8u8E2nY+dAPKLH/+FmNuUnxLFQvYKD+53EY2Lm/OST36IoXRySH1tMp4/zIPTe8PMLWMIXGcT/ekAR+/xrKH4OnEU0TpTHYKJZlAYQ84GdO2XrEcshZjfCfsvghLmUU5aSVA0Reik8/7kgU6PCuRaU+9n9+6efhDcIxeyNZehpUvsKkUobeL2WtBmH1v2vWqK7yHyUwqwJqwV51kk9BZbzTX8OkGDyzA7mcFQhCZFKbOU/Ei3Osk8URjH3Hhq23tZh8YiLct6UHVbO2KRivOfsfQxThZ3XBAUVgYfyI+XGZY2xKNGnb/PVQ//8TU5dcBqTIXHdTFw8wucAKfwp96j9Fi33WaSo2yc02iLeOc2qMZZCaGjz6jzBz/t9gO4b87FU2lC8T5oDQgFyoxuiU3Abcf43kYk3V8gcM9QftAvTYL4aQF2u2jidrb6EKME523leyG2RSuwGQqiiqscOMBCGSGtXAbjiAHZUWvVepS658ult22QCpXTlLD1ATviuRup7ThD2lRa8N78OW9iVocenS2tI6A6Qa0fEbRSofD+PnTNepfLRoF6g== X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 6:DQdjpEKH8v2hUxgBBtr2yTFsjNVMnozTd/nvFmf1J21qAJ4HIQUIQQHdqDq3DEGx/fpyQ0KCbR+kL9RM13TEZErZCGxvhWaX7PZEyBbCDzR0361u738FgCPO0i3jUzytIzAVryixbfrYFCCkd1yAt60p+SGosgWblDTHiTXTR6LldTjw1ijHwciMmZtn+64KFuBvtWBFv7cOhaofTYbLWzwIBLf3NxSStPSwc4nhJmcHTyifq4EUXpbf5pbChZIZoehN2t1AGkFBjDFPAj1EWi2brcFgnYnQmh3QjiY0rwMoeG3vBeOmqKRVVUbmaokmLYsGTaqXb6lXDNW7JvWiK0i03mEYkjpowFQlnCP8rxM=; 5:AGYtU7wVuHFOTFsjcVnFPD18Y7pF+J5RJoQcX5pgHxBW8sZZ8IJFBswpwVvO1PmCgqewjVlDd8S2LxMIb2Zh7SHxSL73yoTBDD89DKo9M1MykWqif9R0TGozSaBtKJoDE7HZTp3JV23BwIvyiYINGrJyYUiD5fmTe7eCvkdSA9U=; 24:znZJjX/eohCU43GikMiEerRg9y5KDBH7TnBmx6ovcaplI28GAbHoQ3YzpX1IqFpWiAGCouXwxgCjf7GAcazH1AtJoXr5Toe3MWyTuIcTcAI=; 7:C4bZbqsLczlFxuFjhezjRciWBskKtcEAqhKPLyy+6yyhYhSmUj/4hj3u1EI8p8cZPyGkltBDk2Tb4Hvdpo3zFGbz/x+kz6aXCZT3sHuZ9P5z9zrw6U7iOTmns5TF/YJDsVhQSrT1vgk+zizSQHm3htuIVp6pSKMoi2WiUJfD+M1VBXe7JM3u8OVjMpsMmlHsZLKI+72PGEloJkzAE4bKzeGElJmYiuDUwrbfKfqf5OPWYUo97OBLaIH0wxF4Pqfc SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:7xWWG9y5UpdtHbgOcpRsIdyqx03vpP6uiOZqGUVkf/DNQj5vCNfRbKiRmubl4q8nKSsj1E6cep2DHcFXTysUyR+/e6Affq+nhVN6ytQLxKp/9LYStfV0TyHAz0JzM6iQXMtJtIr5OAesadcU9cPEfjD1VdINyx5UYyvi+JND4DQKRfLKIaZTAiAgoLPJqi4SCwYjgWtYJGjo4Cdc6pxU+Z5gumPJo1pdWJV/Hee7zjaCl+cqC/9LznhmCoG4noff X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2018 21:11:08.9985 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4d85f485-c5da-47d2-70b6-08d57eefca36 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR12MB0155 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.36.54 Subject: [Qemu-devel] [PATCH v10 17/28] target/i386: encrypt bios rom 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: Peter Maydell , Brijesh Singh , kvm@vger.kernel.org, "Michael S. Tsirkin" , Stefan Hajnoczi , Alexander Graf , "Edgar E. Iglesias" , Markus Armbruster , Bruce Rogers , Christian Borntraeger , Marcel Apfelbaum , Borislav Petkov , Thomas Lendacky , Eduardo Habkost , Richard Henderson , "Dr. David Alan Gilbert" , Alistair Francis , Cornelia Huck , Richard Henderson , Peter Crosthwaite , Paolo Bonzini Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" SEV requires that guest bios must be encrypted before booting the guest. Cc: "Michael S. Tsirkin" Cc: Paolo Bonzini Cc: Richard Henderson Cc: Eduardo Habkost Signed-off-by: Brijesh Singh --- hw/i386/pc_sysfw.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/hw/i386/pc_sysfw.c b/hw/i386/pc_sysfw.c index 4325575e7d82..73ac783f2055 100644 --- a/hw/i386/pc_sysfw.c +++ b/hw/i386/pc_sysfw.c @@ -113,6 +113,8 @@ static void pc_system_flash_init(MemoryRegion *rom_memory) pflash_t *system_flash; MemoryRegion *flash_mem; char name[64]; + void *flash_ptr; + int ret, flash_size; sector_bits = 12; sector_size = 1 << sector_bits; @@ -169,6 +171,17 @@ static void pc_system_flash_init(MemoryRegion *rom_memory) if (unit == 0) { flash_mem = 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 = memory_region_get_ram_ptr(flash_mem); + flash_size = memory_region_size(flash_mem); + ret = kvm_memcrypt_encrypt_data(flash_ptr, flash_size); + if (ret) { + error_report("failed to encrypt pflash rom"); + exit(1); + } + } } } } From patchwork Wed Feb 28 21:10:18 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brijesh Singh X-Patchwork-Id: 879435 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="BgaYGOz2"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zs8604nZqz9rxx for ; Thu, 1 Mar 2018 08:36:56 +1100 (AEDT) Received: from localhost ([::1]:47107 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er9PC-00062Z-PR for incoming@patchwork.ozlabs.org; Wed, 28 Feb 2018 16:36:54 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53461) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er90P-0001Pg-3r for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:18 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1er90L-0005tk-21 for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:17 -0500 Received: from mail-sn1nam02on0051.outbound.protection.outlook.com ([104.47.36.51]:43970 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 1er90K-0005sV-Lg for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:12 -0500 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=h+92C2CsQj2vOTeXtSBGsM3oYsSZ9dOiDO4eufe1Cew=; b=BgaYGOz2UEU9DLCp+I+9dNSVHZHwpzFjjRsh+vyCLVRbrjlyIqETKYUmYFv6d/OmK5jZmbuS4Y18iGBXzD3nnIHqcdhc/LtlO8DxWH7wc8wLMCu2I1SGVYW88dp4Ej7SyXyKjumRdO4VvR/AgQNe3yPaSxcdxynbBXvL4ne62Hk= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; Received: from wsp141597wss.amd.com (165.204.78.1) by DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.527.15; Wed, 28 Feb 2018 21:11:09 +0000 From: Brijesh Singh To: qemu-devel@nongnu.org Date: Wed, 28 Feb 2018 15:10:18 -0600 Message-Id: <20180228211028.83970-19-brijesh.singh@amd.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180228211028.83970-1-brijesh.singh@amd.com> References: <20180228211028.83970-1-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: DM5PR10CA0008.namprd10.prod.outlook.com (2603:10b6:4:2::18) To DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: ff9c7a6a-c5df-4496-dfe4-08d57eefcac7 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:DM2PR12MB0155; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 3:SVowWnC0PumwZegoyHBW/UlELY6xoBsecm330DaWMBJaS4R+zHVINrPCnTidOd9eyDJgQ6TMHeEooI/dGfPGKoTrci3k6BjgAWPR2PG44kbaR0XYSrQ8+pKr051SXBuauEKaXPF9TGY95rU2jIaAiUc6d50sQ7uemOi0zY+GMBOBLkmKyBMFhFh4jrp/zCfRpJbvDdkv4m+6BoFBowo+mVQMRWoFzmFYtoAnEIyVFqrICbA5wrp4h/ukbsOacBCQ; 25:VgAEkCH2/Smwg2KgjGk4Q/cYon09bQA9za7rb0kLM+Qc6WN02RLRyA28ij36MeH4Cj1NOD3pyrqMyegJ5xkaS/FdtJn1QimSOWUCuBVWB7lzsqdAv2/MO2bMWlEqqCK31WK1XkGYP/0gYGHitqh2Kt9VJoPveOvf4lgJHE5wGJZkAiLpW95AqfVsYJLiZ2snobOSmUx46f18PmDH9KKO9i2Pvk7dLNYqGsPqV8Xv5ZoefDkDeJQmRsLSQ/0TQInRwuyZf/vlQzqgizeXaczHwrOsqWYskm+fpN3rUGNE2TMGdsnYv/oNR6eVT3Sng9CigLAUq5oLt3zU2YuNqsxHJw==; 31:v/DAqDVvdLs4NMLTGutryM+fi2MCrqydmtmPLS8EfVIr5G5Hmn+M2tGIgqstA50kApCbuCpOl8hAAO2YVbCF4wHqjrhLokDXL1VSoggAavPCSUcDOu3EdQHx4seCvJp3/M3t6Ii7pL1h1NN8O5JhZafSpusvZ/U7D17VwlgBNUL4I1xk+4kmvx68o0SWjRLq/KxBhuo93NaQt/C/NM4lsCz40VRQWHhGNVkfXiQvONQ= X-MS-TrafficTypeDiagnostic: DM2PR12MB0155: X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:0xLKZep4O9eySSsX6XnLFL/ilI6Rb+Rk6hmLCBh9AivJO6qdSB7AyZg4YOYltGfINjB8MIfQ28rIC0gTmj/qhLxR3cs6NgVmlyHipeMt1otRx0IdWgrFOFk+PCWRHyO6VNYd6pB7W1GukwJWP/zTb7EJdJcO6i52R2a1o1msFYKaD8D6a04KdbXlH/6zfQN4F60fqXyIZJtolTB0yK9b4tEtBLnQL0nyWtdU8buV3XxjKT5ExUXtItA9tEiQra/8wqAvpoFpBZsgAJKcrilKQGBmwiOgfVelI9Z3+Dsg0Z4UbWwcvlazjabHdO13DdpTAS63dbDzMmighRLK06DFUrqaKqbTkovN4+b33ZzOLvHG/26KJkW5WLrrt/KUz+tNodRVbJkU4ed9XBkoNHPCvPz/O/Xidxow0sZCoU9tTxYaGbQvKHQerUzZguV4iCN8mRVJ0PqnwbTpDfZ3ZEhJ87+Bsmn4uTdgP8GSdgeh+YF/RoGCCgFdZ9Ec2u18O3JR; 4:DBQlJnNmuSaj01Vl8eQTLfKpQ5SylcUER0o9crzT49FM4IhaEGu/Y0iIh5piVYxjAFUyi9twlRN+PdP4JZ55nb0KILcs9T4gCwyMTolyomraW5Li5LjRlFGSq0HW9g2NLU7ct/+eWa/AsUHo+zBYwLqvKvXqaaetU03PKqZXBMdgnmSGaXG3x8Wbr75AljnKgF3A03sLHH2f/rb/nec+YQNXPAmpfrnTL9iSA6uCa5U79exSEyCU6uCxLuDOv+OqWUQiMWy8bDkwOyicNqhx+v4Mmt5VerCUk8AlywVQRiT3FIghOX2hGOBJpc8FSy7W X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040501)(2401047)(8121501046)(5005006)(3231220)(944501219)(52105095)(3002001)(93006095)(93001095)(10201501046)(6055026)(6041288)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:DM2PR12MB0155; BCL:0; PCL:0; RULEID:; SRVR:DM2PR12MB0155; X-Forefront-PRVS: 0597911EE1 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(1496009)(39860400002)(39380400002)(396003)(346002)(366004)(376002)(189003)(199004)(6486002)(6116002)(1076002)(2351001)(36756003)(16526019)(16586007)(54906003)(53416004)(26005)(53936002)(66066001)(186003)(47776003)(59450400001)(2361001)(478600001)(8666007)(316002)(81166006)(50226002)(8676002)(8936002)(386003)(106356001)(97736004)(5660300001)(2950100002)(6666003)(305945005)(4326008)(76176011)(7736002)(39060400002)(8656006)(105586002)(68736007)(50466002)(575784001)(7696005)(51416003)(25786009)(48376002)(52116002)(3846002)(2906002)(86362001)(81156014)(7416002)(6916009); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR12MB0155; H:wsp141597wss.amd.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM2PR12MB0155; 23:/DGnOoi/e+JCEb5LjUEurmkrVlN66yUISQWptQFme?= SzTT0YPdDbfpP2N/UdzMcc1n6FDwJFJcbBVdaWFl911tn3tJsWa5l+pT6CVBjzD185NKotFBRMER7O33PT6BPl7VJ1FN5HW7/Zx+PJxW64AJblPFm9tLVhG3smpbHyBh/Dl0M5o3bEwD+ovntKoG0tRyi5laYxzaxJYwmzNQSHl0hL4gc4Uh6J9PatzVKgeeGdQstVSJQFEVJl7gWM9uCJqm4m1B8GapK/Xe9dzMYqo4Cm0geWp60mf3V/NuHRMiJmkll9at5OqVOxQWGE0guC7PpyHTltoBM8m4TXCIv+lmalQ3ybktddUgmoMODofyPIL9A7RaDk+GDcc5In39qGyqYyFpw8pLEmSp2WfhfmMoQcyez+VyuI/MCLMRsDSXSNsLD8goWWw+BD0O4HPL/EewDsIcFoQE4BeUJ6Jmv4KuanbQeGVggfN04p8AY1Pw8T+TvOST99F/ondUmOmU8+LaTZ9H0xkxtsDkhCSsFjCo2g9ruH+OiMJg2rWt3HLz+/R+sMKUQUmOZ4PALQ1xbfAxiz+JiMNr2AVFZ45PxYIYbxBEDlu7f+EdGnvoCUzc28AOVI+zlJK3Iu0cG+DfH9iTRfM4VNRT0XwvYB5hASYH9io9C8ngk62mmGfhLnkqdgMk4nSZcLMvGhNpSPTHTXibQM+aqCimAGxyrGIzNLV8dgofmdoSxEI23bpYVA99z02NPiEP7mxj721K4aK0uY/p2zetBC6z58KRMrKZRVDU9aZlgKtg2LYsEEicoojt6XIlIaY3yUVI7QXdgf5gc1H0eghZwvlsjZKTjAJDgGnVU46MwdOWZH9rKUdDANWrlkKXmssazWXcKi2UT8yQDQtHPm8y6vOQa/PFQOd+T0NG/foKpx/LrVhMcj3MlEiiJeWUuBEdhTZcfGc0ayCAkUQOmFYt9I1L719izZVbWyoyxnQ455m7LwGIyvtm+QoorNo7BK5tA+PmxWLBdCFi/Ufn2s4Cl6vM1JTy+rg/PoCDQcS8ZbBi8d/JQDgPUiS0mZYepQQ57FG1oWu+fsp4tWZkldSgSqC3OSQ+tPo88P7M0Fr+Pu++QP+cLtDyrzXFPFecUKQJH6Cuw2+4HAGBe8V5qyuW9A7MTCNhgF0TRVnSjuvBJlW/93CBpdIDjxz7CvdReQDoPS/1FDRtK/ezQOhWrin7kp+01FUmPRJd2hvdB0CYprBiK6wQTseDbQ0QVtPWRCRk6PmYqSOPDAEPuKVvjh8ZSv5JuQ7EWE/B61HGC+LSbJ/hTRohrrgJ09mtZbpbBrVr2L/xyq+++GMfVO2 X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 6:Z9wcVmmct6goiUw8qAnbGmq8uRzCq6v13f7PgNcSwk/8jbhvfBu9/F6xYkDzmDQjYa/ZpWmUqvbV6y4i8oCVyw7mC+2IBOLrhmPG0PvGnDX1QsnzdJZLtwdz5xE3Q9eLrr/y69gGQ37RskSEBPC1WGwbVVK+k05RGSVt3Qrkcia1UGueSWZiEtF2IMVZPoXZm4Tmr4ujSEJM9ZesF0V0hIeteA2iMoNzwTR2em45ThIHxXKRm6jwRS9/T4ibLOIdwS/M51OIxbhoFi3FB7A+t0qxW60kMYXyZNs4BJv0ed302ktj4ticHHQmtU62aftAuVsA18gncVoAod+AaPRSbwy3uatxybij2G/TzVrRYu0=; 5:l1MuFKilbcfnv8Hg1OaXze3IABxRIvT5Zf+FPOphvF1bB0zVq8OiI31u5EmOJkKbzEJ8yhZIuOLKLeTAZlP3lIqq2GtTp5OYsLVIHuncdK0J9aoZr8qWw8a+9p6ajUHk+DpKbSfoudgZVnezdbE5eqtF8drQ0qM2tJ20w4uFjuA=; 24:zeyFalQ56+o3Hfh1+uq5Zktmjl964oDLLYPID9yuE1Ap87hEHTfEQCy/mJFVDcIIPHLCQBg8wyQqaN8GFRk0EqJDT+AUjLmESbAnsptR93g=; 7:4kIYaiQOftSBMXTyQU9aPLVuECSDLPJjehSuiasDB4ibg8qxP7PwH8hUI77BgW3cQQwGx1A3rVSSsnaaTw3WXkM7DIoD5DlVgrky/VoTXER5rd/rO8iv1ZFHYVXdV7sqoMm8AiEtLqUfPRLgRuNIFT2Oh5memyIAOobjxQav7CIVWjSVLrJ6xm2BkFG/rzRUP+EvOmxxEWiJsFhBR5KMdjTwi8ujqjUaGqxXz9a/LdNCIZMD2VCrmnUT9FB8Js/Y SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:3mHuos/1wXEu1ivzqz/uhMnLAnS5jPrmgrGA91lR0hRpo8HRbefZKlryW6kt7KeOCdla16bDa6UzUku8863/zXOYYpCOUrLpp95Ar6KDYXSnJQG5+g1oKnwmh8km0t8TkU3TOh01H9xuowlL7utSTBG9g4z9psyz14e40gw/h/boM7U6Sqdne8He9j2OwnXZqb07Xx8nwoxghUH3PRs7IdDkwQWWQX/Df70cEcUTH1OYRg2uE14y1HhAZHbmUxsB X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2018 21:11:09.9673 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ff9c7a6a-c5df-4496-dfe4-08d57eefcac7 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR12MB0155 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.36.51 Subject: [Qemu-devel] [PATCH v10 18/28] sev/i386: add support to LAUNCH_MEASURE 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: Peter Maydell , Brijesh Singh , kvm@vger.kernel.org, "Michael S. Tsirkin" , Stefan Hajnoczi , Alexander Graf , "Edgar E. Iglesias" , Markus Armbruster , Bruce Rogers , Christian Borntraeger , Marcel Apfelbaum , Borislav Petkov , Thomas Lendacky , Eduardo Habkost , Richard Henderson , "Dr. David Alan Gilbert" , Alistair Francis , Cornelia Huck , Richard Henderson , Peter Crosthwaite , Paolo Bonzini Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" During machine creation we encrypted the guest bios image, the LAUNCH_MEASURE command can be used to retrieve the measurement of the encrypted memory region. 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 the firmware. VM management tools like libvirt can query the measurement using query-sev-launch-measure QMP command. Cc: Paolo Bonzini Cc: Richard Henderson Cc: Eduardo Habkost Signed-off-by: Brijesh Singh --- target/i386/sev-stub.c | 5 ++++ target/i386/sev.c | 63 ++++++++++++++++++++++++++++++++++++++++++++++++ target/i386/sev_i386.h | 2 ++ target/i386/trace-events | 1 + 4 files changed, 71 insertions(+) diff --git a/target/i386/sev-stub.c b/target/i386/sev-stub.c index c86d8c139237..2f61c32ec975 100644 --- a/target/i386/sev-stub.c +++ b/target/i386/sev-stub.c @@ -39,3 +39,8 @@ uint32_t sev_get_reduced_phys_bits(void) { return 0; } + +char *sev_get_launch_measurement(void) +{ + return NULL; +} diff --git a/target/i386/sev.c b/target/i386/sev.c index a25722bdb934..a61c100ef47b 100644 --- a/target/i386/sev.c +++ b/target/i386/sev.c @@ -510,6 +510,68 @@ sev_launch_update_data(uint8_t *addr, uint64_t len) return ret; } +static void +sev_launch_get_measure(Notifier *notifier, void *unused) +{ + int ret, error; + guchar *data; + SEVState *s = sev_state; + struct kvm_sev_launch_measure *measurement; + + if (!sev_check_state(SEV_STATE_LUPDATE)) { + return; + } + + measurement = g_new0(struct kvm_sev_launch_measure, 1); + + /* query the measurement blob length */ + ret = sev_ioctl(sev_state->sev_fd, KVM_SEV_LAUNCH_MEASURE, + measurement, &error); + if (!measurement->len) { + error_report("%s: LAUNCH_MEASURE ret=%d fw_error=%d '%s'", + __func__, ret, error, fw_error_to_str(errno)); + goto free_measurement; + } + + data = g_new0(guchar, measurement->len); + measurement->uaddr = (unsigned long)data; + + /* get the measurement blob */ + ret = sev_ioctl(sev_state->sev_fd, KVM_SEV_LAUNCH_MEASURE, + measurement, &error); + if (ret) { + error_report("%s: LAUNCH_MEASURE ret=%d fw_error=%d '%s'", + __func__, ret, error, fw_error_to_str(errno)); + goto free_data; + } + + sev_set_guest_state(SEV_STATE_LSECRET); + + /* encode the measurement value and emit the event */ + s->measurement = g_base64_encode(data, measurement->len); + trace_kvm_sev_launch_measurement(s->measurement); + +free_data: + g_free(data); +free_measurement: + g_free(measurement); +} + +char * +sev_get_launch_measurement(void) +{ + if (sev_state && + sev_state->state >= SEV_STATE_LSECRET) { + return g_strdup(sev_state->measurement); + } + + return NULL; +} + +static Notifier sev_machine_done_notify = { + .notify = sev_launch_get_measure, +}; + void * sev_guest_init(const char *id) { @@ -590,6 +652,7 @@ sev_guest_init(const char *id) } ram_block_notifier_add(&sev_ram_notifier); + qemu_add_machine_init_done_notifier(&sev_machine_done_notify); return s; err: diff --git a/target/i386/sev_i386.h b/target/i386/sev_i386.h index 68019d6f39a5..2ecca66f6e64 100644 --- a/target/i386/sev_i386.h +++ b/target/i386/sev_i386.h @@ -42,6 +42,7 @@ extern uint64_t sev_get_me_mask(void); extern SevInfo *sev_get_info(void); extern uint32_t sev_get_cbit_position(void); extern uint32_t sev_get_reduced_phys_bits(void); +extern char *sev_get_launch_measurement(void); typedef struct QSevGuestInfo QSevGuestInfo; typedef struct QSevGuestInfoClass QSevGuestInfoClass; @@ -83,6 +84,7 @@ struct SEVState { uint32_t handle; int sev_fd; SevState state; + gchar *measurement; }; typedef struct SEVState SEVState; diff --git a/target/i386/trace-events b/target/i386/trace-events index c0cd8e93217f..f7a1a1e6b85c 100644 --- a/target/i386/trace-events +++ b/target/i386/trace-events @@ -13,3 +13,4 @@ kvm_memcrypt_unregister_region(void *addr, size_t len) "addr %p len 0x%lu" kvm_sev_change_state(const char *old, const char *new) "%s -> %s" kvm_sev_launch_start(int policy, void *session, void *pdh) "policy 0x%x session %p pdh %p" kvm_sev_launch_update_data(void *addr, uint64_t len) "addr %p len 0x%" PRIu64 +kvm_sev_launch_measurement(const char *value) "data %s" From patchwork Wed Feb 28 21:10:19 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brijesh Singh X-Patchwork-Id: 879400 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="IJeHC0xU"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zs7fr6q5yz9s23 for ; Thu, 1 Mar 2018 08:16:52 +1100 (AEDT) Received: from localhost ([::1]:46977 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er95m-0005cq-VE for incoming@patchwork.ozlabs.org; Wed, 28 Feb 2018 16:16:51 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53489) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er90Q-0001Qk-2V for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:19 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1er90L-0005uo-Th for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:17 -0500 Received: from mail-sn1nam02on0081.outbound.protection.outlook.com ([104.47.36.81]:17351 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 1er90L-0005tr-LD for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:13 -0500 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=cvghRRnMlb0sd+dJ+UpPWut0MKaPGlr7Y8yBJCwmyso=; b=IJeHC0xUiI3JcuI5Wfh8qXDy5UMhQ4CH+58zsuaj6S7vDrLHCfEHnEpQJoBH6Ge9RyriXtgdlZSnKTiNbPUzfb8/4S4gL78VOf5lBnMoyuLDA43bclwbmqdYX2S+E5uDgMePzpplyu3gwg6YpAPG2Ty0MTOPQyVes1c9oed1gXY= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; Received: from wsp141597wss.amd.com (165.204.78.1) by DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.527.15; Wed, 28 Feb 2018 21:11:10 +0000 From: Brijesh Singh To: qemu-devel@nongnu.org Date: Wed, 28 Feb 2018 15:10:19 -0600 Message-Id: <20180228211028.83970-20-brijesh.singh@amd.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180228211028.83970-1-brijesh.singh@amd.com> References: <20180228211028.83970-1-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: DM5PR10CA0008.namprd10.prod.outlook.com (2603:10b6:4:2::18) To DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 1cc9d1e3-86b1-4406-ecb2-08d57eefcb56 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:DM2PR12MB0155; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 3:2NQu/+21p3Q8/9FYmAUYbmYAAY5Bi74VMA8p3WDqnle0ZXDng/Mwe1JgfHv3UULScfzPq2DnAD31fDapGGPYsVCOR/CWQTRS6qjZeJksou/gxtxwAzGiJMD6s9g+6FMI04dou0LqXxgyFBNzmEnUq4jFKMQ19b3GkuLio1Y/Bc+vs5o4wW48oLoe/jCf8AMuwP36aePa2lwOJukYMF5SoEDnR20ulXDphfXDVf5f6nwQRxt/yA8Jh73pMmZ9HMzH; 25:wlmtStpLXTVhZRfvYdwenwz4wcI9cL1uTz2xXDVcCOZkYMMM1Brcg9VXjBlBaPL59hpLkdbjBCNyTfAR7TuY85DpDtp2xrmWNY5e/feSBaEFMTBtYkt/H5joKsg+kxXO0w/kh1FFbX2p468UWyTCyRst7ey+djg0n5/Njr0SYFRNgO+T6SJfgr734Y3M0byWmU2TTs4B2Wv1R1LFMtvERg7OiYSfuMiko/3v41BktVQhhxvmnDzNSfO3OujGxJn3EMK1mYutwcoz6FZqrr/CL5xFajQ6ppTxLeKXQk7NxMnJ4/ITiifwMTlk8F8ywsRBI9W1/0O6Y5pVPdAoRui+UA==; 31:9QOhxXvxggs2dbQO88Myj5OirN1m0XUkkOiUQLxPsQDbyPe1LKjO9K0ekm19jv5rlD2SJ0o/AhYSn+ZPxj3qWH4DO20uzNda03PYuufHYcnuJrniSbpCtxkpNAHXpJg6k5OkyibrWHbl5wE6rxJ+7xs1+F49kJwnZ0WwIt5+yBe7f/AZiGdwZ7UY7Jxke+zFMeIUKuN2VFZuR0mqdiOIjuuklFdC/omlwcL8hC+gX34= X-MS-TrafficTypeDiagnostic: DM2PR12MB0155: X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:/o3MKeO2UAa7NhFB/YCvd9syVSkhOZGDQETb7sevdvFbRZrGDj/fPtmlCoBt3x457aRpes8+78wuup3UCfncGH8FdfBMr2sweFsMomuDY1VSqhN7Z9n4flH/LkvKiQuu4tSUpdBv7q0EjoTE8mBvtEpH1lwdjphLXlCIIWW/SxV6NQfEPCfXXFkyyePDw9GiAQPzA+2G6D7+5Uwh5WIxzvfNzs1VWBrTPokar1gu//An1MbUnkrbZro15EjnLoUXwdRt4iC6G6zjA2Jj6rdyqt8utGegvZjHSyFvI/AR0WiZLsnWoEtTO6Doe1Vy2zjff0+XQwU4YM0MINQBlTQOifOFL7IwNCUcTHDUvyVumgm0UPQvdbYupLHFFbfJqmTNG0tEQTuGEm3x3RxDccA5DEGyPzMPtfD3xCSQVaoRcxswUeg5FhyHLLsr3HqlOVIMTDvjnGzNAQmvGZMkwvvuN/NXGPpfryiYb/nweNStGpHcAxPJqzjntQsLGu/Ofr2j; 4:K4dGlZMqe7BR+GmHKJ+7rk1o35QII1h5uX9SsI1LnezJ15/Nv0VHEs69HS05W8cHdGWrihEShqftqACUh/0mkgh5TNcawMvK2B4O3kxohd0I1Sc4tGcLwsYvik+CWH3h655CUDlPJwS3wx2+7JKLNDkldbrKroJpUHZSyRnwqZkLGLOn/X+MRtU9NX2nkGoBb2IP4gDy+00YZ/JYuMWNJQVELa+BCBp2YV8Ehy05Xha9skDIhrpesVZ81tr0vUWePllYlMhScfEB9mChXkomSMV57qNn/vh0vlREXg3mPeOqoa1RVWvyzHwnbzg2AcUq X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040501)(2401047)(8121501046)(5005006)(3231220)(944501219)(52105095)(3002001)(93006095)(93001095)(10201501046)(6055026)(6041288)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:DM2PR12MB0155; BCL:0; PCL:0; RULEID:; SRVR:DM2PR12MB0155; X-Forefront-PRVS: 0597911EE1 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(1496009)(39860400002)(39380400002)(396003)(346002)(366004)(376002)(189003)(199004)(6486002)(6116002)(1076002)(2351001)(36756003)(16526019)(16586007)(54906003)(53416004)(26005)(53936002)(66066001)(186003)(47776003)(59450400001)(2361001)(478600001)(8666007)(316002)(81166006)(50226002)(8676002)(8936002)(386003)(106356001)(97736004)(5660300001)(2950100002)(305945005)(4326008)(76176011)(7736002)(39060400002)(8656006)(105586002)(68736007)(50466002)(7696005)(51416003)(25786009)(48376002)(52116002)(3846002)(2906002)(86362001)(81156014)(7416002)(6916009); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR12MB0155; H:wsp141597wss.amd.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM2PR12MB0155; 23:xILK/Sq2mCVvfpFAcf6seEcpkTEcu/E5iW5JzjB5s?= RJStXQxV9uJd3Jald6v853e4wQY74Yzlb2W/cE1r0UkZLe+lpGwSO/Jh9mM77+9gaJRtRs9r+LJ3V+sH0TxgWhRQNbq1HYYJWHVinZdoDo0s42Sz4LsZmLYXRub3/8XXLvwMQF0bssKU3SoLmKIIELrX6wv1Wn4jTJ8JsVfU99VOMY3LRrKzlO4g/Ac4u7o/RHk14epSNxFY/zGGG3Kj42GpYF3yLH7tC2CY3hH17W/bE5T45hJbcQKbBk7F45/YWcdCNBC95sk2qMF5hUfy3Tu+QIJSxZPQptO9znm14PnzZq1kB60/uKEg2k2OuT1TTcqDjuXYyVMUpl2rEyLT9rqCowUaesKHqTOhWG+y2HHqh3Eq/j4lFC+2o5VhYDhkdd7xyipEAklfJ0oIl9tr8cW1/Q9ucZm8Tw75iLuNhPFkh88KY0gsw/w7MG+h9HoU5tq1iXWXC+QK7L8S2VgxvF47gTSOqpbHKKqxMG6g3QCg6HT7NUUq++2/2p4SbSHPX1Ze6/qKqiIsPry/b8BpYIf5MUlJIH3QhnYPoToxe+94nX95v91z706vBlRzRvt1T1ym2NfTbS1kVzoUjBcnP5cC//5ALdCpdSLUSm57hL2m8crK85gX0Fy+MKpJs6XarCTzbjo2TFUDQhEqE94781EtZ5J8umCWuWO0bPygXL4Kei2RyM8sbnbbskpi6bbhEpMAzatsdUQZqnsKiOEBVNUhbbUy98gCBB4vXdNOk5C9VgSdT1+3QuJp33hCRC3YMi9tkbRkX/O1Xu4PR/UExM8oULc5Gd64VZT6z6Y7wHs7FFAa2Xo6/23vksUdmQgA0vXuqFchMR/p+qEYfj/LtEqVb69XRC5BOIjNkAF7O8H9cSJrkJO+vpilVcGjA9sW3XVaNMpbMf0a8soMqIuJ26hrERjJ6AYw1z17fx46tcc0sT82Ju6LTd41aEcJvX2xN0v0sSa6IA+jl6ip6+7hjDA0AKLQwIkQ4YwmLKloPXPce9E/M6hgfuSJwzmbO2rfWTGev3ToJgDjICzhjBiRyYI5xazgx7fs6dKP0aPLDy1mUitufUpCRuSFuryHGF7C2HYdxov5/1YGRYG/EDUptUdBcwz4eiL9XBuc9irK3MLVZ+yKR9uY57ZiEf/jk8fCzToQUcPq8DsTD5mlI/rvW0foN2sNvBrlMtc+2cka/sFqpvigAQNE4BnpF1xinFycwtGTTksh0Zv4qyvgs3YUOM2MOR4DPk1WKt20wxEWL38IA== X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 6:fzB4Yy9ITgzbPsA2LIQk5vAV9GxR3KGKmNnDfRUdxIka1Y9U169KMDewegqza5UCBVzwUDdoKoz7tYk56knp53EUJmGYC2c9mQmg36pYertYVrsDg0TiI4INFadR+peliztI/PiUTO5sBX0fgTSLChAqDpkeQCLS8S/YnDt2JXdMSmdayZhajU+ntQV/FD9M1e3fYepYXLGRxJT5+suZJAMR6UDmks4hShl1dnQylZVK4X+RFvRSufum042/hnSCxuW2N+753zTkUlHVC112DicE4eg9o7g9k5rY7sTAR7KBTmMBMLrh8nfKBjhK/qYH27SpXn7m9OjYEL2nM/psqYxU4Unn2ayxkjBR+kxieRE=; 5:DVD553Ec7pQ9dL0wilhk5ANHqhQ+xPRiPjMXtGyIVB/b5I4bc9fLKe4tepqLOu+ykfdHNnjKgWdm/nSJ6AJoe+ozoWG5/46Dnap+X0x6i/RsSO3TsEyeE2jaccHWxzlSue5tma8olWX8NfDCulDFDaRk1wri1FEgUtgnmCYvVXA=; 24:n5FMZNNafWKe1+CI1VYjEwVeim0JYHGUqdGSUEBtUm2vHP+ctmCRWbwMC1+CA44E/0SsPO+5OnFPR+O9y8h5kS10PE7/2dVnwru/+7ij9h8=; 7:C/gidIr8Co32jVUlYgTEbyRsK1Uhm/u4mkVXZPzxNcFwgHiva95A9o1TRLoruOqh2lqUQd/oG9K1Y9NRqCL9REjThqBGAddCkfdra4mH2bLIXZsvRO2TF+1ZB4LYrs20jXowSaOdrgS4AsKlORmuAmmufqifVluqqcvgJ4lN/HmPKM+6mRO5oEnTErwKdb4Yg1ZgcCe+zlbnu4OSaEIrC/E057knSrUjlrv5Qwu/DTlwF6rRUSXbZwf/qvB08y9L SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:UeFxeI/Uuz/d0zhMJZi9CgcBAlQ51QiopEpR1BFMLmVFW7YbTAVTqEBDXPK85uWiHz7+4cs//UXQCBlgfQzQMNZoRzxUH3nPYVf57zA2uXuPwswuTKm7rr6gwWP18l/UlzeiIeqVMNPCdLuK9WSOobXg1Z7re/vFdo+8AjHnbMlTB+P9v/rjLPGLV+82TLz6Y2RzidyPb/03p0hY4kTnjVd8U6nPN7ftBhnrmAMD6HN9d7xBviGO6BCMEt/i+WRJ X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2018 21:11:10.9673 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1cc9d1e3-86b1-4406-ecb2-08d57eefcb56 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR12MB0155 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.36.81 Subject: [Qemu-devel] [PATCH v10 19/28] sev/i386: finalize the SEV guest launch flow 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: Peter Maydell , Brijesh Singh , kvm@vger.kernel.org, "Michael S. Tsirkin" , Stefan Hajnoczi , Alexander Graf , "Edgar E. Iglesias" , Markus Armbruster , Bruce Rogers , Christian Borntraeger , Marcel Apfelbaum , Borislav Petkov , Thomas Lendacky , Eduardo Habkost , Richard Henderson , "Dr. David Alan Gilbert" , Alistair Francis , Cornelia Huck , Richard Henderson , Peter Crosthwaite , Paolo Bonzini Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" SEV launch flow requires us to issue LAUNCH_FINISH command before guest is ready to run. Cc: Paolo Bonzini Cc: Richard Henderson Cc: Eduardo Habkost Signed-off-by: Brijesh Singh --- target/i386/sev.c | 29 +++++++++++++++++++++++++++++ target/i386/trace-events | 1 + 2 files changed, 30 insertions(+) diff --git a/target/i386/sev.c b/target/i386/sev.c index a61c100ef47b..c341257fcc14 100644 --- a/target/i386/sev.c +++ b/target/i386/sev.c @@ -572,6 +572,34 @@ static Notifier sev_machine_done_notify = { .notify = sev_launch_get_measure, }; +static void +sev_launch_finish(SEVState *s) +{ + int ret, error; + + trace_kvm_sev_launch_finish(); + ret = sev_ioctl(sev_state->sev_fd, KVM_SEV_LAUNCH_FINISH, 0, &error); + if (ret) { + error_report("%s: LAUNCH_FINISH ret=%d fw_error=%d '%s'", + __func__, ret, error, fw_error_to_str(error)); + exit(1); + } + + sev_set_guest_state(SEV_STATE_RUNNING); +} + +static void +sev_vm_state_change(void *opaque, int running, RunState state) +{ + SEVState *s = opaque; + + if (running) { + if (!sev_check_state(SEV_STATE_RUNNING)) { + sev_launch_finish(s); + } + } +} + void * sev_guest_init(const char *id) { @@ -653,6 +681,7 @@ sev_guest_init(const char *id) ram_block_notifier_add(&sev_ram_notifier); qemu_add_machine_init_done_notifier(&sev_machine_done_notify); + qemu_add_vm_change_state_handler(sev_vm_state_change, s); return s; err: diff --git a/target/i386/trace-events b/target/i386/trace-events index f7a1a1e6b85c..b1fbde6e40fe 100644 --- a/target/i386/trace-events +++ b/target/i386/trace-events @@ -14,3 +14,4 @@ kvm_sev_change_state(const char *old, const char *new) "%s -> %s" kvm_sev_launch_start(int policy, void *session, void *pdh) "policy 0x%x session %p pdh %p" kvm_sev_launch_update_data(void *addr, uint64_t len) "addr %p len 0x%" PRIu64 kvm_sev_launch_measurement(const char *value) "data %s" +kvm_sev_launch_finish(void) "" From patchwork Wed Feb 28 21:10:20 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brijesh Singh X-Patchwork-Id: 879407 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="EcqJf8ax"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zs7pj6M0Zz9s15 for ; Thu, 1 Mar 2018 08:23:41 +1100 (AEDT) Received: from localhost ([::1]:47018 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er9CN-00036y-Sj for incoming@patchwork.ozlabs.org; Wed, 28 Feb 2018 16:23:39 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53485) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er90Q-0001Qh-0o for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:19 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1er90M-0005vV-BZ for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:17 -0500 Received: from mail-sn1nam02on0081.outbound.protection.outlook.com ([104.47.36.81]:17351 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 1er90M-0005tr-14 for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:14 -0500 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=2DFtgqwVUgcxVVo6D8Y4SyRXve2OmdSb12VfhrX6DHc=; b=EcqJf8ax9Gfr1/CQYCdlW4itZEspVMRqKTaADR4pbuuHoIHqniFR44FAjBhPzI8QNRlIE/nhJlP8ee3onFCEY4BFnlLrRpgi06V2hrQV9r9g/rm3RPe0j6LPYau+04Qw32rUyS1hjp9Yl7wgWelT2uV9JtPxX2+Ey9PZ/0RChII= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; Received: from wsp141597wss.amd.com (165.204.78.1) by DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.527.15; Wed, 28 Feb 2018 21:11:11 +0000 From: Brijesh Singh To: qemu-devel@nongnu.org Date: Wed, 28 Feb 2018 15:10:20 -0600 Message-Id: <20180228211028.83970-21-brijesh.singh@amd.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180228211028.83970-1-brijesh.singh@amd.com> References: <20180228211028.83970-1-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: DM5PR10CA0008.namprd10.prod.outlook.com (2603:10b6:4:2::18) To DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: d6b3798b-c898-4921-0c3f-08d57eefcbf9 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:DM2PR12MB0155; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 3:FGMjAjBal7X5ftLUO7H7cZnZbVx7dP+LYPQu0x5JhztK/cTBs1AnFnCjnkiX0d7D8uZcf6etw7+vLeGyWJAi0AAmZ+7RA1JWzLSnl5uQFT/UDPOqP+1qosO3HoPPYzSl1Ra74HwCb7QEm0g7Q7qNymMpRHnw5K1YAGHdVfZPkIYy30BmfMBZ8qY0ZGmcqPOg5G9KdwbkKG4982zLprJaVxmIGdHbfH/FEDxr9kr5Jfg+o0dSUE2Ev1m4RF9K3EmA; 25:U5B2RC3KEZzzz7LSTQVxRSuBBu0xW47cHATkaXhIz9+DHlNXa9wnn4JhZHHDX+N4cePCpk7Hh/BWxwGRHOmWtm4PteZSLrs3qIukEB8j+Mbkn1TlxJDKRAGLBxpYmaUnPFafZV3Cyv3L3fQviMdPlXBvt4kVUhEMzhgP8+Rd84x1cVQcBhL0q428ajKdDHqGnctla6PwDWwXNTzO3qHgGlHbiWFKJAyqy6m19SyBmHyLHOEVWZ81q5HPQTkBucoxSODR37TVU+Fuar5riKBnMUPjFI3T1o006J6Jor5d8JaxJ0UtW2bLs5ueohL+XP4ffG1QpT9atponHFUlIqfUmw==; 31:VNp7aFRpHJ41iFL0UXxKYr5fIFYPknELJGTYy54U/L+Vqkc7ZyQXHiXE76nyWSkmMh4xSavVJH46LuuhL2Bn0uaS9oq6zSv4nzGfO8J2Q2QvxelEuS3cGHKJeVLx+nEQAmvvZYnz94gogQTu4+zx5SiLx6jmeb96ZBNDtJeE2lZdAeB2htSi0De+7hqlGDDUnKu0hX23rnqsaUCrqvjCQgicHVtCMjCht5ZOB37mWi8= X-MS-TrafficTypeDiagnostic: DM2PR12MB0155: X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:BI0HHtjtvRxW0ufAkHZN5qB/rBX0JNmgDOL5qYIXU/sQAuudgMj1IYq3n8w+nhE8WH10pxYbgYKqGcLw9NAuJVmEULmX1Prnch5scx/83iQ9LyWTwF9kBxJoS71BWZ2fXm1qTJv+UW0hsyXJfcMrdYRgits4Af1eepSXSBzlRTHvY4yLTzjQrsQjH8fYMmbiKCZtvt8ncA2J6GBShwGajc5SYRab34WmAvQatBgUwAnvss5fLGKYCP1vtwy+/KuiHUSZOMQInnP+VOwzsvzAvF3mdxePcV1HOCF9BE+ASAUAAuDN0MtkHH4SfcQBV2c149YhOBnX96R4iMs6hVFmufWA+ZwMIp8aCM252dEtxQhtXVdajuO8yexHaqSJ9k/QUFsEvgJsjhHlbNZJlX3jlRGP1KeWdb9/vo06wLQb3/8BZbP+9KASNb65iYilbNGuvHCGKxqaBLVmTpNZDeJsPQuIlSS7YS59hrUTGw+qp7W/Zvd+IpYM/NWm/tlKnSc8; 4:NmEhuj2Qm8+o/LYc9QN9qqWkJM9+MuC8i7nIncL3g8F7rY5Jhcia78lfk5cvWN5MC/C5JSgB7hzFJfdoqh5BSW8r+6Cb9PYAO1k7e1uf+LIB+pbTx/O165+aDDyNjU/jTqzwuxwjXjNhpZnaTNKIqQ//Y6TuAmVhjQB2KKT6Y6vWMNRMlP18vFuSzZX8Box1228eglKlMJACv6nr6D4oxVJHz5NcHtCSWYfWv5siAGBt3DIjm84aSRFTPpMw1n7OIg5CT5EgozPOlpxyN2AqDNt9K60dBQiwjuART1WaIcrC6XrgZOGV7D1rCv7tfmm7 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040501)(2401047)(8121501046)(5005006)(3231220)(944501219)(52105095)(3002001)(93006095)(93001095)(10201501046)(6055026)(6041288)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:DM2PR12MB0155; BCL:0; PCL:0; RULEID:; SRVR:DM2PR12MB0155; X-Forefront-PRVS: 0597911EE1 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(1496009)(39860400002)(39380400002)(396003)(346002)(366004)(376002)(189003)(199004)(6486002)(6116002)(1076002)(2351001)(36756003)(16526019)(16586007)(54906003)(53416004)(26005)(53936002)(66066001)(186003)(47776003)(59450400001)(2361001)(478600001)(8666007)(316002)(81166006)(50226002)(8676002)(8936002)(386003)(106356001)(97736004)(5660300001)(2950100002)(6666003)(305945005)(4326008)(76176011)(7736002)(39060400002)(8656006)(105586002)(68736007)(50466002)(7696005)(51416003)(25786009)(48376002)(52116002)(3846002)(2906002)(86362001)(81156014)(7416002)(6916009); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR12MB0155; H:wsp141597wss.amd.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM2PR12MB0155; 23:tQTzEebpmZiF2s3fbgV2Eq90p03U8L0mRO3a/OyHb?= KQrFywTXzI2klBKLyL/zMIZQDeN1SgAI7qqR6HbYKV/AkOPm1plMz4mRcAwEGol7HfMNFt163guBvuPW/hfjURs1faKWNWS9AhLNXFICvZaoXJpKC2tRS273bmgesuaxWGkrHHoVSFs06CDvTllaM5oygCS/tlrVe0eIM4+JSOtPX9tRYv78UBaKEoXfdB7STN/TljPz9z+IedYax7CvnAEkI4kYnjNQt41BrKj2wytYukJpviIgylEqVr5yCJznzddQh4zYiyh4kmKJzZbyJQkYZ8Ie0QrhrbiuwkyL5vFaeVtKnvVwnHBEbjeq/4BfDY3YfIg/fY+/B8bKDd9IVYvLqxxan0tBLlQ+1c/wU4LXykA+jQuUEauVXd/z0ZtnHBEme4/qcBijheTEqYjxtrxBkYIYtO5g4luM7YCJnRYx6CjQjUMa132h4Of/H7Bwc4X5V9HgHFYn8JobqNa+VOWjJChjcNvqsb0ViZd7djP6eIeAgS93zYYf7E2hi0El80zOxrv43qNh4MIR5VskloV+itxU0UsZjH4jRi5QZyR17w3u5iU3eIuJrMZTwkZ4BjCinyvbB73iFo3qXmKyyovSvsM0wLp5QRs6v6Edl7r00ayJW2Eu8XTf9IayA0vzi6L/iolIqWYGaDCP242eNILsTzHRcJw9SZYSRjDmLr24j2QJw6kOWIZ35rEcJqPcCFkbHQ0M1FZdnl3hW+0hUDpzpzn2NQTNbUjmW/cpxiBVKo+Ax7HSH0ns/tB4XMhU6rVMhVN4XKEVBRc5Ui+EnuO3XOLVekPZ5OJWAstV7NEFNEv56Z9omlo9UItyH1gf9vN/C1Hzhx36Km+ZX2oqU1Ts6+S+uS83Oa5kdsxlIonXJEY41M4cSSBJ1Mteev/jpxCAesJ1qX217iOoH60YNUrmmatNXe+ZrRnfXIFwQgKg6s9mWWCJalbOVQ9rOd68LQxILLdybEMXQe1WkXJAyO7F64edUDUge/ZS4TS+peAW1IojZsb9pWKfgXjZm+8Uti9MvILb4Po7qLm6e/shFsd2/T9dZKlTzwhkKRVRs+X7qN2OH794Uk7oNVMmNbEJ6sSHW5vfbCF1CL7PfKNpfvY9puJ95E48W6gEh9P44ago2dxlgba0Zj/g83KkhU6hgd5ScFvYiTeGMYRvSIpUCMQn1VLniW83iAheAFKDoOpu1f6roe8ucMcsUZAk56G2++WHFPcEKMz2uHBlXYVv7fjANuCNStF4FDh5O9Nn7hxZTqddW/gHTeEZ+9yt/MzjWo= X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 6:jpqbEBkck95zNDcjRFukcu54L7kC6ay9SLSJ50WHBuyQDMa4msMy2P140w73vaa/0HMORlseqVGy+p161hUD+wHrHEFz7KUq5JbAUbRvglNKr0vevM8/X7cqqG8ZK/zxAktkmjc52AgaZPfTpfCxQLNNDjD0WRWHqjwYxFuJvok1fs4xc4oXgvimGicIwhistcCs5F1v2nmQzF0DV7l33GihthLUF3vc80ubMVqxna49TcIchZ/l/Bp3gDPpnFCX3hJpD/YFznozwZa/6X9EFpfF4FJGLN4btOfzPtbFIm1cA6EGpCahwe1QvrjB0/oVPJDeL0NFtMvmIcqsC0YMt6bZoQVi7OQT74VuzKOF2uI=; 5:1MlpFeep1QKYL9veydfnc57+Tc+b4kAJhB3WJqw8yLEU3mb327hcfNnMjsl1CotYlZJtOiDm1h72erLNlX+vaIX1u6dVVbhiZK2ADZB2G9rcUYwpnbbdbgPeTmd4jrnG2LyFr8tns3bdlGJk9cdLMATZbgesskyxUgcRj7WpO5A=; 24:WiykqPKeTBkD0MUwwsy7S0cLtY12WlWD0s0funN2IiF32j+jb1n+awAg2Rl6isHzsdAYOHa9bpMQB2Yof7uq8aSVIudu4jp2rKX0lK9PBsw=; 7:yrsalKBnbHbuQmofytf94bPZBhH5NtX3ZMEfyW04upVC9LxPa3UwTP5whbuOU2zY87f0kIqJ4lSuLQS6OphainMgFm7Ejy/h5P4tSP4OVnBXShuuqBNqe3v+DTmcBvX6qKvWutS4Yx3LqzZuenOnE869dW3XM3H7dGuet8EJUtA3hDjs1Qw7x7gap78bn61NK5TIU4n/k887fjHbWsK9QNNtdSCAmkipwfMClhOzDvWDOUV96rL5JvebA4AN0pl2 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:yCUdXhunuGZdQugtIN6qmU1gqzTTgwahO0TapeuHtLxAOYMzc/LQHjBqIalNkOBjh0/263W++rzhWSmYc/ZGOZWBqVTFIYoB/0T7zMwResBkqphSvUGPQV7nRRLzLYIWm40oyFfCatzZHlBKNTYLkxEhLyVJj+6zbKRFhqSwRsf8v2zGcUmhX3RfW0gporxcbNHQLiv9G8d3TyPEdZo5ATgHvDUa4BN4hRZ3+D+W63OI2CfptkYWJFV+ckKiLfHb X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2018 21:11:11.9204 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d6b3798b-c898-4921-0c3f-08d57eefcbf9 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR12MB0155 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.36.81 Subject: [Qemu-devel] [PATCH v10 20/28] hw/i386: set ram_debug_ops 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: Peter Maydell , Brijesh Singh , kvm@vger.kernel.org, "Michael S. Tsirkin" , Stefan Hajnoczi , Alexander Graf , "Edgar E. Iglesias" , Markus Armbruster , Bruce Rogers , Christian Borntraeger , Marcel Apfelbaum , Borislav Petkov , Thomas Lendacky , Eduardo Habkost , Richard Henderson , "Dr. David Alan Gilbert" , Alistair Francis , Cornelia Huck , Richard Henderson , Peter Crosthwaite , Paolo Bonzini Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" When memory encryption is enabled, the guest RAM and boot flash ROM will contain the encrypted data. By setting the debug ops allow us to invoke encryption APIs when accessing the memory for the debug purposes. Cc: Paolo Bonzini Cc: Richard Henderson Cc: Eduardo Habkost Cc: "Michael S. Tsirkin" Signed-off-by: Brijesh Singh --- hw/i386/pc.c | 9 +++++++++ hw/i386/pc_sysfw.c | 6 ++++++ 2 files changed, 15 insertions(+) diff --git a/hw/i386/pc.c b/hw/i386/pc.c index 55e69d66fe6f..53ddecef369c 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -1360,6 +1360,15 @@ void pc_memory_init(PCMachineState *pcms, e820_add_entry(0x100000000ULL, pcms->above_4g_mem_size, E820_RAM); } + /* + * When memory encryption is enabled, the guest RAM will be encrypted with + * a guest unique key. Set the debug ops so that any debug access to the + * guest RAM will go through the memory encryption APIs. + */ + 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 73ac783f2055..845240f97293 100644 --- a/hw/i386/pc_sysfw.c +++ b/hw/i386/pc_sysfw.c @@ -181,6 +181,12 @@ static void pc_system_flash_init(MemoryRegion *rom_memory) error_report("failed to encrypt pflash rom"); exit(1); } + + /* + * The pflash ROM is encrypted, set the debug ops so that any + * debug accesses will use memory encryption APIs. + */ + kvm_memcrypt_set_debug_ops(flash_mem); } } } From patchwork Wed Feb 28 21:10:21 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brijesh Singh X-Patchwork-Id: 879434 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="LQHsTFCh"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zs8513Lr6z9rxx for ; Thu, 1 Mar 2018 08:36:05 +1100 (AEDT) Received: from localhost ([::1]:47105 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er9ON-0005RP-JU for incoming@patchwork.ozlabs.org; Wed, 28 Feb 2018 16:36:03 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53558) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er90S-0001Sp-0R for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:21 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1er90N-0005yC-Tw for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:19 -0500 Received: from mail-sn1nam02on0057.outbound.protection.outlook.com ([104.47.36.57]:26791 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 1er90N-0005wc-Kn for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:15 -0500 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=5d59LpVex6URz2ph0rzanbLl8ENkho8UxH4wpS7qbss=; b=LQHsTFCh52Knm4qnstpQ1sIrqwf/krVHDrtva+c1v4ZP4n6Qp5/v0XV83YwbGSBUQg0pc4QM3A7Ecy9R2w0mw3apUOzUcEtHkGVpT0EMw7jwN965dnNbsuZ+qP1uLJ1X2lUOTOSm0hi/yx+H95x/XFxDZTQ+fRGRYZB0bw8IRSo= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; Received: from wsp141597wss.amd.com (165.204.78.1) by DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.527.15; Wed, 28 Feb 2018 21:11:13 +0000 From: Brijesh Singh To: qemu-devel@nongnu.org Date: Wed, 28 Feb 2018 15:10:21 -0600 Message-Id: <20180228211028.83970-22-brijesh.singh@amd.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180228211028.83970-1-brijesh.singh@amd.com> References: <20180228211028.83970-1-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: DM5PR10CA0008.namprd10.prod.outlook.com (2603:10b6:4:2::18) To DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 17652ce2-303b-4553-4019-08d57eefcc8f X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:DM2PR12MB0155; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 3:2N56NCNut5dT5x4+FbdDDE9YCA8bl0Va0fbSW4Dgy4dBAh5I5xxGel/nsZLTkRqrLspADKsot9DFjaXbngRguW4BNC8dFh8gRqzrr/sUpabn/S1bL9lBZ2FXBFuUarArgOXK1+lN+DwJaShvMLCpEtccZWI0b3zO/UkoYkGDZswgkfyzccCtBbgLxsTNyKN72Yiv/BUFY5J16XCsg+Cwda9LDR50nkaj9qxvihpa2Cdgb329ckNhOxmIK6A+rFU4; 25:Wg9OzTsFfd0A2hyrOAYrKxJnb/LYYX+QMiO5lDlL5jgoW1LmGoDTrSYl/iHiUVH9BAMX8Wlfg/qzORzLrquU2ZMIyToHasSnlAslsGZWGGNJTEXICXysy82DpdQto85w9Z0b9TDWq63jGTnG2j6MfefyJ8uRmKHZacSO02mN4dy05CYU+63bKnPeFarbYdV0/fgi/lYq9SuqB7iuoOrr3cJzW48R6QI1aZRVoBitxzsHaJHyqeR4KsENc/39CCwz7qgNkfCQPYRZFuNJIlEnCA215qKNfn7V2tlxr5qtpmarw8TDXIjw93pZacz0kX3I6D4XBkFo0/bChqDgHUqBxA==; 31:x/tBAZgozO6m9Dg68FRyWxsWce8uX4kcsIFN1aldZFYFn9pIOQ/FqL5tA3aZyL+Zq8Da7buGMNtsZCxubMMSUnIJEJnLbVOLVzavKmi/h+ApitIlxl3o1efBpZ0Vl7RjoOlB66OVy/jxVp6IaqARwCazsWkbQMvTDzhdfJDo2ZIf2/eEZKfx5OoMrnA9P4S3WhqG+Z9B9T6YocP79YF6qgo8r2u2Df48lqEa6zt/Q7E= X-MS-TrafficTypeDiagnostic: DM2PR12MB0155: X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:GtwZVjNak3bcVRQDxnyv2UfKiIQbDJl7jpunHrmORSin9ecvyt2VN+U0zOEshcGOMMT1BUitgYvGJHMxJlDTBMi5XoezU+7KgHa4BnQxjTCrUZvRuc34PmWIAw5RCEkb1nM3STSsC+QP+/DPTT3ajgJRqKaZmXfdo+Q7tTlUUnjQbh3UM5FZ1MtJv6WqT+3T1coaPU+3n1wvVWzGswbpUtEF1lNE5KpI6UxVRO09ttaLIdcwUdvioWjLKnWDkbc5+cmNQpRNYaDpCOIwEgISpfWFyNOBraJcWW1u7EBgwva+34nzB7pQRvBpsU4aObqzVCJLEEahvr+ZDNy84ZzIZMs+cWx929d3Nm7j1GB2x9LRaioS9PoJgk68FJOXyZqLk+xKWsnEe9M5x+Oxubg1F6k1BoawTSDsQBRVfSYQ2KQEAEgqchM4RI4gbEfwW23LqGtEv55Hi+OG9oTMYrvEeR2bAXQP0GSBFpM+Nk4ssHlAJ7CEd9w/leXMI0WvN1EC; 4:EoK0oYwCNOHehTOI9xYtL8Z/dmCcFxVM4UAf7mg29bGD2ibHJXaq1FKWgTcNu6ibOVRjUbmAHleXnuzTf11HQgY61sVyCzpIdJanhn2lrzu2Mmvm/zq/j5hZdaTIqFOwJDShH3bNaSYHbJlAutrXN3351OrzB4anHrPRUDdmFVSOzJrJm3CxTAAXFKtP4bM5/glr90+MvIiC+UM2RBbTKBQ9oYzebpG6+k2AY57IqeYVXhDs2ALFFjajfW//ZQyteHHyJvdCA0iATxS/nZeIbE4mQALDBxHIjH70wt1qAM2X1erZOPpT7FjNyioQYmx2 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040501)(2401047)(8121501046)(5005006)(3231220)(944501219)(52105095)(3002001)(93006095)(93001095)(10201501046)(6055026)(6041288)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:DM2PR12MB0155; BCL:0; PCL:0; RULEID:; SRVR:DM2PR12MB0155; X-Forefront-PRVS: 0597911EE1 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(1496009)(39860400002)(39380400002)(396003)(346002)(366004)(376002)(189003)(199004)(6486002)(6116002)(1076002)(2351001)(36756003)(16526019)(16586007)(54906003)(53416004)(26005)(53936002)(66066001)(186003)(47776003)(59450400001)(2361001)(478600001)(8666007)(316002)(81166006)(50226002)(8676002)(8936002)(386003)(106356001)(97736004)(5660300001)(2950100002)(6666003)(305945005)(4326008)(76176011)(7736002)(39060400002)(8656006)(105586002)(68736007)(50466002)(7696005)(51416003)(25786009)(48376002)(52116002)(3846002)(2906002)(86362001)(81156014)(7416002)(6916009); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR12MB0155; H:wsp141597wss.amd.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM2PR12MB0155; 23:qPAU77R+mKXCLUkWsolPnyHnSazX56bsd2yjHCMSb?= fXoHjnwbSSy67yExBYlHmTN1PLajytinQcagIDSICWYoO5Y+RGs5AyBRo68p0mVqwTyr1Rcok/2+pDwOEqfmuyLlVIqswcCOCcWf1LHtf+SE2z/83nDnD1qQukuWN9iQo5hi4y3q4ZNL8qTVjRfw3yOv/RrqvuUuKOh7p7a1NGbnxKQN+lXT9qFxd7m/SRf158O+iFQkwvYp6KU52NSbnMCMkTUYQKI4x5XjseR/i/ljJPeaj+UXqvATV5SzvpGul4WUFF1mTsXrXMlAn9LbR6p9YhdhbfVIOgwEW2qGeQdNaeu0zXoQGKGuOaEMiGNNSccXXqjScYn/B1/SzXP2C1U7gCp8MoE5cpIBkDXkIgbe+/BkKYO292Yrv+XBM/qQe8iMB5vMz70wUbVqdO14QwPZYpQJehJ3RriRL5flDLLPlhhg4Yu7+DTaY3FtDND8BbuM87tJj+b2EqssSGNPNA27tj7ZPBs3AonWoMKtLQ76cAE5IrqNkFnOvowwHzSxWa0ASNHEdiiuktGJxEMxPFgBVxVf6gOkgtTqduAeVZAQGsArAAmxIflZ3uUtL0ADhy4DOqDehusL/h8RJnvDDH/Hq/BG9KxImqdLK0fDg0i/pB6XwAk2GCZA60+bffttbfiO0SF7uApwq2ouSclg59pHravIZN8oPuMUPPWk5MOJiPnVldaqM2KBpNUu5gzPBGbss9NR7998eKgxTqRWlH53mHBvLdIhSVzFqK5jEhrkr6piJS5YbTKKi99UxaRyfTZWaqZ/B+mXnxEx7YAIZaEurYkyySpgO5oYkfbB1zGKyzHq5zMK2fcN/jQBkErd/VGMKGHQJ6Tw/XrIi/9MnQrwFzKk74u765z5wN485GUXqp+qKpEQriYZXAXcC0fNOiR7b+VBscJnjvTpFyZxz309bM43zvp7OMf0FEeUMdp0zyLW8kX7Y6U0qri8y6J2p9rbOtSRAS5n217FNGVR9VwJWyhxVr1rThz+lcM2id6UNOc/zGLRHEPAdm/ZvKmfWFQ17WJMd6rO07EVNcBnYqD00r7OSvLnhL/zL02zV+2whljkx5D0vjuyeD9gIC5zM+cR+k122+8xKIkFK7EX9uyd9Vy1sO6YwbMJzRqZWGp/Hm9j7xj5Qur1cATdHcTWg9CyLFRHn3jVLpZCqsMwZrj28xXqNX3SFansaOecN2QymR6txRLv56V4XbV8pgpB+jDXe3fRJDqjg5BezhhK6CSlrKCdu+bu3vofPZHwLeUykmS1I1LBX+ld/JbLkc0k/0= X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 6:FPcOnB1Zl9iyv9e9Y365tdr4hE90R/pWnbf83HOrgt+qMmswaufLrBK2C/yOM3McvEF9Ey+uHXazOXDFdRntEPSppz0sGQRHF40rVcsVgsgeGHyE/vGKK9JBRd6CWQ+Uyf5xG4/ZpsaHht1bwI9eS0jlZ1DR0NEdWFEXoyUkaa/5HSX3JcwKzLK5/wqFaZBE+YWOTG+KvHKqLBoemwvjaB/G942u4uyNlx8l0YZw+4n9BLvOK6oZK+QDNku4aRElSZP4eKqGfj9T2wWFLMwmofo0J2RYnOqg2CZAE3OtWH3UVrLbFeJB3SFbQVFpNV5QvvUCPxML7ocT8Eslh1xW0uVSLyjltZ9P/+gumy1cm4E=; 5:ny0pABvE7Y912ZWUFN3eDnmtqQadhdi3bDTDuGwx67gAoZ2mJMV4QV1ScoF7QqG3PaPTFqyopHtzMJYCuvvVCLRhzGY/6rKEa90HUQZdOMDYBVr9A6yOblHVhhlz7I+H+4VQdNE3K7Zq18zE7u3npV7Hpcelh5HsxrkyiKjVz+g=; 24:8EcnEjhcXl5Kr0QyOkI/yvWICJ3jH6DWzYo7cG9TSV2h5k/Oy6ic/LWowJQl+FsocEnbTndFQzy7RxiBtdr1TQJfsfEKRezfsKBirba0IFA=; 7:zpMPESnYywgOR8CrQHKT1znrAoxbKVoEtrNKcKRkyM16F3bCa6OclcjZMQkXyFrHJbmEjzS8qphYGxZfIqhoBPFrxiFtnbfE6FHx+YuGbA2BeEc6YP77EuvdMdCYjYeLKNyGgCE3K9vgELBdCUpQI7TbxuJWvf0DAkSSSRVaJjGKqW7S2rSZvuADmB65b/LSa0M39OcCB1j71ab9zDUKQHIv+IxB0Enss3dVupuoaW5tgI4b5SFLp7M7X82kMfku SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:7s68nlEIj3yg+DoGugXTilKdOjxu7M6I8ZslhYRXrSnryEkMlnCyMSQ37En8XtuPOxE6Ye006dxhmvKhvug2OZ0skzE3jW7PBIsC1zL00/+B0S4VgBCR2agO6HT1N4jz7wRWLNf6gsAaCL0Qxtz6+jPXGRQ2epiWx9sxZWsjQcl2Q4ygDmB5zfudhkGP2PpIukIddKHaoLP4j+p6J8KowG54wfIS52Jpn1/sRwhTZiwaXec3oPpw0OY5Ztl5Fq28 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2018 21:11:13.0141 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 17652ce2-303b-4553-4019-08d57eefcc8f X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR12MB0155 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.36.57 Subject: [Qemu-devel] [PATCH v10 21/28] sev/i386: add debug encrypt and decrypt commands 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: Peter Maydell , Brijesh Singh , kvm@vger.kernel.org, "Michael S. Tsirkin" , Stefan Hajnoczi , Alexander Graf , "Edgar E. Iglesias" , Markus Armbruster , Bruce Rogers , Christian Borntraeger , Marcel Apfelbaum , Borislav Petkov , Thomas Lendacky , Eduardo Habkost , Richard Henderson , "Dr. David Alan Gilbert" , Alistair Francis , Cornelia Huck , Richard Henderson , Peter Crosthwaite , Paolo Bonzini Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" KVM_SEV_DBG_DECRYPT and KVM_SEV_DBG_ENCRYPT commands are used for decrypting and encrypting guest memory region. The command works only if the guest policy allows the debugging. Cc: Paolo Bonzini Cc: Richard Henderson Cc: Eduardo Habkost Signed-off-by: Brijesh Singh --- accel/kvm/kvm-all.c | 1 + stubs/sev.c | 4 ++++ target/i386/sev.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++++ target/i386/trace-events | 1 + 4 files changed, 63 insertions(+) diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index 4974c00c46fb..f53d4ca503b0 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -1681,6 +1681,7 @@ static int kvm_init(MachineState *ms) } kvm_state->memcrypt_encrypt_data = sev_encrypt_data; + kvm_state->memcrypt_debug_ops = sev_set_debug_ops; } ret = kvm_arch_init(ms, s); diff --git a/stubs/sev.c b/stubs/sev.c index 2e20f3b73a5b..73f5c7f93a67 100644 --- a/stubs/sev.c +++ b/stubs/sev.c @@ -15,6 +15,10 @@ #include "qemu-common.h" #include "sysemu/sev.h" +void sev_set_debug_ops(void *handle, MemoryRegion *mr) +{ +} + int sev_encrypt_data(void *handle, uint8_t *ptr, uint64_t len) { return 1; diff --git a/target/i386/sev.c b/target/i386/sev.c index c341257fcc14..23c2b6183f33 100644 --- a/target/i386/sev.c +++ b/target/i386/sev.c @@ -24,6 +24,7 @@ #define DEFAULT_SEV_DEVICE "/dev/sev" static SEVState *sev_state; +static MemoryRegionRAMReadWriteOps sev_ops; static const char *const sev_fw_errlist[] = { "", @@ -600,6 +601,46 @@ sev_vm_state_change(void *opaque, int running, RunState state) } } +static int +sev_dbg_enc_dec(uint8_t *dst, const uint8_t *src, uint32_t len, bool write) +{ + int ret, error; + struct kvm_sev_dbg dbg; + + dbg.src_uaddr = (unsigned long)src; + dbg.dst_uaddr = (unsigned long)dst; + dbg.len = len; + + trace_kvm_sev_debug(write ? "encrypt" : "decrypt", src, dst, len); + ret = sev_ioctl(sev_state->sev_fd, + write ? KVM_SEV_DBG_ENCRYPT : KVM_SEV_DBG_DECRYPT, + &dbg, &error); + if (ret) { + error_report("%s (%s) %#llx->%#llx+%#x ret=%d fw_error=%d '%s'", + __func__, write ? "write" : "read", dbg.src_uaddr, + dbg.dst_uaddr, dbg.len, ret, error, + fw_error_to_str(error)); + } + + return ret; +} + +static int +sev_mem_read(uint8_t *dst, const uint8_t *src, uint32_t len, MemTxAttrs attrs) +{ + assert(attrs.debug); + + return sev_dbg_enc_dec(dst, src, len, false); +} + +static int +sev_mem_write(uint8_t *dst, const uint8_t *src, uint32_t len, MemTxAttrs attrs) +{ + assert(attrs.debug); + + return sev_dbg_enc_dec(dst, src, len, true); +} + void * sev_guest_init(const char *id) { @@ -703,6 +744,22 @@ sev_encrypt_data(void *handle, uint8_t *ptr, uint64_t len) return 0; } +void +sev_set_debug_ops(void *handle, MemoryRegion *mr) +{ + SEVState *s = (SEVState *)handle; + + /* If policy does not allow debug then no need to register ops */ + if (s->policy & SEV_POLICY_NODBG) { + return; + } + + sev_ops.read = sev_mem_read; + sev_ops.write = sev_mem_write; + + memory_region_set_ram_debug_ops(mr, &sev_ops); +} + static void sev_register_types(void) { diff --git a/target/i386/trace-events b/target/i386/trace-events index b1fbde6e40fe..00aa6e98d810 100644 --- a/target/i386/trace-events +++ b/target/i386/trace-events @@ -15,3 +15,4 @@ kvm_sev_launch_start(int policy, void *session, void *pdh) "policy 0x%x session kvm_sev_launch_update_data(void *addr, uint64_t len) "addr %p len 0x%" PRIu64 kvm_sev_launch_measurement(const char *value) "data %s" kvm_sev_launch_finish(void) "" +kvm_sev_debug(const char *op, const uint8_t *src, uint8_t *dst, int len) "(%s) src %p dst %p len %d" From patchwork Wed Feb 28 21:10:22 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brijesh Singh X-Patchwork-Id: 879411 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="iAUVeeRQ"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zs7vy2rkDz9s15 for ; Thu, 1 Mar 2018 08:28:13 +1100 (AEDT) Received: from localhost ([::1]:47049 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er9Gk-0007Rr-Qi for incoming@patchwork.ozlabs.org; Wed, 28 Feb 2018 16:28:10 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53606) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er90T-0001UD-JU for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:24 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1er90P-00060X-Ar for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:21 -0500 Received: from mail-dm3nam03on0047.outbound.protection.outlook.com ([104.47.41.47]:38389 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 1er90O-0005yl-Vn for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:17 -0500 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=6l0oCROMoiKcmBxak6/sZRHdGAJJ+gZWy65rqbRKV2k=; b=iAUVeeRQkr5Ca9r6PTQxQp2DZ6CIMGrKud4wecirf19g3rGMKHPC75P79e6soVh5HwTb/KOhdgIAfZZcYussE63cmRyHVy2Xfh7mTeEbZYdW72eyrx/L/6ponAn7es851ifAqNrbHvCKvJEtD1WD5ieeb3qZK7cIciM/1PgbS6I= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; Received: from wsp141597wss.amd.com (165.204.78.1) by DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.527.15; Wed, 28 Feb 2018 21:11:14 +0000 From: Brijesh Singh To: qemu-devel@nongnu.org Date: Wed, 28 Feb 2018 15:10:22 -0600 Message-Id: <20180228211028.83970-23-brijesh.singh@amd.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180228211028.83970-1-brijesh.singh@amd.com> References: <20180228211028.83970-1-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: DM5PR10CA0008.namprd10.prod.outlook.com (2603:10b6:4:2::18) To DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: a951ad87-ac9b-4f29-86b4-08d57eefcd38 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:DM2PR12MB0155; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 3:LcEuepQydevZpwnuGc7tjIN2LK3zacNiExudALMPEifbZhP1WcobgmuwJf3JFdaKkasJWLlfn3jZiy2uHsht2Cn4mqcNe2eMsoXyz5Z4RtZ2kYZcH170vDnZSjRZAfkJmPCLQlhTWTd2EUeNBE+Zh8EIflfM3AL9vk/VMayndC9SwMYpvzi+03XA/pVO8jD0sDjZXvrx4k1HRSlx6dHWQ1R5txbLV1QMzj6VqB2jylVoFh7Hku63BmPwnKbOUWEH; 25:10XcsJpZdDSAziraYn+qJQrtW2Pa131hgen8lSeoRpERqcw8ju/WhRAfmP5ee9CogUV4nmaxMv6t7j5zDJJTzeAmnmmWP9gYHUsavakWEUs05Xv38r8eqm22hRT3WKnKMmcmDacGcDtmeIIxFTRigsIJG6yXU9Tlv82Z/gljfAu/maWadUUrNHCwitcy9dOVitcNXUWPbGTY9ElJfuHQ78YFJnSl/DLA16oSh9Idgap6NszP/PzW7kz2UejrQDxSjRxkON3+//2rMW4zHOu959j1UURCGRMqmfDmVnR7ITxXdvuCAU9Lslv7MjdVCVLTBkN3UkBXbV0Q7hmBHUbMKA==; 31:gtinQts7i4KnCwri08D7MKAQl2luUArQNLwtRKZ59nkrwJa+sWXFjKvkrDCCD2eibOY4q4mJHHVmqMnu33L/c/uCsT5GQOrEp0QN3Gkzm+wUg5ZN+KPtPjLT06gqf28/BqbGrBgTxJ0ry22HzHm5dE9YfyeMoy/T8n3R1z+Mcla5diy93dxRjwYMGn2V77W3En1Op0n/1SFqtx3seHGzTovL2UzFSJWCtw6RL+E60RM= X-MS-TrafficTypeDiagnostic: DM2PR12MB0155: X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:VR2Nwr3OXIG4Dd5o3rQNH+DBVE4xEI+PFdNZjXyQeJaZdsXO1ILYZG5CWVSWUM5MU0J8GDyRbL1mqXwbsyc71oqPe/W/vH/NYzkqEhGlQxi/mC4lhKHPj1T4Cq/KllRuadYlUtVKFS1pZygNu/W9mXLbYl3auuzdNJZc+g44z+mY6TfjNWR910nQbFFDEM5XEvdv1H4+T60PV/WAm/LPdvpiIICZF1+cVkVHqNXyY+f/Fw7U+Lgoglg5/7RbgOO3Fodn4DsYIPwUSyD6nhy5UiN6jZ8RvOFwZDyg1s0dbgqKdFhi2VcotF9UpKoW6ptTpQSy2JBV30r981pjB74+ktdlB2PvyBYKeFXeI9KEzynAVX7uE7mGU1fnUt52iirR5Q1vHf+vxs5rjWP6XNHa9FPfECOnk/4PHwaCtX4xi31pHNk+B3L31K9m5uzerE5QSE1HJXKZw/DAAi1ezZFTQ0mkUam8j5qNYXsY9lZtz8HhTUMRzUWalsHsHv9yWcYZ; 4:Yr4ijZuzF9Q0EPN/pht9P7VG3z05Cp05yzfyQsMWOVy6TvwbSpkjHyNe69GwKrCwrSBEwPthRCQSYHAu13wXheMWearCT+zX7dEkzivOMZwSYOrvCVU0XaLCoQJVq2s4d0CmL0XWViSGIWzhfihiYXr64UQATiLEAKySA5tA4eHbCbwVQ7NHzE6240Na8wrprXJxMGTecL/wISr7vswyKfaJ9h/rmn1ppborugqC45Ca317QEqfJ5AcyN3LSNuUfUg2tQIa/teNLSaQ0sEPBuk39bC6gL5OcXdxHGG/wp0EC1ickRzQAx/eROWU8kI9y X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040501)(2401047)(8121501046)(5005006)(3231220)(944501219)(52105095)(3002001)(93006095)(93001095)(10201501046)(6055026)(6041288)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:DM2PR12MB0155; BCL:0; PCL:0; RULEID:; SRVR:DM2PR12MB0155; X-Forefront-PRVS: 0597911EE1 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(1496009)(39860400002)(39380400002)(396003)(346002)(366004)(376002)(189003)(199004)(6486002)(6116002)(1076002)(2351001)(36756003)(16526019)(16586007)(54906003)(53416004)(26005)(53936002)(66066001)(186003)(47776003)(2361001)(478600001)(8666007)(316002)(81166006)(50226002)(8676002)(8936002)(386003)(106356001)(97736004)(5660300001)(2950100002)(6666003)(305945005)(4326008)(76176011)(7736002)(39060400002)(8656006)(105586002)(68736007)(50466002)(575784001)(7696005)(51416003)(25786009)(48376002)(52116002)(3846002)(2906002)(86362001)(81156014)(7416002)(6916009); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR12MB0155; H:wsp141597wss.amd.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM2PR12MB0155; 23:6uyx71gsHjm7UA3EYZ8Da1D6tZW3FbRLWxONrZC1i?= wfaEbFxCDBhszWUdzv7DC2TJ6s04D0vOADwjiFJ4ZA07UqU8LDZUvNbrcNfUoFSP04kE+ZpxCkbm7Y63CbX1YnMkZ/eMc2ETNx8zNUE92T7J/Uxw4RgfOio24H8XSPK2Fy1IarkvPP92pWil0xsZVfvS9CE8q3KMnav0LvNk84l0FUd9XNDHfNb9Bd4bqHysoXYEs+2rrG3jdQ06D5EacrcTylRM4e2D/LBabTh971r/GAc1Z8Zcm6xZhIkkvUG3klDwuMWdWDwP9t00B328JL8OipPkWq3RMUxqFdoz6ZZTNt9M+R8N2XoVnWSSpRHGTHbd/ufj19DUFZylzwzPKHbhERZInW1HHM4RUPfVgg2jzsEHynW6buJf1X3lfYBJ7MREDovghlmTVtAU5snbipVMQTeNW8nLNePxjW+yi3gsd/YTY8lHpepw6hZBq82cX0f9lngDwXIfUQS5S+GmjDPEJTcjsxwWRojpngn7UrgJ++MthpqPCEFrFxQsnOC1tknfFRYZ5DyhZ0rqxPZ77f/V2Uyt/nRfwq/e9jromkdE2xTHDJlDjnZnOwZ3Obb5i4hlQM/OpoDXfCc1NWU6Qd4FbBuF9c30hT8h1MYKC1WhXYcy6gHOdDcWu3NVkeMTOYue8ewIm9GRU5p4WPxihREJRkONNLBep2TlQ/6N5vje9/XQd16Jf/aQFrDF2cKBZb9YZdXOLwPOOTkPDP1zRXCfRZ2pCPKehVMbfYT+BwLJvCRTWEVtV9C85ASoD7AzGjNwtbi43cey0XsXJ0pDlYJuaNhdEK0sN0h7BbXBhRUaVNweAoRWDV3v5N1/i9L3RZSPnugIdmOSxglkDf8+a+nyK2Op2DRs5Yq+l/FmYMF4QLgxtg3BYQPE+D2a+Js10bGIKgpCJMKD+E+CzkabgtPpYcWJLIG6ZBpB2lSgVKsMS0H8dmLGJAu2I+3KXQ7GNCJIlRBnNDb2JAekKVfYXXNWgbLJd9I6mfE6JtLJZxHXPtnRnPn+F7GJ4+lWF2WIM4EgdXjtukVx1OwCepqSXwR9pRyfC/2dp7m9GmNyuH49BS08mp3mmLDdwIYwUWmB1xU1XBv3mIRE9zbmZlweLmm7dMRNuQcvBuBp7y721eClAi70qXSsLpSt8qCFQznuXoC2RBjp0sO4KBBZS8wSEUD0WZhUYYH6rY/l5Oemc1iNXmSHqASicHoAutP+AN1rYSFT0iE6X3FZVWiDYRpEU2h5l+V6Wn2pKsHCpewJfe03tgfaAmhpH+d36XTm1Ya3bY= X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 6:b4sAFzYJV7gZYbntAacvkzxSW/b4KCBzPnWFqPB51WFwrBvAE2njfocuzAlbiny3ZYS5/3UclBmWf8dytgaJFhL30PdkblP71ObGI/L6uvKRmoQLtyLzACWQUXO3F/KSgSJK0hlv6JKKDhulOuho3fSHGU3QsFjPJcVy69W2Dyts4GDMLMqaTsJKAJScI9tkmZ0lznGJqc8v947LlUDQ0eeFIBcqxVRzdjPbRfvoXRRFoL2m21yf3TQOvlxp4g2LJYbzl7ZWU+Zro+DVLg0X0glqMdzS+D3YFCzBj0un826QlzK5IK/CeTeL5VuJ5yRKwe5Sm9Oq6d7LhVaTQxpPvRLJdVzgKy/zkEQ8cCgFLqk=; 5:PpA4ESXwoa2v00SoBW9XzwKz1OOPLD4psfJjWKDnfDFXUQcUKBKfewCvo+5lZ4hF3GUC+11YSGBD7yvD1N+n68WO6iGtz4+wftz3OM5ZXPwpSAQo9Vt3cEfmY9oimqYZJDT7wdKxm+tJPMvgNBoKNG8sbh6pAqts75Y0+anm2PA=; 24:34/+Arri+ovBS5aOb/3SxRH/jp/1CI014P9/TjrxqB6daH2y43bXPq9+VswOuIb43AKjglrcXXjo/5e9LrF+2bI62VDSEYQ73wPVDlbOxnU=; 7:gU823QDAImV1ZGZZ61wqzmM6mh1RaXsru1C8TefsrKfsbAxvysiTtO/d3xYyDtNFrxSagT37T17R9yCwr9ppCc8/C5832288aGTXix5HxrYlP+uZ/NwhQ2VjEOXi6sIuUKIYnTeZ95mBjX0aWo02LcOEwEHtPmoHS/dQKsK6H74fu6PBaXq7A4QR0bChkmoOcAwyaBFRW5hflkbe5VJslX1lzfU6mVfp9XPfxgxXXXnaksLERVQQfX4OQwYIw/LE SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:6QvR7XbHgre1GYXz8o8WFttctOcG6ARj0Arc8xAS0E4/Ew00ETW9C9J9zqPTvW0DTGf4kmNd9N66NE4nwspFe6DGjykEhAjppllWsFZQFlpfJUddKlyoNypes2buL+mnNTl1hWNeVuba1CCIaLS7NdWfsY5D/IBjmZetQoMiwixOeVWRS+9t8rOSIWJNRZRMIkKu9v3ugndtojrzoB/acuXMw7EOcT7AC12WaxBGfCIzubXQB206rWOLbh9uATS1 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2018 21:11:14.0141 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a951ad87-ac9b-4f29-86b4-08d57eefcd38 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR12MB0155 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.41.47 Subject: [Qemu-devel] [PATCH v10 22/28] target/i386: clear C-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: Peter Maydell , Brijesh Singh , kvm@vger.kernel.org, "Michael S. Tsirkin" , Stefan Hajnoczi , Alexander Graf , "Edgar E. Iglesias" , Markus Armbruster , Bruce Rogers , Christian Borntraeger , Marcel Apfelbaum , Borislav Petkov , Thomas Lendacky , Eduardo Habkost , Richard Henderson , "Dr. David Alan Gilbert" , Alistair Francis , Cornelia Huck , Richard Henderson , Peter Crosthwaite , Paolo Bonzini Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" In SEV-enabled guest the pte entry will have C-bit set, we need to clear the C-bit when walking the page table. Cc: Paolo Bonzini Cc: Richard Henderson Cc: Eduardo Habkost Signed-off-by: Brijesh Singh --- target/i386/helper.c | 31 +++++++++++++---------- target/i386/monitor.c | 68 +++++++++++++++++++++++++++++++++------------------ 2 files changed, 62 insertions(+), 37 deletions(-) diff --git a/target/i386/helper.c b/target/i386/helper.c index 58fb6eec562a..dc5c7005cf13 100644 --- a/target/i386/helper.c +++ b/target/i386/helper.c @@ -21,6 +21,7 @@ #include "cpu.h" #include "exec/exec-all.h" #include "sysemu/kvm.h" +#include "sev_i386.h" #include "kvm_i386.h" #ifndef CONFIG_USER_ONLY #include "sysemu/sysemu.h" @@ -732,6 +733,9 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vaddr addr) int32_t a20_mask; uint32_t page_offset; int page_size; + uint64_t me_mask; + + me_mask = sev_get_me_mask(); a20_mask = x86_get_a20_mask(env); if (!(env->cr[0] & CR0_PG_MASK)) { @@ -755,25 +759,25 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vaddr addr) } if (la57) { - pml5e_addr = ((env->cr[3] & ~0xfff) + + pml5e_addr = ((env->cr[3] & ~0xfff & me_mask) + (((addr >> 48) & 0x1ff) << 3)) & a20_mask; - pml5e = ldq_phys_debug(cs, pml5e_addr); + pml5e = ldq_phys_debug(cs, pml5e_addr) & me_mask; if (!(pml5e & PG_PRESENT_MASK)) { return -1; } } else { - pml5e = env->cr[3]; + pml5e = env->cr[3] & me_mask; } pml4e_addr = ((pml5e & PG_ADDRESS_MASK) + (((addr >> 39) & 0x1ff) << 3)) & a20_mask; - pml4e = ldq_phys_debug(cs, pml4e_addr); + pml4e = ldq_phys_debug(cs, pml4e_addr) & me_mask; if (!(pml4e & PG_PRESENT_MASK)) { return -1; } pdpe_addr = ((pml4e & PG_ADDRESS_MASK) + (((addr >> 30) & 0x1ff) << 3)) & a20_mask; - pdpe = x86_ldq_phys(cs, pdpe_addr); + pdpe = ldq_phys_debug(cs, pdpe_addr) & me_mask; if (!(pdpe & PG_PRESENT_MASK)) { return -1; } @@ -786,16 +790,16 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vaddr addr) } else #endif { - pdpe_addr = ((env->cr[3] & ~0x1f) + ((addr >> 27) & 0x18)) & - a20_mask; - pdpe = ldq_phys_debug(cs, pdpe_addr); + pdpe_addr = ((env->cr[3] & ~0x1f & me_mask) + ((addr >> 27) & 0x18)) + & a20_mask; + pdpe = ldq_phys_debug(cs, pdpe_addr) & me_mask; if (!(pdpe & PG_PRESENT_MASK)) return -1; } pde_addr = ((pdpe & PG_ADDRESS_MASK) + (((addr >> 21) & 0x1ff) << 3)) & a20_mask; - pde = ldq_phys_debug(cs, pde_addr); + pde = ldq_phys_debug(cs, pde_addr) & me_mask; if (!(pde & PG_PRESENT_MASK)) { return -1; } @@ -808,7 +812,7 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vaddr addr) pte_addr = ((pde & PG_ADDRESS_MASK) + (((addr >> 12) & 0x1ff) << 3)) & a20_mask; page_size = 4096; - pte = ldq_phys_debug(cs, pte_addr); + pte = ldq_phys_debug(cs, pte_addr) & me_mask; } if (!(pte & PG_PRESENT_MASK)) { return -1; @@ -817,8 +821,9 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vaddr addr) uint32_t pde; /* page directory entry */ - pde_addr = ((env->cr[3] & ~0xfff) + ((addr >> 20) & 0xffc)) & a20_mask; - pde = ldl_phys_debug(cs, pde_addr); + pde_addr = ((env->cr[3] & ~0xfff & me_mask) + ((addr >> 20) & 0xffc)) + & a20_mask; + pde = 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)) { @@ -827,7 +832,7 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vaddr addr) } else { /* page directory entry */ pte_addr = ((pde & ~0xfff) + ((addr >> 10) & 0xffc)) & a20_mask; - pte = ldl_phys_debug(cs, pte_addr); + pte = 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 e664030dbd72..64d459f80f0c 100644 --- a/target/i386/monitor.c +++ b/target/i386/monitor.c @@ -98,16 +98,20 @@ static void tlb_info_pae32(Monitor *mon, CPUArchState *env) unsigned int l1, l2, l3; uint64_t pdpe, pde, pte; uint64_t pdp_addr, pd_addr, pt_addr; + uint64_t me_mask; + + me_mask = sev_get_me_mask(); pdp_addr = env->cr[3] & ~0x1f; + pdp_addr &= me_mask; for (l1 = 0; l1 < 4; l1++) { cpu_physical_memory_read_debug(pdp_addr + l1 * 8, &pdpe, 8); - pdpe = le64_to_cpu(pdpe); + pdpe = le64_to_cpu(pdpe & me_mask); if (pdpe & PG_PRESENT_MASK) { pd_addr = pdpe & 0x3fffffffff000ULL; for (l2 = 0; l2 < 512; l2++) { cpu_physical_memory_read_debug(pd_addr + l2 * 8, &pde, 8); - pde = le64_to_cpu(pde); + pde = le64_to_cpu(pde & me_mask); if (pde & PG_PRESENT_MASK) { if (pde & PG_PSE_MASK) { /* 2M pages with PAE, CR4.PSE is ignored */ @@ -118,7 +122,7 @@ static void tlb_info_pae32(Monitor *mon, CPUArchState *env) for (l3 = 0; l3 < 512; l3++) { cpu_physical_memory_read_debug(pt_addr + l3 * 8, &pte, 8); - pte = le64_to_cpu(pte); + pte = le64_to_cpu(pte & me_mask); if (pte & PG_PRESENT_MASK) { print_pte(mon, env, (l1 << 30) + (l2 << 21) + (l3 << 12), @@ -140,10 +144,13 @@ static void tlb_info_la48(Monitor *mon, CPUArchState *env, 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 = sev_get_me_mask(); for (l1 = 0; l1 < 512; l1++) { cpu_physical_memory_read_debug(pml4_addr + l1 * 8, &pml4e, 8); - pml4e = le64_to_cpu(pml4e); + pml4e = le64_to_cpu(pml4e & me_mask); if (!(pml4e & PG_PRESENT_MASK)) { continue; } @@ -151,7 +158,7 @@ static void tlb_info_la48(Monitor *mon, CPUArchState *env, pdp_addr = pml4e & 0x3fffffffff000ULL; for (l2 = 0; l2 < 512; l2++) { cpu_physical_memory_read_debug(pdp_addr + l2 * 8, &pdpe, 8); - pdpe = le64_to_cpu(pdpe); + pdpe = le64_to_cpu(pdpe & me_mask); if (!(pdpe & PG_PRESENT_MASK)) { continue; } @@ -166,7 +173,7 @@ static void tlb_info_la48(Monitor *mon, CPUArchState *env, pd_addr = pdpe & 0x3fffffffff000ULL; for (l3 = 0; l3 < 512; l3++) { cpu_physical_memory_read_debug(pd_addr + l3 * 8, &pde, 8); - pde = le64_to_cpu(pde); + pde = le64_to_cpu(pde & me_mask); if (!(pde & PG_PRESENT_MASK)) { continue; } @@ -181,7 +188,7 @@ static void tlb_info_la48(Monitor *mon, CPUArchState *env, pt_addr = pde & 0x3fffffffff000ULL; for (l4 = 0; l4 < 512; l4++) { cpu_physical_memory_read_debug(pt_addr + l4 * 8, &pte, 8); - pte = le64_to_cpu(pte); + pte = le64_to_cpu(pte & me_mask); if (pte & PG_PRESENT_MASK) { print_pte(mon, env, (l0 << 48) + (l1 << 39) + (l2 << 30) + (l3 << 21) + (l4 << 12), @@ -198,11 +205,14 @@ static void tlb_info_la57(Monitor *mon, CPUArchState *env) uint64_t l0; uint64_t pml5e; uint64_t pml5_addr; + uint64_t me_mask; - pml5_addr = env->cr[3] & 0x3fffffffff000ULL; + me_mask = sev_get_me_mask(); + + pml5_addr = env->cr[3] & 0x3fffffffff000ULL & me_mask; for (l0 = 0; l0 < 512; l0++) { cpu_physical_memory_read_debug(pml5_addr + l0 * 8, &pml5e, 8); - pml5e = le64_to_cpu(pml5e); + pml5e = le64_to_cpu(pml5e & me_mask); if (pml5e & PG_PRESENT_MASK) { tlb_info_la48(mon, env, l0, pml5e & 0x3fffffffff000ULL); } @@ -230,7 +240,8 @@ void hmp_info_tlb(Monitor *mon, const QDict *qdict) if (env->cr[4] & CR4_LA57_MASK) { tlb_info_la57(mon, env); } else { - tlb_info_la48(mon, env, 0, env->cr[3] & 0x3fffffffff000ULL); + tlb_info_la48(mon, env, 0, env->cr[3] & 0x3fffffffff000ULL & + sev_get_me_mask()); } } else #endif @@ -314,19 +325,22 @@ static void mem_info_pae32(Monitor *mon, CPUArchState *env) uint64_t pdpe, pde, pte; uint64_t pdp_addr, pd_addr, pt_addr; hwaddr start, end; + uint64_t me_mask; - pdp_addr = env->cr[3] & ~0x1f; + me_mask = sev_get_me_mask(); + + pdp_addr = env->cr[3] & ~0x1f & me_mask; last_prot = 0; start = -1; for (l1 = 0; l1 < 4; l1++) { cpu_physical_memory_read_debug(pdp_addr + l1 * 8, &pdpe, 8); - pdpe = le64_to_cpu(pdpe); + pdpe = le64_to_cpu(pdpe & me_mask); end = l1 << 30; if (pdpe & PG_PRESENT_MASK) { pd_addr = pdpe & 0x3fffffffff000ULL; for (l2 = 0; l2 < 512; l2++) { cpu_physical_memory_read_debug(pd_addr + l2 * 8, &pde, 8); - pde = le64_to_cpu(pde); + pde = le64_to_cpu(pde & me_mask); end = (l1 << 30) + (l2 << 21); if (pde & PG_PRESENT_MASK) { if (pde & PG_PSE_MASK) { @@ -338,7 +352,7 @@ static void mem_info_pae32(Monitor *mon, CPUArchState *env) for (l3 = 0; l3 < 512; l3++) { cpu_physical_memory_read_debug(pt_addr + l3 * 8, &pte, 8); - pte = le64_to_cpu(pte); + pte = le64_to_cpu(pte & me_mask); end = (l1 << 30) + (l2 << 21) + (l3 << 12); if (pte & PG_PRESENT_MASK) { prot = pte & pde & (PG_USER_MASK | PG_RW_MASK | @@ -371,19 +385,22 @@ static void mem_info_la48(Monitor *mon, CPUArchState *env) uint64_t l1, l2, l3, l4; uint64_t pml4e, pdpe, pde, pte; uint64_t pml4_addr, pdp_addr, pd_addr, pt_addr, start, end; + uint64_t me_mask; + + me_mask = sev_get_me_mask(); - pml4_addr = env->cr[3] & 0x3fffffffff000ULL; + pml4_addr = env->cr[3] & 0x3fffffffff000ULL & me_mask; last_prot = 0; start = -1; for (l1 = 0; l1 < 512; l1++) { cpu_physical_memory_read_debug(pml4_addr + l1 * 8, &pml4e, 8); - pml4e = le64_to_cpu(pml4e); + pml4e = le64_to_cpu(pml4e & me_mask); end = l1 << 39; if (pml4e & PG_PRESENT_MASK) { pdp_addr = pml4e & 0x3fffffffff000ULL; for (l2 = 0; l2 < 512; l2++) { cpu_physical_memory_read_debug(pdp_addr + l2 * 8, &pdpe, 8); - pdpe = le64_to_cpu(pdpe); + pdpe = le64_to_cpu(pdpe & me_mask); end = (l1 << 39) + (l2 << 30); if (pdpe & PG_PRESENT_MASK) { if (pdpe & PG_PSE_MASK) { @@ -396,7 +413,7 @@ static void mem_info_la48(Monitor *mon, CPUArchState *env) for (l3 = 0; l3 < 512; l3++) { cpu_physical_memory_read_debug(pd_addr + l3 * 8, &pde, 8); - pde = le64_to_cpu(pde); + pde = le64_to_cpu(pde & me_mask); end = (l1 << 39) + (l2 << 30) + (l3 << 21); if (pde & PG_PRESENT_MASK) { if (pde & PG_PSE_MASK) { @@ -410,7 +427,7 @@ static void mem_info_la48(Monitor *mon, CPUArchState *env) cpu_physical_memory_read_debug(pt_addr + l4 * 8, &pte, 8); - pte = le64_to_cpu(pte); + pte = le64_to_cpu(pte & me_mask); end = (l1 << 39) + (l2 << 30) + (l3 << 21) + (l4 << 12); if (pte & PG_PRESENT_MASK) { @@ -449,13 +466,16 @@ static void mem_info_la57(Monitor *mon, CPUArchState *env) uint64_t l0, l1, l2, l3, l4; 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; + + me_mask = sev_get_me_mask(); - pml5_addr = env->cr[3] & 0x3fffffffff000ULL; + pml5_addr = env->cr[3] & 0x3fffffffff000ULL & me_mask; last_prot = 0; start = -1; for (l0 = 0; l0 < 512; l0++) { cpu_physical_memory_read_debug(pml5_addr + l0 * 8, &pml5e, 8); - pml5e = le64_to_cpu(pml5e); + pml5e = le64_to_cpu(pml5e & me_mask); end = l0 << 48; if (!(pml5e & PG_PRESENT_MASK)) { prot = 0; @@ -466,7 +486,7 @@ static void mem_info_la57(Monitor *mon, CPUArchState *env) pml4_addr = pml5e & 0x3fffffffff000ULL; for (l1 = 0; l1 < 512; l1++) { cpu_physical_memory_read_debug(pml4_addr + l1 * 8, &pml4e, 8); - pml4e = le64_to_cpu(pml4e); + pml4e = le64_to_cpu(pml4e & me_mask); end = (l0 << 48) + (l1 << 39); if (!(pml4e & PG_PRESENT_MASK)) { prot = 0; @@ -477,7 +497,7 @@ static void mem_info_la57(Monitor *mon, CPUArchState *env) pdp_addr = pml4e & 0x3fffffffff000ULL; for (l2 = 0; l2 < 512; l2++) { cpu_physical_memory_read_debug(pdp_addr + l2 * 8, &pdpe, 8); - pdpe = le64_to_cpu(pdpe); + pdpe = le64_to_cpu(pdpe & me_mask); end = (l0 << 48) + (l1 << 39) + (l2 << 30); if (pdpe & PG_PRESENT_MASK) { prot = 0; @@ -496,7 +516,7 @@ static void mem_info_la57(Monitor *mon, CPUArchState *env) pd_addr = pdpe & 0x3fffffffff000ULL; for (l3 = 0; l3 < 512; l3++) { cpu_physical_memory_read_debug(pd_addr + l3 * 8, &pde, 8); - pde = le64_to_cpu(pde); + pde = le64_to_cpu(pde & me_mask); end = (l0 << 48) + (l1 << 39) + (l2 << 30) + (l3 << 21); if (pde & PG_PRESENT_MASK) { prot = 0; From patchwork Wed Feb 28 21:10:23 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Brijesh Singh X-Patchwork-Id: 879436 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="uuliEHML"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zs8736dlbz9rxx for ; Thu, 1 Mar 2018 08:37:51 +1100 (AEDT) Received: from localhost ([::1]:47111 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er9Q6-0006g9-24 for incoming@patchwork.ozlabs.org; Wed, 28 Feb 2018 16:37:50 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53609) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er90T-0001UG-KH for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:23 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1er90P-00061I-Nc for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:21 -0500 Received: from mail-dm3nam03on0047.outbound.protection.outlook.com ([104.47.41.47]:38389 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 1er90P-0005yl-GA for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:17 -0500 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=LwxFce27HulRljlKcrgU7P+t8JVWucZlaxzH3GOZJtY=; b=uuliEHMLuF9Pgd89UOGmh+ruNhVYpHngeIxg50FyWzYKSVYgxOzNN9TypUlpc/GrdNOm2ghsRtFzmZ+tvogJtafE2PSr2fkKLVcdUzEs2uDUkV9S4J45Bk8wsIBlCXWamtFGl1HjvCbTnsfBto0SwOoM5CZ2qNN4pktOPhpG+4M= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; Received: from wsp141597wss.amd.com (165.204.78.1) by DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.527.15; Wed, 28 Feb 2018 21:11:15 +0000 From: Brijesh Singh To: qemu-devel@nongnu.org Date: Wed, 28 Feb 2018 15:10:23 -0600 Message-ID: <20180228211028.83970-24-brijesh.singh@amd.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180228211028.83970-1-brijesh.singh@amd.com> References: <20180228211028.83970-1-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: DM5PR10CA0008.namprd10.prod.outlook.com (2603:10b6:4:2::18) To DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: bf8b86fc-95d4-4675-43f7-08d57eefcdd8 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:DM2PR12MB0155; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 3:uaXwph/a5LJgCHE4QEXh7SQQ5YVs3ZlGPVlEc4V6kYj7zkv1726oqodAygyiv1GwTM5oMgEs8dH4CK2Ahhu/S7Kj9IwE1nWxk2n1ajybJLqd8XZHw55i5lS2LUdb0J3NaOqbMgnLTw6xL6GjCvSpKpkTFfVqpYz7yn8FBTa7+ni3PwIeJ48E4RRg7VngldTyOsnERXKRHXfsfYZW7GV5tGugpNveeTZuQeyV8rbXbbsij+tF+8e+baWaW16JPCC+; 25:JroxBXMFBzLlOhP8NKDLIHN62ApR9vNa7Fmv5gvv/jI2TenHZjKKAPlptjgK//mi4r3KJgZCu7xH6UeQHBQwDgTJG651RzUuZwZgl2t1cW5IIzhXOYNRjUtZ/gjFzVdSOQVBO923LYLHYmKWUHT5/hXLh6e6khOl3nYlOAin02bNf4FlAfKIo8RV0Z8mz+TpBSIxY+/dPeokliAbgzWZAzd8RotYc0CUNa92O/fgEPzI+UG8DqMzjECXnGv7Ev0fnrU/kWENAh0CUs5bqFp81qw9cQL9sAVjk+dp8JUowXFbAIPpgldDSdwMK10hacdSYbhofBrtodUhBrWwSTNx1Q==; 31:WM+2hy55EJ1aAZQfdcLs2nZEgkC/Io6rfXkWtFSsdclBFM3wgaO3TTyFIYONfgMLu1mSC+5MOhiVa/fCjO29lgFKUWWJ+EtqVgYYh5hM1S2bRF4cXl4UnXaXVqRJsXB84OJ4MJwczr7dj+i0+yHIOR0srj/2d9ZOtPsjufFUdZv5VNF6SMuHYuzqO7eJCRXGWPoB570tMLxJqtoPCVB81yPxYNLDDWScVmlQbZNaX1o= X-MS-TrafficTypeDiagnostic: DM2PR12MB0155: X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:VlSPDZu1ptpTp1R/A2vnw+PhP6qN+UPERx+ZS9L3fQNvyqek1IAWArBJkgoiFJ6u0ZULIJagXbdHPqYT1q+icgCw0heozQME0tZTNbt61KeNTd8xA16JnkWZV2dVRrwpFDm+B8WzaERC4hwcL1I3oFzMf+Gg3BJpSn1+wmfYau9WT7iUEcPyO7j67FYr7kPyvXAZrlqSTdy3npCQgy0Hfu5o2BUuJ5BnBtcNh+szrWOEF0YUIiqof4pmRwcSP+HpKyg04sU1JMFpI+KBx3JKMXz4rZ+GbSc7R51YPLek3Y5g7ppK5KvVZNz+YFUlZ4NJC7Z7JpU9GWmEnb8UhSFpSHibaJASE5JNMbuytcowTkfrTKtzxQnh0vw4JyyXXgkVdaMoVXPm5DjzEAQ4Xv2DA4XNjN4MIEc7avyU87y/UMr49EXV7RZZg6xho71oJvQC4M96ZTpTlAl8xTqsFhj1k+8R0RkHZIKeJDbHQghtg4VoW3rj/zmsmvW4V5aGQ582; 4:Lek1EOMefvVcM2InDeVWN5oVQ1CJ1zN9mfVVpUXRZAQ52a4xoUt13XcfTdwzt5Dqy2K8kLrKSAw3dtIt0VFFDdk98eRk6PSbncDpJHOwNCU5Ra15NSRNCRQfG3cRtJ2u2rP3ZEm6yKcZSd7ItqR1I+aICLnFTCXvfWIFmUo3gWneUS2A4J1pC1bbLd/shYrEUL78TRF5gVpFxLmKAJ1WXxLj12AYW4JXO8iqQ9wf/bOO59VnjvpDqEq4vP/JMj2KottS9kzKfi+4+L4ZRaRfjwHpBv+cTidckuyuhVLkEvf4Bh0o3lV8CTC/B+93dv9V X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040501)(2401047)(8121501046)(5005006)(3231220)(944501219)(52105095)(3002001)(93006095)(93001095)(10201501046)(6055026)(6041288)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:DM2PR12MB0155; BCL:0; PCL:0; RULEID:; SRVR:DM2PR12MB0155; X-Forefront-PRVS: 0597911EE1 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(1496009)(39860400002)(39380400002)(396003)(346002)(366004)(376002)(189003)(199004)(6486002)(6116002)(1076002)(2351001)(36756003)(16526019)(54906003)(53416004)(26005)(53936002)(66066001)(186003)(47776003)(59450400001)(2361001)(478600001)(8666007)(316002)(81166006)(50226002)(8676002)(8936002)(386003)(106356001)(2870700001)(97736004)(5660300001)(2950100002)(6666003)(23676004)(305945005)(4326008)(76176011)(7736002)(39060400002)(8656006)(105586002)(68736007)(50466002)(575784001)(7696005)(25786009)(52116002)(3846002)(2906002)(86362001)(81156014)(7416002)(6916009); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR12MB0155; H:wsp141597wss.amd.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM2PR12MB0155; 23:R/14je+TPVSF+yFbbbbJXjsuPXVOauuWJgQKA5JPx?= x3J046JxfPKn0F586JtBFxRSw1T+4bE9zBUPA9IK42xYWCygzhxnA9UKRm1cN9fB6qtNxa45QugoGOOQClr5Jb5IXJFjg39hoycMxv6et6TzF+qRnXkj8V9svRpYB1KzHrDLo+wHjvOOgch2x+dgZlrutCDTYXzTB0u8/k3toyf35JmsDwX4i/IaW4yUm43P1PXTX3k+qRLmlUwZ3U5A/Yi4O39sU19uHob4GoXqbwyEIHg0kAy3DWZ3d1ioaYWk1U+ziRD2O4oocVpMFGTUGL5ksJLrdXUm81ITQEeGAQ50FnRHtJjKY4kkqvXgV0FNWVO+ILhfbTdM0S/buA24DcC37ngHm9l/yQv5IoxdXAnpORVk6FKVjlj4+irTKG7RmEnCV7DUgK2vv/2WbD+X8Pa+HyT+HgDfYcxSiXFCOmOyvD1IrLodDNlKjeo/aE502qGaG+hnRh/UbjBwZO7IzN2AIIgtnrmE8N6x2KYN7BHVCq/o7h5VcrLt0yf9NRO0CbRaD4EnG2hcKFeGXC2BcA/+cvbzFPvnnVeOMDuLbY/0TO1D4NGacsuQGpJknzIz4izfGguGqPqAcMSk/wdCa9q9gUV1EOfRz//akPu5qNE5a4ubvhopvkl3EmmoWiAWbtd2tFS/XCFfOGjPjmKepF4GVFcd6aB1RTGLprL0/8R8uR1HfTVmipPSBZ1DLqbQWieo4QYtbwRVGbkF9dBQf33s9aau3eS8/h9OG7K6/J+JBcdd7OJ8Dq2UMZ4UCHGUy3PnHL6MPf/6gYKPjvgazXRaukrW+FIxJbt8UxIU81St1Jdqo7jjMqIAdqEejNDSMzUYd88FoQ5gz6Jg/0i8wtDq0qENVRLsarWBw8pdqUqhlIO9U1QYfzDo2InIrd6hj4P/0qBpyhU/Rhpz6+COs1bc9DAgoQTmLe8TcfzkNttMQMX2m0b3DuKXrrYFurb5S4I5/v/4waDzgNKHlC6oeKDBap+VYBguPN/Sh6bWg9/lj0O143O0QaEpBxPqLOLqMhn86Gx6pyRIrKNyJOOaKNHUYMMsv/zEmUfea1DjLeFEjd74gGLy4s/W0n//zPIO1WkwiKAjUSI7rq6kcTPxjPT/rWs/n+Qv+TU5MxVj8D0DP5Vou+7yUltVZUiRAgiybyQ/VlgYNmtA+nsRIBVdEJNR5/9UQzX8GgOHq19If5E6hrAldgaHFD9TbNmePj+BFUIXo+Eplr3T8ZJ7XifYM+6m1XXlGN5bnscS4FBrDYRtjknECkZPmQemu4CnYKPFxY= X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 6:eme7P3tEhgr2VLGktMObijfNrXt8n2NXKoRrdV3aCrTpN/PUCVye0WHtnhWJ/ZkD5KAYYuRQSG4351TBz8EJ5hV2m24ofxruQRMUwvY9/8XNxWtsOWHTtYcRAi73R/bEWMV9sJQdNlnLKQq5KvqgMrp84gnsPvDJcUI+fHNcoQ2OD9VLt6RMTHyzCTK6iM6zRSrg4Xf8sSlzeOhXI6FKVYMEJTJt4F06tmQAse2vgMaPqdpsYQmOe6eMyGPEWh55Gk0vjjJybu6CixXVvDlkrlB7fkw5i6vWnzIT9w6jiq5rP51ept0eebJgOGNGUZa6/RNmB2n9oFl/PLvXu9mYLZ8j1MIKRx4aZAjCCzFLXEY=; 5:5TZgN2V+ZU/eL6kLDzXf37QBLPu6Tv02w+SzFXr+Z3L7b36GTSDfqWfMqmisXQpZpd5+C8h+ca58kb34HapISRhJzQTotT4Uy0puixPbDvwqcPQcq424qE7VkbrXQdxtCtFhFiTN684Os7inZm1yakS1YHAMKKxWbFIa/95kS10=; 24:rlk79NgU7cOcdnzKNOWjf2enoHN8fEs+vuT7kC/SX0CVLz18OnpDP/FRRXHK412mdto96duIatzPy5IUKuaDUumUkp9pKt2Sfjw2I35pCj0=; 7:FWtn6JzeVdS0bp+YFjBhrw/IHjNtLZPTv8IYFPoc52ozd8J6J1G/txrr0FpaniCkzFDYYSHV/SVXBiGXIZZYUtMnLkTHuJYsjuvwuxavadgujpVXkYsBVKl1MCYi94HYxGtgvWxKqCFLD0LTAK9L7RH08ljzO1gs/NUZnZzFbptIxRtnDnIMqQGf2wjYJI1nGeNRUKO3cHvBdyv1RR75Juv7aGdFfQ12NNxedOqYFaBa60/IzykRKy9kFRnvOHmw SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:KSBzV3Pj1KcQOftqJd7ynlRvGR7a4lj9XfN8YqZ5y2rjJMlFbhsZhuFtjJYTVXqKM6PMyXIWXH2ehtWDpqZXpMKBKdLCBuoDn3AGhHehdzqLjGGyTLxm5DyHBjzSMimSBwrBm2f7zgCho8NWSUmQvR8Tt17yvTt2OG4UyikwC140wUO1OSwnC7/+nOeKl8GVN5i3qThR4S/8muWqvjwkH9Gfbu8LxiB/j3WuCE4+c8hRuVVa5QBM3o6G3jqnFVwN X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2018 21:11:15.0922 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: bf8b86fc-95d4-4675-43f7-08d57eefcdd8 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR12MB0155 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.41.47 Subject: [Qemu-devel] [PATCH v10 23/28] qmp: add query-sev-launch-measure 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: Peter Maydell , Brijesh Singh , kvm@vger.kernel.org, "Michael S. Tsirkin" , Stefan Hajnoczi , Alexander Graf , "Edgar E. Iglesias" , Markus Armbruster , Bruce Rogers , Christian Borntraeger , Marcel Apfelbaum , Borislav Petkov , Thomas Lendacky , Eduardo Habkost , Richard Henderson , "Dr. David Alan Gilbert" , Alistair Francis , Cornelia Huck , Peter Crosthwaite , Paolo Bonzini Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" The command can be used by libvirt to retrieve the measurement of SEV guest. This measurement is a signature of the memory contents that was encrypted through the LAUNCH_UPDATE_DATA. Cc: "Daniel P. Berrangé" Cc: "Dr. David Alan Gilbert" Cc: Markus Armbruster Signed-off-by: Brijesh Singh Reviewed-by: Eric Blake --- monitor.c | 7 +++++++ qapi-schema.json | 29 +++++++++++++++++++++++++++++ target/i386/monitor.c | 17 +++++++++++++++++ 3 files changed, 53 insertions(+) diff --git a/monitor.c b/monitor.c index 356d550aaf2d..d0ebd5906d9d 100644 --- a/monitor.c +++ b/monitor.c @@ -984,6 +984,7 @@ static void qmp_unregister_commands_hack(void) #ifndef TARGET_I386 qmp_unregister_command(&qmp_commands, "rtc-reset-reinjection"); qmp_unregister_command(&qmp_commands, "query-sev"); + qmp_unregister_command(&qmp_commands, "query-sev-launch-measure"); #endif #ifndef TARGET_S390X qmp_unregister_command(&qmp_commands, "dump-skeys"); @@ -4164,6 +4165,12 @@ SevInfo *qmp_query_sev(Error **errp) error_setg(errp, QERR_FEATURE_DISABLED, "query-sev"); return NULL; } + +SevLaunchMeasureInfo *qmp_query_sev_launch_measure(Error **errp) +{ + error_setg(errp, QERR_FEATURE_DISABLED, "query-sev-launch-measure"); + return NULL; +} #endif #ifndef TARGET_S390X diff --git a/qapi-schema.json b/qapi-schema.json index 467a06460ead..facf2138df6b 100644 --- a/qapi-schema.json +++ b/qapi-schema.json @@ -3250,3 +3250,32 @@ # ## { 'command': 'query-sev', 'returns': 'SevInfo' } + +## +# @SevLaunchMeasureInfo: +# +# SEV Guest Launch measurement information +# +# @data: the measurement value encoded in base64 +# +# Since: 2.12 +# +## +{ 'struct': 'SevLaunchMeasureInfo', 'data': {'data': 'str'} } + +## +# @query-sev-launch-measure: +# +# Query the SEV guest launch information. +# +# Returns: The @SevLaunchMeasureInfo for the guest +# +# Since: 2.12 +# +# Example: +# +# -> { "execute": "query-sev-launch-measure" } +# <- { "return": { "data": "4l8LXeNlSPUDlXPJG5966/8%YZ" } } +# +## +{ 'command': 'query-sev-launch-measure', 'returns': 'SevLaunchMeasureInfo' } diff --git a/target/i386/monitor.c b/target/i386/monitor.c index 64d459f80f0c..577d50eebaaa 100644 --- a/target/i386/monitor.c +++ b/target/i386/monitor.c @@ -720,3 +720,20 @@ void hmp_info_sev(Monitor *mon, const QDict *qdict) monitor_printf(mon, "SEV is not enabled\n"); } } + +SevLaunchMeasureInfo *qmp_query_sev_launch_measure(Error **errp) +{ + char *data; + SevLaunchMeasureInfo *info; + + data = sev_get_launch_measurement(); + if (!data) { + error_setg(errp, "Measurement is not available"); + return NULL; + } + + info = g_malloc0(sizeof(*info)); + info->data = data; + + return info; +} From patchwork Wed Feb 28 21:10:24 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brijesh Singh X-Patchwork-Id: 879409 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="HCWVF+Cf"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zs7sR44Sxz9s15 for ; Thu, 1 Mar 2018 08:26:03 +1100 (AEDT) Received: from localhost ([::1]:47035 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er9Ef-0005bt-Ii for incoming@patchwork.ozlabs.org; Wed, 28 Feb 2018 16:26:01 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53570) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er90S-0001TG-Fa for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:21 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1er90R-00063Z-3q for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:20 -0500 Received: from mail-dm3nam03on0621.outbound.protection.outlook.com ([2a01:111:f400:fe49::621]:54490 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 1er90Q-000625-Rw for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:19 -0500 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=STF0PQQ84+YlW6RcTnIL1d8d/KE+32GpBhcJRuv5vGc=; b=HCWVF+Cf+aZomc0aTl75ZQDztNELBuuekX9hopGg24FdsmNoqQHLJkaihLjuuS2igS5SOhd5H6hWqGM5Bz+01kxK/WFkUpHoNEpGfP4lAnbXqARz4tO+lZmtP4gWHRcT8qiVgB1W7WXJZEtlPYvAeMV3+3E2d4zerfekVMcoO6g= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; Received: from wsp141597wss.amd.com (165.204.78.1) by DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.527.15; Wed, 28 Feb 2018 21:11:16 +0000 From: Brijesh Singh To: qemu-devel@nongnu.org Date: Wed, 28 Feb 2018 15:10:24 -0600 Message-Id: <20180228211028.83970-25-brijesh.singh@amd.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180228211028.83970-1-brijesh.singh@amd.com> References: <20180228211028.83970-1-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: DM5PR10CA0008.namprd10.prod.outlook.com (2603:10b6:4:2::18) To DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 7f0711ac-4ee3-486a-9ed3-08d57eefce75 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:DM2PR12MB0155; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 3:iW44dLQGI407QR4fRnodSM6TSHzPdkz2g2nn2bhLpSzbGwhusFNHVBxzMxTVf5HAPm0yBY/H0qe3IzhmwuxUpMIJ4p1rHYvEcC5HeVQos350kn5nVZe6e6z+BU9uBjDiRtE8z5CuDFfOd0CCp7s7MWU7q4/CH+27elYu/EHdSA8ECqqSVhYhwcyql4aEk3eEVU+FFUm+DhFcqtfYg5oHM4kmMNHeAyAb9x8lDcsG+G1Bilc6UFFjUYM8vSU7b/+8; 25:KXD6jymPEC5sT+hfZze4neE+/p5ZnUaT7l6G2sTgM189EniNRPdbd05cyWpMn66jKzlyMrrFdiHG4liKOibYCwOJi3blEk0RvhRmxDYdU/8bQuqEXf5GP2dYCN3ZQfcMVucpOEyTLZDuBA1R6RDnSkFLl+m2jRF3Iusaq3IJfHb0hhM12mvy72DzfuBhmU3fOZdhUuDuD2K9JoajDSxCtjoBVNsHpz5uY4Nx55TR254u2JepXudWOo8zTub8g2JIdwSLAAcYxPne96BhDLEKLWpHvp0bMhese9Yxs1Sk6hAygSSx9TQPyBE8Ptdri0MlHjJQW6pgimIkXZ1OUygPuw==; 31:sfuDiokTT1QGjg/W0waM4lMVbRjqLCOzJ9z+6huWzpC1d0ehVq/40mWFoCmbrRrv04J0wQtHWTXKnB5yFbijIm1r5XccUeP+Nr4GRcL8yIrrypoax1BC2FxXe8z4i0QS1dyVkqdiGFspZdWr3fhAv2IZX7ZCP5xmN2e4oMbrmizMAuFv6QMXUPvwZDNshvXhbFQScbMboZS5GLDWIxZfgqPFQeejMSGd9iXrWpCf8dk= X-MS-TrafficTypeDiagnostic: DM2PR12MB0155: X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:88DZ0R9DqDLYxKqwgfRje/iYj5Gv31Xux7mwpb/ZQ/Sg9AE2/2t1cig8Q9WgwbkG9Y25f8LLoLYlOz/sg2dLaYEj9gSMX0cmFbrzpQwD6UFgkdT4OK7onAAMMseb+sMdGOHYHFlwyAtp0wzqfn2KEUBZRcIOoVsoB7tbImKP+QIgWUX+293NJTi6HgQg8t0BadlFM18aXekYuLyAbZi7lpfgXSt6vfNvYs5qlzVRwyPqCnqPEcLD0EYfUvVrUdb7zsN3i/WUhOM7Paly/2b+tVbGJcqkAzXwSODryxjegUNUR15qEF7NofgQqCOO+R3y6S8pKSTQmYT3A/0G5Ouf5ZiC2nbYcwBAZWo9Q5VaTTiK8XlnDmDw6VrI+SxVNVznQH17M5Ud/ngqDBH4qUXcFrWd+lLjPyvZ8ThYrcbifalVLNbKfDNlfbgcFtn+TOfstt3koR+Wo7F2wXdUs1IvcooBlmy2nIQO3LtjZI10uB0Rwvvwu0kt68GrfgLAIBKo; 4:T0D7asie0k5HJY+AVy6c7QucW4c6Dx6HpxZZ5naruzJROgQ7raVDoBEr/K+iTq8p3rX5aM+Mqd4x3ChEEwlDeiX+BuGm7EEtq0PD0zEARCxKzEjEKgt6CreHKzu1QNLEN6j2Tl7RGvERsYBDbeJ0Lrn8zoyRlkhpfhVF66rFZ06OAyV/G3i04zZB2Qi4A/zZ7bpYJ9LYy62YLgjYelSPrBP1Z2LHXP8hc6NeGvgtU4t9cJ/ixZs9DVyRV1+kds1k1oLGR44ObEAnw+biHIKHMM9AtbNeExEhVC9o3Qyh88TNxwmQW0hVNd6vclPy3oRC X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040501)(2401047)(8121501046)(5005006)(3231220)(944501219)(52105095)(3002001)(93006095)(93001095)(10201501046)(6055026)(6041288)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:DM2PR12MB0155; BCL:0; PCL:0; RULEID:; SRVR:DM2PR12MB0155; X-Forefront-PRVS: 0597911EE1 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(1496009)(39860400002)(39380400002)(396003)(346002)(366004)(376002)(189003)(199004)(6486002)(6116002)(1076002)(2351001)(36756003)(16526019)(16586007)(54906003)(53416004)(26005)(53936002)(66066001)(186003)(47776003)(2361001)(478600001)(8666007)(316002)(81166006)(50226002)(8676002)(8936002)(386003)(106356001)(97736004)(5660300001)(2950100002)(6666003)(305945005)(4326008)(76176011)(7736002)(39060400002)(8656006)(105586002)(68736007)(50466002)(7696005)(51416003)(25786009)(48376002)(52116002)(3846002)(2906002)(86362001)(81156014)(7416002)(6916009); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR12MB0155; H:wsp141597wss.amd.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM2PR12MB0155; 23:1zzdiAvY6cSC/IAMcofnWuMccYehGmnmMfhdNBlkC?= gzFBQJoy6adKCrpa6g56445/josOSF+jO6uyvA3gtjQpl4cBwKNLg1PztXJ3XHXfm65aKghgYqgqzgen3RSqw9cgwaR5wMbzbw1TupU7LcpaiE1RZupOe+93SrvYhN7FqaYNQCS/WFjWCcuEpMZfqCjjP2GOBzLssc8+ncjuK6OP6vqBYrESme7Zh3Q7tB1/d0vLA28r5wttPpXgQkj09TZ2WIMjV5j+O63yzqxqxR8gNrPHib7mCADS8vkymMRRBHpEZwSKxYr6V2Io1sr9J5ycYh1ocD8LJNCc4LTNUlUxS7UupD2tNL3VzUUJLslp/XoQjN3eSQHo0ToexNaIxGSv4+JDjQo6hrwnXRf/+kGW3FBJBrtj23Wfw7uvsN8OvR/w9VWApY4mLx8a73RgP3ykPAC+6vl1vs35iRCasuxfMkRVISSOb9RN0FdlAuFN3OhMjrwXNSElHAuQUGM0pQktx3Qek5qH4WaCJIVRQD7GuBeGabhKpJjpH4kmjK4tFrq5qbgKXm5563AXPzRv6VEZidvOt+p7F/NPGfjsew25Y0hT7MY/HJmMM7FfUuB2Vc8RrBL6ZxeKpBGw3E8YTFsKDq/yVTo3WJZ51prxp1vRUEstc0UeGbwypEsHlWHYZhymB5kQWI3mvNTY78DvlfwLGea8GcsGogbc2mejnAu8GDNr/QI11TjIgz7Q/kCElxrvKH0DaY1hNHiR+HBZpzprV0bKbPmfseCnrc3+rDd29fBUeaRrTnHpBHq2bI/6PAqMZ9ZyLo81+SbMGUlr35Kqmj3zngzGzxUjQVSEpxrl0/qOU2SqlvqNOn1JQc4uY0tAut+8IEeRKJKu/jvuwwxOn1RmM6tYnDIdg7CkSuSHlbb9fIffKHDBBspdlKibvkkMK5XBMSic+K4XzLx8IjJNjYl/n2vqVNU3bVWPV1CuLnCy3/GrkvO8sN7Vqw/rtpCrfi5wdwESlKk9pDxBbRJZa9SKnAXGMXkBwyQ/w1BzfLKLgeI2GodLbfRiRRrUxmzSABgEKqp5MgbkVZl7qxFqT2Ulqjqqf0H+n2LhY0F49FP9IOCGG27EQewHkdwBtEcdfVrW+e4qjs/eOBrtgYJU+8Xh87CQw8K8gS90AFJfNWlGs8p7WHzufS0PbfqqhzPBjz1wFGvl4/XwLf/TviwMt7/Lypf+T9h1d1iDbGHN3NYHj+QbX1on/xy9hcputNwzeB/ucfpqoBk8h6HiIKsRBAx5fCbj4wYtciTXQjgRg== X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 6:FcpLEqSknoogulZxvh3v85uTrmghxIyFQQJyhBwFxhf6+OxzdQfbwJZpBXc5jTY3Sg11FztS9IvkdP55iVTfHSjlcAuBz0FowWrJuZ+Ic3jZ2+ttkfvZZvEoK4MyAHmU79KBpOuz4CuTJkqsWggNmYXtx4aMTjRTq18rwVhMsj5o4/hQA2aAmojKcBoGiyqn1UDzJTWhf8wKFBobPWzDnprBbyzCxmDSiWmcECURmNlOQarQOZUIj6KkaJ4ehd279gFUWLgcD6s7Ymz8eY92Rgdn5uqzXypOlmJy4FpohP2kUdWkJQbtANTbGZDSJ1ZPZ0meKrTu9VLq0QywL9ayO+ifZEwqVVBeTssG0JBy3jY=; 5:j9lR/J1Wbon42mAiguG6C8I5bX9zvcl6LmMSo9xK6zPjVkgg6xyd8ExzMbKwg5IcZPe2l/yIUK6PRfCo9tyo3FqXbyYV7K+/JCfaT/zKfCIAiaAQvW6tZpWbwAjei6F3wuxDboe46nCMkTHtpkoZ/bri0EmP128QPobYn5gZLlw=; 24:QYtBcU29y+1FGKrjXxcAdKQx5RjWvDjEBf4EHNge9CbBpWsAyEZHBaHy9wonDseq+EVpu4LgfH8lSe+W/SiZAiEE9er57vsGGX3cPVvGmlg=; 7:iQLqbSe9IIxRUMnxh5HLR1k2IogDAcujVRyOXBy46UgU+CKjZ9s0AtxaKhaYakG+T7VFKynjjHAjREavBIyvANR8ldFmCNxFY1DR89AiD6bQftDLF2nmAuz5hQulZLLtVSTKZvJjPfs0daBRcgcsetinLXbMeJ4SW/Jw3qzXiOfoPo6NsvwoBLy2AP7hDHJlyQX6atRiLmCjR12eHQT1JIpuNq3LH9/1zl9+wloTPEPj5h9YSN2iwYyN/WNiiPNW SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:/Lrp7FK047Dp3AVJz9eqoa2bN3xLIf5T6QbGt9dIQW3BoJ8fu1tWTKJtAR+De9nkXWDv+jaTwzdrXxoIEvc8a3/65Tb7HhWbwERBjxtKgnKQth4QyW3GqQ8OzJXYf4Uxr03z4We+ohErW4gBq5ZI3J82ebHwTYKt0dQusT9hRdbGpGEwWtIY7zm0M3HsHFXB0mOY0yAFEGyf9PI5bmp15IOrNHN1sGjda70KFGX9AeehprM0IZamL4efFcdb2CNe X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2018 21:11:16.1391 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7f0711ac-4ee3-486a-9ed3-08d57eefce75 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR12MB0155 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 2a01:111:f400:fe49::621 Subject: [Qemu-devel] [PATCH v10 24/28] sev/i386: add migration blocker 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: Peter Maydell , Brijesh Singh , kvm@vger.kernel.org, "Michael S. Tsirkin" , Stefan Hajnoczi , Alexander Graf , "Edgar E. Iglesias" , Markus Armbruster , Bruce Rogers , Christian Borntraeger , Marcel Apfelbaum , Borislav Petkov , Thomas Lendacky , Eduardo Habkost , Richard Henderson , "Dr. David Alan Gilbert" , Alistair Francis , Cornelia Huck , Peter Crosthwaite , Paolo Bonzini Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" SEV guest migration is not implemented yet. Signed-off-by: Brijesh Singh Reviewed-by: Dr. David Alan Gilbert --- target/i386/sev.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/target/i386/sev.c b/target/i386/sev.c index 23c2b6183f33..ad94eeace1b0 100644 --- a/target/i386/sev.c +++ b/target/i386/sev.c @@ -19,12 +19,14 @@ #include "sev_i386.h" #include "sysemu/sysemu.h" #include "trace.h" +#include "migration/blocker.h" #define DEFAULT_GUEST_POLICY 0x1 /* disable debug */ #define DEFAULT_SEV_DEVICE "/dev/sev" static SEVState *sev_state; static MemoryRegionRAMReadWriteOps sev_ops; +static Error *sev_mig_blocker; static const char *const sev_fw_errlist[] = { "", @@ -577,6 +579,7 @@ static void sev_launch_finish(SEVState *s) { int ret, error; + Error *local_err = NULL; trace_kvm_sev_launch_finish(); ret = sev_ioctl(sev_state->sev_fd, KVM_SEV_LAUNCH_FINISH, 0, &error); @@ -587,6 +590,16 @@ sev_launch_finish(SEVState *s) } sev_set_guest_state(SEV_STATE_RUNNING); + + /* add migration blocker */ + error_setg(&sev_mig_blocker, + "SEV: Migration is not implemented"); + ret = migrate_add_blocker(sev_mig_blocker, &local_err); + if (local_err) { + error_report_err(local_err); + error_free(sev_mig_blocker); + exit(1); + } } static void From patchwork Wed Feb 28 21:10:25 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brijesh Singh X-Patchwork-Id: 879437 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="HmTOcAzD"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zs88212yVz9s06 for ; Thu, 1 Mar 2018 08:38:42 +1100 (AEDT) Received: from localhost ([::1]:47113 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er9Qu-0007Ga-9d for incoming@patchwork.ozlabs.org; Wed, 28 Feb 2018 16:38:40 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53695) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er90W-0001Xm-Fx for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:27 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1er90S-00066U-BX for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:24 -0500 Received: from mail-dm3nam03on0060.outbound.protection.outlook.com ([104.47.41.60]:17929 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 1er90S-00064W-2C for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:20 -0500 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=vqV0+918XIPD/xtA91ylkG0s4V/sQ6qxC33YuQjqIc8=; b=HmTOcAzDNyS3o/YoHln7c0vQymuXEEzDOGdolCFNhUaeNPgybwILj+8yDJECoy+Pns/X8Ny8ciVJg5SOnhoLnVQBvkQrvRKGQ5Mvh7N2HnnFmMAzcdzN8duvhVoBKwNimvRlwvpvn+jlNg+JDK7wXGRPdBNUA8F91nkt1FAaNpk= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; Received: from wsp141597wss.amd.com (165.204.78.1) by DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.527.15; Wed, 28 Feb 2018 21:11:17 +0000 From: Brijesh Singh To: qemu-devel@nongnu.org Date: Wed, 28 Feb 2018 15:10:25 -0600 Message-Id: <20180228211028.83970-26-brijesh.singh@amd.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180228211028.83970-1-brijesh.singh@amd.com> References: <20180228211028.83970-1-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: DM5PR10CA0008.namprd10.prod.outlook.com (2603:10b6:4:2::18) To DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: c62f61d1-9477-4871-f9b4-08d57eefcf12 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:DM2PR12MB0155; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 3:DYf79Af5YRi2uMwOWYUF3y/JROjU3NVw1f985qHpxOOfl8BgWqv6e/MAQ+S7YfyW12oFYGlHP2AtougisURcaGmB+ok3du0IHriaobv1kpk2z0Kkcy0L8FYQp6rwaBqvBD+TBKPrZffHrhX3/dWKteEaEEHqieEiXMRQn/y4Kr/FreFRVivYTEGBb8eocqudcdlNVgpMQw/Fef5RCdey4/ppwfZ0w3o5MTZD6w4uUDZo2/bjdVM1GBhknXpAxYuF; 25:/+0E8K8NS+67Q8JJhGhoJzVE0nTYeGNbVAK2o588hjmjkpfxES804KJ5j9x6Mgo4itAVPm4dCugxvww3hC6yv9zofuwfqq2W62xrJfG8xmWSBL8ZdW6KMkSW1JoTBjcnFREBvZ5vSxssT9UODzQV5EDRT1ZcGjrhWHWXuCX2GHDEl1gixz+wAAnhJHFYy12NLE3Xw/ydmF9uoxqFywmkFkSH+CKOSWkNnfMC0g93UnfDcUWE5RJfYSbHuo/LsfHr1U8/DX2tHWUU3wEtl05BSAgU1FiUqJld4duOveczimBuFIVaWmxBBeGoal+FYWh2/0ERLjaZmWPro5luTsbxzw==; 31:CFNYZr4wXREJVYkwpoYko/7SUEuiSEMLQqOj8OBM4oOyCKTcM3BaORBiA4l1rdX0M5rOZEyp77M7Z2ytCnED2cOkdx9I5WsrWzNDGjtuzaApps748z1EPTGi/Gx0nsu0clHHjMPtquArtMu4ZRvvfnbwNGSFxuEhQpMypNUihLf49Vc6ceTfARFMXk6AwpsstFyZn9+5pBhMbBSYRh41JVXh/+tqZgVEu21OcUkZoxk= X-MS-TrafficTypeDiagnostic: DM2PR12MB0155: X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:jjh9AP/uMrs2Q0nrXLISvW1sgXjQx6dRfW3MGuG2XW7ao+FgXjZ3iKbZlqqduFbjwbB2qI0/AfncsPMbzZGiCcwI5oohjfaN5l6bDKUkkZkSZ8wNVHw4Ege/TRf75xVO1X6LpDJvh0uR/lNSFtRTNMGEnh0wUX6uXVb54sk0z5K6tpbvttFLVBsqWFkynVHg1CNxIVOZkFu1Mv3+nzILYPo4mlr6WQ6RrdtHPQVpz/mqbdIms4SVtKxvDxmMqX3Y464qvB7StNz9xf6n12FVDa5JDgI6MQ4RHbHvNc7C2O88GU0YUyWNUqZC9FiVqkoenEfxQJM+PzYN/6Rioxni2uc2F6i6xiydyR7J8YIjmvUWz+Nou2Xq9zqUaPlT5qu3HcS+/p/pMeLBST2gep8NTB2Wc6V8t7OrokgxqL9PEX9up+pZy42OFGWQozHOU6PJZeFDy/qGpiBa4IyNkO84Owf2Z7YTBNHSzIQF1Aiv1T9LfzrlQbPPHouFCGMbv/Yu; 4:qpHg4qF7U9x9jJlX6Xyjem17lF3GLEKLHCOQxvQhRGNLYeY98yo+oIkCDgBxKK8M36CR3Ldjh5e1OcA2FzNnDuq1kZvkUtSX9/uUgviCnq1pgngQ4lx8P8RixM80MW3h9mPbzwbymazgWhVT7XYFscswx+VknDs7jUdxEPXSueqwrsCwM4Wg9xezyjd8MZLry+zoSpH8qk1ykzX96X3dopKv1Y6x/8gvD2JduHKq63LEC6j1q68TdpXhStfMaMwMSrb5WLkky2+GEvO9BJ52+sSnofO8A3kYNMu/GaACIXpyaLi+HCyOpsIBDdpW4xxT X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040501)(2401047)(8121501046)(5005006)(3231220)(944501219)(52105095)(3002001)(93006095)(93001095)(10201501046)(6055026)(6041288)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:DM2PR12MB0155; BCL:0; PCL:0; RULEID:; SRVR:DM2PR12MB0155; X-Forefront-PRVS: 0597911EE1 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(1496009)(39860400002)(39380400002)(396003)(346002)(366004)(376002)(189003)(199004)(6486002)(6116002)(1076002)(2351001)(36756003)(16526019)(16586007)(54906003)(53416004)(26005)(53936002)(66066001)(186003)(47776003)(6306002)(59450400001)(2361001)(478600001)(8666007)(316002)(81166006)(50226002)(8676002)(8936002)(386003)(106356001)(97736004)(5660300001)(2950100002)(6666003)(305945005)(4326008)(76176011)(7736002)(39060400002)(8656006)(105586002)(68736007)(50466002)(7696005)(51416003)(25786009)(48376002)(52116002)(3846002)(2906002)(86362001)(81156014)(7416002)(6916009); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR12MB0155; H:wsp141597wss.amd.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM2PR12MB0155; 23:AZ07pBF3+P+i+YJjBQBHd6yr5J37YMBkLlKrAGZc0?= K4JdGOpL+YoEXEEq5b3PWJlLzSneDkzeOVGPtWGbUW015hLXzq1sEXlgpPrr3J92uSB0tO0tSBnL2oE2XAB3cnBXYguiHvxgYnJtFEr5BYl8H+tO+dmv5k325d1QZX6lh7j+s6Gc+2ApF44wCCKHE3x2/9DhZECNA5DEgtlsd7LFcoc5Ir12YkFE8SCLHN+dz5dv2ah5KPdwUWgMrrlcmVksDFruY898l5QgAx1Nep5JKLOF0iZpeZ6ciHPnuDmquD6WXidGBtDIgvTIvm9Xzi4DJOZ0k6vT3Cn/IZHq2o96g8NymohCVqeK6z/Go8yBhp213lbEituD04PbCgjVqJ794WxFxmNx/egltA9l8JioDa8KklM5OboxRqrGZaKC/1sFg76Yq5QKMA52FNKmOI/Kxp6KlCNeKUcs7PBKi3/7Y48PTDrVZVQHyAb60R4+GBly9soICCI6wWJEk2bUWwb/Xm+o9XAFJZVSVJxAU5KDoISWVcc3qrZJ470fRXvVOZ0pUhxfiYtlM7MESlIVH+iOUwszhSgb6ntx0GRI1JJwY7JY/w0ptVwk0KpvF/whvfo2M4s+x4wTMe/1MN6aH0WA6FFVYhWpv9jtU0QUx+0IFzaUv51uayb1MoCivEpgYl2hWVDQ7sf5SehPBD/SlWbzgjh/1PgVFHf42FONQ+ualxOk02Z3DSsH++ZAo3z4hl0w64cXCF8dZhxg1IuiTPt9RrwztGSVU6kEyi3wXBx/AhPXqqYJ3jRcq67GKgprMiiqNdBjEq2FKI2qAu6yXGHqvxhv31UhPsDxt8kIDdyDzy2erxX2xvTPLdlsxu+hV6XUwGGZJ58EDd07K4CWmznIIiZ2vyzQiCA0mlbzCzkiw0zTILU8aT5vgIjsUhlnWYBVrur9g5MGoO8UFzufbxnfYmg7et67/qjwVzLvdI0S0Ru5XcMbUbg9+LATdeqq2+zCmv2pexMDOFWeTqpv0Y1tGyEenp3cJKO/43K4keczpu54U45YvcbOZ/dT1xSzB5+BIE8W7c3ZNrhkh1Xk99GhdyjcDkyXUX+AXHUnX1ioVzW7db/qNcqHtzNh5d6VPnJXk1MhkCeSsp+OAvbQbgGp4dz24XMAYKU2q6/0US68ljv7Wh8AKkGES2O6gMF9HI+diHtBIaYDU8hplq9Pfmk8osxIzBxuULZ50wOXoAha95L8pDKFcdu7OW1rDzpeEGYA0eRhocJ5hjVJDo1/+w3e72gcFAqV+A6FCtmxqJmhNqRmsIwKfPhSW8oi539Dp9xkeGgCkzIckzuA/p1MUwa X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 6:0vHkVhTU3e46FZz/2YLbR11pIk9/LVJn1jsnFp/bAhoV6ClNW+zl4zRHBt7lYNbiniZy/Wti8b8rNt32CePg/gcq7XKtALH8BUiAT0QKXxq93z4mySkJ28fFMDBS1QAPoDn434GlRwMhm75ZOjn1GG8EQgM0TOL4R2R2CgzeDtT01CKzn4jDirTueBUziipCy02zB3h8SCeNGo7SX8wbq6VGGYt2wTMMMbPPYNt0ETKAdcn1iDSPXnJEctvhzFimqPpRx3PnKp/yHFPdsi22SPnAqUv/tX1P3SVLdMZRLPh7iHXunFm3cMpjb8paI8PPToQe1nJSy2SHPIrc1WBe4j9MygFg1rYeYz9m1hzdVms=; 5:j6hsow2+cWCAaSYrIir/xZuFrhhQ2AnidpFvEkT2qVOpwV1/1EfJ2zPch+uLByjgZK5S09tMZXwEgCc2KO/BBjjXhftBd+RGItkDEk+KWT226vWwfIpdrfoZRi/nfKhF+dlajeE/30jzX/t5fOd27ktzUvplTGPewC2n3axkGBk=; 24:yxwN4dJ05OqCUpGuVLLMXn3h7OWelCizRHTEXnN2AEAXuen1h94i7KNjb2RN3rowp/2KJt9QPSSdwxVlreVKp1bviwNmEPx08pEHero6W44=; 7:1bKwQq9j1OfGVJoq0v31Ce+HA00Dha4iVf1SJQYXDI5x6tx+hUkFMNxkN3L2eahtKTrAldPiZc+etr+3j7n15+q1XlajaL3BCb4Y7n38GXxqaz5Ax6oylnw1Xj3bhFOPteNh1onlnI2XorkG0Z4fvzCSwxGQuPJjgFRt5gRZ4tn0huxkRBUPYQqjR3JWfw+/kkYylNAa0LrFEs14oDtXgW0a9DYdVDSksIkmhXYlkdRc7YCLSWomcxGSRgQPIs5v SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:yvRpLqPgR4O9qvZF3Xb6IdD4VsbIiJmMSrE/tlZinZBi/PS9y2CRX7gx+9sGjfkhY/6NNoq8kRMeqpnRTJMc9rht83o1dAzq1IeaR7QySMJjZwi28W1xOSqx7RAr1SXnN1epj2oIhbUysDR/zJXjcu1xo2i7DCUQUOCZExZilcEMFuvyA7RNFaqUz1HxISCBvXE6+E194goh1KoJH1Wdmj4k+99iaO+9JfvevC544S0F2WvpIRyBYwhcbbO/5u7Y X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2018 21:11:17.1079 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c62f61d1-9477-4871-f9b4-08d57eefcf12 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR12MB0155 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.41.60 Subject: [Qemu-devel] [PATCH v10 25/28] cpu/i386: populate CPUID 0x8000_001F 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: Peter Maydell , Brijesh Singh , kvm@vger.kernel.org, "Michael S. Tsirkin" , Stefan Hajnoczi , Alexander Graf , "Edgar E. Iglesias" , Markus Armbruster , Bruce Rogers , Christian Borntraeger , Marcel Apfelbaum , Borislav Petkov , Thomas Lendacky , Eduardo Habkost , Richard Henderson , "Dr. David Alan Gilbert" , Alistair Francis , Cornelia Huck , Richard Henderson , Peter Crosthwaite , Paolo Bonzini Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" When SEV is enabled, CPUID 0x8000_001F should provide additional information regarding the feature (such as which page table bit is used to mark the pages as encrypted etc). The details for memory encryption CPUID is available in AMD APM (https://support.amd.com/TechDocs/24594.pdf) Section E.4.17 Cc: Paolo Bonzini Cc: Richard Henderson Cc: Eduardo Habkost Signed-off-by: Brijesh Singh Reviewed-by: Eduardo Habkost --- target/i386/cpu.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index b5e431e769da..7a3cec59402b 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -26,6 +26,7 @@ #include "sysemu/hvf.h" #include "sysemu/cpus.h" #include "kvm_i386.h" +#include "sev_i386.h" #include "qemu/error-report.h" #include "qemu/option.h" @@ -3612,6 +3613,13 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count, *ecx = 0; *edx = 0; break; + case 0x8000001F: + *eax = sev_enabled() ? 0x2 : 0; + *ebx = sev_get_cbit_position(); + *ebx |= sev_get_reduced_phys_bits() << 6; + *ecx = 0; + *edx = 0; + break; default: /* reserved values: zero */ *eax = 0; @@ -4041,6 +4049,11 @@ static void x86_cpu_expand_features(X86CPU *cpu, Error **errp) if (env->features[FEAT_8000_0001_ECX] & CPUID_EXT3_SVM) { x86_cpu_adjust_level(cpu, &env->cpuid_min_xlevel, 0x8000000A); } + + /* SEV requires CPUID[0x8000001F] */ + if (sev_enabled()) { + x86_cpu_adjust_level(cpu, &env->cpuid_min_xlevel, 0x8000001F); + } } /* Set cpuid_*level* based on cpuid_min_*level, if not explicitly set */ From patchwork Wed Feb 28 21:10:26 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Brijesh Singh X-Patchwork-Id: 879403 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="WlGgYQjy"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zs7kQ2w7Cz9s23 for ; Thu, 1 Mar 2018 08:19:58 +1100 (AEDT) Received: from localhost ([::1]:46991 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er98m-0008DJ-Dp for incoming@patchwork.ozlabs.org; Wed, 28 Feb 2018 16:19:56 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53694) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er90W-0001Xj-Eq for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:27 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1er90S-00066p-KC for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:24 -0500 Received: from mail-dm3nam03on0060.outbound.protection.outlook.com ([104.47.41.60]:17929 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 1er90S-00064W-Bz for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:20 -0500 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=WPk1pzjP91L3uKj7q/8B5wNuw8TR8XALl7kodr18GdY=; b=WlGgYQjyy1yfxwtu+i/Rf9teAShLhkTjwg21eO98TFHcgUfUK4jlIywvJY/eZNSAeVO0RPWVTbueFkKW313r+UBAtO1swX5PZQw+3WcSKZNX/leJxFRSQZO6GVXFneN7W/oq516WVX9k+1OU5tQDgftEULSSYZyCKg6MHk7nIIY= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; Received: from wsp141597wss.amd.com (165.204.78.1) by DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.527.15; Wed, 28 Feb 2018 21:11:18 +0000 From: Brijesh Singh To: qemu-devel@nongnu.org Date: Wed, 28 Feb 2018 15:10:26 -0600 Message-ID: <20180228211028.83970-27-brijesh.singh@amd.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180228211028.83970-1-brijesh.singh@amd.com> References: <20180228211028.83970-1-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: DM5PR10CA0008.namprd10.prod.outlook.com (2603:10b6:4:2::18) To DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 260588b7-625d-4c93-c9b8-08d57eefcfc5 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:DM2PR12MB0155; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 3:us0WC+49441ovhsZoaNR7Fbh4tJ2/GrGEnuRcOKs865BM20y0DxlJ+6ynoL4CMxuole7skcUd5PVffsjvmRNw1QyiqMHWeCgJjRZB5KcvW9ovP89Y9qPWWrYVIeXnxhiNXCD5xnverazbFQ9flpSPDMtnhfJ6ZR1g+9j4SSSxjV2DrYjfwmJIzvWOOFd54tAfUK25ED08SaA1CkLkDVa+ompktku3GuqbMNf+qRZi78Y52IsFs/KETnH1y5IsJnx; 25:/6g5XS+lStVnNuR3KX7zWIBRynKgpmSWsGpV4NGkJgWu+jKSCaX67zrGiBEFJMkqfBLoQIb39M0A6fiJQqHO4G7HHBUnbJuou99q9b2TBDESL6Rqw186Ba904T/qCK4XrdyHWM1a8TyrlplWD9FilbMS2uLNAsog93T1PlCidW/+A3S58KJgtCqUaY1r3HN/S33yFweAv7N7fesYozX4KJBLVX7MPSrliF5owlgLHPGYhlbpp5dWHy3DYZ/PozS+Uv5l7KIQRYIgZ3bBkjbpEwkOvpxXqq3NGKZW2El7hJvStTz0yagRC1i/JaAsejVI2qYt6+GlFeRApIUtZRhBTA==; 31:HN7pOaGB/to9lVqfh+o9uhkyUDM5XRIQmMv9oIRYvfTHRp5XDRuVfVAvtelDBrkBLa65UCMZExM0arigvvGU3MZv0OWpZZvxTSVJmg+qBz0y4wbkoiIsds8UsR2+uZ9GkHHbeg8cVW5+nZ9Tz+hK+qzyVFzw9TSfhZg1u2b9tHsLE0mbouRhtSiNMBr1CPFVg4BbEwobOksQlfDJ+fV6yeeiXdMbU0cJ7y6SfVZGrIo= X-MS-TrafficTypeDiagnostic: DM2PR12MB0155: X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:U1YQihvpq1GLE5kiA9abZn1wlfAtn4wDu7ztbQKeW1XrOY9A3JYs2+xzUEMnrW1BfcnHeG7Bzi7lZOlu0lpD9obUWI6ECkAPm3xiGXVLlenjUXLKdRTsQCGB53vmUqciH7wt6P2UsPz0Fi7415+AOfg6q31FTPAwnUj0wSA3ESTl0Mur/KaIhFVSKJ4YxoLY1HJvsLW56++tzKpLHysPLWdAzLHAA1YmpSb57p/Vxbs84OZC57xtNw2Kd6TPp4TcwwPt88c73PnWkthLoM8kFeBzWTIi2wiobQKLCAVT6QLKw9z8sYAclzk1Og3IRb6OGKNxZmLO8Mn9F8MzIqEMifc34csVbgBzGss41QYKogRbvS6i8s9WC2sioffwLDhXr6N3lgpcXaBW5ENrMnazIBXx2KTFC8PbB2Xmyfj2dRhd3WO+fGMPykssUlPRWZ2QhWcATynloAahkNOYmKAsuPWhPR+Evc2q+rrSQOK/7Sj9gXMmZS0geo5j7NCp9FCS; 4:IHtBxT2vJ3L9YpLGCjKx7HILY64ZDH0LOR0ktHR/SIJpKJTVD3uqOIyxQQ8W/IK6kjFtNTcYppPYNm45hfjxvPeBcuTPyVX+kDANA6UVc8QNIZIJPS2uCewp28p26Nt6Hj/uRr6SckDXV1QVdZYVaKSl4afbR6EkNuNb7a3iAX1hyqDcHZpmyudKmwgBSHNGko1qHqKNg5EoPWpS35xguRGl3BW1Jk7NApXs4Z3BZdOUt7wOppk2CrIlfVm+enuCScjiBI/DrY8OyeXQEkRuWGzjGrL69cpst+PvLjiW3WqH01/SN3hqhsW/3e/VuVan X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040501)(2401047)(8121501046)(5005006)(3231220)(944501219)(52105095)(3002001)(93006095)(93001095)(10201501046)(6055026)(6041288)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:DM2PR12MB0155; BCL:0; PCL:0; RULEID:; SRVR:DM2PR12MB0155; X-Forefront-PRVS: 0597911EE1 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(1496009)(39860400002)(39380400002)(396003)(346002)(366004)(376002)(189003)(199004)(6486002)(6116002)(1076002)(2351001)(36756003)(16526019)(54906003)(53416004)(26005)(53936002)(66066001)(186003)(47776003)(59450400001)(2361001)(478600001)(8666007)(316002)(81166006)(50226002)(8676002)(8936002)(386003)(106356001)(2870700001)(97736004)(5660300001)(2950100002)(6666003)(23676004)(305945005)(4326008)(76176011)(7736002)(39060400002)(8656006)(105586002)(68736007)(50466002)(575784001)(7696005)(25786009)(52116002)(3846002)(2906002)(86362001)(81156014)(7416002)(6916009); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR12MB0155; H:wsp141597wss.amd.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM2PR12MB0155; 23:l4iWubs82e0QEvxpQ9xyohYBNELYYbaHNHL4evMMf?= +dxve2qINPHdSJhAdDGNPSJ+pYRzBvxtvGrIxjlBrkrIwvDDGeQvRpUSU3vaYE+Z7++A7NSJS4OqGQXP+dmbbY+fhNCTDMx0jluEx1h0fxa3T8rh2zlUdaoaqvqIsckZxZPl3rbB9vhUujRcugNSkqxPr+boOUXYYFlrRltYIBVpDClwsVNGFfKiMSo21JWIYV0enE4OvQvOqi8hAN2R1kcIn79dsKZnMB2L2P1Xr4bTApEJpyzcNbUKLuu9vR7gqFy0gvvtK5SPSBpn5lkpI2KV2OuSPpZfWq86l9xGz4oBTeXtmJrRjUCoe6KwSJFOA4xO7x/V9IHDoIQAd3bbObqYextiXMfaeWDjh3SfaFZskTtoQDprPXP0g0gPSQazQ8xblufjT+dyp1HVCv5U7KyFMWAgeL1E2m5nhDEQ3un02sfpFkUiy3Zs97CyKMCEafPGm1AKNQQG3EcTdNHq9Se5sxacSEkAiKN/ATqsSneH7ndQxtpFYN6yF3o+4JsVJQRrCmNqwQ8Lg721wYKQQoIDxBs54dOmJGx+3MThNYbQ/mg5RWYgmn7Sq1b7jWPLkoya5BffYZY1Y79WmtOHAhWiNNkqHK+KO+Ot34gzERzjC6y0tMZ4mPLoqdwCiSOJzFnkoM4iJKn5Jc1RHSQgjJFCs/jxSY00H17NlY/y92MwBi6Ss8GlJs0UccswdTg+0otrQiZRs+L9IrRkFNixdO69V26ecArJ4Hd1YjxayOZk9tjot7LvTprQ/gXwEL8Si8Ui5mtQj2fHJcCdQa943BmotHrjwWw42TLvMp9XGrxrAU03Xt206zHYWxX4Etu7FijbpCsg1Yn7IowfPiq5nP+rzC5NmOUzbN1+3JE8SffLNb5ofUSNAplHNVxaczR8aLxEDWqmXxJkYKNCWL2ovoOqG5SCwzJh+5NqoWES9+28fkxrEPyfdhCZH67LEmAZm+y5QX15/ipzHK55L/qg2t39RqwnwwHwixtEs47jFM+5vTXYvyI1rsZh0Os6i5ClSN9ITjUABh91b5PJtDH+HdxxJW7rWrwwbiJ+aF7NcxrRhOg4L0QfK3aUrFhVrXYi8++BNNCU2ks/K78JJtIompFbuWkOpvXAWMSLiMKvkKjo2bGdLQTU1HvcKeUZoQG4uaQxU2qHfXGkP3RGGNrUh7iuDs4DRElBokquFOoKGSCNVREJZpZiiiKjYyXQq7+Nbg6X+4X9Fj6CyQoqX58LEEmsgmIcwKneRklWb5hN0i5Ye5uNn7zaJDYMeMfAsBNDCc= X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 6:SrXGs2AnTXa1a/eQh0mj57ga8OnbJdyFxPRa7aDy4jXB+k4ZQ8SUbrZsN3skJsj/bNhGLVh0MYgLmE85yvxHRlHXn+VMeeoxU1q6sN1Hy18XwGyUKbvOE2nomTa2cbdZ1HYMMF5zAfdU8tvBM/kW9cFgHBHQURradZx616F1nlxHvvuEFRSk6YgTHfSQu4OdmQAHnyMHE57gCPMzCyYNzIiaJ0auzEVqkOlCMwosBsRseYi6d93B1alAjCSx+jUZ7uMNnPvSE2RZQ6sArq8nz5ZzbFBDPvBz9A695Eon6LyiDJBHxm5RVvVLKqiFCHffXfx4J7wxhgqmRNhsofP3D71AUyju7QCXlUFN+obxygc=; 5:t/1MCqxJfwKqB8NbNi8D3wDUWlsbeqzqFz5ht/rAkGvppaCWbkZaCIBNi8fhcACbWilf5B0tGrFHdKMba8S6WtyQPFrRq+YK7HjZXAQaBAOo7QbOosJ9rifHLTysMavRuEmw4mQpk0FOYHckuzgpp74x8E268EANE5RIJh6xN1I=; 24:67hjCfq2/80V+cwoHe2/0fI/xtI5QpsqL5l/cFmQOWChTYcnseUUPtZkERvBR7hRootLodHRfFG36IfMqQ3OqZr6XY+yxv89ItoMpLnv9+M=; 7:qVma9WHD5nXJ8A+21qT6n/K4HdUwGUQP9ohp4GH8jmhg0AH8go44dFe/Ty9zsBQb1sHgOVkdULRO/Q1RHBi7NuCSenojzS7NtY6+fDfnhDe8lfa6fNGR8qcwfaKf15aNKexe1r/oVrmfEVaSRcnDWj38hguNDn3ogCXZif5puDlWlbF9+ubMbrnpeN+EZrTw0R42at7za6Ttk0BPJcOV+xcr2RWsJFtLq2HWWSV7CfbM8VEbnIOvf1BKcTzZsfUa SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:xRaTINUTLrYbnFkvYn+DIHFY4ttKDTCFsy5ru6VYeHOyuhEzk4rMwfle/Cbj4Loh28upvXd9hhAyestVppJ3GVoox8GcaUwFFOzvBhMXD4q19Ve+nucM37CbYfXazOcuUXQW9yKh0hv2vTvrYzH3R/VPS15PrxigBsIdvqUaOsuvZorV1O48eKqfBhFwJnm84vr+pJhtzBEiJL0+vKpAV4L3jPXGZzLNm1dll6y/pCMKir3wMK8EO4LDwOQIXRi+ X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2018 21:11:18.3110 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 260588b7-625d-4c93-c9b8-08d57eefcfc5 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR12MB0155 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.41.60 Subject: [Qemu-devel] [PATCH v10 26/28] qmp: add query-sev-capabilities 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: Peter Maydell , Brijesh Singh , kvm@vger.kernel.org, "Michael S. Tsirkin" , Stefan Hajnoczi , Alexander Graf , "Edgar E. Iglesias" , Markus Armbruster , Bruce Rogers , Christian Borntraeger , Marcel Apfelbaum , Borislav Petkov , Thomas Lendacky , Eduardo Habkost , Richard Henderson , "Dr. David Alan Gilbert" , Alistair Francis , Cornelia Huck , Peter Crosthwaite , Paolo Bonzini Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" The command can be used by libvirt to query the SEV capabilities. Cc: "Daniel P. Berrangé" Cc: "Dr. David Alan Gilbert" Cc: Markus Armbruster Signed-off-by: Brijesh Singh --- monitor.c | 7 +++++++ qapi-schema.json | 42 ++++++++++++++++++++++++++++++++++++++++++ target/i386/monitor.c | 5 +++++ 3 files changed, 54 insertions(+) diff --git a/monitor.c b/monitor.c index d0ebd5906d9d..26d86685a9f9 100644 --- a/monitor.c +++ b/monitor.c @@ -985,6 +985,7 @@ static void qmp_unregister_commands_hack(void) qmp_unregister_command(&qmp_commands, "rtc-reset-reinjection"); qmp_unregister_command(&qmp_commands, "query-sev"); qmp_unregister_command(&qmp_commands, "query-sev-launch-measure"); + qmp_unregister_command(&qmp_commands, "query-sev-capabilities"); #endif #ifndef TARGET_S390X qmp_unregister_command(&qmp_commands, "dump-skeys"); @@ -4171,6 +4172,12 @@ SevLaunchMeasureInfo *qmp_query_sev_launch_measure(Error **errp) error_setg(errp, QERR_FEATURE_DISABLED, "query-sev-launch-measure"); return NULL; } + +SevCapability *qmp_query_sev_capabilities(Error **errp) +{ + error_setg(errp, QERR_FEATURE_DISABLED, "query-sev-capabilities"); + return NULL; +} #endif #ifndef TARGET_S390X diff --git a/qapi-schema.json b/qapi-schema.json index facf2138df6b..9a50d9b8017e 100644 --- a/qapi-schema.json +++ b/qapi-schema.json @@ -3279,3 +3279,45 @@ # ## { 'command': 'query-sev-launch-measure', 'returns': 'SevLaunchMeasureInfo' } + +## +# @SevCapability: +# +# The struct describes capability for a Secure Encrypted Virtualization +# feature. +# +# @pdh: Platform Diffie-Hellman key +# +# @cert-chain: PDH certificate chain +# +# @cbitpos: C-bit location in page table entry +# +# @reduced-phys-bits: Number of physical Address bit reduction when SEV is +# enabled +# +# Since: 2.12 +## +{ 'struct': 'SevCapability', + 'data': { 'pdh': 'str', + 'cert-chain': 'str', + 'cbitpos': 'int', + 'reduced-phys-bits': 'int'} } + +## +# @query-sev-capabilities: +# +# This command is used to get the SEV capabilities and supported on AMD +# X86 platform only. +# +# Returns: a list of SevCapability objects. +# +# Since: 2.12 +# +# Example: +# +# -> { "execute": "query-sev-capabilities" } +# <- { "return": { "pdh": "8CCDD8DDD", "cert-chain": "888CCCDDDEE", +# "cbitpos": 47, "reduced-phys-bits": 5}} +# +## +{ 'command': 'query-sev-capabilities', 'returns': 'SevCapability' } diff --git a/target/i386/monitor.c b/target/i386/monitor.c index 577d50eebaaa..1b55dd0fff88 100644 --- a/target/i386/monitor.c +++ b/target/i386/monitor.c @@ -737,3 +737,8 @@ SevLaunchMeasureInfo *qmp_query_sev_launch_measure(Error **errp) return info; } + +SevCapability *qmp_query_sev_capabilities(Error **errp) +{ + return NULL; +} From patchwork Wed Feb 28 21:10:27 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brijesh Singh X-Patchwork-Id: 879438 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="Qy/vybOY"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zs8B03HRxz9s23 for ; Thu, 1 Mar 2018 08:40:24 +1100 (AEDT) Received: from localhost ([::1]:47128 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er9SX-000095-Uc for incoming@patchwork.ozlabs.org; Wed, 28 Feb 2018 16:40:21 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53778) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er90Y-0001aU-Ml for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:28 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1er90U-0006BY-GW for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:26 -0500 Received: from mail-dm3nam03on0058.outbound.protection.outlook.com ([104.47.41.58]:25985 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 1er90U-00068d-8e for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:22 -0500 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=sD/c4kPsI0zoxDs+m39Kl6gPMdEKsY0VPe1OZ4/Dflg=; b=Qy/vybOYssWHJPq2hZUazyNOAsnwNkb1VREO5OMx+MO7eXfgx8h/XYXSrY5LH3KSUFJmPANhOJqyi1ZEoLmHrCDR+LQ9I5bBpwrJmHaAlDuRzgBZUeR1mC5onqtBm4Zsde0Hm5rfpwug3Ibli8rBMxosPmwTqtpErm4BzKyAbq4= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; Received: from wsp141597wss.amd.com (165.204.78.1) by DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.527.15; Wed, 28 Feb 2018 21:11:19 +0000 From: Brijesh Singh To: qemu-devel@nongnu.org Date: Wed, 28 Feb 2018 15:10:27 -0600 Message-Id: <20180228211028.83970-28-brijesh.singh@amd.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180228211028.83970-1-brijesh.singh@amd.com> References: <20180228211028.83970-1-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: DM5PR10CA0008.namprd10.prod.outlook.com (2603:10b6:4:2::18) To DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: c55a349e-5e7e-4482-5fe2-08d57eefd05e X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:DM2PR12MB0155; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 3:YYhkkswQAlesyVAOLzxqKv0sU2/CuTjtEKs0a5dwIAdqyg56945feOaTByK1CTrC94QQQi4iz95OvXOXYQ5c2AxUnofCRgwvP+Kn7exASjL3HDXEVaQY37gqw4PCfy+Xb8SgoIuNgPveT7xM2hfgcqYNGD25IkhPH99hzta6jM6p4bW/9GRFysoN/+pyC2/p81gDoYWfl8jjKadjIkE/8jpl9TPIJdB0mwLXQs/tbMfBTBumk0cotuNagHeEaMIr; 25:cnXexNA5DmdodhI/Y1Uolua+v+galyT5xzVREx78qVdwZ1W1JLEkPN9Am38QiZYOAYfEkWTE6MuQtmC8yxW+aEokTxF8G2j+dki0EjORF1hTmzJfLH+8HV1ii76Jgia8yM6IfC3OE78eZjNkaGEsJT2+SgmEAS9rrXOdqlMKY9pvkiAPoEsrjiC3Cseo/X5b9FcKeEg+Sv09F9A3SoGiJF44tgKstTeznhKZ+DAi8DN7DD/xBN4o1qBkGxeBAFh7ATsl0Rc2yVMmgz+7FGF6hAmhg8Evlprfcj71VuTUjUsguo7qfamNGfd/BZWEnPH800VWV9poQwOYupRp36gDvg==; 31:iyIh6+3ekDmW5v44w9HHSHfx4MqilXE1MIgCNSAtPm7565hfimyUD9QwvcqUN79zpb6S8BGftqal2qcl0TA35dvJzhv57f0Kq96ffmIYSoDH9mtC6/UakUe2lV0ztH4Z9Auw+hl1fNlPv6E56BfFQMGdY3GOEH9QLgG46cEDVOYw3+LHMADKegkD6WUCDH7nHZ4PjzMg66ujbeQfx308a7Tj/aMG+mPTGhccqmOblAg= X-MS-TrafficTypeDiagnostic: DM2PR12MB0155: X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:xhwLB1k7TZD0IkhICxFy/1Grqr4ZkCOSU32xI2VRFMWo/bo+E+HAv6/Iml7Z+n5rmDNeimaQ2ben3yLqoIS91euTTrtotIp6fE0IV/nVZM0LB0q79/ItPUhLpvTAu05xh2aUbS7mZwa5/iIgfPW+gzfQP8R/BM8c3BZ5PwBthWcZpCVcPtfmLTqlaT3eB1H8PK4MNsdM+pIvD+iArWTY0R78cvp/mmzlBrE7yK3Lqrak1Jog1UJ/png+Pvl+LcdvepHuDLX6avXPlvDnsfaK+AZ5i/TmJsbNCZnpM+q6LZOVKMrAvTVpy5mpSjDQ3/YVltoGUIdWYzn9wknri4B198uxaI9dNeZx2svSioaiCTUdh9HV4cyaomZU8WH1aax6K7DsPg5m6gSLJG2NC4ao5UC9CXEuhQRtlbzDtgs9G03m+40WcJeGE4sY30j0TN1to3eYfBUsWj7xpo1uo+dfLJ8QY7vuzNE2jAiwUhK0gOBlvoj3MjIp1XhnsZhVlUbu; 4:6b5P7sjD0iHrjiIKHbpd7PAykiTGEqfe/moFSul4E+8KBhyh6IGQgaQX+BZNqpSK3pc5HMAqCluYRgI3rUcfE+UipbjoHQ0SGyeu4ynCyiWE/otQOCnIlWxBS5if3QJOMRK+bP8vT0e0NofGOB+fxiq7waYroKroH+E0myGEFaBPOk5QXXlV5vE/ey688lqbq90htKqDzVD/UMzij1lSruEJs3lT8cgJcHV5ed4b/4z+kZYaklBWFxwqAbyNcTX9RiIL/u0p47WPUxzWubedE+sF9eJ/F3vi8Kdc1ii/GRby2e8je5tS87/izCHAuSh/ X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040501)(2401047)(8121501046)(5005006)(3231220)(944501219)(52105095)(3002001)(93006095)(93001095)(10201501046)(6055026)(6041288)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:DM2PR12MB0155; BCL:0; PCL:0; RULEID:; SRVR:DM2PR12MB0155; X-Forefront-PRVS: 0597911EE1 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(1496009)(39860400002)(39380400002)(396003)(346002)(366004)(376002)(189003)(199004)(6486002)(6116002)(1076002)(2351001)(36756003)(16526019)(16586007)(54906003)(53416004)(26005)(53936002)(66066001)(186003)(47776003)(59450400001)(2361001)(478600001)(8666007)(316002)(81166006)(50226002)(8676002)(8936002)(386003)(106356001)(97736004)(5660300001)(2950100002)(6666003)(305945005)(4326008)(76176011)(7736002)(39060400002)(8656006)(105586002)(68736007)(50466002)(575784001)(7696005)(51416003)(25786009)(48376002)(52116002)(3846002)(2906002)(86362001)(81156014)(7416002)(6916009); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR12MB0155; H:wsp141597wss.amd.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM2PR12MB0155; 23:SM3jod7xDgZQRl4326pU7K2K+Pby7Xj9qT8ZFZUs7?= Vf3ZNLpvISsDRpZbyo2dvWmx/fasGbpLiZwtfjXsrGBzs+iWrz4uy87voCHzE+ylRbjiLjPH+48C5tJh4OlUo3vmhfnO1i0jOTAjsrGTRTOp67gysj1dsft4/z7NW7HFJlcPtaSroKoIgY6vpfCnj2AAiEPuU9vLOMt1DOuZ//A7jQM7ZlfLNQjk+yjYPdjZ1agWvrYzAZBOyxlZHUGALVlvDmLqhCycsmc3i6fwZlyaHRA2o3GdT5KhD23gNdP4pcgI5SI9CfQHQn60OxS9llYl06N5Nr08eAq4lVCTrNIuE5yYJikY+Vvx9+ZdQCBIKe/QeIx+pRqMrfOwnWUa0IVllaTtpoLS8dsHjANM7Ng+1acAMu2nfc1kPNsLYwRYu4CX6MDTifaPy6LeBCYeEZqnvvLbeEXjAh/IlVoZqXYUYmDBBAoTmbIpFcjLwWXhETflo9+0UZzYVQLYBquVhIl2iSR8LUyCIV7Ak8yykvQdWCtwhIcHEkF7dyyk+B4ZVRWKMvJLTh/PIMuw9ZuwPmfGPsx7/1zWe5TZsFTPbvI02BpCMtzwcvrpUj7S1cYpsNsUlUoLLXOIiXoTII6b6vLJdCavE54r968l9NfWBZutNbEOHcEstXWVvtYoqD58aSqxaQaSiiyL0J3AvPyDpe0et9hZHrYZ4TOAMs37Z+OVQD/PZreRZwXqdFwu54zUKWQ6vJjeYMPLzAJYNILacoXH8oReUkMdq7xUk4mO4/w5UJ7KfJM/3mRqUOZzgwVRbeKMXoo4lcSG3wTFivrNNxMmEmCaOcA72n78PzvhA3zZnVXL7gkt/ens5S9kg3/rTZjQWGdq94T7G5JSGwe0G/V0DOJxPGibT0QrsspVqKFbaQYUB9kx8ws0jxZx+zyYnIMrq/TbNM5Ypi5HCy2biUnCZTv3S5+SNzcKHhT69cZRWDY2id3oDd3Z33P96cbYX0VuOOP4jX9wzpKv/iXeHHQ6bE1AgeKzB12NjyTQ+DyARa1MTYtG5pQ4MXSVSNglplrRpIvwGgYtOZBck688h97OyMdUxOiLpUYOa4WG/0VzxqqhicvnC/32PmaTZoaWPlzgtrNqBkTAB9qeG+XT5Eab73iBNnqWGf7zmptWEtBoSPbOeWdSeL23RhIG1ml4ju+HmEieJ3hAzJeQGcDeUbTeT2r7LT5paU8wjfV+p2Ox79ccMYsEDRYdeiMcXjyduP1wpMg31BCIHzJvNiSl4tqXr3d/p0V40TewzwDi1AdRQLq20fprbWbcFu60VjxWCfbmNuqyGCc8ywxkuln1ARM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 6:Z8LfNvV0SyG+guHXB9taXD7kzYOPsltdh/Gc6FBNh7OupAlBsaLdRUOw+y5wC0TDBtnQbd9ils6If4E/CJzGXhsL+N+X9je2dAQzW0ReNG/rZfKC5uhjcjGgfYdvzAUwERVP1WNza6NslYX14tObxHJ8CZOPAaWFkVtHnppFHi3q7a7drBblkV2lmfaI9a2wHFW1/vZ86YHTzGaWvKJ9HUefPW9WU7awEG0CPAVtt8UjYkRad2MGMrQuxEVZROhYXP9CQUNbRTpqTkNSUk+WirXL+0evymwdOwG2erNgIpMoHm/wGmlMiyvAsmaez7ZrlZeVJXTMXVH+fMhLEHQ3HGKkWqoMP8v9y4B7s25l2+A=; 5:BqqqMiGgCXKTMpkt8kUissU5hDHjXHf6bVoFVQz6g32GoDw5EbDSn9Gc/WUNYshzOQtNnCCK4VKPTlP1f6vFSufQo8U/LyKdP5lN80801guWtFY4FyHAockRvOtkcwSv8Ma1oSNVTvaQQbB6kNBxLg5nK/OF9YEUOIncl047Vuw=; 24:5ORopf/d9VFmC352nBHqDPiQfsIop0PpSRsyz9fBUJUlG8Ad5tCMPj5CdNTt5TPhBPyTTjbJvhp0DSqfZDPrqvPzQZtOWoxjOSxpX5eCEsc=; 7:CF8MZtHeVGf3ph/Pfi7iXjZq9v9e/4XFitL0SkCE4Gbw4LwEah/Gu1mSDUjR6T43wyxUt8bhoIfydY/9cd04jBfDyKUjnPrlbXYg3Jr5/dtcY0HhOe6p7+hd6bpNAQHFCKg28rqiiNd7fNaSQRE4TgrELlKn+khNkRFTY7tGc3du2O7XUrgILAp3pmnoJ3Q+iCG4Qs+NpaA8uG1Bn5f21eqF/AJxiiSOcBRJxi71dgsJXWhymPH/o2bbR5FASltT SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:NAUQZag+BABN5fS0LMWsi2kGsiJPgilmeRBWVdMpRwJchTKahln9cEAhkEwwPOPqtOODQ1VxC0+L7NFEZQfpbqlDvu/6o2d3fiutQnX9ZYZytJaIjMtfDxwyEyGrD4hwpDdDyYa6gMv5GjqkC3mpVpF3rXtSUusW5FR2Er1Red/25sr/zgiUf8vsHbvs1x4IgIvo080HgGxN/kTjGirNEp9mukgLBEhcgXTto3/+bs2/OdMAWTVBCDhXuHAJvCV0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2018 21:11:19.3422 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c55a349e-5e7e-4482-5fe2-08d57eefd05e X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR12MB0155 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.41.58 Subject: [Qemu-devel] [PATCH v10 27/28] sev/i386: add sev_get_capabilities() 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: Peter Maydell , Brijesh Singh , kvm@vger.kernel.org, "Michael S. Tsirkin" , Stefan Hajnoczi , Alexander Graf , "Edgar E. Iglesias" , Markus Armbruster , Bruce Rogers , Christian Borntraeger , Marcel Apfelbaum , Borislav Petkov , Thomas Lendacky , Eduardo Habkost , Richard Henderson , "Dr. David Alan Gilbert" , Alistair Francis , Cornelia Huck , Richard Henderson , Peter Crosthwaite , Paolo Bonzini Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" The function can be used to get the current SEV capabilities. The capabilities include platform diffie-hellman key (pdh) and certificate chain. The key can be provided to the external entities which wants to establish a trusted channel between SEV firmware and guest owner. Cc: Paolo Bonzini Cc: Richard Henderson Cc: Eduardo Habkost Signed-off-by: Brijesh Singh --- target/i386/monitor.c | 10 ++++++- target/i386/sev-stub.c | 5 ++++ target/i386/sev.c | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++ target/i386/sev_i386.h | 1 + 4 files changed, 93 insertions(+), 1 deletion(-) diff --git a/target/i386/monitor.c b/target/i386/monitor.c index 1b55dd0fff88..b914915d9171 100644 --- a/target/i386/monitor.c +++ b/target/i386/monitor.c @@ -740,5 +740,13 @@ SevLaunchMeasureInfo *qmp_query_sev_launch_measure(Error **errp) SevCapability *qmp_query_sev_capabilities(Error **errp) { - return NULL; + SevCapability *data; + + data = sev_get_capabilities(); + if (!data) { + error_setg(errp, "SEV feature is not available"); + return NULL; + } + + return data; } diff --git a/target/i386/sev-stub.c b/target/i386/sev-stub.c index 2f61c32ec975..59a003a4ebe6 100644 --- a/target/i386/sev-stub.c +++ b/target/i386/sev-stub.c @@ -44,3 +44,8 @@ char *sev_get_launch_measurement(void) { return NULL; } + +SevCapability *sev_get_capabilities(void) +{ + return NULL; +} diff --git a/target/i386/sev.c b/target/i386/sev.c index ad94eeace1b0..20279177cdcd 100644 --- a/target/i386/sev.c +++ b/target/i386/sev.c @@ -421,6 +421,84 @@ sev_get_info(void) return info; } +static int +sev_get_pdh_info(int fd, guchar **pdh, size_t *pdh_len, guchar **cert_chain, + size_t *cert_chain_len) +{ + guchar *pdh_data, *cert_chain_data; + struct sev_user_data_pdh_cert_export export = {}; + int err, r; + + /* query the certificate length */ + r = sev_platform_ioctl(fd, SEV_PDH_CERT_EXPORT, &export, &err); + if (r < 0) { + if (err != SEV_RET_INVALID_LEN) { + error_report("failed to export PDH cert ret=%d fw_err=%d (%s)", + r, err, fw_error_to_str(err)); + return 1; + } + } + + pdh_data = g_new(guchar, export.pdh_cert_len); + cert_chain_data = g_new(guchar, export.cert_chain_len); + export.pdh_cert_address = (unsigned long)pdh_data; + export.cert_chain_address = (unsigned long)cert_chain_data; + + r = sev_platform_ioctl(fd, SEV_PDH_CERT_EXPORT, &export, &err); + if (r < 0) { + error_report("failed to export PDH cert ret=%d fw_err=%d (%s)", + r, err, fw_error_to_str(err)); + goto e_free; + } + + *pdh = pdh_data; + *pdh_len = export.pdh_cert_len; + *cert_chain = cert_chain_data; + *cert_chain_len = export.cert_chain_len; + return 0; + +e_free: + g_free(pdh_data); + g_free(cert_chain_data); + return 1; +} + +SevCapability * +sev_get_capabilities(void) +{ + SevCapability *cap; + guchar *pdh_data, *cert_chain_data; + size_t pdh_len = 0, cert_chain_len = 0; + uint32_t ebx; + int fd; + + fd = open(DEFAULT_SEV_DEVICE, O_RDWR); + if (fd < 0) { + error_report("%s: Failed to open %s '%s'", __func__, + DEFAULT_SEV_DEVICE, strerror(errno)); + return NULL; + } + + if (sev_get_pdh_info(fd, &pdh_data, &pdh_len, + &cert_chain_data, &cert_chain_len)) { + return NULL; + } + + cap = g_new0(SevCapability, 1); + cap->pdh = g_base64_encode(pdh_data, pdh_len); + cap->cert_chain = g_base64_encode(cert_chain_data, cert_chain_len); + + host_cpuid(0x8000001F, 0, NULL, &ebx, NULL, NULL); + cap->cbitpos = ebx & 0x3f; + cap->reduced_phys_bits = (ebx >> 6) & 0x3f; + + g_free(pdh_data); + g_free(cert_chain_data); + + close(fd); + return cap; +} + static int sev_read_file_base64(const char *filename, guchar **data, gsize *len) { diff --git a/target/i386/sev_i386.h b/target/i386/sev_i386.h index 2ecca66f6e64..cc89e273ccf6 100644 --- a/target/i386/sev_i386.h +++ b/target/i386/sev_i386.h @@ -43,6 +43,7 @@ extern SevInfo *sev_get_info(void); extern uint32_t sev_get_cbit_position(void); extern uint32_t sev_get_reduced_phys_bits(void); extern char *sev_get_launch_measurement(void); +extern SevCapability *sev_get_capabilities(void); typedef struct QSevGuestInfo QSevGuestInfo; typedef struct QSevGuestInfoClass QSevGuestInfoClass; From patchwork Wed Feb 28 21:10:28 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Brijesh Singh X-Patchwork-Id: 879439 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="uFvqhouq"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zs8DR6DzRz9s06 for ; Thu, 1 Mar 2018 08:42:31 +1100 (AEDT) Received: from localhost ([::1]:47144 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er9Ub-0001t7-VZ for incoming@patchwork.ozlabs.org; Wed, 28 Feb 2018 16:42:29 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53809) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er90Z-0001bL-Gd for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:28 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1er90V-0006Da-I7 for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:27 -0500 Received: from mail-dm3nam03on0612.outbound.protection.outlook.com ([2a01:111:f400:fe49::612]:53061 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 1er90V-0006CB-Bx for qemu-devel@nongnu.org; Wed, 28 Feb 2018 16:11:23 -0500 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=qHTpoSQcMUphi8JVrI/JbMcgbDzj6YSeECrJdNi5E/o=; b=uFvqhouqYn3AEXojtNSAooijhHKYs/QbvNFCShcZ3W7zBX3p3WNkySx5p9TzBMw/vZiRcMlFXHe3Is9bCP5zIdcmWBtdDFWjFxt8VPyg/Ba51dEwELFuR45m4E7qgIIxPV/1xKzAzupO4utRD2Id9b+UKdcnqRDKL8YPYBNnUJU= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; Received: from wsp141597wss.amd.com (165.204.78.1) by DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.527.15; Wed, 28 Feb 2018 21:11:20 +0000 From: Brijesh Singh To: qemu-devel@nongnu.org Date: Wed, 28 Feb 2018 15:10:28 -0600 Message-ID: <20180228211028.83970-29-brijesh.singh@amd.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180228211028.83970-1-brijesh.singh@amd.com> References: <20180228211028.83970-1-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: DM5PR10CA0008.namprd10.prod.outlook.com (2603:10b6:4:2::18) To DM2PR12MB0155.namprd12.prod.outlook.com (2a01:111:e400:50ce::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 627a37fa-0728-412e-2e6a-08d57eefd130 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:DM2PR12MB0155; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 3:tdrKNR6LOUDpvptGzQQ8PO9DQ9enjcMTGRNTFhsS4rn/J7j9GHfP4uzEgCphLgRdWaSyjXNR1FnYBDTVCmzUyi0coan6SlIlhl4ticLfDS1DzOHrHMGEx/ed+RhHvesM/QZ6tsthCCY7sIGDM3rGBtB3jdtGQ7+t68JZAK3IgsXWznB5COvl2pkA1i4OYX+7x1aUqUyYbVPfrjjpjNRSJLGGTOxgBAfDGYLsWW+LQlSxoe/yqiIF56fSdbOOYAvt; 25:IIW7Fk4OMPzce6FYCDDstoP/fMfyEuOY9xh0t74y1jcb947RI4N650wcptwKjpXvHdVj47YRbb82NcD+JXH6nB3ehnZaptcCR8H6Lob83S59p169JDDP2fxyUl2O/3aB3YB7EzC6ZQ8f7kfZSlAyPMYCGJZGLjFL34coRlvgMIBE84aGshbToxh+ylpmHpzDTY/m0f6jOs/n890WRv/YVjHwMFbSs/hjz4kuetwjXj6Ag/az7IunYv4v4z945SgUrRdUzf+9RkAPqt3pAppsTptEjmpHkI2S/5b0JOlD5rczCQKR516zUJoRq6Gb3Igbc0AhSGaU6hPzYLF+9aikXA==; 31:Vgqqi1CoWdXReGG2kG8BNhhsd2AmXcOph2iZpiCm8EObZ049Qw0+IqaZHbCMRzXpO7IXhajNw0R0tNUdFBKWjOt528BWg82lYl/4fqzj1k6e0WVR59npxAF0bbqM6pLTTV/8UAXvZADAvxiF1Id6Yf8GRRgkX6qaX2Dy87uIl9/IUyT+kwVxM67vWCFH3LAd3p/iSbAp57heVaTLJHtuHDZkQ83f9nx2IE7CutmGHTg= X-MS-TrafficTypeDiagnostic: DM2PR12MB0155: X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:SkPk2RoVGbRtLVflNJaB6PfehSUT3flCkkLFxZTAn1QNSMJO0mc9r3MnchCgqUBxi6KgjlQ7l/SPKJZotdAq+dIy/VNQFzgZZ2Z+Vco6dtK0pfiRFN8kOzFiJMIG2Qq/+N93hpLKPXg/gc6t2ppIFtulaqJgDnS7qsW6tZo7Caknoe0049an7591ymqsW4LY8DRwmaR545QFRi+jwTng2V61GeaTE+hj+ZOv15+9H9Wn8eXkPomXAiye0t4CQM6Yi60znLHifz/rAs0l335zlyq9bVg5TVoRqMtW94GH0oruPzoUBy7qo0UsgRnCp1DfvyH96mm4Guup/xAA2D7dS8WvUv2kTtYHVaIp0YtgO0ciJ6Vws9beBc6FFKH8RGlu7DWPYGTWNbIYD7lF4bizOMt3MsnusNNHEidWPPPOofXgJpAsdBfHXLDpoVKu8QLuqzRDeTOJ4nnM+3J8MmqSsIgnGF3/LEoRnXrbEQ8nI0pSvWUbp9UoTseFVYV04i1x; 4:zZfv0voeLOdIpTl5RWc/WJbSofibOvvM46INpdcjDKzYY2Dt48vJF94U2cV/j5ZEKc4c4IUupG4xeBjGjnt4To+gKV+aeMY1XD2Svns354r7a3qNIwr87BNZW7UO+WZVqnhdYFkpxgGLY+1g+AHnODztvZAY7zOxt+OOzniVAQ9HHwloX6/ovF/jurS1mvCzd8ogWKOl9LK1kyodbNDDS0gzEFM91N3wy+1lnGF7uEFYqS6/PrKX8ijse/UpAafBXSsuBNaLEyPP9ZAkUuxGloqtc2F5WgSNVRm7Jmm54WwCwtuDSZ3ypgFvp7cmxL7O X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040501)(2401047)(8121501046)(5005006)(3231220)(944501219)(52105095)(3002001)(93006095)(93001095)(10201501046)(6055026)(6041288)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:DM2PR12MB0155; BCL:0; PCL:0; RULEID:; SRVR:DM2PR12MB0155; X-Forefront-PRVS: 0597911EE1 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(1496009)(39860400002)(39380400002)(396003)(346002)(366004)(376002)(189003)(199004)(6486002)(6116002)(1076002)(2351001)(36756003)(16526019)(54906003)(53416004)(26005)(53936002)(66066001)(186003)(47776003)(59450400001)(2361001)(478600001)(8666007)(316002)(81166006)(50226002)(8676002)(8936002)(386003)(106356001)(2870700001)(97736004)(5660300001)(2950100002)(23676004)(305945005)(4326008)(76176011)(7736002)(39060400002)(8656006)(105586002)(68736007)(50466002)(7696005)(25786009)(52116002)(3846002)(2906002)(86362001)(81156014)(7416002)(6916009); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR12MB0155; H:wsp141597wss.amd.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM2PR12MB0155; 23:4XBPBdF+0Dy5s0JpEtfif7KBgyR328KPI9zhzEdLI?= 99kSIaZ0WDhd6usX96dPM+J/PKj7hguB/U7m5kjH2U8js6CpTk/r8C0mg65baesPRsYgL9dtvfVZVdYve9p4mAjd2kZmIdaAjdwDAQSqdB6b7rFn0w2VknL7kSK9+0TUKLN5eTwoF1xf72lM7hWNI8CJnZoUD/txEfTu7mvZ03CxP084RbEnkByNd3WF5m30ZJBbI2GNXiXi2OmmcpXWlVguI448C4VcSzQmfhKz/U95OS++fhN4awa7lrMxigwAddUXaxs1Rf9HzeYLAs7hXF0+Kp/zHT1yxQQiOBgK8KDDkfZjcdxq2brfMk5Zx+waxQIEaDl3bwuFnG/zpglmX5zNR5No1904sWHZdidfLQnfdRk8jiKSIgGCMuN5rseuVXPgBAmkLoiRiueY/iy1FdafdlCIct1tJReuiEAYh1Vo3CRsVWT90q6fo6eeFZE0YsSnFjBhzvuGWmJckPD6J1SGOV43wROLI6EtWMFviV1ZUdKU8N4095md7FKijpIjmW+ROt4rMpOl079Q4qK+NH4Oiopt6/CDMnf0OV/KiQ5n6Bh6w9L0sl2vf02ePebX7T+mUFO4/Dv+KUZLFIfM9F4RWXrutuVZr3kyxyGch3nt62WzI5kPqo+z6T2HFlXVA6qXBSQknatjGG0g5HkEKxkgC6v35eH9ycQIjSgSDYN7ToJt89LNAc+zQmsz68sRbP2ugAEEjb4IEo8QTevmAUTL6Ev8vrJ7ZUZQ5Jgn1Yv8gqmmuzfitFNiSjLaLYBWZDxATH5AwnKGZnxQlJR6OMNazQ5DUXTHv7PRwFhObsgR+yhgVZX2I4U972FeLluOJLqoGidDbaKAM69imiM9KLngJT1WETejn+4Bbxn+JXANeyGLzS17gbIRQRxVDHaiKTpcMk0KMOhXqXBl5YaMt+R6Z+u7uCpkl40wx7uEeuoItAgRn7Xd5qkHAwqDQjn4E6YGW0NYVNVyWEd7SN0+fcEJkjGybKvrPXMGoIQobTNk0tU9XG0VBlV9/M8oy9SUW5xMO6So5s0ROTz4GqlCzxk8BywrPttajFvvi38TFWRJUWfw04gq/ok1Cgcg+MRRQUOZa+Nxzx8GFVyNN5eyjGtCQIOMYmnZipM4Zlk/qQR6YjOObuXa4E5zB+K3/24DiltCrsySsvWbQiI4qgBru1KoknucXbkL9uvz4x32HU/SM046MvEIoLZolp3F7G8O5IMqYmQ7x9G/QNlZ3sNR9Ae X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 6:covBHhml+BrbEkuDRaU1oHOvEFFI/DKEDZaGWmMb3MiCTm70gYgiVuqR5dLlXKKouMacsp4DLgdYo+02Bo74yDP9hhvLslsyyJ4Ok//l6S3HwRz2Y0b8OAGXHgIxOESaYKNrrAiV98Pk5DxsIpzuNludjEY35K079bIjp85B1aOXJTklVUkO0ya9drL2kMphm1fkx1hd1Q4exYkYm1s5Z4uAI4zKveqT9U+/DYMo2cTYWO/lE3dETLI25bjeff6SbNEB7upkiIBHtHUv0sg6U90gmrlg6XWTg1pHi96CMV0cY1rJfp1EWknt8OBvmIrCQvvil1Z0jyLcLjM6TfnAbSHH0BjCrHpmmmosUQykcdw=; 5:E3OomUdb0NoVXJyJG1TPnYXZnT2eRkheC16ogdc2jpvKmXnX6dDW6q6xc9Zh8ppKi6OkvnqvYcLVLn3l+FrKLqP52QRZqjTmi4o3cb2n4c0YEZ+dJk7aeIYItcGIvESZq7SkN304zHt/T/kxi/wIJrplGbaWSsrY/y+OI3akF9U=; 24:Fec+9dNIU+itSzgnmmmdv3suQ9UsYEImS/NxTamaRvme5fhCRtxFzfLeC5bkUJFx5b3T/db6/mIvrPqpHMb8Go6/5eSEkLa2QukCdZyTf+M=; 7:+4M1pWZy+KbuE7XrSZci5Y3zjrUM2Pvd0VydjNzOg4zW8nzVEQMNlV9bG8hj6HrHandiN8h3gWuqpobm7cvKJHz+LAHJPHm+qm72vnewYi5evMKZx/OoTPd5zl7DgSeCRc84rutsEzSi0myFyBeECEeaPAcSQEhIVF6t3cvzPKFDM0bpnm0g/9M13NXySqaxYbGTWzn3ISVynwieCMo7U+LL3D190b1N69UYPbU8pFdXQr/2dyUT44YOwMXXOkH1 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0155; 20:ceomWPHE6W1H0Bo+na6NYEO087GCnFIeycT3dMO+W2Ci18gxWbvKRh3+urz12VG7oYrujiRfbY+Qm5tqIpW4aj37Rwjhise7orUS7q9kQBRKNRe8ToLHPTBBs4isb9xa+XgHbIblmp9dlqeUlwJ57Ip/k6BGMCfXiTN+N/Eo+Lo/l4Im7wNJ+HASJgd8cGdd2C/52Vl/irVcyLVeNyNnGzXBRS/r0Rqg0jZXL3Dqb6l7h/kH3JfSw8A+lY9nfDQs X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2018 21:11:20.4203 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 627a37fa-0728-412e-2e6a-08d57eefd130 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR12MB0155 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 2a01:111:f400:fe49::612 Subject: [Qemu-devel] [PATCH v10 28/28] tests/qmp-test: blacklist sev specific qmp commands 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: Peter Maydell , Brijesh Singh , kvm@vger.kernel.org, "Michael S. Tsirkin" , Stefan Hajnoczi , Alexander Graf , "Edgar E. Iglesias" , Markus Armbruster , Bruce Rogers , Christian Borntraeger , Marcel Apfelbaum , Borislav Petkov , Thomas Lendacky , Eduardo Habkost , Richard Henderson , "Dr. David Alan Gilbert" , Alistair Francis , Cornelia Huck , Peter Crosthwaite , Paolo Bonzini Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Blacklist the following commands to fix the 'make check' failure. query-sev-launch-measure: it returns meaninful data only when we launch SEV guest otherwise the command returns an error. query-sev: it return an error when SEV is not available on host (e.g non X86 platform or KVM is disabled at the build time) query-sev-capabilities: it returns an error when SEV feature is not available on host machine. Cc: "Daniel P. Berrangé" Cc: "Dr. David Alan Gilbert" Cc: Markus Armbruster Reviewed-by: "Dr. David Alan Gilbert" Signed-off-by: Brijesh Singh --- Hi Dave, I updated the patch to include other SEV specific QMP command so that build passes on non x86 arch, I have still kept your R-b, if you don't agree with changes then let me know. thanks tests/qmp-test.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/qmp-test.c b/tests/qmp-test.c index 580848307ad1..50573dbf4fbd 100644 --- a/tests/qmp-test.c +++ b/tests/qmp-test.c @@ -203,6 +203,11 @@ static bool query_is_blacklisted(const char *cmd) "query-gic-capabilities", /* arm */ /* Success depends on target-specific build configuration: */ "query-pci", /* CONFIG_PCI */ + /* Success depends on launching SEV guest */ + "query-sev-launch-measure", + /* Success depends on Host or Hypervisor SEV support */ + "query-sev", + "query-sev-capabilities", NULL }; int i;