From nobody Mon Dec 15 01:41:49 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1520529245522920.0688770782408; Thu, 8 Mar 2018 09:14:05 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 47BCF23E6F2; Thu, 8 Mar 2018 17:14:04 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 1E3E051DFC; Thu, 8 Mar 2018 17:14:04 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 15BC44CA9F; Thu, 8 Mar 2018 17:13:56 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w28HDsAW014245 for ; Thu, 8 Mar 2018 12:13:54 -0500 Received: by smtp.corp.redhat.com (Postfix) id E0C8B98BC; Thu, 8 Mar 2018 17:13:46 +0000 (UTC) Received: from mx1.redhat.com (ext-mx01.extmail.prod.ext.phx2.redhat.com [10.5.110.25]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 0152E5D753; Thu, 8 Mar 2018 17:13:21 +0000 (UTC) Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-cys01nam02on0043.outbound.protection.outlook.com [104.47.37.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id E34C77FEB1; Thu, 8 Mar 2018 17:12:41 +0000 (UTC) Received: from wsp141597wss.amd.com (165.204.78.1) by DM2PR12MB0156.namprd12.prod.outlook.com (2a01:111:e400:50ce::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.548.13; Thu, 8 Mar 2018 17:12:38 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=oFN0AipmeSrUQUGo/4Q0LVj8esKugyObTJDc3WGk/q0=; b=5T5ny4W+w2mxkm0yDQ6GG3L17gTDl+MU9Axq5EEXS6hu1cVg6gqrkUA2hOtdhe9zQermeuGGZ8KncLzrskIKb9PAP6kMP70KWgMQszTiw6frujyNaBL0dRELiASUlvX1aiavPmJCgpnJd1yw/W7T6HdMphoeQp9a8LdkV5nihlU= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; From: Brijesh Singh To: libvir-list@redhat.com Date: Thu, 8 Mar 2018 11:12:06 -0600 Message-Id: <20180308171208.54369-8-brijesh.singh@amd.com> In-Reply-To: <20180308171208.54369-1-brijesh.singh@amd.com> References: <20180308171208.54369-1-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: BN6PR11CA0037.namprd11.prod.outlook.com (2603:10b6:404:4b::23) To DM2PR12MB0156.namprd12.prod.outlook.com (2a01:111:e400:50ce::19) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: f1782605-96de-4a36-6894-08d58517cbca X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(48565401081)(5600026)(4604075)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:DM2PR12MB0156; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0156; 3:whFIwUXXWZYNR1xerZRXNQeKDYWjdKm4L3WL/10IOTKtRtzFs0usEofBdvpdY111VV3dVGVRFsacZ8ZnIiegZQkjtGfWTEXWryV7JL5q23TRAjV9DVcYb+COIauR4sB0/0bqH0oPGsOWjo7a6asDuJlQtpZM7fKIKCGzQscy9CA5qwbxOimF718vbhQ9tvSt4hRLuv1px32pccUzbvC8IVzAgChldZh5ZK4mooPq290+5cCQlvjoqZ/GmFIzHt/3; 25:viXCrBC6Iz1Hi0tPaMQ1skCvRKYukTtuHEjJRSAJw5r6CuTP1NnxnTPEzrPmDkh0U/fBrYh+kejSCLKHKCLBVSbZmrePsZul8HfSDmCizzNtn1hYAqH5AMACgPuPCAK5n1HFvRapGNHb0ZodQDXme0vwVYUacFFC+My99CUy6DtoXqT6ckzps59I5QBRuqeWqIp5rGYD5RMYniysnBkAY9o/wN9VRUOVaBIoTCfhkF68V/OB4/iNthwXAdWDUv9kTL7JgbxF0yv3yEEpckgBwcCGBzPLSVN/DUPMRyhI7IdMaeEo8IbDFN8UbiK1BCWwliya7rg/YQ//fR5S0KX9yw==; 31:qRETpGnkIR0D2YS7FF9Wjk7g5+icKcn2zGIOxdIc9mEGUt/rs9084fXk7ErxrplRzvyOJwWT775Q7hwbXvkPEzV8JKAiq7qlzpYzfr2pc58J+1DTEBTQxxigmlBReqE5JYal+QstzRM2AwF5jUhdrJnDjtiyDKaJthWTRD62KKs88v2WPgCO6oE7BNKDCP2FlDnSnW9a1Y/mjfW6vv5Vd29TVIExYYDigA36bT/k6uw= X-MS-TrafficTypeDiagnostic: DM2PR12MB0156: X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0156; 20:LDgl6LMbVbgy2K8x/xDdINs95HRCh236zpAFa1NSgEy7RP6rjprsuUNNdwSQonkhYoWzseJyh61pRezAImGQrQ6ersA5mMhGWNT4wsNtdShyiRsSCkZnaZV1R5eceFvphDQKt33kngTRscU/iIzL6oKM/+6jaSCfBSGo+5PJLJpf7z1d9oE7gS92+8ntIzfg+3U9EdwS9Y82irGQr2YIvHdumBBw+RYzEUUz3P3KZX2pfm/2YBVGaKKFqig4GIrkiBNSCupoUSsYeX3NUo5/WCAi/HJErsn4KR65l5zdJm+IT3ZXyYQYv1CGjeCqBEnQfKSPXyFmsrcGTIOcq4HfA0yCJ/j8IiSWi5RC0sY9uUDTUzi7yJDiKtXy8GpCKCwgVcCSoqnoE93cuWkZKBm7YPg8sDYC+eJAmm4opmwV9R5fIhE00LvXUrrTY5osacBas74Uu1xAJN671N2jv51DNTtkETEAffsUOntW+e0yCEPj60wPWhauGj1nYuneTPgf; 4:GE3j1nsdUC9SVPtN7BK9ucmAyG5DL1qyfkn+wNcQKgrOhMb0p2z+SBRoCxlAapYFz0wHt0BNKOuzkAHZMXUcAkmOAICBT/mxhX7a8NBCfalkIR4yP9vrP9IGFq8MSMQla3bm26TobnFUaLjeNM7b4v7RHzDwAMSmA5wHMv9mcrlkSKxF9fgg+scyn9bSq9Zbc/dEq96X3lVuawpz4BNLsdYMlYYEp2fgAdQST3q878oX89bGG4sOSdexTGridU+zhVkOeeHiRYzXoFOYn/lo6+ewvyLWl+BpBbpc7POwsj93IdkGNrJjUXHZzVWDydygxXPLnuDgjnB0do1kW86zWcysV7y0YLnYeYUTd3xmYSw= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(192374486261705)(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040501)(2401047)(5005006)(8121501046)(10201501046)(93006095)(93001095)(3002001)(3231220)(944501244)(52105095)(6055026)(6041288)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123562045)(20161123558120)(20161123564045)(6072148)(201708071742011); SRVR:DM2PR12MB0156; BCL:0; PCL:0; RULEID:; SRVR:DM2PR12MB0156; X-Forefront-PRVS: 060503E79B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(346002)(39860400002)(396003)(376002)(39380400002)(199004)(189003)(5660300001)(16526019)(16586007)(478600001)(3846002)(6116002)(7696005)(52116002)(51416003)(76176011)(6486002)(25786009)(4326008)(316002)(59450400001)(26005)(1076002)(54906003)(86362001)(575784001)(186003)(386003)(6666003)(2361001)(106356001)(2351001)(53416004)(8676002)(81166006)(81156014)(50226002)(53936002)(2950100002)(6916009)(2906002)(97736004)(68736007)(66066001)(47776003)(305945005)(7736002)(8936002)(36756003)(50466002)(48376002)(105586002); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR12MB0156; H:wsp141597wss.amd.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM2PR12MB0156; 23:BM6SG9IXZmkeanaOvKwG7kXca5JQgnABZztAQYvGh?= =?us-ascii?Q?etZeAO4gAe4antggWjuuKOOvopa24JqYdTycByQqGMj7gvScT+rP486/gW8H?= =?us-ascii?Q?Cnk2ZTfMxw1fs6haczWBX7huTU7mpKy6slTLyZcJE0an1q0wmRzuZz8MR0uK?= =?us-ascii?Q?KcaLpJwlqKnfzlvfYiqO2ftxyabr5JwJRJ5T9BnlUyZ37hXZ5ns/gLL01H7z?= =?us-ascii?Q?ib0PULklEGGjkTiOfq88jOWe2q9jhI2Rp0q5JBxMA+uJ7/N/fN35jL6dxh0e?= =?us-ascii?Q?w8NDCoQhjrrvV0xchh03HFiLURjQKg9W9vLjCc3XK9QTZfyn2iPY9TKOFAT3?= =?us-ascii?Q?BaY49EFKwhibDB7/NPWuK6PqjxPc1xhy0Eb4CwEQtQ0PplmYOXoCeija1r4f?= =?us-ascii?Q?3ONgrZouVfnN4YIVD5jNtvCN7YM7JghwFLHIB/y4hmkRVfzgKGGkfjfyX2pD?= =?us-ascii?Q?6CXjJc4wRsGxKpAGGo5EhBsHHucWs/IoQQc0c+AwpNuqWLs7eCGHtaVaOG/y?= =?us-ascii?Q?TuHPhmxZfv8qlInZRmieWk7qgf/64Cm32jZXFB49mtEfsc7OMzPaorVTVXcp?= =?us-ascii?Q?S7CVbnXmZRX6r0bES6it47QNd3S0hBnQyLK1U06/z74xSyRXBV/igUNg8I3Y?= =?us-ascii?Q?PXo8K6S3EBZEekhvNn9xzbWe4mbvoCC+SXlkfwTmQcxc0sJYLYke8uvbzYlk?= =?us-ascii?Q?vhQC8qticIFB8q7AGB3oq/PhzeMjpvoAJHwtqCatEp0s6rffTiKG/8BlzCCU?= =?us-ascii?Q?U4DYqdxa6eyomt5YtECO9PaLxGeirjEzWgr662PSosbzBYMzNYqh6luXnBuD?= =?us-ascii?Q?DxtkE+u1wcV63jASvCt65XKsBGTIh8Oj4suKqPgHwosCIzE629sHOSAjK+jH?= =?us-ascii?Q?9j1zD8rIl6uygmF8Rk9x85N85UGULIiW50TdysCE7NJwTjcTKa2Yf7vYyBPb?= =?us-ascii?Q?HtsuSXINXZ09AWTE+0AL10wkB0q7Qvsn8lWFyzcDcA0OzjUU0ROobOSatDyz?= =?us-ascii?Q?VDbB1gMat1bjZn/5wxf7flae8JTn+1nn8ms4q3MPBgIdrfJEQSQ2qBXkqYqE?= =?us-ascii?Q?hTdBFcAAn12r6SBSLwyR9uRxmcxpgdNbtQvjcgJfzLbVG66rWuq9BwViTR4P?= =?us-ascii?Q?oRxXex0YbRyyrhxlZff2eavZS5FYjqRlO+MteRIlnbndXIKYj/sHTgUIThCK?= =?us-ascii?Q?DljJ/XNgMZAJiP4aP16WVBSvjKNffoBKUbWvF+y0kzSD+0fqPYJMYFd4Q=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Antispam-Message-Info: rSENki3RACLyGvRXFOHHMKsoJPAGQ8l43YpaCUSx+bpj8YRbwMRUTHmDFPJekHnZJrvPJhNDPmyopkCtKmh1OSnS7luDfMVpXuhyEX8JXkUI/7YRxAvoPPSp05ZpAV5USuH5WM8V2/0YsD/L9nKNkNyiFsb6WZi7yINOyQzFCIexHusU9SZ7lmxxRWZd23Re X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0156; 6:p1nh/r5iWZmD0WLwHXIbcZ0Fxpqw/hk5Dxs6hMJbYBDJmWULSDcJcn/Jgwg4jVUdE6PmBCaUIsd3BsYsKrAmbB+LjC8WNyAanEMLvGHOhpluCTZpr8AkTgwyTNML6OLc6K4WsedHrfgGjtZWSTCSJuqhuXeA07ZfvOaHdSaXSEuoGvamlehaKTidTau1LpLSjg2n9dHyM8Yxl/5189XMZvaTV05RYgKy8vNSbXFa/fpLAfSEvUI0w6KUTJ9iADW/F9tGI/gYU1ZLp74RYckM1jCT8eBQUfUQ0SRMy0alO+8lpSn/niXUtP9TUaRp0R5wSeIXSSczVGJSSx26NDJG2j4Z+SjBVzr2/Eh10wjGm+k=; 5:0Ne4HET2XyabU7gx34tEdgE0k29gJ2sB2pQtUi1uvfpKByvr2nzErICUSCwfgQtGk84R/QMxs81YI9H8RwxC6wgv+P5LBrcQ+8EAjOJf55A762dr936d6BW+fj3OeBVfbBh/eayCmJc7dPu/gxbvP1BpjYC9qzB+dCHnCwdqDuI=; 24:W8riHHJb3m96TG/Hhw3jit686UKc91de3oYc8l5ssXDeIiLsEcexwcRBefr2+4o/CJYabmYatmg5jAtd6aTJx9C5DHZSNX3GFzw/uD0qL8s=; 7:4Jj+BgyHJMc4bzfTrqT0QCYJFbQ1+qRF+XXczw0JnUZPtJF2DV2erOkI84RyOHyAbFQeE9qJxopKNdgqN7LbKE/1uwb5o8e9/fntr2R1F3rhc2aHKOQ1WfOrXRxl0q5zUj28qXYO+85gIv0zk0aUCL6vUEDAentf78VJtlwjW+gbt52kUpy0ujD79bmU5Qj/s9mbM19FlLHkx14dYB/9mjHy6061Gz7nWJ9TnNvFPjKsKKfc6qE4vOQqQ/Kqknyn SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0156; 20:6JLEfH2p3+xDLytLffFiLNzql7oXlRDNxOwhKQlTx1xvxMjQxyCRFZKVGi1KGiBcJPIAZGtmgg0Uyj0tT8Lnn7WQhVb/s6FCUCudkrRwuXg+lsCrWRpgMcgDe+IJhUXejOWillGXFy23owUKuWJJmXoM5Upm9ehQbjcDSqgM11S0Taxt3CHeC1innYP65p/P83iNFwXmBxbiLoLX8/W2Z0FPZmU8PmcHY6+RC4AE/yI+A4HxGWvcDtG2Z2DRnGqu X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Mar 2018 17:12:38.4137 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f1782605-96de-4a36-6894-08d58517cbca X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR12MB0156 X-Greylist: Sender passed SPF test, Sender IP whitelisted by DNSRBL, ACL 207 matched, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Thu, 08 Mar 2018 17:12:42 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Thu, 08 Mar 2018 17:12:42 +0000 (UTC) for IP:'104.47.37.43' DOMAIN:'mail-cys01nam02on0043.outbound.protection.outlook.com' HELO:'NAM02-CY1-obe.outbound.protection.outlook.com' FROM:'brijesh.singh@amd.com' RCPT:'' X-RedHat-Spam-Score: -0.011 (DKIM_SIGNED, DKIM_VALID, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS) 104.47.37.43 mail-cys01nam02on0043.outbound.protection.outlook.com 104.47.37.43 mail-cys01nam02on0043.outbound.protection.outlook.com X-Scanned-By: MIMEDefang 2.83 on 10.5.110.25 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-loop: libvir-list@redhat.com Cc: Tom Lendacky , Peter Krempa , Xiaogang Chen , Jon Grimm , Brijesh Singh , Borislav Petkov Subject: [libvirt] [PATCH v2 7/9] qemu_driver: add support to launch security info X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Thu, 08 Mar 2018 17:14:04 +0000 (UTC) X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" This patch implement the internal driver API for launch event into qemu driver. When SEV is enabled, execute 'query-sev-launch-measurement' to get the measurement of memory encrypted through launch sequence. Signed-off-by: Brijesh Singh --- src/qemu/qemu_driver.c | 72 ++++++++++++++++++++++++++++++++++++++++= ++++ src/qemu/qemu_monitor.c | 8 +++++ src/qemu/qemu_monitor.h | 3 ++ src/qemu/qemu_monitor_json.c | 32 ++++++++++++++++++++ src/qemu/qemu_monitor_json.h | 2 ++ 5 files changed, 117 insertions(+) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 96454c17c03d..bcd539b6aff3 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -21254,6 +21254,77 @@ qemuDomainSetLifecycleAction(virDomainPtr dom, return ret; } =20 +static int qemuDomainGetSevMeasurement(virQEMUDriverPtr driver, + virDomainObjPtr vm, + virTypedParameterPtr params, + int *nparams) +{ + int ret =3D -1; + char *tmp; + virTypedParameterPtr p; + + if ((*nparams) =3D=3D 0) { + *nparams =3D 1; + return 0; + } + + if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_QUERY) < 0) + return -1; + + if (qemuDomainObjEnterMonitorAsync(driver, vm, QEMU_ASYNC_JOB_NONE) < = 0) + goto endjob; + + tmp =3D qemuMonitorGetSevMeasurement(QEMU_DOMAIN_PRIVATE(vm)->mon); + if (tmp =3D=3D NULL) + goto endjob; + + if (qemuDomainObjExitMonitor(driver, vm) < 0) + goto endjob; + + p =3D ¶ms[0]; + if (virTypedParameterAssign(p, VIR_DOMAIN_LAUNCH_SECURITY_SEV_MEASUREM= ENT, + VIR_TYPED_PARAM_STRING, tmp) < 0) + goto endjob; + + ret =3D 0; + + endjob: + qemuDomainObjEndJob(driver, vm); + return ret; +} + + +static int +qemuDomainGetLaunchSecurityInfo(virDomainPtr domain, + virTypedParameterPtr params, + int *nparams, + unsigned int flags) +{ + virQEMUDriverPtr driver =3D domain->conn->privateData; + virDomainObjPtr vm; + int ret =3D -1; + + virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | + VIR_DOMAIN_AFFECT_CONFIG | + VIR_TYPED_PARAM_STRING_OKAY, -1); + + if (!(vm =3D qemuDomObjFromDomain(domain))) + goto cleanup; + + if (virDomainGetLaunchSecurityInfoEnsureACL(domain->conn, vm->def) < 0) + goto cleanup; + + if (vm->def->sev) { + if (qemuDomainGetSevMeasurement(driver, vm, params, nparams) < 0) + goto cleanup; + } + + ret =3D 0; + + cleanup: + virDomainObjEndAPI(&vm); + return ret; +} =20 static virHypervisorDriver qemuHypervisorDriver =3D { .name =3D QEMU_DRIVER_NAME, @@ -21474,6 +21545,7 @@ static virHypervisorDriver qemuHypervisorDriver =3D= { .domainSetVcpu =3D qemuDomainSetVcpu, /* 3.1.0 */ .domainSetBlockThreshold =3D qemuDomainSetBlockThreshold, /* 3.2.0 */ .domainSetLifecycleAction =3D qemuDomainSetLifecycleAction, /* 3.9.0 */ + .domainGetLaunchSecurityInfo =3D qemuDomainGetLaunchSecurityInfo, /* 4= .2.0 */ }; =20 =20 diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c index 195248c88ae1..e3dd078e4e73 100644 --- a/src/qemu/qemu_monitor.c +++ b/src/qemu/qemu_monitor.c @@ -4400,3 +4400,11 @@ qemuMonitorSetWatchdogAction(qemuMonitorPtr mon, =20 return qemuMonitorJSONSetWatchdogAction(mon, action); } + +char * +qemuMonitorGetSevMeasurement(qemuMonitorPtr mon) +{ + QEMU_CHECK_MONITOR_NULL(mon); + + return qemuMonitorJSONGetSevMeasurement(mon); +} diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h index 1b2513650c58..dd0821178c47 100644 --- a/src/qemu/qemu_monitor.h +++ b/src/qemu/qemu_monitor.h @@ -1176,4 +1176,7 @@ virJSONValuePtr qemuMonitorQueryNamedBlockNodes(qemuM= onitorPtr mon); =20 int qemuMonitorSetWatchdogAction(qemuMonitorPtr mon, const char *action); +char * +qemuMonitorGetSevMeasurement(qemuMonitorPtr mon); + #endif /* QEMU_MONITOR_H */ diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index 94a1af1d3f75..d652da0c4db2 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -7955,3 +7955,35 @@ qemuMonitorJSONSetWatchdogAction(qemuMonitorPtr mon, virJSONValueFree(reply); return ret; } + +char * +qemuMonitorJSONGetSevMeasurement(qemuMonitorPtr mon) +{ + const char *tmp; + char *measurement =3D NULL; + virJSONValuePtr cmd; + virJSONValuePtr reply =3D NULL; + virJSONValuePtr data; + + if (!(cmd =3D qemuMonitorJSONMakeCommand("query-sev-launch-measure", N= ULL))) + return NULL; + + if (qemuMonitorJSONCommand(mon, cmd, &reply) < 0) + goto cleanup; + + if (qemuMonitorJSONCheckError(cmd, reply) < 0) + goto cleanup; + + data =3D virJSONValueObjectGetObject(reply, "return"); + + if (!(tmp =3D virJSONValueObjectGetString(data, "data"))) + goto cleanup; + + if (VIR_STRDUP(measurement, tmp) < 0) + goto cleanup; + + cleanup: + virJSONValueFree(cmd); + virJSONValueFree(reply); + return measurement; +} diff --git a/src/qemu/qemu_monitor_json.h b/src/qemu/qemu_monitor_json.h index 305f789902e9..b83160a20e00 100644 --- a/src/qemu/qemu_monitor_json.h +++ b/src/qemu/qemu_monitor_json.h @@ -342,6 +342,8 @@ int qemuMonitorJSONGetBlockIoThrottle(qemuMonitorPtr mo= n, =20 int qemuMonitorJSONSystemWakeup(qemuMonitorPtr mon); =20 +char *qemuMonitorJSONGetSevMeasurement(qemuMonitorPtr mon); + int qemuMonitorJSONGetVersion(qemuMonitorPtr mon, int *major, int *minor, --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list