From 0fe504f15ab87bdf960a65ae2323b7f47f646f05 Mon Sep 17 00:00:00 2001 From: Jim Fehlig Date: Thu, 19 Mar 2015 19:03:08 -0600 Subject: [PATCH] xenconfig: don't use "kernel" for hvmloader In xl config, hvmloader is implied for hvm guests. It is not specified with the "kernel" option like xm config. The "kernel" option, along with "ramdisk" and "extra", is used for HVM direct kernel boot. Instead of using "kernel" option to populate virDomainDef object's os.loader->path, use hvmloader discovered when gathering capabilities. This change required fixing initialization of capabilities in the test utils and removing 'kernel = "/usr/lib/xen/boot/hvmloader"' from the test config files. --- src/xenconfig/xen_xl.c | 20 ++++++++++--------- tests/testutilsxen.c | 8 +++++--- tests/xlconfigdata/test-fullvirt-multiusb.cfg | 1 - tests/xlconfigdata/test-new-disk.cfg | 1 - tests/xlconfigdata/test-spice.cfg | 1 - 5 files changed, 16 insertions(+), 15 deletions(-) diff --git a/src/xenconfig/xen_xl.c b/src/xenconfig/xen_xl.c index 1af162a5e4..12050f3bf7 100644 --- a/src/xenconfig/xen_xl.c +++ b/src/xenconfig/xen_xl.c @@ -59,16 +59,22 @@ extern int xlu_disk_parse(XLU_Config *cfg, #endif static int -xenParseXLOS(virConfPtr conf, virDomainDefPtr def) +xenParseXLOS(virConfPtr conf, virDomainDefPtr def, virCapsPtr caps) { size_t i; if (STREQ(def->os.type, "hvm")) { const char *boot; - if (VIR_ALLOC(def->os.loader) < 0 || - xenConfigCopyString(conf, "kernel", &def->os.loader->path) < 0) - return -1; + for (i = 0; i < caps->nguests; i++) { + if (STREQ(caps->guests[i]->ostype, "hvm") && + caps->guests[i]->arch.id == def->os.arch) { + if (VIR_ALLOC(def->os.loader) < 0 || + VIR_STRDUP(def->os.loader->path, + caps->guests[i]->arch.defaultInfo.loader) < 0) + return -1; + } + } if (xenConfigGetString(conf, "boot", &boot, "c") < 0) return -1; @@ -423,7 +429,7 @@ xenParseXL(virConfPtr conf, virCapsPtr caps, int xendConfigVersion) if (xenParseConfigCommon(conf, def, caps, xendConfigVersion) < 0) goto cleanup; - if (xenParseXLOS(conf, def) < 0) + if (xenParseXLOS(conf, def, caps) < 0) goto cleanup; if (xenParseXLDisk(conf, def) < 0) @@ -453,10 +459,6 @@ xenFormatXLOS(virConfPtr conf, virDomainDefPtr def) if (xenConfigSetString(conf, "builder", "hvm") < 0) return -1; - if (def->os.loader && def->os.loader->path && - xenConfigSetString(conf, "kernel", def->os.loader->path) < 0) - return -1; - for (i = 0; i < def->os.nBootDevs; i++) { switch (def->os.bootDevs[i]) { case VIR_DOMAIN_BOOT_FLOPPY: diff --git a/tests/testutilsxen.c b/tests/testutilsxen.c index df1d1243b2..c60e32419a 100644 --- a/tests/testutilsxen.c +++ b/tests/testutilsxen.c @@ -92,7 +92,8 @@ testXLInitCaps(void) if ((machines = virCapabilitiesAllocMachines(x86_machines, nmachines)) == NULL) goto cleanup; if ((guest = virCapabilitiesAddGuest(caps, "hvm", VIR_ARCH_X86_64, - "/usr/lib/xen/bin/qemu-dm", NULL, + "/usr/lib/xen/bin/qemu-system-i386", + "/usr/lib/xen/boot/hvmloader", nmachines, machines)) == NULL) goto cleanup; machines = NULL; @@ -104,8 +105,9 @@ testXLInitCaps(void) goto cleanup; if ((guest = virCapabilitiesAddGuest(caps, "xen", VIR_ARCH_X86_64, - "/usr/lib/xen/bin/qemu-dm", NULL, - nmachines, machines)) == NULL) + "/usr/lib/xen/bin/qemu-system-i386", + NULL, + nmachines, machines)) == NULL) goto cleanup; machines = NULL; diff --git a/tests/xlconfigdata/test-fullvirt-multiusb.cfg b/tests/xlconfigdata/test-fullvirt-multiusb.cfg index b9e1b0a8c4..68a2614eb3 100755 --- a/tests/xlconfigdata/test-fullvirt-multiusb.cfg +++ b/tests/xlconfigdata/test-fullvirt-multiusb.cfg @@ -22,7 +22,6 @@ vif = [ "mac=00:16:3e:66:92:9c,bridge=xenbr1,script=vif-bridge,model=e1000,type= parallel = "none" serial = "none" builder = "hvm" -kernel = "/usr/lib/xen/boot/hvmloader" boot = "d" disk = [ "/dev/HostVG/XenGuest2,raw,hda,w,backendtype=phy", "/root/boot.iso,raw,hdc,r,backendtype=qdisk,devtype=cdrom" ] usb = 1 diff --git a/tests/xlconfigdata/test-new-disk.cfg b/tests/xlconfigdata/test-new-disk.cfg index 180ce924b0..9e9f1066e7 100644 --- a/tests/xlconfigdata/test-new-disk.cfg +++ b/tests/xlconfigdata/test-new-disk.cfg @@ -21,6 +21,5 @@ vif = [ "mac=00:16:3e:66:92:9c,bridge=xenbr1,script=vif-bridge,model=e1000,type= parallel = "none" serial = "none" builder = "hvm" -kernel = "/usr/lib/xen/boot/hvmloader" boot = "d" disk = [ "/dev/HostVG/XenGuest2,raw,hda,w,backendtype=phy", "/var/lib/libvirt/images/XenGuest2-home,qcow2,hdb,w,backendtype=qdisk", "/root/boot.iso,raw,hdc,r,backendtype=qdisk,devtype=cdrom" ] diff --git a/tests/xlconfigdata/test-spice.cfg b/tests/xlconfigdata/test-spice.cfg index a97cd20a0a..21f0e55afd 100644 --- a/tests/xlconfigdata/test-spice.cfg +++ b/tests/xlconfigdata/test-spice.cfg @@ -17,7 +17,6 @@ vif = [ "mac=00:16:3e:66:92:9c,bridge=xenbr1,script=vif-bridge,model=e1000,type= parallel = "none" serial = "none" builder = "hvm" -kernel = "/usr/lib/xen/boot/hvmloader" boot = "d" disk = [ "/dev/HostVG/XenGuest2,raw,hda,w,backendtype=phy", "/root/boot.iso,raw,hdc,r,backendtype=qdisk,devtype=cdrom" ] sdl = 0