From nobody Fri May 17 06:07:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=none dis=none) header.from=nutanix.com Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1651683113473439.93702175317594; Wed, 4 May 2022 09:51:53 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-180-9InqD9-QPMe7hQKJ8LkcBg-1; Wed, 04 May 2022 12:51:44 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 6F01A3C01D96; Wed, 4 May 2022 16:51:41 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id ECD3915674FC; Wed, 4 May 2022 16:51:40 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id C0AD7194707B; Wed, 4 May 2022 16:51:38 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 0FFEF1947046 for ; Wed, 4 May 2022 16:51:38 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id DB97B416171; Wed, 4 May 2022 16:51:37 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast09.extmail.prod.ext.rdu2.redhat.com [10.11.55.25]) by smtp.corp.redhat.com (Postfix) with ESMTPS id D65CF40147D for ; Wed, 4 May 2022 16:51:37 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [205.139.110.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id B44E229AB416 for ; Wed, 4 May 2022 16:51:37 +0000 (UTC) Received: from mx0a-002c1b01.pphosted.com (mx0a-002c1b01.pphosted.com [148.163.151.68]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-534-idz2u838Pk2jipqRaG9PMQ-1; Wed, 04 May 2022 12:51:35 -0400 Received: from pps.filterd (m0127840.ppops.net [127.0.0.1]) by mx0a-002c1b01.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 244CtfDQ002768 for ; Wed, 4 May 2022 09:51:34 -0700 Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2175.outbound.protection.outlook.com [104.47.56.175]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 3fs1etrep8-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Wed, 04 May 2022 09:51:34 -0700 Received: from SJ0PR02MB8564.namprd02.prod.outlook.com (2603:10b6:a03:3f6::16) by BN6PR02MB2657.namprd02.prod.outlook.com (2603:10b6:404:fc::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5206.13; Wed, 4 May 2022 16:51:32 +0000 Received: from SJ0PR02MB8564.namprd02.prod.outlook.com ([fe80::8ac:200b:2dc3:5e99]) by SJ0PR02MB8564.namprd02.prod.outlook.com ([fe80::8ac:200b:2dc3:5e99%5]) with mapi id 15.20.5206.024; Wed, 4 May 2022 16:51:32 +0000 X-MC-Unique: 9InqD9-QPMe7hQKJ8LkcBg-1 X-Original-To: libvir-list@listman.corp.redhat.com X-MC-Unique: idz2u838Pk2jipqRaG9PMQ-1 From: Rohit Kumar To: libvir-list@redhat.com Subject: [PATCH v3 1/5] Make NVRAM a virStorageSource type. Date: Wed, 4 May 2022 09:51:11 -0700 Message-Id: <20220504165115.1225892-2-rohit.kumar3@nutanix.com> In-Reply-To: <20220504165115.1225892-1-rohit.kumar3@nutanix.com> References: <20220504165115.1225892-1-rohit.kumar3@nutanix.com> X-ClientProxiedBy: BYAPR06CA0043.namprd06.prod.outlook.com (2603:10b6:a03:14b::20) To SJ0PR02MB8564.namprd02.prod.outlook.com (2603:10b6:a03:3f6::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5c95a112-bb78-4826-18f8-08da2dee5748 X-MS-TrafficTypeDiagnostic: BN6PR02MB2657:EE_ X-Microsoft-Antispam-PRVS: x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0 X-Microsoft-Antispam-Message-Info: GTu/SzOBcuG3fkiBp4lFON1hnTa/QHw4s64VW6GJFvo8JqBA+zUrb7WbsMHf+yVEnm5NgbPjpQKC3aGKscH7OLdh09ubeWG/2UDyDJZPLIP2PTPpNCrQHuksmh6nMfMXCG8xTGzyWLra5xz5TwTtKoN/KQvU0lYeCCDteSz7G2Ow9cg2GZO8DkJeq7rn2vVrjzO8gJaEwEAutWE4i7w5KdRpzPj6Wazymwr2JbFf2TXqx6l6H8H1YlB+shzyYkdQO6wlLeFB+5Oe99D2tVY7WLXo9zRJlKWoTXziiZTzlaZ/QwuZDd4oWWH/MHA/W72lAgUsVIIFHC2tEEuX1jcK/I+Guhgi1mM7uYi+voglRqeROxpU3xiQi2CMPxAOrspMmHc1Pfl+CuA/KLZgNtiK5g1Yi+Aau/66dz4/dSfZ0wmtTHkgSQXVZ3sMYh24QS9kNa15xMUs+Z0/mFD5imYMms612Jtkimf3F0ABj3cLqAxw5pY4cQ+VFpTcqGmdTcCagqYhn/z6OQdliH1vNNGWSxYdyZ9sRHRHlITObpRLVX3b4/Et0rhEw5u/s3ZYf5yUsitiGAP4ZhkAy9h/+YXeEuMZIFQBA1W40BLaeDUlOEKhoqhoRnYqgJO5544PtorWpngYcq/1Aos7v2xboL+57GboaRAIWI42+1hz7fnMinCxkfFQblDxhbqXvBfsRN5eALZkIQXklDoEAGnJAeYZWQ== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR02MB8564.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(1076003)(6916009)(38100700002)(26005)(38350700002)(6486002)(2906002)(6506007)(6666004)(316002)(36756003)(186003)(86362001)(107886003)(6512007)(2616005)(83380400001)(508600001)(52116002)(5660300002)(8676002)(8936002)(66946007)(30864003)(4326008)(66476007)(66556008); DIR:OUT; SFP:1102 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?9wJzaGJOE3rbbNdMd+aPauBBo0hRZ0BZ4ytTxvbnl6v6FaMo5mb3tQgaPNiL?= =?us-ascii?Q?NwOrRA6welbqLdhTWlhKqV/x6kGFgmNwlYOWmhKM9MEv7v6tTefhFCsZAgmT?= =?us-ascii?Q?Dle2GjecrlsZF+TH9bmb465dOkDxF1X2yMDdGsDqYJ6F2MLR+hW3TLrugvAV?= =?us-ascii?Q?7G7qldluGof1gmVpS9gBDqdpinR2ZW98v+ec5STu7eXLQdEQQE+LcZLZlcWN?= =?us-ascii?Q?2fnv6NsLqYN73YAF/AIHhSoBvUKaMtAFCj+LeXD6Id8CZ0/yBjeXbJsxgRzK?= =?us-ascii?Q?U7B2pgOk8a2iwXpBRxRXhBevBRAdff738ZQ0nvI9JgHxa4cjVAz9GkTHG8Qw?= =?us-ascii?Q?pHj8NqKofhYbNuU7Y5sUM7gLzaqvWYWS/+z5sIXW/7UTTXgh3fWpDdR9Zfze?= =?us-ascii?Q?Wl1Z5Wy4W8tGSBWGtAgTdBnsElIVbEDmS2kQnTqlB4kEYVDKx7GP/B1ghHGl?= =?us-ascii?Q?jr+rGbkO1p/ooRcjzl/7Boj8D7t/IR+GPBdPnUcYqVjEKc/F0nKrUhUW/XIB?= =?us-ascii?Q?/cOjRv+Chioy+ajSVtU59LHfPYXyr9fIY0hdzqmLkTisj7DxetP1uCYXm0hn?= =?us-ascii?Q?UZ8dHS85ZWX07wpDLQg/2JgK5KqUwJptt9eRdT3yP3sgk7b36h1GG/wpS7I3?= =?us-ascii?Q?dx4kcoDVPlH3av4eHHce1Z2pJV+OhseeqB5UmigN9G77xPY4rkPfQ1JPQlb2?= =?us-ascii?Q?JfCzzm0aKf/NsrDUMXCiURPUR41iwiOTWxD/kvpKDQExPdWdXluNpZXWRpcH?= =?us-ascii?Q?h2WRXDyAGbAV+/Xz4sE/J6GFSyc1Im1mbpG8wtjqBspJFUkEKkPiiyt5fDRT?= =?us-ascii?Q?ikVoNSIDR+leLgj4tlFLTEf2n0YrMpLMp+i0TnkCHUut01orkQi4C1i/54BR?= =?us-ascii?Q?JQ3CnJklIOcS2WtrfsZhE0uzM4hTNaL1C7i9uqIJJt0A/wvZ7KTyFaCcrLID?= =?us-ascii?Q?hFilveG3G7QXGrPHubitEWetwnGUBEYNuqxBfEzWnOwUWC80gHvf5lISddHz?= =?us-ascii?Q?+L9NZi61IF7VMqV1wzMcJ6sf6GX+bzSE+EFh/X58SYfS9xYS5jFoMWg2Dwfh?= =?us-ascii?Q?hcAhtegNLcPXpP8xLh7hhaTcwy8OKwsNNSDAfsIF6zWtnZwfMiFHj+Ps/8BR?= =?us-ascii?Q?Bj54HgHxbDyCxcZhYcIUjF12yRpjHkTpRXBtxUcdHjJHqzW2Alp8nbilCw4E?= =?us-ascii?Q?jX0KFmI+GH+zsMU7GG7UDZ8yts+5qAR7ruJPElCNAndH+sbPoTcx9KAph7Oz?= =?us-ascii?Q?j6u6ZYl20RfLxV+12xd2QzLRIPwlj3cGlyhJwubHQis0VmcyRcTOXp6LNHIo?= =?us-ascii?Q?RG/1SP3MKwMVj9DtGisg3Q+EcVAQzDiJJgMHJu7TT7mA3kgvLiYPQ2RAKqfd?= =?us-ascii?Q?O+AtObslHYDoHILNuB4DmaXgsxYLS3CqLypknTArRqLBspbnEffvKLp4hZpa?= =?us-ascii?Q?9lOuZ0k769oBwtdKS7WqN3HDLTIjE+PmLwBN3yQxy08x4Q87+5jcoZ4A1Yod?= =?us-ascii?Q?PnfypgUzYP7ahm4SKR+08PGRGZjjQLWOwA6m/e0y0R26C6VQASl3Vq/a5rjg?= =?us-ascii?Q?NbrMROiwRPSYOr4cfl20wertij5Oj9N5gLHcgFtPlBi3qDjYQAbXUZcCEmeI?= =?us-ascii?Q?O5GLdMHv1/m7qdhhoYcsmpUtga3s8gaxEK8ZvQz4rvZrkcjry7II0hwocBQA?= =?us-ascii?Q?xiSXGcdK58sgDYiHZRzSq6FFt7X68FTAQ8wQPUyrMFh+Ky0NVJ566Lgy7bhg?= =?us-ascii?Q?LhfBa2VAe2kZKyaC2xt7Rbi1fq+FjLs=3D?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5c95a112-bb78-4826-18f8-08da2dee5748 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR02MB8564.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 May 2022 16:51:31.7874 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: cgoP7WASpt6XJwZoBmC+KaL5NaJ1XZHDqp3P0kHrWzRhmxSBwxUv1d/jyTh6qMj7DzJmemqCxeL2QBVqijB20KoA90aR2zMgrKUYF7au6zE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR02MB2657 X-Proofpoint-ORIG-GUID: bvMfdX7127nlgRsSHynyrF7XfNZO81nS X-Proofpoint-GUID: bvMfdX7127nlgRsSHynyrF7XfNZO81nS X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.858,Hydra:6.0.486,FMLib:17.11.64.514 definitions=2022-05-04_04,2022-05-04_02,2022-02-23_01 X-Proofpoint-Spam-Reason: safe X-Mimecast-Impersonation-Protect: Policy=CLT - Impersonation Protection Definition; Similar Internal Domain=false; Similar Monitored External Domain=false; Custom External Domain=false; Mimecast External Domain=false; Newly Observed Domain=false; Internal User Name=false; Custom Display Name List=false; Reply-to Address Mismatch=false; Targeted Threat Dictionary=false; Mimecast Threat Dictionary=false; Custom Threat Dictionary=false X-Scanned-By: MIMEDefang 2.85 on 10.11.54.10 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: prachatos.mitra@nutanix.com, Rohit Kumar , flosch@nutanix.com, prerna.saxena@nutanix.com Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.7 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZM-MESSAGEID: 1651683114575100009 Content-Type: text/plain; charset="utf-8" Currently, libvirt allows only local filepaths to specify a NVRAM disk. Making it virStorageSource type would allow to support remote NVRAM disk. Signed-off-by: Prerna Saxena Signed-off-by: Florian Schmidt Signed-off-by: Rohit Kumar Tested-by: Rohit Kumar --- src/conf/domain_conf.c | 13 ++++++++++--- src/conf/domain_conf.h | 2 +- src/qemu/qemu_cgroup.c | 3 ++- src/qemu/qemu_command.c | 2 +- src/qemu/qemu_domain.c | 14 ++++++++------ src/qemu/qemu_driver.c | 5 +++-- src/qemu/qemu_firmware.c | 17 ++++++++++++----- src/qemu/qemu_namespace.c | 5 +++-- src/qemu/qemu_process.c | 5 +++-- src/security/security_dac.c | 6 ++++-- src/security/security_selinux.c | 6 ++++-- src/security/virt-aa-helper.c | 5 +++-- src/vbox/vbox_common.c | 3 ++- 13 files changed, 56 insertions(+), 30 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index bd2884088c..bdd36e777c 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -3540,7 +3540,7 @@ virDomainLoaderDefFree(virDomainLoaderDef *loader) return; =20 g_free(loader->path); - g_free(loader->nvram); + virObjectUnref(loader->nvram); g_free(loader->nvramTemplate); g_free(loader); } @@ -18226,7 +18226,11 @@ virDomainDefParseBootLoaderOptions(virDomainDef *d= ef, fwAutoSelect) < 0) return -1; =20 - def->os.loader->nvram =3D virXPathString("string(./os/nvram[1])", ctxt= ); + if (virXPathNode("./os/nvram[1]", ctxt)) { + def->os.loader->nvram =3D virStorageSourceNew(); + def->os.loader->nvram->path =3D virXPathString("string(./os/nvram[= 1])", ctxt); + def->os.loader->nvram->type =3D VIR_STORAGE_TYPE_FILE; + } if (!fwAutoSelect) def->os.loader->nvramTemplate =3D virXPathString("string(./os/nvra= m[1]/@template)", ctxt); =20 @@ -26931,7 +26935,10 @@ virDomainLoaderDefFormat(virBuffer *buf, virXMLFormatElementInternal(buf, "loader", &loaderAttrBuf, &loaderChil= dBuf, false, false); =20 virBufferEscapeString(&nvramAttrBuf, " template=3D'%s'", loader->nvram= Template); - virBufferEscapeString(&nvramChildBuf, "%s", loader->nvram); + if (loader->nvram) { + if (loader->nvram->type =3D=3D VIR_STORAGE_TYPE_FILE) + virBufferEscapeString(&nvramChildBuf, "%s", loader->nvram->pat= h); + } virXMLFormatElementInternal(buf, "nvram", &nvramAttrBuf, &nvramChildBu= f, false, false); } =20 diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 88a411d00c..3a3164db9c 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -2235,7 +2235,7 @@ struct _virDomainLoaderDef { virTristateBool readonly; virDomainLoader type; virTristateBool secure; - char *nvram; /* path to non-volatile RAM */ + virStorageSource *nvram; char *nvramTemplate; /* user override of path to master nvram */ }; =20 diff --git a/src/qemu/qemu_cgroup.c b/src/qemu/qemu_cgroup.c index aa0c927578..64baed14e6 100644 --- a/src/qemu/qemu_cgroup.c +++ b/src/qemu/qemu_cgroup.c @@ -581,7 +581,8 @@ qemuSetupFirmwareCgroup(virDomainObj *vm) return -1; =20 if (vm->def->os.loader->nvram && - qemuSetupImagePathCgroup(vm, vm->def->os.loader->nvram, false) < 0) + virStorageSourceIsLocalStorage(vm->def->os.loader->nvram) && + qemuSetupImagePathCgroup(vm, vm->def->os.loader->nvram->path, fals= e) < 0) return -1; =20 return 0; diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 3746f02ff0..419b8243d6 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -9642,7 +9642,7 @@ qemuBuildDomainLoaderPflashCommandLine(virCommand *cm= d, =20 if (loader->nvram) { virBufferAddLit(&buf, "file=3D"); - virQEMUBuildBufferEscapeComma(&buf, loader->nvram); + virQEMUBuildBufferEscapeComma(&buf, loader->nvram->path); virBufferAsprintf(&buf, ",if=3Dpflash,format=3Draw,unit=3D%d", uni= t); =20 virCommandAddArg(cmd, "-drive"); diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 7974cdb00b..9dccbbfb1a 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -4639,8 +4639,12 @@ qemuDomainDefPostParse(virDomainDef *def, } =20 if (virDomainDefHasOldStyleROUEFI(def) && - !def->os.loader->nvram) - qemuDomainNVRAMPathFormat(cfg, def, &def->os.loader->nvram); + (!def->os.loader->nvram || !def->os.loader->nvram->path)) { + if (!def->os.loader->nvram) + def->os.loader->nvram =3D virStorageSourceNew(); + def->os.loader->nvram->type =3D VIR_STORAGE_TYPE_FILE; + qemuDomainNVRAMPathFormat(cfg, def, &def->os.loader->nvram->path); + } =20 if (qemuDomainDefAddDefaultDevices(driver, def, qemuCaps) < 0) return -1; @@ -11274,11 +11278,9 @@ qemuDomainInitializePflashStorageSource(virDomainO= bj *vm) =20 =20 if (def->os.loader->nvram) { - pflash1 =3D virStorageSourceNew(); - pflash1->type =3D VIR_STORAGE_TYPE_FILE; + if (!(pflash1 =3D virStorageSourceCopy(def->os.loader->nvram, fals= e))) + return -1; pflash1->format =3D VIR_STORAGE_FILE_RAW; - pflash1->path =3D g_strdup(def->os.loader->nvram); - pflash1->readonly =3D false; pflash1->nodeformat =3D g_strdup("libvirt-pflash1-format"); pflash1->nodestorage =3D g_strdup("libvirt-pflash1-storage"); } diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index ee0963c30d..da6824dde1 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -6615,8 +6615,9 @@ qemuDomainUndefineFlags(virDomainPtr dom, } } =20 - if (vm->def->os.loader && vm->def->os.loader->nvram) { - nvram_path =3D g_strdup(vm->def->os.loader->nvram); + if (vm->def->os.loader && vm->def->os.loader->nvram && + virStorageSourceIsLocalStorage(vm->def->os.loader->nvram)) { + nvram_path =3D g_strdup(vm->def->os.loader->nvram->path); } else if (vm->def->os.firmware =3D=3D VIR_DOMAIN_OS_DEF_FIRMWARE_EFI)= { qemuDomainNVRAMPathFormat(cfg, vm->def, &nvram_path); } diff --git a/src/qemu/qemu_firmware.c b/src/qemu/qemu_firmware.c index 51223faadf..ab5151dc9f 100644 --- a/src/qemu/qemu_firmware.c +++ b/src/qemu/qemu_firmware.c @@ -1192,13 +1192,16 @@ qemuFirmwareEnableFeatures(virQEMUDriver *driver, VIR_FREE(def->os.loader->nvramTemplate); def->os.loader->nvramTemplate =3D g_strdup(flash->nvram_template.f= ilename); =20 - if (!def->os.loader->nvram) - qemuDomainNVRAMPathFormat(cfg, def, &def->os.loader->nvram); + if (!def->os.loader->nvram) { + def->os.loader->nvram =3D virStorageSourceNew(); + def->os.loader->nvram->type =3D VIR_STORAGE_TYPE_FILE; + qemuDomainNVRAMPathFormat(cfg, def, &def->os.loader->nvram->pa= th); + } =20 VIR_DEBUG("decided on firmware '%s' template '%s' NVRAM '%s'", def->os.loader->path, def->os.loader->nvramTemplate, - def->os.loader->nvram); + def->os.loader->nvram->path); break; =20 case QEMU_FIRMWARE_DEVICE_KERNEL: @@ -1364,8 +1367,12 @@ qemuFirmwareFillDomain(virQEMUDriver *driver, * its path in domain XML) but no template for NVRAM was * specified and the varstore doesn't exist ... */ if (!virDomainDefHasOldStyleROUEFI(def) || - def->os.loader->nvramTemplate || - (!reset_nvram && virFileExists(def->os.loader->nvram))) + def->os.loader->nvramTemplate) + return 0; + + if (!reset_nvram && def->os.loader->nvram && + virStorageSourceIsLocalStorage(def->os.loader->nvram) && + virFileExists(def->os.loader->nvram->path)) return 0; =20 /* ... then we want to consult JSON FW descriptors first, diff --git a/src/qemu/qemu_namespace.c b/src/qemu/qemu_namespace.c index 23681b14a4..9e133587b7 100644 --- a/src/qemu/qemu_namespace.c +++ b/src/qemu/qemu_namespace.c @@ -572,8 +572,9 @@ qemuDomainSetupLoader(virDomainObj *vm, case VIR_DOMAIN_LOADER_TYPE_PFLASH: *paths =3D g_slist_prepend(*paths, g_strdup(loader->path)); =20 - if (loader->nvram) - *paths =3D g_slist_prepend(*paths, g_strdup(loader->nvram)= ); + if (loader->nvram && + virStorageSourceIsLocalStorage(loader->nvram)) + *paths =3D g_slist_prepend(*paths, g_strdup(loader->nvram-= >path)); break; =20 case VIR_DOMAIN_LOADER_TYPE_NONE: diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index b0b00eb0a2..fee3d9ba73 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -4471,7 +4471,8 @@ qemuPrepareNVRAM(virQEMUDriver *driver, struct qemuPrepareNVRAMHelperData data; =20 if (!loader || !loader->nvram || - (virFileExists(loader->nvram) && !reset_nvram)) + !virStorageSourceIsLocalStorage(loader->nvram) || + (virFileExists(loader->nvram->path) && !reset_nvram)) return 0; =20 master_nvram_path =3D loader->nvramTemplate; @@ -4503,7 +4504,7 @@ qemuPrepareNVRAM(virQEMUDriver *driver, data.srcFD =3D srcFD; data.srcPath =3D master_nvram_path; =20 - if (virFileRewrite(loader->nvram, + if (virFileRewrite(loader->nvram->path, S_IRUSR | S_IWUSR, cfg->user, cfg->group, qemuPrepareNVRAMHelper, diff --git a/src/security/security_dac.c b/src/security/security_dac.c index e9e316551e..9bef2468c3 100644 --- a/src/security/security_dac.c +++ b/src/security/security_dac.c @@ -1971,7 +1971,8 @@ virSecurityDACRestoreAllLabel(virSecurityManager *mgr, } =20 if (def->os.loader && def->os.loader->nvram && - virSecurityDACRestoreFileLabel(mgr, def->os.loader->nvram) < 0) + virStorageSourceIsLocalStorage(def->os.loader->nvram) && + virSecurityDACRestoreFileLabel(mgr, def->os.loader->nvram->path) <= 0) rc =3D -1; =20 if (def->os.kernel && @@ -2182,8 +2183,9 @@ virSecurityDACSetAllLabel(virSecurityManager *mgr, } =20 if (def->os.loader && def->os.loader->nvram && + virStorageSourceIsLocalStorage(def->os.loader->nvram) && virSecurityDACSetOwnership(mgr, NULL, - def->os.loader->nvram, + def->os.loader->nvram->path, user, group, true) < 0) return -1; =20 diff --git a/src/security/security_selinux.c b/src/security/security_selinu= x.c index 6f02baf2ce..e026212b13 100644 --- a/src/security/security_selinux.c +++ b/src/security/security_selinux.c @@ -2806,7 +2806,8 @@ virSecuritySELinuxRestoreAllLabel(virSecurityManager = *mgr, } =20 if (def->os.loader && def->os.loader->nvram && - virSecuritySELinuxRestoreFileLabel(mgr, def->os.loader->nvram, tru= e) < 0) + virStorageSourceIsLocalStorage(def->os.loader->nvram) && + virSecuritySELinuxRestoreFileLabel(mgr, def->os.loader->nvram->pat= h, true) < 0) rc =3D -1; =20 if (def->os.kernel && @@ -3212,8 +3213,9 @@ virSecuritySELinuxSetAllLabel(virSecurityManager *mgr, /* This is different than kernel or initrd. The nvram store * is really a disk, qemu can read and write to it. */ if (def->os.loader && def->os.loader->nvram && + virStorageSourceIsLocalStorage(def->os.loader->nvram) && secdef && secdef->imagelabel && - virSecuritySELinuxSetFilecon(mgr, def->os.loader->nvram, + virSecuritySELinuxSetFilecon(mgr, def->os.loader->nvram->path, secdef->imagelabel, true) < 0) return -1; =20 diff --git a/src/security/virt-aa-helper.c b/src/security/virt-aa-helper.c index 1f1cce8b3d..d2ed9417b6 100644 --- a/src/security/virt-aa-helper.c +++ b/src/security/virt-aa-helper.c @@ -1006,8 +1006,9 @@ get_files(vahControl * ctl) if (vah_add_file(&buf, ctl->def->os.loader->path, "rk") !=3D 0) goto cleanup; =20 - if (ctl->def->os.loader && ctl->def->os.loader->nvram) - if (vah_add_file(&buf, ctl->def->os.loader->nvram, "rwk") !=3D 0) + if (ctl->def->os.loader && ctl->def->os.loader->nvram && + virStorageSourceIsLocalStorage(ctl->def->os.loader->nvram)) + if (vah_add_file(&buf, ctl->def->os.loader->nvram->path, "rwk") != =3D 0) goto cleanup; =20 for (i =3D 0; i < ctl->def->ngraphics; i++) { diff --git a/src/vbox/vbox_common.c b/src/vbox/vbox_common.c index 34e555644c..e249980195 100644 --- a/src/vbox/vbox_common.c +++ b/src/vbox/vbox_common.c @@ -992,7 +992,8 @@ vboxSetBootDeviceOrder(virDomainDef *def, struct _vboxD= river *data, VIR_DEBUG("def->os.loader->path %s", def->os.loader->path); VIR_DEBUG("def->os.loader->readonly %d", def->os.loader->readonly); VIR_DEBUG("def->os.loader->type %d", def->os.loader->type); - VIR_DEBUG("def->os.loader->nvram %s", def->os.loader->nvram); + if (def->os.loader->nvram) + VIR_DEBUG("def->os.loader->nvram->path %s", def->os.loader->nv= ram->path); } VIR_DEBUG("def->os.bootloader %s", def->os.bootloader); VIR_DEBUG("def->os.bootloaderArgs %s", def->os.bootloaderArgs); --=20 2.25.1 From nobody Fri May 17 06:07:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=none dis=none) header.from=nutanix.com Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1651683111085962.6725901780441; Wed, 4 May 2022 09:51:51 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-670-bRjwoieUN3Ks7vqJHs1ZyA-1; Wed, 04 May 2022 12:51:46 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 8560738149AA; Wed, 4 May 2022 16:51:43 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 6CE6E40D2822; Wed, 4 May 2022 16:51:43 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id F1B62194707A; Wed, 4 May 2022 16:51:42 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 847F21947046 for ; Wed, 4 May 2022 16:51:42 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 55AFA9E82; Wed, 4 May 2022 16:51:42 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast09.extmail.prod.ext.rdu2.redhat.com [10.11.55.25]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 4F4689E8F for ; Wed, 4 May 2022 16:51:39 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [207.211.31.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id F401F29AB419 for ; Wed, 4 May 2022 16:51:38 +0000 (UTC) Received: from mx0a-002c1b01.pphosted.com (mx0a-002c1b01.pphosted.com [148.163.151.68]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-341-3rvPlridN_mOOWgjERylLg-1; Wed, 04 May 2022 12:51:37 -0400 Received: from pps.filterd (m0127840.ppops.net [127.0.0.1]) by mx0a-002c1b01.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 244CtfDR002768 for ; Wed, 4 May 2022 09:51:35 -0700 Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2175.outbound.protection.outlook.com [104.47.56.175]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 3fs1etrep8-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Wed, 04 May 2022 09:51:35 -0700 Received: from SJ0PR02MB8564.namprd02.prod.outlook.com (2603:10b6:a03:3f6::16) by BN6PR02MB2657.namprd02.prod.outlook.com (2603:10b6:404:fc::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5206.13; Wed, 4 May 2022 16:51:32 +0000 Received: from SJ0PR02MB8564.namprd02.prod.outlook.com ([fe80::8ac:200b:2dc3:5e99]) by SJ0PR02MB8564.namprd02.prod.outlook.com ([fe80::8ac:200b:2dc3:5e99%5]) with mapi id 15.20.5206.024; Wed, 4 May 2022 16:51:32 +0000 X-MC-Unique: bRjwoieUN3Ks7vqJHs1ZyA-1 X-Original-To: libvir-list@listman.corp.redhat.com X-MC-Unique: 3rvPlridN_mOOWgjERylLg-1 From: Rohit Kumar To: libvir-list@redhat.com Subject: [PATCH v3 2/5] Add support to parse/format/validate virStorageSource type NVRAM Date: Wed, 4 May 2022 09:51:12 -0700 Message-Id: <20220504165115.1225892-3-rohit.kumar3@nutanix.com> In-Reply-To: <20220504165115.1225892-1-rohit.kumar3@nutanix.com> References: <20220504165115.1225892-1-rohit.kumar3@nutanix.com> X-ClientProxiedBy: BYAPR06CA0043.namprd06.prod.outlook.com (2603:10b6:a03:14b::20) To SJ0PR02MB8564.namprd02.prod.outlook.com (2603:10b6:a03:3f6::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 1f08d323-d1f2-4dc5-6a42-08da2dee578d X-MS-TrafficTypeDiagnostic: BN6PR02MB2657:EE_ X-Microsoft-Antispam-PRVS: x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0 X-Microsoft-Antispam-Message-Info: WLfcOGjkUbiojce+0sPRrgZuSSb+UDjE03po6VqzgBEzWHDi53zaknen2swhXdWjs2Ow9GI0q366OWIiVjBE6yUInaAVAM9B7is5bUjTmSH58+Pg4FPB3PFQ+HpuXjkrEDCOjksHnal5xkg9DIr+3OYaumfmCNMZfWML/fee5+cd/3/B+I2DDTX5XXANRVNZ5BMmD41JTiEE9s4y4ESy4resdaeWTk2Ww9uQ76V/I57um7eXl4kzB2FeRUVdkdYTg352djvaom86N/1xfews/3KuOCRqNNtu5G5jktmWj2RBnAcJQUD/dMQ8Knf9iYbbOv1XxfDCBSrJmwqEfhGiJLQ/oCntZhbwy/5rG3jHQ9rkPKNd0fa5pWA7OS9UewZIMFDZJSRCp4Mqkv9bKy+J55c7n0Un7997iHxU8o/crsbozyZKH3y0OCc+W2ErumSvv85LYbowgNxCuAjMK+6RFF6eQGM5gML0Hgf0wv9NBLvg3j6H6QLCr0HA3vTTHzqSSZv3YxVw2ozYtdjKPXUtj4EyUEkcFf/CQ57msO8ysy3cAVndtQ9j8Nmpvwgmmc8InVvje7ry4eg6TLjGFdqGTFJ/sUoBTkqGXB4Zfd5eouQWbyw6+b0Txw5GZna9tQtM/c04tmXRbkyizK6wC8r9cZJBIWH71gD1dyHjdgn+SqcK/zGbBgUfwZ29KywxtMlVMUbqW3Ta6gGfmf/3qzA2BQ== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR02MB8564.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(1076003)(6916009)(38100700002)(26005)(38350700002)(6486002)(2906002)(6506007)(6666004)(316002)(36756003)(186003)(86362001)(107886003)(6512007)(2616005)(83380400001)(508600001)(52116002)(5660300002)(8676002)(8936002)(66946007)(30864003)(4326008)(66476007)(15650500001)(66556008); DIR:OUT; SFP:1102 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?d7CxoFXd+j2By//h15OPFDfI/qegmyjZHpVy21OliwYIcDPnsnb575GTT71w?= =?us-ascii?Q?3azPp98rJHUd+UWog901A38PxAR4cxK7acVqj4o5CufL9o5MIcOHnuQqRWD0?= =?us-ascii?Q?W0UH1miVUWlTaCfwSur685mS1TPlU9g6ojYKvLTTZhuBQ5OCZvT2CFkzWwK7?= =?us-ascii?Q?8DeH4Kp1r5jC0QN9ghC8ZxlerLbbvg8f2aofuvT1qaMHI7tU6whukvwDV50p?= =?us-ascii?Q?PJbaNkSC98TdPjZrBsVWuTb2V5puXZa6IuhP0Z/JTAv8KKM5nSfzvenEmxfl?= =?us-ascii?Q?ZL5BQNQ3SAGh5mrv1Q6yuK8jF4OGixYFu6FoM9pyMStY60dnMe1rESHo0i+W?= =?us-ascii?Q?JRc/L5VHCYw++mi2Vvr/Kj9WxF/70hBhHBNaAA85FaCm452hWYlwdMmEYi8y?= =?us-ascii?Q?NPN07VSFTUhRCxScTJAMR/IcvxNORStIBkncKtqHa4JmhO0/LT1Z/S/EDRF9?= =?us-ascii?Q?MJFTQ9AkQUBcNVjw0F0J19DdSH/tEl9yB34abvt/vsE/5zpFRBFWLXEQyraD?= =?us-ascii?Q?ZTRdljB7G+PJAzYRhn47mrvhjo/nxfcwJSU2Ec9lhtw5tcFDJtIxPyXs3tcn?= =?us-ascii?Q?Cvr8Mi7G7zitjpioG0X81DMLhFlgNzzTbsERRbGc0fVs6VUPhmI0KfWYzIxc?= =?us-ascii?Q?lhnk4PzqjYtJVq3ntobP4U0E9PPLb80UQutrgzOijNUZt++1cBYArk0qN8ES?= =?us-ascii?Q?nRYa3C/lHOdAQeeu+rwVBjFVE0iAUVcpwbvKnHv50VPf+lREz0sShn3sYTLH?= =?us-ascii?Q?3jSsODFUu67al6M0pY/+hmwAqm5RdpFQW2BjNLhRcEfdyhdLH4D4TcUM1bCx?= =?us-ascii?Q?kPsGlPGz8QBNhWWD2c80Js29YG5KLXgZ81c0qohWkeDg9Ui3ZCgy/zCLGfm8?= =?us-ascii?Q?GvQ0j9V01DMQ1YrqUnebVmF+AG+WvVsJnflgfnrPeprEYG/IqrGdkwxGLDh5?= =?us-ascii?Q?YAEF8yUxqqfvpSf/kNGny4ilDq7RmPnUAPp9zxaDIUqQQGvAr2eSgnDdxBaU?= =?us-ascii?Q?+9W/8EIHeNOtSn4yF8LDy8GkCi5jlLJ3NBlnbaIF4AshUf8mMUdVZw2PIQOr?= =?us-ascii?Q?AkEuMgaytbub73PmkNugwftxWJEHFwvf3D2pClm3SgLW5h0UcIOemwzzty12?= =?us-ascii?Q?80/Ajp/LbrTHCU0xJ8S2KiAkKEcJaqYkYZmYN4hAUZdO6vl9yG9hFheNUZKK?= =?us-ascii?Q?bDddruBzVgJrhkCJKGXwjVFCwlfLEY6xQVfsEyR5boNov4vEIuzWU1ymtkNd?= =?us-ascii?Q?d1EpBYNdMuPkvilXH7hfxG4wslBkLDCpBaWiTVW/zjxZlrc8RoX6itzB4dMX?= =?us-ascii?Q?pSKe8TfpcPXKMYd+u8+N0FdsbA4eoQYGHhl5ZhUORc1nAggAH3KdziUXz4qZ?= =?us-ascii?Q?vOpaioJXFXYecYkRqrU+aMvFhtlhR5QiYuSH1JBYD+n5DCO2572lj2R1RAL0?= =?us-ascii?Q?k5xqT1HU/8Hcl9gJILjkQdQ+7Z/F2hp2T7CAPA+ecX618Z/Sf7xgSNlnz8tO?= =?us-ascii?Q?eWoT93Du+uSJEb6kRu902dIrPQzTZewngRDqo5t6ZhTcs6Rvtd4GHCI5eDZq?= =?us-ascii?Q?TovqEfBbhNYRIgEvs20EMWdtyGA2EBFP3Hs3SSFlKc/+Z5J8FBIGEgyWC9Gd?= =?us-ascii?Q?U9LqqwAUNRqjZAIK1of1T5vpyaNBenqeigejsS4NSmB6ufKa88dvIVbh7zRU?= =?us-ascii?Q?B/CPzpgQudyK7kc7zls3KDeNZXkCWjGebWpgAd65APCLBRko2MFDN3HH6DQw?= =?us-ascii?Q?8RryOiRkZU+hY9enlD7f4ZRWxek/cIk=3D?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1f08d323-d1f2-4dc5-6a42-08da2dee578d X-MS-Exchange-CrossTenant-AuthSource: SJ0PR02MB8564.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 May 2022 16:51:32.2416 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 429VCQTKEMhUWyuTRWaCqJf660jEYjgx4xD8DfycdpiKHWE/yiDNnXRBZB8Xg5Rn/icTm2SLBw/TdpiMD7JCOudg5g2wK4wAcwosgMuTzp0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR02MB2657 X-Proofpoint-ORIG-GUID: LXkcSlYZGHrJw0ymSSM_Ht6dzGXPKg-6 X-Proofpoint-GUID: LXkcSlYZGHrJw0ymSSM_Ht6dzGXPKg-6 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.858,Hydra:6.0.486,FMLib:17.11.64.514 definitions=2022-05-04_04,2022-05-04_02,2022-02-23_01 X-Proofpoint-Spam-Reason: safe X-Mimecast-Impersonation-Protect: Policy=CLT - Impersonation Protection Definition; Similar Internal Domain=false; Similar Monitored External Domain=false; Custom External Domain=false; Mimecast External Domain=false; Newly Observed Domain=false; Internal User Name=false; Custom Display Name List=false; Reply-to Address Mismatch=false; Targeted Threat Dictionary=false; Mimecast Threat Dictionary=false; Custom Threat Dictionary=false X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: prachatos.mitra@nutanix.com, Rohit Kumar , flosch@nutanix.com, prerna.saxena@nutanix.com Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.84 on 10.11.54.2 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZM-MESSAGEID: 1651683112503100007 Content-Type: text/plain; charset="utf-8" This patch introduces the logic to format and parse remote NVRAM. This also adds 'type' attribute to nvram element and validates 'file' type NVRAM for unsupported configurations. Sample XML with new annotation: or Signed-off-by: Prerna Saxena Signed-off-by: Florian Schmidt Signed-off-by: Rohit Kumar Tested-by: Rohit Kumar --- src/conf/domain_conf.c | 110 +++++++++++++++++++++++++++++++++------ src/conf/domain_conf.h | 1 + src/qemu/qemu_domain.c | 9 ++++ src/qemu/qemu_firmware.c | 6 +++ src/qemu/qemu_validate.c | 61 ++++++++++++++++++++++ 5 files changed, 172 insertions(+), 15 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index bdd36e777c..0429ff659e 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -17826,6 +17826,64 @@ virDomainLoaderDefParseXML(xmlNodePtr node, } =20 =20 +static int +virDomainNvramDefParseXML(virDomainLoaderDef *loader, + xmlXPathContextPtr ctxt, + virDomainXMLOption *opt, + unsigned int flags) +{ + g_autofree char *nvramType =3D NULL; + + nvramType =3D virXPathString("string(./os/nvram/@type)", ctxt); + + /* if nvramType=3D=3DNULL read old-style, else + * if there's a type, read new style */ + if (!nvramType) { + loader->newStyleNVRAM =3D false; + loader->nvram->type =3D VIR_STORAGE_TYPE_FILE; + loader->nvram->path =3D virXPathString("string(./os/nvram[1])", ct= xt); + return 0; + } else { + xmlNodePtr source; + g_autofree char *srcProtocol =3D NULL; + g_autofree char *srcFile =3D NULL; + + loader->newStyleNVRAM =3D true; + if ((loader->nvram->type =3D virStorageTypeFromString(nvramType)) = <=3D 0) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("unknown disk type '%s'"), nvramType); + return -1; + } + + srcProtocol =3D virXPathString("string(./os/nvram/source/@protocol= )", ctxt); + if (srcProtocol && (loader->nvram->type !=3D VIR_STORAGE_TYPE_NETW= ORK)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Source 'protocol' field is not supported wit= h nvram type '%s'"), + nvramType); + return -1; + } + + srcFile =3D virXPathString("string(./os/nvram/source/@file)", ctxt= ); + if (!srcFile && (loader->nvram->type =3D=3D VIR_STORAGE_TYPE_FILE)= ) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Source 'file' attribute is missing with nvra= m type '%s'"), + nvramType); + return -1; + } + + source =3D virXPathNode("./os/nvram/source[1]", ctxt); + if (!source) { + virReportError(VIR_ERR_XML_ERROR, + _("Missing source element with nvram type '%s'"= ), + nvramType); + return -1; + } + return virDomainStorageSourceParse(source, ctxt, loader->nvram, fl= ags, opt); + } + return 0; +} + + static int virDomainSchedulerParseCommonAttrs(xmlNodePtr node, virProcessSchedPolicy *policy, @@ -18211,7 +18269,9 @@ virDomainDefParseBootFirmwareOptions(virDomainDef *= def, =20 static int virDomainDefParseBootLoaderOptions(virDomainDef *def, - xmlXPathContextPtr ctxt) + xmlXPathContextPtr ctxt, + virDomainXMLOption *xmlopt, + unsigned int flags) { xmlNodePtr loader_node =3D virXPathNode("./os/loader[1]", ctxt); const bool fwAutoSelect =3D def->os.firmware !=3D VIR_DOMAIN_OS_DEF_FI= RMWARE_NONE; @@ -18228,8 +18288,10 @@ virDomainDefParseBootLoaderOptions(virDomainDef *d= ef, =20 if (virXPathNode("./os/nvram[1]", ctxt)) { def->os.loader->nvram =3D virStorageSourceNew(); - def->os.loader->nvram->path =3D virXPathString("string(./os/nvram[= 1])", ctxt); - def->os.loader->nvram->type =3D VIR_STORAGE_TYPE_FILE; + + if (virDomainNvramDefParseXML(def->os.loader, + ctxt, xmlopt, flags) < 0) + return -1; } if (!fwAutoSelect) def->os.loader->nvramTemplate =3D virXPathString("string(./os/nvra= m[1]/@template)", ctxt); @@ -18284,7 +18346,9 @@ virDomainDefParseBootAcpiOptions(virDomainDef *def, =20 static int virDomainDefParseBootOptions(virDomainDef *def, - xmlXPathContextPtr ctxt) + xmlXPathContextPtr ctxt, + virDomainXMLOption *xmlopt, + unsigned int flags) { /* * Booting options for different OS types.... @@ -18302,7 +18366,7 @@ virDomainDefParseBootOptions(virDomainDef *def, if (virDomainDefParseBootFirmwareOptions(def, ctxt) < 0) return -1; =20 - if (virDomainDefParseBootLoaderOptions(def, ctxt) < 0) + if (virDomainDefParseBootLoaderOptions(def, ctxt, xmlopt, flags) <= 0) return -1; =20 if (virDomainDefParseBootAcpiOptions(def, ctxt) < 0) @@ -18318,7 +18382,7 @@ virDomainDefParseBootOptions(virDomainDef *def, case VIR_DOMAIN_OSTYPE_UML: virDomainDefParseBootKernelOptions(def, ctxt); =20 - if (virDomainDefParseBootLoaderOptions(def, ctxt) < 0) + if (virDomainDefParseBootLoaderOptions(def, ctxt, xmlopt, flags) <= 0) return -1; =20 break; @@ -19609,7 +19673,7 @@ virDomainDefParseXML(xmlXPathContextPtr ctxt, if (virDomainDefClockParse(def, ctxt) < 0) return NULL; =20 - if (virDomainDefParseBootOptions(def, ctxt) < 0) + if (virDomainDefParseBootOptions(def, ctxt, xmlopt, flags) < 0) return NULL; =20 /* analysis of the disk devices */ @@ -26909,14 +26973,16 @@ virDomainHugepagesFormat(virBuffer *buf, virBufferAddLit(buf, "\n"); } =20 -static void +static int virDomainLoaderDefFormat(virBuffer *buf, - virDomainLoaderDef *loader) + virDomainLoaderDef *loader, + virDomainXMLOption *xmlopt, + unsigned int flags) { g_auto(virBuffer) loaderAttrBuf =3D VIR_BUFFER_INITIALIZER; g_auto(virBuffer) loaderChildBuf =3D VIR_BUFFER_INITIALIZER; g_auto(virBuffer) nvramAttrBuf =3D VIR_BUFFER_INITIALIZER; - g_auto(virBuffer) nvramChildBuf =3D VIR_BUFFER_INITIALIZER; + g_auto(virBuffer) nvramChildBuf =3D VIR_BUFFER_INIT_CHILD(buf); =20 if (loader->readonly !=3D VIR_TRISTATE_BOOL_ABSENT) virBufferAsprintf(&loaderAttrBuf, " readonly=3D'%s'", @@ -26935,11 +27001,24 @@ virDomainLoaderDefFormat(virBuffer *buf, virXMLFormatElementInternal(buf, "loader", &loaderAttrBuf, &loaderChil= dBuf, false, false); =20 virBufferEscapeString(&nvramAttrBuf, " template=3D'%s'", loader->nvram= Template); - if (loader->nvram) { - if (loader->nvram->type =3D=3D VIR_STORAGE_TYPE_FILE) + if (loader->nvram || loader->nvramTemplate) { + bool childNewline; + if (!loader->newStyleNVRAM) { + virBufferSetIndent(&nvramChildBuf, 0); virBufferEscapeString(&nvramChildBuf, "%s", loader->nvram->pat= h); + childNewline =3D false; + } else { + virBufferAsprintf(&nvramAttrBuf, " type=3D'%s'", virStorageTyp= eToString(loader->nvram->type)); + if (virDomainDiskSourceFormat(&nvramChildBuf, loader->nvram, "= source", 0, + false, flags, false, false, xmlo= pt) < 0) { + return -1; + } + childNewline =3D true; + } + virXMLFormatElementInternal(buf, "nvram", &nvramAttrBuf, &nvramChi= ldBuf, false, childNewline); } - virXMLFormatElementInternal(buf, "nvram", &nvramAttrBuf, &nvramChildBu= f, false, false); + + return 0; } =20 static void @@ -28140,8 +28219,9 @@ virDomainDefFormatInternalSetRootName(virDomainDef = *def, if (def->os.initgroup) virBufferAsprintf(buf, "%s\n", def->os.init= group); =20 - if (def->os.loader) - virDomainLoaderDefFormat(buf, def->os.loader); + if (def->os.loader && + virDomainLoaderDefFormat(buf, def->os.loader, xmlopt, flags) < 0) + return -1; virBufferEscapeString(buf, "%s\n", def->os.kernel); virBufferEscapeString(buf, "%s\n", diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 3a3164db9c..6523abaa0c 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -2236,6 +2236,7 @@ struct _virDomainLoaderDef { virDomainLoader type; virTristateBool secure; virStorageSource *nvram; + bool newStyleNVRAM; char *nvramTemplate; /* user override of path to master nvram */ }; =20 diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 9dccbbfb1a..afe94eb018 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -11283,6 +11283,15 @@ qemuDomainInitializePflashStorageSource(virDomainO= bj *vm) pflash1->format =3D VIR_STORAGE_FILE_RAW; pflash1->nodeformat =3D g_strdup("libvirt-pflash1-format"); pflash1->nodestorage =3D g_strdup("libvirt-pflash1-storage"); + + if (!pflash1->privateData && + !(pflash1->privateData =3D qemuDomainStorageSourcePrivateNew()= )) + return -1; + + if (qemuDomainSecretStorageSourcePrepare(priv, pflash1, + pflash1->nodestorage, + pflash1->nodeformat) < 0) + return -1; } =20 priv->pflash0 =3D g_steal_pointer(&pflash0); diff --git a/src/qemu/qemu_firmware.c b/src/qemu/qemu_firmware.c index ab5151dc9f..55808efd70 100644 --- a/src/qemu/qemu_firmware.c +++ b/src/qemu/qemu_firmware.c @@ -1375,6 +1375,12 @@ qemuFirmwareFillDomain(virQEMUDriver *driver, virFileExists(def->os.loader->nvram->path)) return 0; =20 + + if (!reset_nvram && def->os.loader->nvram && + def->os.loader->nvram->type =3D=3D VIR_STORAGE_TYPE_NETWORK && + def->os.loader->nvram->path) + return 0; + /* ... then we want to consult JSON FW descriptors first, * but we don't want to fail if we haven't found a match. */ needResult =3D false; diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index b576efe375..28597ac702 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -603,6 +603,64 @@ qemuValidateDomainDefBoot(const virDomainDef *def) } =20 =20 +static int +qemuValidateDomainDefNvram(const virDomainDef *def, + virQEMUCaps *qemuCaps) +{ + int actualType; + if (!def->os.loader || !def->os.loader->nvram) + return 0; + + if (qemuDomainValidateStorageSource(def->os.loader->nvram, qemuCaps, f= alse) < 0) + return -1; + + actualType =3D virStorageSourceGetActualType(def->os.loader->nvram); + + switch (actualType) { + case VIR_STORAGE_TYPE_FILE: + break; + + case VIR_STORAGE_TYPE_NETWORK: + case VIR_STORAGE_TYPE_BLOCK: + case VIR_STORAGE_TYPE_DIR: + case VIR_STORAGE_TYPE_VOLUME: + case VIR_STORAGE_TYPE_NVME: + case VIR_STORAGE_TYPE_VHOST_USER: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("unsupported nvram disk type %s"), + virStorageTypeToString(actualType)); + return -1; + + case VIR_STORAGE_TYPE_NONE: + case VIR_STORAGE_TYPE_LAST: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("unexpected nvram disk type %s"), + virStorageTypeToString(actualType)); + return -1; + } + + if (def->os.loader->nvram->encryption) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("Encryption is not supported with NVRAM")); + return -1; + } + + if (def->os.loader->nvram->seclabels) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("Security labels are not supported with NVRAM")); + return -1; + } + + if (def->os.loader->nvram->auth) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("Auth is not supported with NVRAM")); + return -1; + } + + return 0; +} + + /** * qemuValidateDefGetVcpuHotplugGranularity: * @def: domain definition @@ -1177,6 +1235,9 @@ qemuValidateDomainDef(const virDomainDef *def, if (qemuValidateDomainDefBoot(def) < 0) return -1; =20 + if (qemuValidateDomainDefNvram(def, qemuCaps) < 0) + return -1; + if (qemuValidateDomainVCpuTopology(def, qemuCaps) < 0) return -1; =20 --=20 2.25.1 From nobody Fri May 17 06:07:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=none dis=none) header.from=nutanix.com Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1651683107450297.96728690742134; Wed, 4 May 2022 09:51:47 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-637-FVzFEJLRMOGV_5uvqDeawQ-1; Wed, 04 May 2022 12:51:44 -0400 Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 0BEF48038E3; Wed, 4 May 2022 16:51:42 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id EA710416171; Wed, 4 May 2022 16:51:41 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 266D01947049; Wed, 4 May 2022 16:51:41 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 2B5AF1947B85 for ; Wed, 4 May 2022 16:51:39 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 0ED7D455D88; Wed, 4 May 2022 16:51:39 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast05.extmail.prod.ext.rdu2.redhat.com [10.11.55.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 0A5C3455D89 for ; Wed, 4 May 2022 16:51:39 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [207.211.31.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id E1416833942 for ; Wed, 4 May 2022 16:51:38 +0000 (UTC) Received: from mx0b-002c1b01.pphosted.com (mx0b-002c1b01.pphosted.com [148.163.155.12]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-227-RZJwzXBdMSymzhoyfN3g4Q-1; Wed, 04 May 2022 12:51:37 -0400 Received: from pps.filterd (m0127843.ppops.net [127.0.0.1]) by mx0b-002c1b01.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 244APBDp029549 for ; Wed, 4 May 2022 09:51:36 -0700 Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2173.outbound.protection.outlook.com [104.47.56.173]) by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 3fs37h8fsq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Wed, 04 May 2022 09:51:36 -0700 Received: from SJ0PR02MB8564.namprd02.prod.outlook.com (2603:10b6:a03:3f6::16) by DM5PR02MB2699.namprd02.prod.outlook.com (2603:10b6:3:107::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5206.25; Wed, 4 May 2022 16:51:33 +0000 Received: from SJ0PR02MB8564.namprd02.prod.outlook.com ([fe80::8ac:200b:2dc3:5e99]) by SJ0PR02MB8564.namprd02.prod.outlook.com ([fe80::8ac:200b:2dc3:5e99%5]) with mapi id 15.20.5206.024; Wed, 4 May 2022 16:51:33 +0000 X-MC-Unique: FVzFEJLRMOGV_5uvqDeawQ-1 X-Original-To: libvir-list@listman.corp.redhat.com X-MC-Unique: RZJwzXBdMSymzhoyfN3g4Q-1 From: Rohit Kumar To: libvir-list@redhat.com Subject: [PATCH v3 3/5] Update schema, docs, and validation logic to support network backed NVRAM Date: Wed, 4 May 2022 09:51:13 -0700 Message-Id: <20220504165115.1225892-4-rohit.kumar3@nutanix.com> In-Reply-To: <20220504165115.1225892-1-rohit.kumar3@nutanix.com> References: <20220504165115.1225892-1-rohit.kumar3@nutanix.com> X-ClientProxiedBy: BYAPR06CA0043.namprd06.prod.outlook.com (2603:10b6:a03:14b::20) To SJ0PR02MB8564.namprd02.prod.outlook.com (2603:10b6:a03:3f6::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 2abb9088-f022-4cac-c691-08da2dee57cd X-MS-TrafficTypeDiagnostic: DM5PR02MB2699:EE_ X-Microsoft-Antispam-PRVS: x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0 X-Microsoft-Antispam-Message-Info: TUHwx7Hhv8Lr/DiNAIHmc3X7i5am6nMppEskif1oEo9bRH9ttBpO30evf3by/QESLqQwLYvJ9fOqEg21yIVZbX8L8zPkDmmBsvA7XhVKyjFLevtAEC2MiE3FWsFWR4AkNuSYikXqfZIP8aup3NLTgB6wKpw7Ifb2qXfRvQzOPfZsDBJXXLd+OojpqDVNpyr1LLV5BtmowCpTELK0g6wqXaKxec9RXB8hJbMFm5lqoun7tsC2wBtoFzcdYAZiIJR/9Jmqc4V5WQzT0DT0qdFFDdfc9iutBGtF+Es4Acw7ldUrx70nCQt2k7KhG+gi3axkGv300R5UEPPoQ/WfPGVSVsNZS9nlgDmvSg/NzKSHcgISWGg6BFpUJ0sP6cJrcqc4ke8K7NOmk2uW0t2q3KZjm9GG9bgYn2+y6DJX0D/9ozbSfg1QJYIBUQnfFRjAj78PBpXCUFoe3omcF8/GzhMqbybnOacks6iJSznGkgaASoQG5Fc0dFojAxT2mbcCcorkdFdpSI2XUf9UADsXR63g5SWtECeZE51C6+zmSVil+eqXZoSUGgr4MF2H6r+gjLzv/qsl3wDHbvoo+Vik1b29AoMLfl04QhyKxxc9T8u2tZKde7eUPft9o+YjRHQ/+WEOC0OTnDCPmveFDi3dJOAg5zwsokHagCHRkcUrRWWKeZqe29C5Rt8LNfjnZHMYnbXs/IuzDcQopSngkV9UI9pe1Q== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR02MB8564.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(66556008)(66946007)(8936002)(66476007)(5660300002)(86362001)(6916009)(15650500001)(2906002)(4326008)(8676002)(316002)(6486002)(508600001)(186003)(52116002)(36756003)(26005)(6512007)(2616005)(1076003)(107886003)(38100700002)(38350700002)(6506007)(6666004)(83380400001); DIR:OUT; SFP:1102 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?UMkctWO/SHQUnsmXgBCbRDVIyoaRBSgd2Z6NmkXbYmItpnH9ZsvHJoXVZT9k?= =?us-ascii?Q?E3t6Wclfe8YGCt+ABz3ZNTrIQ5f4ZOExqgXu1xm61OSFn/SePOrVsVzU5s52?= =?us-ascii?Q?0eHYGYPbUMsRffOVw0irl/QeVNjYojIvsBztDTuoP4wV9SFcXHbTEJv7inY/?= =?us-ascii?Q?F3OmSu5GZbhrXWbRC+jIjpoSOHUKvB27O2T+zz24NGbNy30DUcnonkDw5FEt?= =?us-ascii?Q?JJupi1Gb97DApBty3IrrB6WUd8ThxKq2FWS8tawV4sh+TnLtjU2dcj54OuUE?= =?us-ascii?Q?N5/4efVt8KgDaJwFN18DZVMt0JNQno9Hxx6T5gWf9DbRn/SgW2dJv14X7hc7?= =?us-ascii?Q?R9lOfPFgaasRwFSFR1kEueaqQCGNtsH+SKeDbJSOEIuw7WYiSnPS8P0IKtq+?= =?us-ascii?Q?cchTqDpP1AR/WdwEWe5I9usOJE9M28CznsuH7D10Cqh7ubLfZcFPx08mQewO?= =?us-ascii?Q?4tUliA2FFTvJm1uQ0fYKX5cnAoSIeKYHDSO74IUax+vaOkBFAjdL1iq/DWZj?= =?us-ascii?Q?vyDCo1hmDsYyG8veJxiDc8clwQgoE1GVXUk334SMaawaKQZIxNZu0XJ5b7jw?= =?us-ascii?Q?r9eWRUFuwQO+Hi7B/MNDSEiqDIjBATGwlQ9Vb9HDsmaRCZ/XghHJ0SQCoDey?= =?us-ascii?Q?f+QLoAi4BC6GL0EZh+vRH1z2jFYnd//hiLz+zyQRcsUJCHQayDUd6D1wJN4v?= =?us-ascii?Q?zgvqQXSZZ5dIokdpintSOBKns0HifAsNpx06sMCc0qkk58tUG7zBrUiYLWrg?= =?us-ascii?Q?nvAZxZsgAA/9jGaznm2w/tlOhURUEnbIjJ2oo3jzZBPHwismkv/x7fF2aKm3?= =?us-ascii?Q?wYCPZaicw5RZocZyu+7Z4BmXvS3VS9/H5QWJRw9zITvSXaDi+Zh6sx9vxnlO?= =?us-ascii?Q?kIfpE5jKlk3IS5DnUgzTRQaIRHGPpMx3P17st2/BA3rJ5BOu99q0GOJx+Vr6?= =?us-ascii?Q?iYAsX8xI3LDs/Hz9rAnbKnczWfZhzPRjIwX0ty+MJcQtIKqCoVR1IDdC02jZ?= =?us-ascii?Q?LDhjRcaExLY2bL6KswoJF7i/qQCI+QtOMavmA0g6dZhJ3ypPPUqQqb5ey16G?= =?us-ascii?Q?LHqGdYZTBKmqlEl4BHz6YsYDFFr4ypGwpvkjhpBY7+g9DIj7WFQuB+qQd3EO?= =?us-ascii?Q?v3dXeXA4v6HNOUWKpo+vcS2RX8pA4HwIHFZGssY4q//3BblCH0W751Dry0/w?= =?us-ascii?Q?xGe/SumJG7yO88Bk9V1dp3nhXeGAyl+bCwqHkyAE60WCCNi5O5/tyn4Hkm6q?= =?us-ascii?Q?WYnAB1p9KzQeuqMqlVcODI8BoHn4aanNt2Wh9cGNNnxAOuwJaHAS7voUtO7E?= =?us-ascii?Q?CCbi5n/Ni4FAf+7dl6uUPC6rFk441wdNdKBLE42kmKWZdIo8woi4Gdxs83q/?= =?us-ascii?Q?rN2V3aV7/eJAnmDQrWiXSK1zS34HYts9ELtBoFciIXg2AjAFVSEJoMn6O0j8?= =?us-ascii?Q?GYOlDGwQb6heq0ddXtGzkGlmDL1R87XXbRJuz4K+I9WfyQTs16WUXJ/qXkhr?= =?us-ascii?Q?vuDzMBMN/t/qui9AKyDxoDn5fUXcJLgN6JgYqGON1n6p3uUdgMPq1xTkkhrB?= =?us-ascii?Q?3fj+LK/2ZmydKC2l/6GRQnajuRLsR45CU/4ENRWZQ7zFXbu5/yxUi95y8KYh?= =?us-ascii?Q?hYc5Nr64EzAT/GINgCFUz9eEUgc1ju6ZV1jmrHRAtFuQe0QakfB1jWglN2II?= =?us-ascii?Q?5i2cwa84dFv8DenGgMx95puXy/ZTHnECnlMosnDDKcB97rG13TvnKJV+FNLc?= =?us-ascii?Q?Ey+Bg0qCp328OGQaMN7DOtwCGs60Scc=3D?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2abb9088-f022-4cac-c691-08da2dee57cd X-MS-Exchange-CrossTenant-AuthSource: SJ0PR02MB8564.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 May 2022 16:51:32.6166 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 21axhrMeCBDKdFmw/NzfxstgXimjwwc04vsK2JacicelMhYoEzJGeQpZ2ceFUxWVlSaPnThwq4w8t9HCsYQ7MR9/fgIm5JtLw4i5Zqt5l4E= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR02MB2699 X-Proofpoint-ORIG-GUID: cT6WIm4ndTsY8e3J1slHLn7jKnDcKEV7 X-Proofpoint-GUID: cT6WIm4ndTsY8e3J1slHLn7jKnDcKEV7 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.858,Hydra:6.0.486,FMLib:17.11.64.514 definitions=2022-05-04_04,2022-05-04_02,2022-02-23_01 X-Proofpoint-Spam-Reason: safe X-Mimecast-Impersonation-Protect: Policy=CLT - Impersonation Protection Definition; Similar Internal Domain=false; Similar Monitored External Domain=false; Custom External Domain=false; Mimecast External Domain=false; Newly Observed Domain=false; Internal User Name=false; Custom Display Name List=false; Reply-to Address Mismatch=false; Targeted Threat Dictionary=false; Mimecast Threat Dictionary=false; Custom Threat Dictionary=false X-Scanned-By: MIMEDefang 2.85 on 10.11.54.9 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: prachatos.mitra@nutanix.com, Rohit Kumar , flosch@nutanix.com, prerna.saxena@nutanix.com Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.10 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZM-MESSAGEID: 1651683108421100001 Content-Type: text/plain; charset="utf-8" Update NVRAM element schema, docs and validation logic for supporting network backed NVRAM. NVRAM backed over network would give the flexibility to start the VM on any host without having to worry about where to get the latest nvram image. Signed-off-by: Prerna Saxena Signed-off-by: Florian Schmidt Signed-off-by: Rohit Kumar Tested-by: Rohit Kumar --- NEWS.rst | 5 +++++ docs/formatdomain.rst | 34 ++++++++++++++++++++++++++++++- src/conf/schemas/domaincommon.rng | 21 ++++++++++++++++++- src/qemu/qemu_validate.c | 14 +++++++++++-- 4 files changed, 70 insertions(+), 4 deletions(-) diff --git a/NEWS.rst b/NEWS.rst index 4a213682a4..592bedfec0 100644 --- a/NEWS.rst +++ b/NEWS.rst @@ -34,6 +34,11 @@ v8.3.0 (2022-05-02) =20 * **New features** =20 + * qemu: Introduce support for network backed NVRAM + + Users can now use remote store NVRAM image by specifying attribute + `type=3D'network'` with `` element. + * qemu: Introduce support for virtio-iommu =20 This IOMMU device can be used with both Q35 and ARM virt guests. diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst index 9be305f3e6..a27346f6fa 100644 --- a/docs/formatdomain.rst +++ b/docs/formatdomain.rst @@ -141,6 +141,34 @@ harddisk, cdrom, network) determining where to obtain/= find the boot image. ... =20 + + ... + + hvm + /usr/share/OV= MF/OVMF_CODE.fd + + + + + ... + + + ... + + hvm + /usr/share/OV= MF/OVMF_CODE.fd + + + + + + + + + + + ... + ... @@ -222,7 +250,11 @@ harddisk, cdrom, network) determining where to obtain/= find the boot image. :since:`Since 2.1.0` ``nvram`` Some UEFI firmwares may want to use a non-volatile memory to store some - variables. In the host, this is represented as a file and the absolute = path + variables. They can be present on host or on some network storage. + :since:`Since 8.3.0`, it's possible for the element to have ``type`` a= ttribute + (accepts values ``file`` and ``network``). For remote store NVRAM, plea= se refer + back to ```` element definition at `Disk configuration <#hard-d= rives-floppy-disks-cdroms>`__ + section. In the host, this is represented as a file and the absolute pa= th to the file is stored in this element. Moreover, when the domain is sta= rted up libvirt copies so called master NVRAM store file defined in ``qemu.c= onf``. If needed, the ``template`` attribute can be used to per domain overrid= e map diff --git a/src/conf/schemas/domaincommon.rng b/src/conf/schemas/domaincom= mon.rng index 8afb0dadd4..acebaa8295 100644 --- a/src/conf/schemas/domaincommon.rng +++ b/src/conf/schemas/domaincommon.rng @@ -333,7 +333,26 @@ - + + + + + + + file + + + + + + + + + + + + + diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index 28597ac702..e7fc2b9772 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -621,6 +621,13 @@ qemuValidateDomainDefNvram(const virDomainDef *def, break; =20 case VIR_STORAGE_TYPE_NETWORK: + if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_BLOCKDEV)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("remote NVRAM is not supported by this QEMU")= ); + return -1; + } + break; + case VIR_STORAGE_TYPE_BLOCK: case VIR_STORAGE_TYPE_DIR: case VIR_STORAGE_TYPE_VOLUME: @@ -651,9 +658,12 @@ qemuValidateDomainDefNvram(const virDomainDef *def, return -1; } =20 - if (def->os.loader->nvram->auth) { + if (def->os.loader->nvram->auth && + !(actualType =3D=3D VIR_STORAGE_TYPE_NETWORK && + (def->os.loader->nvram->protocol =3D=3D VIR_STORAGE_NET_PROTOCOL_I= SCSI || + def->os.loader->nvram->protocol =3D=3D VIR_STORAGE_NET_PROTOCOL_R= BD))) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("Auth is not supported with NVRAM")); + _("Auth is only supported with 'iSCSI' and 'nbd' p= rotocols")); return -1; } =20 --=20 2.25.1 From nobody Fri May 17 06:07:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=none dis=none) header.from=nutanix.com Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1651683109594792.4220559247268; Wed, 4 May 2022 09:51:49 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-617-N70uClX9NqqjztGhX7HxZA-1; Wed, 04 May 2022 12:51:45 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id B7E8F38149BA; Wed, 4 May 2022 16:51:42 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 9BC20403D198; Wed, 4 May 2022 16:51:42 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 8929819451EF; Wed, 4 May 2022 16:51:41 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id E98A81947B85 for ; Wed, 4 May 2022 16:51:39 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id B31EF403D175; Wed, 4 May 2022 16:51:39 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast07.extmail.prod.ext.rdu2.redhat.com [10.11.55.23]) by smtp.corp.redhat.com (Postfix) with ESMTPS id AE07E4010E24 for ; Wed, 4 May 2022 16:51:39 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-2.mimecast.com [205.139.110.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 928D83C01D85 for ; Wed, 4 May 2022 16:51:39 +0000 (UTC) Received: from mx0b-002c1b01.pphosted.com (mx0b-002c1b01.pphosted.com [148.163.155.12]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-122-00szZTfZPc-_Agd8WaH3Vg-1; Wed, 04 May 2022 12:51:38 -0400 Received: from pps.filterd (m0127843.ppops.net [127.0.0.1]) by mx0b-002c1b01.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 244APBDq029549 for ; Wed, 4 May 2022 09:51:37 -0700 Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2173.outbound.protection.outlook.com [104.47.56.173]) by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 3fs37h8fsq-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Wed, 04 May 2022 09:51:37 -0700 Received: from SJ0PR02MB8564.namprd02.prod.outlook.com (2603:10b6:a03:3f6::16) by DM5PR02MB2699.namprd02.prod.outlook.com (2603:10b6:3:107::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5206.25; Wed, 4 May 2022 16:51:34 +0000 Received: from SJ0PR02MB8564.namprd02.prod.outlook.com ([fe80::8ac:200b:2dc3:5e99]) by SJ0PR02MB8564.namprd02.prod.outlook.com ([fe80::8ac:200b:2dc3:5e99%5]) with mapi id 15.20.5206.024; Wed, 4 May 2022 16:51:34 +0000 X-MC-Unique: N70uClX9NqqjztGhX7HxZA-1 X-Original-To: libvir-list@listman.corp.redhat.com X-MC-Unique: 00szZTfZPc-_Agd8WaH3Vg-1 From: Rohit Kumar To: libvir-list@redhat.com Subject: [PATCH v3 4/5] Add unit tests for network backed NVRAM Date: Wed, 4 May 2022 09:51:14 -0700 Message-Id: <20220504165115.1225892-5-rohit.kumar3@nutanix.com> In-Reply-To: <20220504165115.1225892-1-rohit.kumar3@nutanix.com> References: <20220504165115.1225892-1-rohit.kumar3@nutanix.com> X-ClientProxiedBy: BYAPR06CA0043.namprd06.prod.outlook.com (2603:10b6:a03:14b::20) To SJ0PR02MB8564.namprd02.prod.outlook.com (2603:10b6:a03:3f6::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ef628595-6479-437c-abd6-08da2dee5817 X-MS-TrafficTypeDiagnostic: DM5PR02MB2699:EE_ X-Microsoft-Antispam-PRVS: x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0 X-Microsoft-Antispam-Message-Info: bl/K50H/GlcyUKKI9iFZhz+IAU3rkOl9GTJNRmEoABF/CXlrCYh6bJAeFk9eT2r/XJ49kFL0w1KZVmcruD/kEUawcpxAX43eQ9Ft61r13ztbSXlpVri88tFVWSOj+pd/JJY97Q6lwfdoVroHf9kTvm/UABdu8iMUDzY3z6y6/74Zr8mpaKVlnPsIT7vPAvQAD8ruNCD9OxFENEZvUg8U7y964SQuFCuYgPX8GrFtEyl6OAfxlWgzz6iE+wRPpcmcchXJ6ZaCIW8I2mgyq47GbflWhVUmEKKNr9Fm367RZsKsAe5+o+SnOh2tvjQ/2Ry0JLI1Iw+a9Dxf0fEYSAWDzUm/rGf2ERF1l5Ru+bv20nXtCzSdBmTw/Y1OTQBrb9C7zIFOaWK9rvO2yYCVT1wfZyR/jZJK0+F9FqWXwYthjhhcNy5bcwfliXZhOQdNvmdcsH+qRmnA1OXOQvQSw0Sfl1Zl7tLpIBXFk22lkaGq4i1Wc/AECQ/3JEFzCSwWJnco1G3JPzkHA1HY7jWjx/U9NjHnuwqOJ5anEVvwaoDZNXQT2ZE39uzWRN0FeBbDsgbKzk2yMYl6FY21Y/Z7i+zXJX2IBOvsrD5f1Gb7WLEvI1GzqZZDSiW7CGW956gy/9lPK6OO8yzu5bEtGJl095KXd72vvm1l7yc2SixNCkCwiyafb7cBItQLI7S2/S+EvEB1qa3F3zx011rUL7ASTwN+1w== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR02MB8564.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(66556008)(66946007)(8936002)(66476007)(5660300002)(86362001)(6916009)(30864003)(2906002)(4326008)(8676002)(316002)(6486002)(508600001)(186003)(52116002)(36756003)(26005)(6512007)(2616005)(1076003)(107886003)(38100700002)(38350700002)(6506007)(6666004)(83380400001); DIR:OUT; SFP:1102 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Oy5GkEKYdSnea8NSzVHJpcNVE7q3J3Jk1Tcwm5VTfHCZspyRITJO1oVrRdeT?= =?us-ascii?Q?44AqEZ95lpjSd0xnXnHvvv/l/r4m8nGLqcMnAYO+oMnXOIMkTAWiqifo9Nuk?= =?us-ascii?Q?lCGJ3bsbPd6oSvvGW49p/Lp7B73sx6LFWsjP27re1C0QdKUMq5XuGcdsC1os?= =?us-ascii?Q?EmCfy0bDsCq0OG6nyG5pceXz2WkcN1fTM5cZImcbMsU/El7Sar879XBohM3y?= =?us-ascii?Q?Krg4meLW3QXkG2F/pTTuU2n1xwncCd7/aDRx73vpD5mExraajENbBcgc4iAx?= =?us-ascii?Q?zqS35M5DmzvMdxv7S5ujcq7CwaeuuVjDTnEptuHi0t6NXg7cCJPtShrOovej?= =?us-ascii?Q?JqQVm93y6m2rewqE8boXsFUNcOhrwQ1vCPEwgwEZKE8JcN263u638p21hF10?= =?us-ascii?Q?btiqumIoW5JEjoPF+qOpOP/dYgYb3QhKJ/LgkK4cl8MicbpUZLMsmCEkvfqK?= =?us-ascii?Q?CDzpGmyZTnUk8UWw4vUjsWC00DwKp+OrhQsFXcYAh6Z9t3ioPzRfIINvy2Sx?= =?us-ascii?Q?GK0z5qbkvYl5WbXkIIeKsg89l/fp3V0IPi3bb4MftWq7D9zHq70j264eb6op?= =?us-ascii?Q?PSHBw3JgNVW3t9Wwe9VHuQ8AwkFuCn+s5zaA0aXyTQmazFxkSV+eDsZhuOu/?= =?us-ascii?Q?3u5I/NSLXiT91fzV5PuNKMSQvXSn4UGvzMkywCyok4CRe/rzzRjqAj3FYQnn?= =?us-ascii?Q?2uagXYrANebuITUWFa3g2R1Ex66/dPnZrL4H7B6f1QbpiwN1raZU5sUv2tbQ?= =?us-ascii?Q?pxkiFEiqNRQTLeBtkqnwYQmhE/dnkxilgiKlXPDAxd6H7UD2niMbrVx//v9O?= =?us-ascii?Q?V92iaQb6O5xoXHY6MhSPa1MKQb1a+hdaPeQn4BW3zBB9LhMWpJY8+qF+V9Wz?= =?us-ascii?Q?D1KRq/5AFQz0Ze5XgxpcrBPRLyaP+3HWA4ONXxngK+oJ23iRy9ABbBda2Ark?= =?us-ascii?Q?oUHhHsORApiLZQJ8B7gSTGAboxhbdX0e8N8AYMepkdXDmpKsjfe6XlUNAhjn?= =?us-ascii?Q?6XAHGZ8oVDlBrIEkpDr+2tXTXlNiEH4gMAuI5wxG8/30D5lwIQ7TCL7QUoTR?= =?us-ascii?Q?onI8+xH9hYAGBQ0IwXrQohtZDuuBfgXl2Pyemtvvb847BZOtGP1GD44atXmW?= =?us-ascii?Q?6AzjPQzlCly02e0T5mnsrpK6KaObkx/lo4jYQ+zcDA4X0uyg+zK6knM+aD7d?= =?us-ascii?Q?oozfqjJvwQrqY7Ks/CEwjopc4yznClS1xGhXzprWPSPzLyCf3R0hnw223y2+?= =?us-ascii?Q?9ffUdghx9d5f85PcgSrQURL7pMisckYOnngUl3ub8F/+wACR15G7ZdJUcVXn?= =?us-ascii?Q?USw0s9wXWncDqQTHvsON61AiUN9XwHP4anK4yWewG/jbj53t3/9BRPl8TYWV?= =?us-ascii?Q?fnlNlH018K+WAdWMqNelilprxPhjMlIB8LpEwDTTmjBjG5vXNoG4L5NBmh8L?= =?us-ascii?Q?8WGJ4wy+bSjBBTXNmkyXeZeDY1EheyMuui5HKuX1kyZbfwmazKeU4wM1lQSr?= =?us-ascii?Q?jnJnDIP1hbCQxRgf+Waq3CiJc6p9MWp1iNn/xvzQC1Ce+/P5qW+aauM8UilO?= =?us-ascii?Q?ayfssYqN8dygHawSGT/n3HSROQ9uns9zS4YROb8EAwt0gLAJ+cegSxR84ol+?= =?us-ascii?Q?759ZtjGrd3Ucvb44vSTrBb9QYa6oz2K8yh6kncBHFa2PISfoUjDDxoKmzI6P?= =?us-ascii?Q?pIiks4z1Y9O+BWM/nUATTL7RU8wYuaBbgBLqdqzvYYNT2LFdFn1oq0XC0Mp7?= =?us-ascii?Q?vBWyWdK6bVZ77NTpRiQjXayOUKSwl+w=3D?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: ef628595-6479-437c-abd6-08da2dee5817 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR02MB8564.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 May 2022 16:51:33.0852 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: gI6hNX2UTGBH1VeHHnypex4gBrt9GkQwmNAiJ9rLirfnnNhVaDkyVpsZaJqytV7jKdPXKlhQpQC6/7mLjG6xdoJgBN0FGlDkf2VKkpsJfK4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR02MB2699 X-Proofpoint-ORIG-GUID: LsG-lQuVCLLKgRJ1IaX_DrSgWC7-EWoC X-Proofpoint-GUID: LsG-lQuVCLLKgRJ1IaX_DrSgWC7-EWoC X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.858,Hydra:6.0.486,FMLib:17.11.64.514 definitions=2022-05-04_04,2022-05-04_02,2022-02-23_01 X-Proofpoint-Spam-Reason: safe X-Mimecast-Impersonation-Protect: Policy=CLT - Impersonation Protection Definition; Similar Internal Domain=false; Similar Monitored External Domain=false; Custom External Domain=false; Mimecast External Domain=false; Newly Observed Domain=false; Internal User Name=false; Custom Display Name List=false; Reply-to Address Mismatch=false; Targeted Threat Dictionary=false; Mimecast Threat Dictionary=false; Custom Threat Dictionary=false X-Scanned-By: MIMEDefang 2.84 on 10.11.54.2 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: prachatos.mitra@nutanix.com, Rohit Kumar , flosch@nutanix.com, prerna.saxena@nutanix.com Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.84 on 10.11.54.2 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZM-MESSAGEID: 1651683110642100005 Content-Type: text/plain; charset="utf-8" This patch adds unit tests for remote NVRAM. Examples: and Signed-off-by: Prerna Saxena Signed-off-by: Florian Schmidt Signed-off-by: Rohit Kumar Tested-by: Rohit Kumar --- .../bios-nvram-network-iscsi.x86_64-4.1.0.err | 1 + ...ios-nvram-network-iscsi.x86_64-latest.args | 38 ++++++++++++++++ .../bios-nvram-network-iscsi.xml | 31 +++++++++++++ .../bios-nvram-network-nbd.x86_64-latest.args | 37 ++++++++++++++++ .../bios-nvram-network-nbd.xml | 28 ++++++++++++ tests/qemuxml2argvtest.c | 3 ++ ...bios-nvram-network-iscsi.x86_64-latest.xml | 44 +++++++++++++++++++ .../bios-nvram-network-nbd.x86_64-latest.xml | 41 +++++++++++++++++ tests/qemuxml2xmltest.c | 2 + 9 files changed, 225 insertions(+) create mode 100644 tests/qemuxml2argvdata/bios-nvram-network-iscsi.x86_64-= 4.1.0.err create mode 100644 tests/qemuxml2argvdata/bios-nvram-network-iscsi.x86_64-= latest.args create mode 100644 tests/qemuxml2argvdata/bios-nvram-network-iscsi.xml create mode 100644 tests/qemuxml2argvdata/bios-nvram-network-nbd.x86_64-la= test.args create mode 100644 tests/qemuxml2argvdata/bios-nvram-network-nbd.xml create mode 100644 tests/qemuxml2xmloutdata/bios-nvram-network-iscsi.x86_6= 4-latest.xml create mode 100644 tests/qemuxml2xmloutdata/bios-nvram-network-nbd.x86_64-= latest.xml diff --git a/tests/qemuxml2argvdata/bios-nvram-network-iscsi.x86_64-4.1.0.e= rr b/tests/qemuxml2argvdata/bios-nvram-network-iscsi.x86_64-4.1.0.err new file mode 100644 index 0000000000..741683c33e --- /dev/null +++ b/tests/qemuxml2argvdata/bios-nvram-network-iscsi.x86_64-4.1.0.err @@ -0,0 +1 @@ +unsupported configuration: remote NVRAM is not supported by this QEMU diff --git a/tests/qemuxml2argvdata/bios-nvram-network-iscsi.x86_64-latest.= args b/tests/qemuxml2argvdata/bios-nvram-network-iscsi.x86_64-latest.args new file mode 100644 index 0000000000..b8a323358d --- /dev/null +++ b/tests/qemuxml2argvdata/bios-nvram-network-iscsi.x86_64-latest.args @@ -0,0 +1,38 @@ +LC_ALL=3DC \ +PATH=3D/bin \ +HOME=3D/tmp/lib/domain--1-test-bios \ +USER=3Dtest \ +LOGNAME=3Dtest \ +XDG_DATA_HOME=3D/tmp/lib/domain--1-test-bios/.local/share \ +XDG_CACHE_HOME=3D/tmp/lib/domain--1-test-bios/.cache \ +XDG_CONFIG_HOME=3D/tmp/lib/domain--1-test-bios/.config \ +/usr/bin/qemu-system-x86_64 \ +-name guest=3Dtest-bios,debug-threads=3Don \ +-S \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tm= p/lib/domain--1-test-bios/master-key.aes"}' \ +-blockdev '{"driver":"file","filename":"/usr/share/OVMF/OVMF_CODE.fd","nod= e-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}'= \ +-blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver"= :"raw","file":"libvirt-pflash0-storage"}' \ +-object '{"qom-type":"secret","id":"libvirt-pflash1-storage-auth-secret0",= "data":"9eao5F8qtkGt+seB1HYivWIxbtwUu6MQtg1zpj/oDtUsPr1q8wBYM91uEHCn6j/1","= keyid":"masterKey0","iv":"AAECAwQFBgcICQoLDA0ODw=3D=3D","format":"base64"}'= \ +-blockdev '{"driver":"iscsi","portal":"example.com:6000","target":"iqn.201= 3-07.com.example:iscsi-nopool","lun":0,"transport":"tcp","user":"myname","p= assword-secret":"libvirt-pflash1-storage-auth-secret0","node-name":"libvirt= -pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ +-blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver= ":"raw","file":"libvirt-pflash1-storage"}' \ +-machine pc,usb=3Doff,dump-guest-core=3Doff,pflash0=3Dlibvirt-pflash0-form= at,pflash1=3Dlibvirt-pflash1-format,memory-backend=3Dpc.ram \ +-accel tcg \ +-cpu qemu64 \ +-m 1024 \ +-object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":1073741824}= ' \ +-overcommit mem-lock=3Doff \ +-smp 1,sockets=3D1,cores=3D1,threads=3D1 \ +-uuid 362d1fc1-df7d-193e-5c18-49a71bd1da66 \ +-display none \ +-no-user-config \ +-nodefaults \ +-chardev socket,id=3Dcharmonitor,fd=3D1729,server=3Don,wait=3Doff \ +-mon chardev=3Dcharmonitor,id=3Dmonitor,mode=3Dcontrol \ +-rtc base=3Dutc \ +-no-shutdown \ +-boot menu=3Don,strict=3Don \ +-device '{"driver":"piix3-usb-uhci","id":"usb","bus":"pci.0","addr":"0x1.0= x2"}' \ +-audiodev '{"id":"audio1","driver":"none"}' \ +-device '{"driver":"virtio-balloon-pci","id":"balloon0","bus":"pci.0","add= r":"0x2"}' \ +-sandbox on,obsolete=3Ddeny,elevateprivileges=3Ddeny,spawn=3Ddeny,resource= control=3Ddeny \ +-msg timestamp=3Don diff --git a/tests/qemuxml2argvdata/bios-nvram-network-iscsi.xml b/tests/qe= muxml2argvdata/bios-nvram-network-iscsi.xml new file mode 100644 index 0000000000..d8a354126d --- /dev/null +++ b/tests/qemuxml2argvdata/bios-nvram-network-iscsi.xml @@ -0,0 +1,31 @@ + + test-bios + 362d1fc1-df7d-193e-5c18-49a71bd1da66 + 1048576 + 1048576 + 1 + + hvm + /usr/share/OVMF/OVMF_CODE.fd<= /loader> + + + + + + + + + + + + + + + + destroy + restart + restart + + /usr/bin/qemu-system-x86_64 + + diff --git a/tests/qemuxml2argvdata/bios-nvram-network-nbd.x86_64-latest.ar= gs b/tests/qemuxml2argvdata/bios-nvram-network-nbd.x86_64-latest.args new file mode 100644 index 0000000000..08dbd99335 --- /dev/null +++ b/tests/qemuxml2argvdata/bios-nvram-network-nbd.x86_64-latest.args @@ -0,0 +1,37 @@ +LC_ALL=3DC \ +PATH=3D/bin \ +HOME=3D/tmp/lib/domain--1-test-bios \ +USER=3Dtest \ +LOGNAME=3Dtest \ +XDG_DATA_HOME=3D/tmp/lib/domain--1-test-bios/.local/share \ +XDG_CACHE_HOME=3D/tmp/lib/domain--1-test-bios/.cache \ +XDG_CONFIG_HOME=3D/tmp/lib/domain--1-test-bios/.config \ +/usr/bin/qemu-system-x86_64 \ +-name guest=3Dtest-bios,debug-threads=3Don \ +-S \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tm= p/lib/domain--1-test-bios/master-key.aes"}' \ +-blockdev '{"driver":"file","filename":"/usr/share/OVMF/OVMF_CODE.fd","nod= e-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}'= \ +-blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver"= :"raw","file":"libvirt-pflash0-storage"}' \ +-blockdev '{"driver":"nbd","server":{"type":"inet","host":"example.org","p= ort":"6000"},"export":"bar","node-name":"libvirt-pflash1-storage","auto-rea= d-only":true,"discard":"unmap"}' \ +-blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver= ":"raw","file":"libvirt-pflash1-storage"}' \ +-machine pc,usb=3Doff,dump-guest-core=3Doff,pflash0=3Dlibvirt-pflash0-form= at,pflash1=3Dlibvirt-pflash1-format,memory-backend=3Dpc.ram \ +-accel tcg \ +-cpu qemu64 \ +-m 1024 \ +-object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":1073741824}= ' \ +-overcommit mem-lock=3Doff \ +-smp 1,sockets=3D1,cores=3D1,threads=3D1 \ +-uuid 362d1fc1-df7d-193e-5c18-49a71bd1da66 \ +-display none \ +-no-user-config \ +-nodefaults \ +-chardev socket,id=3Dcharmonitor,fd=3D1729,server=3Don,wait=3Doff \ +-mon chardev=3Dcharmonitor,id=3Dmonitor,mode=3Dcontrol \ +-rtc base=3Dutc \ +-no-shutdown \ +-boot menu=3Don,strict=3Don \ +-device '{"driver":"piix3-usb-uhci","id":"usb","bus":"pci.0","addr":"0x1.0= x2"}' \ +-audiodev '{"id":"audio1","driver":"none"}' \ +-device '{"driver":"virtio-balloon-pci","id":"balloon0","bus":"pci.0","add= r":"0x2"}' \ +-sandbox on,obsolete=3Ddeny,elevateprivileges=3Ddeny,spawn=3Ddeny,resource= control=3Ddeny \ +-msg timestamp=3Don diff --git a/tests/qemuxml2argvdata/bios-nvram-network-nbd.xml b/tests/qemu= xml2argvdata/bios-nvram-network-nbd.xml new file mode 100644 index 0000000000..3350914607 --- /dev/null +++ b/tests/qemuxml2argvdata/bios-nvram-network-nbd.xml @@ -0,0 +1,28 @@ + + test-bios + 362d1fc1-df7d-193e-5c18-49a71bd1da66 + 1048576 + 1048576 + 1 + + hvm + /usr/share/OVMF/OVMF_CODE.fd<= /loader> + + + + + + + + + + + + + destroy + restart + restart + + /usr/bin/qemu-system-x86_64 + + diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index 1f080daba7..c00aa7e049 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -1198,6 +1198,9 @@ mymain(void) QEMU_CAPS_ICH9_AHCI, QEMU_CAPS_VIRTIO_SCSI); DO_TEST_CAPS_LATEST("bios-nvram-template"); + DO_TEST_CAPS_LATEST("bios-nvram-network-iscsi"); + DO_TEST_CAPS_VER_PARSE_ERROR("bios-nvram-network-iscsi", "4.1.0"); + DO_TEST_CAPS_LATEST("bios-nvram-network-nbd"); =20 /* Make sure all combinations of ACPI and UEFI behave as expected */ DO_TEST_NOCAPS("q35-acpi-uefi"); diff --git a/tests/qemuxml2xmloutdata/bios-nvram-network-iscsi.x86_64-lates= t.xml b/tests/qemuxml2xmloutdata/bios-nvram-network-iscsi.x86_64-latest.xml new file mode 100644 index 0000000000..73b7aefe7b --- /dev/null +++ b/tests/qemuxml2xmloutdata/bios-nvram-network-iscsi.x86_64-latest.xml @@ -0,0 +1,44 @@ + + test-bios + 362d1fc1-df7d-193e-5c18-49a71bd1da66 + 1048576 + 1048576 + 1 + + hvm + /usr/share/OVMF/OVMF_CODE.fd<= /loader> + + + + + + + + + + + + + + + + qemu64 + + + destroy + restart + restart + + /usr/bin/qemu-system-x86_64 + +
+ + + + +