l=$(echo $with_loader_nvram | tr ':' '\n' | wc -l)
if test $(expr $l % 2) -ne 0 ; then
AC_MSG_ERROR([Malformed --with-loader-nvram argument])
+ elif test $l -gt 0 ; then
+ AC_MSG_WARN([Note that --with-loader-nvram is obsolete and will be removed soon])
fi
AC_DEFINE_UNQUOTED([DEFAULT_LOADER_NVRAM], ["$with_loader_nvram"],
[List of loader:nvram pairs])
])
AC_DEFUN([LIBVIRT_RESULT_LOADER_NVRAM], [
- LIBVIRT_RESULT([Loader/NVRAM], [$with_loader_nvram])
+ if test "x$with_loader_nvram" != "xno" && \
+ test "x$with_loader_nvram" != "x" ; then
+ LIBVIRT_RESULT([Loader/NVRAM], [$with_loader_nvram],
+ [!!! Using this configure option is strongly discouraged !!!])
+ else
+ LIBVIRT_RESULT([Loader/NVRAM], [$with_loader_nvram])
+ fi
])
# source tree. These metadata files are distributed alongside any
# firmware images intended for use with QEMU.
#
+# NOTE: if ANY firmware metadata files are detected, this setting
+# will be COMPLETELY IGNORED.
+#
# ------------------------------------------
#
# When a domain is configured to use UEFI instead of standard
#include "qemu_conf.h"
#include "qemu_capabilities.h"
#include "qemu_domain.h"
+#include "qemu_firmware.h"
#include "qemu_security.h"
#include "viruuid.h"
#include "virbuffer.h"
static int
virQEMUDriverConfigLoadNVRAMEntry(virQEMUDriverConfigPtr cfg,
- virConfPtr conf)
+ virConfPtr conf,
+ bool privileged)
{
VIR_AUTOSTRINGLIST nvram = NULL;
size_t i;
if (virConfGetValueStringList(conf, "nvram", false, &nvram) < 0)
return -1;
if (nvram) {
+ VIR_AUTOSTRINGLIST fwList = NULL;
+
virFirmwareFreeList(cfg->firmwares, cfg->nfirmwares);
+ if (qemuFirmwareFetchConfigs(&fwList, privileged) < 0)
+ return -1;
+
+ if (fwList) {
+ VIR_WARN("Obsolete nvram variable is set while firmware metadata "
+ "files found. Note that the nvram config file variable is "
+ "going to be ignored.");
+ cfg->nfirmwares = 0;
+ return 0;
+ }
+
cfg->nfirmwares = virStringListLength((const char *const *)nvram);
if (nvram[0] && VIR_ALLOC_N(cfg->firmwares, cfg->nfirmwares) < 0)
return -1;
if (virQEMUDriverConfigLoadLogEntry(cfg, conf) < 0)
return -1;
- if (virQEMUDriverConfigLoadNVRAMEntry(cfg, conf) < 0)
+ if (virQEMUDriverConfigLoadNVRAMEntry(cfg, conf, privileged) < 0)
return -1;
if (virQEMUDriverConfigLoadGlusterDebugEntry(cfg, conf) < 0)