]> xenbits.xensource.com Git - xen.git/commitdiff
tools: hvmloader: select BIOS through xenstore.
authorIan Campbell <ian.campbell@citrix.com>
Tue, 12 Apr 2011 13:00:49 +0000 (14:00 +0100)
committerIan Campbell <ian.campbell@citrix.com>
Tue, 12 Apr 2011 13:00:49 +0000 (14:00 +0100)
Allow the toolstack to select the BIOS to use via a xenstore key.

Defaults to "rombios" for compatibility with toolstacks which do not
write the key (e.g. xend).

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Keir Fraser <keir@xen.org>
tools/firmware/hvmloader/hvmloader.c

index 4fcbd9c49918aaeb1651d148b4e380e17380ddbe..bbbc964f9c518078ece5cadac9aa683fa6ab2255 100644 (file)
@@ -337,10 +337,30 @@ static void cmos_write_memory_size(void)
     cmos_outb(0x35, (uint8_t)( alt_mem >> 8));
 }
 
+struct bios_info {
+    const char *key;
+    const struct bios_config *bios;
+} bios_configs[] = {
+    { "rombios", &rombios_config, },
+    { NULL, NULL }
+};
 
 static const struct bios_config *detect_bios(void)
 {
-    return &rombios_config;
+    const struct bios_info *b;
+    const char *bios;
+
+    bios = xenstore_read("hvmloader/bios");
+    if ( !bios )
+        bios = "rombios";
+
+    for ( b = &bios_configs[0]; b->key != NULL; b++ )
+        if ( !strcmp(bios, b->key) )
+            return b->bios;
+
+    printf("Unknown BIOS %s, no ROM image found\n", bios);
+    BUG();
+    return NULL;
 }
 
 int main(void)