[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[libvirt] [PATCH 2/2] libxl: add default firmwares to driver config object



Prefer firmwares specified via --with-loader-nvram configure
option. If none are specified, use the Xen-provided default
firmwares found in LIBXL_FIRMWARE_DIR.

Signed-off-by: Jim Fehlig <jfehlig suse com>
---
 src/libxl/libxl_conf.c | 21 +++++++++++++++++++++
 src/libxl/libxl_conf.h |  4 ++++
 2 files changed, 25 insertions(+)

diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c
index c399f5c..54bed6b 100644
--- a/src/libxl/libxl_conf.c
+++ b/src/libxl/libxl_conf.c
@@ -104,6 +104,7 @@ libxlDriverConfigDispose(void *obj)
     VIR_FREE(cfg->saveDir);
     VIR_FREE(cfg->autoDumpDir);
     VIR_FREE(cfg->lockManagerName);
+    virFirmwareFreeList(cfg->firmwares, cfg->nfirmwares);
 }
 
 
@@ -1774,6 +1775,26 @@ libxlDriverConfigNew(void)
         goto error;
     }
 
+#ifdef DEFAULT_LOADER_NVRAM
+    if (virFirmwareParseList(DEFAULT_LOADER_NVRAM,
+                             &cfg->firmwares,
+                             &cfg->nfirmwares) < 0)
+        goto error;
+
+#else
+    if (VIR_ALLOC_N(cfg->firmwares, 2) < 0)
+        goto error;
+    cfg->nfirmwares = 2;
+    if (VIR_ALLOC(cfg->firmwares[0]) < 0 || VIR_ALLOC(cfg->firmwares[1]) < 0)
+        goto error;
+
+    if (VIR_STRDUP(cfg->firwares[0]->name,
+                   LIBXL_FIRMWARE_DIR "/hvmloader") < 0 ||
+        VIR_STRDUP(cfg->firwares[1]->name,
+                   LIBXL_FIRMWARE_DIR "/ovmf.bin") < 0)
+        goto error;
+#endif
+
     return cfg;
 
  error:
diff --git a/src/libxl/libxl_conf.h b/src/libxl/libxl_conf.h
index c5b9429..e55717a 100644
--- a/src/libxl/libxl_conf.h
+++ b/src/libxl/libxl_conf.h
@@ -39,6 +39,7 @@
 # include "virchrdev.h"
 # include "virhostdev.h"
 # include "locking/lock_manager.h"
+# include "virfirmware.h"
 
 # define LIBXL_DRIVER_NAME "xenlight"
 # define LIBXL_VNC_PORT_MIN  5900
@@ -107,6 +108,9 @@ struct _libxlDriverConfig {
     char *libDir;
     char *saveDir;
     char *autoDumpDir;
+
+    virFirmwarePtr *firmwares;
+    size_t nfirmwares;
 };
 
 
-- 
2.1.4


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]