From nobody Wed May 14 15:38:17 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 1521099511083705.5848875044921; Thu, 15 Mar 2018 00:38:31 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id D116119D055; Thu, 15 Mar 2018 07:38:29 +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 9945C6A941; Thu, 15 Mar 2018 07:38:29 +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 64E4FADA7F; Thu, 15 Mar 2018 07:38:29 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w2EFkL0o006820 for ; Wed, 14 Mar 2018 11:46:33 -0400 Received: by smtp.corp.redhat.com (Postfix) id 6D8315E1DC; Wed, 14 Mar 2018 15:46:21 +0000 (UTC) Received: from mx1.redhat.com (ext-mx04.extmail.prod.ext.phx2.redhat.com [10.5.110.28]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 5E17B5C552; Wed, 14 Mar 2018 15:46:20 +0000 (UTC) Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-cys01nam02on0050.outbound.protection.outlook.com [104.47.37.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 4648780479; Wed, 14 Mar 2018 15:46:19 +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.588.14; Wed, 14 Mar 2018 15:46:13 +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=8QESX6E69OUYdh11WMctUXlG/vSaf8hAacrxBqxQ78A=; b=Q510afIeDwtFUiXSBdodPDxKX32FZUnfx9v8hkshnpwkvkRPAMC3g+dnSauI6YvaL12ebloa0C3hcwS7x01xxWjEdd0s+Zm2H6E6fuf9k8pNmfyEM8KG2X9X6V16pIvi+mwPxz5k/Yw5KXvKtTQtK1Svh2pRDU3XR2omLPBBD9s= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; From: Brijesh Singh To: libvir-list@redhat.com Date: Wed, 14 Mar 2018 10:44:33 -0500 Message-Id: <20180314154435.17991-8-brijesh.singh@amd.com> In-Reply-To: <20180314154435.17991-1-brijesh.singh@amd.com> References: <20180314154435.17991-1-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: MWHPR1701CA0015.namprd17.prod.outlook.com (2603:10b6:301:14::25) 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: bf7bfea2-e232-40dd-d1a3-08d589c2b82e 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:mcUXJDiEp28uUVCy6Wjb1felAS+qERCnxEyYMpdmr6oxgjpB8yd1URfCbzOimm6sntjkaICK7JjvWbahx6xXa156t8+Uanpq+353cqxSr61Ekh1mEZ+CiwoLgSkmezXu/iE7ybj3Bh53dxaxvTvNvdI2NX11r4dpK4dOq0Qhwbt+7tz2UJi2Tm09dcFBxdkibZPPkV/3cnmgGqjFFX5qUslAxkLw9087JDEZaC85fufMWNZ4kze8MK73ZRsvQb4M; 25:sXvoQmrKHLPmxw3lvcc1mk+iqSKRxjXZuGSS2ND53LPhSTA+T3YZg6dLB0sVzJxgzWeRPbxeJFBa1CscBtWTe0aQDuRn8gjp83TtKcpM/PS76uVhUxQzXBe3WFnEsLVXvomCwkrguonld6X35APduu3dDyDUKc5EEUJnNrSZjJbLPfQ6kopHjBIY3EcjWTo7peKIPtgUPVm1nLT0PJFli3Q6W6nIa4girHbSdei8+q+axWjYx56um8CGweX6zZts9itxFH/v8yZTOhRgfoNE4lKa5OPkMfoI+NrWV18pacm79yb4UTGUkrE03jv7kSUS3rcDgjLMYfs7euQOXweDoA==; 31:Ro/p/jyb0yL4dfLxSmC5n10b2uXoW+RmnJnicGj2TgRAElHAn38Hk8fEAkUcPJ8r2hyA6pz3+H4SsOy9n291YAHcz0FWcL7iOTrbZRCQMuBPJQ5eXOKsn1TxIYYK4kIPUDFg/laocyl5i2kugi88zt6msVyT6fAaoX0hDu5NhjA6qFfYLFUxsqcVEoVymNa2x+4+vFHpX7s8XdDfPDbJLROWpfRpYpdbembTs95Aw5U= X-MS-TrafficTypeDiagnostic: DM2PR12MB0156: X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0156; 20:qW8hn1QVl1Rxzhl7cSHaNsj/t19JynyKvXoRG+KDxfQ5Jwu0vGYUPBWGfAvuHr9A2MQvgjGu03g6gJOVAHI47zmeMv8JkZ3auZKQr+qvjUf5T/T8gsVGlYetbJOo1zoZgDKvYGRb8BHY36jbWjuYgMpNGiH2BCWtkANb0QBij1JHjK94ZJ682/F+3aU1jmGslinwuPtm97r2vvaziltD/onNbsQRBd1QqNO2ShdK/q1i88ykN6RfGq4AnDWnGwj2MpNerwXjFcj6UD4eYlCEgd++5CTIC32Uw0iHxFndJ31O2gKrL0eeyiTrIbXIiTPhmfNYz3bujM2WJb/zS/oSKqfyNB+GIZLddcQWvZNB0NrQVjIH+En3LBZPy/f3uoGK2RzCCCgxYUrCc7kl0slMjRyT9utpLR8ncRDvqDF9ABAOGs6RHZ0JEuZXI525QZd38BLE9q1CHLLMbh9uncPDGW7Vkk2BX7w1NQu6yUVyYTZIxbOlvp7gwhZyjescEIy6; 4:D8CJxkDFWnFXE9Pt/3bpKYKf/r39nMVWDJbszEt/TzH8l7dI6DZWvOF6n0rS3qnO/DVNmRVHjtH5nGNnAerLVtg/ZFD5nn2ar5NBR8GWGExUJ0VTVlK8ntRD2pbIypXXKwV3IB9VCl8PehMWhxUGOJpxNc3mwTJQZIW1WLKi1k88qX2HqN4F48Stto2lhOYCyb9ifHZin6z6bMcoIuZrXDssjHmDMe8r4LGc/jzwPCsLeU0T27Rkr5SRmVzPWWxDlG3ObnPevwa+kfH/CoFKJPNV967u7NtQN6A6ExPZegP6XR7nrylFAJ0Rretd9VviDeOmIxIyBHKaRLFfeYptdyVERj1f8FM5doephKXmm+Q= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(192374486261705)(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(3002001)(3231221)(944501244)(52105095)(93006095)(93001095)(6055026)(6041310)(20161123562045)(20161123560045)(20161123564045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:DM2PR12MB0156; BCL:0; PCL:0; RULEID:; SRVR:DM2PR12MB0156; X-Forefront-PRVS: 0611A21987 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(39860400002)(376002)(346002)(396003)(39380400002)(199004)(189003)(59450400001)(2950100002)(6916009)(81166006)(2351001)(81156014)(4326008)(6116002)(478600001)(6666003)(52116002)(51416003)(7736002)(8676002)(3846002)(7696005)(305945005)(48376002)(106356001)(2361001)(50466002)(53936002)(16586007)(76176011)(47776003)(5660300001)(316002)(6486002)(54906003)(53416004)(68736007)(105586002)(97736004)(1076002)(66066001)(8936002)(50226002)(186003)(16526019)(386003)(36756003)(26005)(2906002)(86362001)(575784001)(25786009); 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:nxToZ2PSdYouSbCRxYNVKxSD687uwkXy78O05BCxp?= =?us-ascii?Q?H+ujVo0M7S+A478mwO/KnkyM0mtqW8MNu5wdkC0F4eHtSCBRJQggzJuWuhsH?= =?us-ascii?Q?fvrQxwqr2LiA5v5XRytFSzTGZ4UwNtCddPTfKPFhSZFInZDwtlWmmD+r5Bnl?= =?us-ascii?Q?WSMYBEDT8W8pDA3P9JzsASmHQARGzCSvf1Okx9Zg64Xj1/s7YPiCZXOv4aao?= =?us-ascii?Q?feJGsefd993RngvguUdGLw94uI0h2pvxXzzLRtJU89GGH/ukr9l1BeW8P9TG?= =?us-ascii?Q?HuwjJHz/CzEgUdZh3g22sjwWFgzU5E2amquiWKhvuF6DELGgWagp4pv2+ZHN?= =?us-ascii?Q?+jH+6QJqXmr/0JHGjAQDLGkENWlGekN0/zRw1KiPJKAO4FyKPEoYuBu9TbMu?= =?us-ascii?Q?rNO2By8kwYCezhQQy/NMA8jOpD065Jsa6MUDGum4cJGdSwtIFv3OVVzkKsYI?= =?us-ascii?Q?p+rxHcEWVNwr3vM4VXeXY0yfSjoUAIFtQPOrQhcdvuH1FzAZUN10FamrE9cU?= =?us-ascii?Q?nUwxaV4kGfyTaGSuSjsg/s6csg30aLW38IOaCUyTgOwxQ9ktCnCP4w9Adw28?= =?us-ascii?Q?/ExSqzoMYRo9i36CG2x+lsOLVs5jmzPOHK1wQTdt3niHmLkMFZ2qwQoztGuN?= =?us-ascii?Q?08YtcJh4jvma7qIIi/5Gyzqmu89NbzyclcYM8xvYY/t7VU6IF4mZ6ZWeNriU?= =?us-ascii?Q?PrF75FpE/Vcf0znITbWKfFARbO3sNgA/RsAhno76HcTW2/+Wtma/poqYc72O?= =?us-ascii?Q?nxqVdImbkiKgMCXsM7c/3nSk72HitKnNJraCd0/6NtZlyBiP9orO8wAlx7DH?= =?us-ascii?Q?3jvzZbqwHRaxuvPNaUfiLKDQPoIrNqOQfgHL/FynQVAEuIU93riycohv97UI?= =?us-ascii?Q?Prq+4fEpxn4iASUSyfIz6idZgS5y9dKaUVvymQ7hNyk774kL+9vdaNXmq+rn?= =?us-ascii?Q?/cv6hikQHh8TwU8g3UIDUVNsOoTLzlPJHMIL55HMnMTGL/+osNq4BPu6Uv79?= =?us-ascii?Q?yiq7DL9kj8GyttRTyA36KKOyXHqSWMCg27ImZNAAlFzgEgAPOnMCztKiNXnk?= =?us-ascii?Q?JA2ghUouKApE87WhoUhna6gkT2ixlCesSo8j8ZZyhQ5tF6uGWJ2iL2087rEi?= =?us-ascii?Q?Xz2eJN8U2pvWGvHCzbD5yvKqQ+dRVciOC9KtYXU12qfibVQNi4ZIhkaLZ66G?= =?us-ascii?Q?Tv5+PLNq13GnzWEo1P5Wmq0GEG8dv67VWNBKIqI3J5Q5Kxt7+tkCVzNpQ=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Antispam-Message-Info: F3poKPny9KxDJ50OfuEdHdskuaxTcNBtL3+J1iFpZ5STpkHaiyF85jaKOyfHPDYJ4ZXcBtVAR8/ZLroH25Q3GrEi1wxIluZIKUi4+aZzER/c4Agi4yo4D5sDUlqGskIQJXnWn2QZ4c8dlPn/aSGPvtnQgwZgGZehhKtWNSTsbORAg62JC3QZfFKhgE6Cw8+n X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0156; 6:Xhkhk1JXbSRaYnq+zvKhTaT5a414lBle1KDmLC9woclkHCN4iAZlaw03EPyPqtLHzuYpm4ZFBTHhA8YwrESHS6RWu0LYnGXAHC3e49fK2UUw375cNFXTRAZ+3V9P8CZdWHUZiIPsbDCOD4bwOfDrFKtXKNnaaoltpDI2gGWc7VsOIg7e3nZAKy+VyvLRhvubnturJawAkD2kPYsu1Q2rXvPcwao1IJN1vYrHmeId1PnlWu4lv5m3oM15yooOgEqCBxnEfNGr/VNWFBeDRgNM/d7Re+Z/7JYVl7H+LCsAxMDW7vo0sd68r5mdD8BEbi9MblzrbalpjZR1d7KydFBiL5VfFvZ0kxshyPl87ztbsZs=; 5:LOfBWicNVl+iOQYkkgoMZw1Tb5ODiB0v2iVEIoQwuzpV/oi0OWXK4QrI27x3qUIKUUPW7Xpbv+Hg9VDBdsm1/irmmwW5NMHjG/KOZwStb3PkIcEpqW1o5rdgQhxuQE2A029s3VBMRDNDbnYzishQ6NFX1H9M47bZ9v0tXPJpbwg=; 24:zqqF0ghVIYYJTzXEKRgQlkM+3mwkK4M/AstId7KnM0VoTNW48Lr6Ve/NMaJWxqzUg7QZfJPPvx5j6J6IFZ1wHzYEbTW+T1iwg6hI2gc+lHs=; 7:M1QjpV/r8UTPfOK+ivN5b6E2Ns5Lhrjf+LVKTLwfwCP3W57v1N/dpX6gBzGp7SqnP5ObGG7t9DohzKtp4hqsVJZX3wQbTnBTp9YmDfk+eib+9ll0JtCp2/lG8LynE/SIQbzHwjXuqMqoKq0JmQQ+FvkZSda0vnokGQc17PxnDff9/VCflGosC73MZTsABjhdfaIHpBsP5hsCxnhu055kq7Ub8RExjGEqJrl+IKuh6cFQHfkQ5Xsmx/xg7ISRB81A SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0156; 20:U8e2l7TLKmPAtnebKGLcxJYD/Ta1xHfKcOYWhRsHwPz36AfCFR5Qavw/jKCaB28ntPrikbdrs4OJuHGSYINk/7T2auzD3m3XdWJlJZx7tL6fJQ5TxEPVb0J0yWbZBlKN5rjmwY8KlBEaPiWgyYo8meSrDlCZWoZHz8ZeAtEn16yTLgcekni8fV2Q/xXnCcJLmxwGd+Pe2BnXGRg5jWMiNP2byBLdSMFvYld+7GiISv/NYl7SYGZMx0oMXehx1DWQ X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Mar 2018 15:46:13.7967 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: bf7bfea2-e232-40dd-d1a3-08d589c2b82e 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.28]); Wed, 14 Mar 2018 15:46:19 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Wed, 14 Mar 2018 15:46:19 +0000 (UTC) for IP:'104.47.37.50' DOMAIN:'mail-cys01nam02on0050.outbound.protection.outlook.com' HELO:'NAM02-CY1-obe.outbound.protection.outlook.com' FROM:'brijesh.singh@amd.com' RCPT:'' X-RedHat-Spam-Score: -0.031 (DKIM_SIGNED, DKIM_VALID, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_PASS) 104.47.37.50 mail-cys01nam02on0050.outbound.protection.outlook.com 104.47.37.50 mail-cys01nam02on0050.outbound.protection.outlook.com X-Scanned-By: MIMEDefang 2.78 on 10.5.110.28 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-loop: libvir-list@redhat.com Cc: Tom Lendacky , Peter Krempa , Xiaogang Chen , Jon Grimm , Brijesh Singh , Borislav Petkov Subject: [libvirt] [PATCH v3 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.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Thu, 15 Mar 2018 07:38:30 +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 | 66 ++++++++++++++++++++++++++++++++++++++++= ++++ 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, 111 insertions(+) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 8c872c1f08d3..2f38f0366dde 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -21254,6 +21254,71 @@ qemuDomainSetLifecycleAction(virDomainPtr dom, return ret; } =20 +static int qemuDomainGetSevMeasurement(virQEMUDriverPtr driver, + virDomainObjPtr vm, + virTypedParameterPtr *params, + int *nparams, + unsigned int flags) +{ + int ret =3D -1; + char *tmp; + int maxpar =3D 0; + + virCheckFlags(VIR_TYPED_PARAM_STRING_OKAY, -1); + + 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; + + if (virTypedParamsAddString(params, nparams, &maxpar, + VIR_DOMAIN_LAUNCH_SECURITY_SEV_MEASUREMENT, + 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; + + 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, flags= ) < 0) + goto cleanup; + } + + ret =3D 0; + + cleanup: + virDomainObjEndAPI(&vm); + return ret; +} =20 static virHypervisorDriver qemuHypervisorDriver =3D { .name =3D QEMU_DRIVER_NAME, @@ -21474,6 +21539,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 2820714b5c55..b0a4e0ea75ad 100644 --- a/src/qemu/qemu_monitor.c +++ b/src/qemu/qemu_monitor.c @@ -4417,3 +4417,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 aaa14f66fdfb..6a4f28796767 100644 --- a/src/qemu/qemu_monitor.h +++ b/src/qemu/qemu_monitor.h @@ -1188,4 +1188,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 c51b98d2bda7..805c2f3b81e3 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -7991,3 +7991,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