From nobody Tue Feb 10 04:29:36 2026 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 164944020433725.791609932718643; Fri, 8 Apr 2022 10:50:04 -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-231-WqWsoCLrPOG6D_4T-q3n5g-1; Fri, 08 Apr 2022 13:49:28 -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 A8186833964; Fri, 8 Apr 2022 17:49:23 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 86567145B990; Fri, 8 Apr 2022 17:49:23 +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 1EE4B1940349; Fri, 8 Apr 2022 17:49:23 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 518371940341 for ; Fri, 8 Apr 2022 17:49:20 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 46F2B1402427; Fri, 8 Apr 2022 17:49:20 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast02.extmail.prod.ext.rdu2.redhat.com [10.11.55.18]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 41F9C145B98E for ; Fri, 8 Apr 2022 17:49:20 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-1.mimecast.com [207.211.31.81]) (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 23830804181 for ; Fri, 8 Apr 2022 17:49:20 +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-637-WJDU1jyrM8qW7EGkXFEFJQ-1; Fri, 08 Apr 2022 13:49:17 -0400 Received: from pps.filterd (m0127841.ppops.net [127.0.0.1]) by mx0b-002c1b01.pphosted.com (8.16.1.2/8.16.1.2) with ESMTP id 238E5g5x014798 for ; Fri, 8 Apr 2022 10:49:16 -0700 Received: from nam11-bn8-obe.outbound.protection.outlook.com (mail-bn8nam11lp2169.outbound.protection.outlook.com [104.47.58.169]) by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 3f6m19694p-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 08 Apr 2022 10:49:16 -0700 Received: from SJ0PR02MB8564.namprd02.prod.outlook.com (2603:10b6:a03:3f6::16) by BY5PR02MB6533.namprd02.prod.outlook.com (2603:10b6:a03:1d5::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5144.26; Fri, 8 Apr 2022 17:49:13 +0000 Received: from SJ0PR02MB8564.namprd02.prod.outlook.com ([fe80::b167:3939:c2e0:64e8]) by SJ0PR02MB8564.namprd02.prod.outlook.com ([fe80::b167:3939:c2e0:64e8%6]) with mapi id 15.20.5144.023; Fri, 8 Apr 2022 17:49:13 +0000 X-MC-Unique: WqWsoCLrPOG6D_4T-q3n5g-1 X-Original-To: libvir-list@listman.corp.redhat.com X-MC-Unique: WJDU1jyrM8qW7EGkXFEFJQ-1 From: Rohit Kumar To: libvir-list@redhat.com Subject: [PATCH v2 2/8] Add support to parse/format virStorageSource type NVRAM Date: Fri, 8 Apr 2022 10:48:45 -0700 Message-Id: <20220408174851.1077477-3-rohit.kumar3@nutanix.com> In-Reply-To: <20220408174851.1077477-1-rohit.kumar3@nutanix.com> References: <20220408174851.1077477-1-rohit.kumar3@nutanix.com> X-ClientProxiedBy: SJ0PR03CA0363.namprd03.prod.outlook.com (2603:10b6:a03:3a1::8) 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: 40ee0b37-9f06-4b3d-2f0a-08da198817b2 X-MS-TrafficTypeDiagnostic: BY5PR02MB6533: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: 0n3LkH+iAp/i3POItwQHaS8JASQvJdb/A9HRhlqaDPEWMGUVV84X1W+6Ykd0hdF5NitWs2fLiZn7z5kf3n3ltN2zbUBHvEGxlQlNZBmxVhiF5Bo8QFeQ9rqxr1gWEUqeWInIxEwGtm8v1q+WqDHAzBvvgDzX1+eKkmXFNWp7pnRhEg1LmCUHeATOE1dJCpY+iv1SGaKJfoQJBH7P+aBlgpRd3UNHr9d6MMIbRrP5Llv29k5popuAozEB6DuPeumXwkVIqNnnpxQm5M5t4mfjq7IEe7A1CPizqlwNkbjFCmqcU61WnVG52zH1XtZExrGudICPLcnANwURW0z0VouioHRBfQQ2eIrovA1/yUw6IvPIUMhoNukEUZ3dpgi/di93BW8tqkIWYdYMiFk96wqD7xcozgXfJKEZ+C9QZ38KkI6Fri94rmMw0VaUi30pEoj+2APOCKjFzyzl5vkxTe3pGOwTn8ly54hFASs7pLHi2Qb/VNrb35XVVV9OuTcveTqJVrjJUqhV92MHa1+p14ratr4IjykBkTOzDRwTKaXo33SI+gOfVe2+Q+x4OL7w1ZlnZG6wJUwtagAuO2BVFIRXc142aIbctCPSl9pknMIkIAnL25ma1XVQ4688K/pxS8o/bBPm73pT1ewx4A5CBXrOPhQ25Sn+vBWPv3s6a8dk2pAqigeZ6BjMmQxlSk/davKYHAN5C1sJmWmhLakJ0XEh0g== 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)(6666004)(38350700002)(38100700002)(6486002)(83380400001)(8936002)(508600001)(2906002)(86362001)(5660300002)(66476007)(36756003)(66556008)(2616005)(107886003)(8676002)(4326008)(66946007)(6512007)(6916009)(54906003)(26005)(186003)(52116002)(6506007)(1076003)(316002); DIR:OUT; SFP:1102 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?FJd8ESeZKUeQ6AswqBeR/wlPdxUY1ZFEQ8zPQeTSETtnhs/hKF/4emNMDfdp?= =?us-ascii?Q?06H663MrSciUb2qwnbfolKXsRCEc+kgJ6Z0ug1W3X+zaH/2G2oth8BR3CIrZ?= =?us-ascii?Q?Sx72N/Yvk9ehF5AYtOj9lTj6lpV/m9QaFjV1YoDsfvdZB7VKyKx1RKX1+fQt?= =?us-ascii?Q?sRpqR6gjLAYdowrtU4Re2a6zC96FamoVE3l+wDJp+4Rghl1z/xL1KT2QAxG1?= =?us-ascii?Q?ftQysBD1/DsJYGsTBmMk1dBuBzG80mMtDAvKeoSuxp3/DYodeGmvbyLVVL2Q?= =?us-ascii?Q?A6XlQEiaZZipYGgGf5pVWMR+q8LVWrp8Rtq7W4SB6uueSmK95cCQHBI33A/5?= =?us-ascii?Q?u/Aw5RPBdMc5hJmBNtxL5Ggw9YSP7t8j15czDcakLTHPtuqS6bSwYM1nmou9?= =?us-ascii?Q?b7s22LD7YvAnJz296Zk7uQQDaLWNQHWgIHYzNXbHH3Ni6xtR/caEDKjODjDy?= =?us-ascii?Q?KyHGvPgIsgMC53C3Bhz96QJnDf0NIAclr9ENQWcFPa0AwvkBqzCuZ95R1BhC?= =?us-ascii?Q?oOnvHyWHiwITanH6YeQfkb1tuyJB24VDtShHwlK3o11VWaW0rivwHCPWahyU?= =?us-ascii?Q?NxDuXW4OXGBzJW7W2EpTKApU5uFhGghJDZO3KNXbSzH3lIme0G1kEpQFmUQr?= =?us-ascii?Q?ikTKR009mt7EvxQZhKJsY+hTDUfSbZfbXbY9ps4xv46ZVtp+fSRrxQrwPP13?= =?us-ascii?Q?jRMPwe5aK8ohrk8zKFii4CPvXTqVxU0gTwILYWxhZJufOSWuknJHkpo8CPZd?= =?us-ascii?Q?JevxLlcPDDmLj2GlgslEg6Fl1bBGIJQJ50sdbTLnyB+56RCGjci+Ea/s/r6b?= =?us-ascii?Q?NXWLGC+ymrV531AXfXii4G0GtvAVUUd+zHhMFKw6/pyIwuWZHnBR9C+JOwiE?= =?us-ascii?Q?GcU7yklNKeXGyN9NF80Hng+T+8av0kYAIixxO6wDlaFZMcbq94N00oGBT6Jo?= =?us-ascii?Q?UYo8OkWkTgQz7A2/OqzIt/YUe9B7aRu8rB/bi3+HC0Mgc/JiffnsARCBX+On?= =?us-ascii?Q?saDUyc3aA7VC2euOrQIPcRwlNljuLfu8pveQeJMeNk/DbuL5RPEdgyTPhDpd?= =?us-ascii?Q?fk/3sFcIx7CQkaQMTMGI3YiLv+IaU7FJ+Rif619On9bFbhMBLL9aQG2ISwL5?= =?us-ascii?Q?RYo0Y8SLzmg4IYiCry8uyyoe1mDcFcbQl084/mbwfJAXLXy6UEWSb+hqqskX?= =?us-ascii?Q?iU/xYqdwJANMmTC9qSpGlRUE+qbwnS7SgDdQc6VkBvZFTgZ50grWzKt2vMoz?= =?us-ascii?Q?Xi9W8l/f3bT9hBwbbkbo/2XxQXLk6XTiNgil9k64oZCGjEByuR5IY+Jn6GKJ?= =?us-ascii?Q?gQyDa9AzxTaV5i+dToaIoSiPiBjtFOr76/HqEw439APi8NsF7OMvWBgEGqIh?= =?us-ascii?Q?Bdv/I7zv0FZ3JImUdbeRK0OqY1RzvpQVB9M4+x+zm0pMWA8w5FP7Icr7qFyu?= =?us-ascii?Q?q3Pp0TQLigEbr+6xZgHmczmqIA585Otj38WdHfPUDIEFxOOPzOpmUcFvhok7?= =?us-ascii?Q?q2uGih6BSEh33Z2Dmdo8DE7/yq1iWPXObBqyJ21csQrDqeWBWR15b5ik/xNJ?= =?us-ascii?Q?N7r98++/PlmSeMDsxVs5gBMO1rYMr0dHZFQby6VproArgAnhgu4yIAK27YlB?= =?us-ascii?Q?e672qfhG45Xc9JBG1OWQl6DbPZp86nCukBIReXlJ4Un37M0rFHn5RYxidvpN?= =?us-ascii?Q?3bKudNhvZkEaowFYwZWRCsTklvMjKpBdQR/lXJlsEr8BWyLaviyR7/j39qi5?= =?us-ascii?Q?lzQlLytdIIJ43dDbGCbJj9/FfEhxD7w=3D?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 40ee0b37-9f06-4b3d-2f0a-08da198817b2 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR02MB8564.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Apr 2022 17:49:13.1708 (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: JS/r8eeasaeaYjy9dXQt8KY0u3vXEMaAza6SfnG5GTPPbIU/JxALyJUHmov9cJa8MRnb2oTF1RLbAiHzffLbC6kxm3oyw7Vbyd71uo2fGPE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR02MB6533 X-Proofpoint-ORIG-GUID: Wb77LP41EDAdvboYZYr31g_LZF787xk0 X-Proofpoint-GUID: Wb77LP41EDAdvboYZYr31g_LZF787xk0 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.858,Hydra:6.0.425,FMLib:17.11.64.514 definitions=2022-04-08_05,2022-04-08_01,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.7 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 , Florian Schmidt , 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: 1649440206017100005 Content-Type: text/plain; charset="utf-8" This patch introduces the logic to support remote NVRAM and adds 'type' attribute to nvram element. Sample XML with new annotation: or Signed-off-by: Prerna Saxena Signed-off-by: Florian Schmidt Signed-off-by: Rohit Kumar --- src/conf/domain_conf.c | 81 +++++++++++++++++++++++++++++++++------- src/qemu/qemu_firmware.c | 6 +++ 2 files changed, 74 insertions(+), 13 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index b83c2f0e6a..bc8c7e0d6f 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -17866,6 +17866,42 @@ virDomainLoaderDefParseXML(xmlNodePtr node, } =20 =20 +static int +virDomainNvramDefParseXML(virStorageSource *nvram, + xmlXPathContextPtr ctxt, + virDomainXMLOption *opt, + unsigned int flags) +{ + g_autofree char *nvramType =3D NULL; + xmlNodePtr source; + + 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) { + nvram->type =3D VIR_STORAGE_TYPE_FILE; + nvram->path =3D virXPathString("string(./os/nvram[1])", ctxt); + return 0; + } else { + if ((nvram->type =3D virStorageTypeFromString(nvramType)) <=3D 0) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("unknown disk 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, nvram, flags, opt= ); + } + return 0; +} + + static int virDomainSchedulerParseCommonAttrs(xmlNodePtr node, virProcessSchedPolicy *policy, @@ -18251,7 +18287,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; @@ -18268,8 +18306,10 @@ virDomainDefParseBootLoaderOptions(virDomainDef *d= ef, =20 if (virXPathNode("./os/nvram[1]", ctxt)) { def->os.loader->nvram =3D g_new0(virStorageSource, 1); - 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->nvram, + ctxt, xmlopt, flags) < 0) + return -1; } if (!fwAutoSelect) def->os.loader->nvramTemplate =3D virXPathString("string(./os/nvra= m[1]/@template)", ctxt); @@ -18324,7 +18364,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.... @@ -18342,7 +18384,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) @@ -18358,7 +18400,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; @@ -19649,7 +19691,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 */ @@ -26949,9 +26991,11 @@ 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; @@ -26976,10 +27020,20 @@ virDomainLoaderDefFormat(virBuffer *buf, =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->type =3D=3D VIR_STORAGE_TYPE_FILE) { virBufferEscapeString(&nvramChildBuf, "%s", loader->nvram->pat= h); + virXMLFormatElementInternal(buf, "nvram", &nvramAttrBuf, &nvra= mChildBuf, false, false); + } else { + virBufferEscapeString(&nvramAttrBuf, " type=3D'%s'", virStorag= eTypeToString(loader->nvram->type)); + if (virDomainDiskSourceFormat(&nvramChildBuf, loader->nvram, "= source", 0, + 0, false, flags, true, xmlopt) <= 0) { + return -1; + } + virXMLFormatElementInternal(buf, "nvram", &nvramAttrBuf, &nvra= mChildBuf, false, true); + } } - virXMLFormatElementInternal(buf, "nvram", &nvramAttrBuf, &nvramChildBu= f, false, false); + + return 0; } =20 static void @@ -28180,8 +28234,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/qemu/qemu_firmware.c b/src/qemu/qemu_firmware.c index 6556a613a8..22ad7d42a1 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; --=20 2.25.1