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