Index: libvirt-1.2.10/src/conf/domain_conf.c =================================================================== --- libvirt-1.2.10.orig/src/conf/domain_conf.c +++ libvirt-1.2.10/src/conf/domain_conf.c @@ -10043,7 +10043,8 @@ virDomainVideoDefaultType(const virDomai (STREQ(def->os.type, "xen") || STREQ(def->os.type, "linux"))) return VIR_DOMAIN_VIDEO_TYPE_XEN; - else if (def->os.arch == VIR_ARCH_PPC64) + else if (def->os.arch == VIR_ARCH_PPC64 || + def->os.arch == VIR_ARCH_PPC64LE) return VIR_DOMAIN_VIDEO_TYPE_VGA; else return VIR_DOMAIN_VIDEO_TYPE_CIRRUS; Index: libvirt-1.2.10/src/cpu/cpu_powerpc.c =================================================================== --- libvirt-1.2.10.orig/src/cpu/cpu_powerpc.c +++ libvirt-1.2.10/src/cpu/cpu_powerpc.c @@ -38,7 +38,7 @@ VIR_LOG_INIT("cpu.cpu_powerpc"); -static const virArch archs[] = { VIR_ARCH_PPC64 }; +static const virArch archs[] = { VIR_ARCH_PPC64, VIR_ARCH_PPC64LE }; struct ppc_vendor { char *name; Index: libvirt-1.2.10/src/qemu/qemu_capabilities.c =================================================================== --- libvirt-1.2.10.orig/src/qemu/qemu_capabilities.c +++ libvirt-1.2.10/src/qemu/qemu_capabilities.c @@ -633,7 +633,8 @@ virQEMUCapsProbeCPUModels(virQEMUCapsPtr if (qemuCaps->arch == VIR_ARCH_I686 || qemuCaps->arch == VIR_ARCH_X86_64) { parse = virQEMUCapsParseX86Models; - } else if (qemuCaps->arch == VIR_ARCH_PPC64) { + } else if (qemuCaps->arch == VIR_ARCH_PPC64 || + qemuCaps->arch == VIR_ARCH_PPC64LE) { parse = virQEMUCapsParsePPCModels; } else { VIR_DEBUG("don't know how to parse %s CPU models", @@ -2003,7 +2004,8 @@ bool virQEMUCapsHasPCIMultiBus(virQEMUCa return true; if (def->os.arch == VIR_ARCH_PPC || - def->os.arch == VIR_ARCH_PPC64) { + def->os.arch == VIR_ARCH_PPC64|| + def->os.arch == VIR_ARCH_PPC64LE) { /* * Usage of pci.0 naming: * @@ -3573,7 +3575,9 @@ virQEMUCapsSupportsChardev(virDomainDefP !virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE)) return false; - if ((def->os.arch == VIR_ARCH_PPC) || (def->os.arch == VIR_ARCH_PPC64)) { + if (def->os.arch == VIR_ARCH_PPC || + def->os.arch == VIR_ARCH_PPC64 || + def->os.arch == VIR_ARCH_PPC64LE) { /* only pseries need -device spapr-vty with -chardev */ return (chr->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_SERIAL && chr->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_SPAPRVIO); Index: libvirt-1.2.10/src/qemu/qemu_command.c =================================================================== --- libvirt-1.2.10.orig/src/qemu/qemu_command.c +++ libvirt-1.2.10/src/qemu/qemu_command.c @@ -713,7 +713,8 @@ qemuSetSCSIControllerModel(virDomainDefP return -1; } } else { - if ((def->os.arch == VIR_ARCH_PPC64) && + if ((def->os.arch == VIR_ARCH_PPC64 || + def->os.arch == VIR_ARCH_PPC64LE) && STRPREFIX(def->os.machine, "pseries")) { *model = VIR_DOMAIN_CONTROLLER_MODEL_SCSI_IBMVSCSI; } else if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_SCSI_LSI)) { @@ -1264,7 +1265,8 @@ int qemuDomainAssignSpaprVIOAddresses(vi for (i = 0; i < def->nserials; i++) { if (def->serials[i]->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_SERIAL && - (def->os.arch == VIR_ARCH_PPC64) && + (def->os.arch == VIR_ARCH_PPC64 || + def->os.arch == VIR_ARCH_PPC64LE) && STRPREFIX(def->os.machine, "pseries")) def->serials[i]->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_SPAPRVIO; if (qemuAssignSpaprVIOAddress(def, &def->serials[i]->info, @@ -1273,7 +1275,8 @@ int qemuDomainAssignSpaprVIOAddresses(vi } if (def->nvram) { - if (def->os.arch == VIR_ARCH_PPC64 && + if ((def->os.arch == VIR_ARCH_PPC64 || + def->os.arch == VIR_ARCH_PPC64LE) && STRPREFIX(def->os.machine, "pseries")) def->nvram->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_SPAPRVIO; if (qemuAssignSpaprVIOAddress(def, &def->nvram->info, @@ -4195,7 +4198,8 @@ qemuBuildUSBControllerDevStr(virDomainDe model = def->model; if (model == -1) { - if (domainDef->os.arch == VIR_ARCH_PPC64) + if (domainDef->os.arch == VIR_ARCH_PPC64 || + domainDef->os.arch == VIR_ARCH_PPC64LE) model = VIR_DOMAIN_CONTROLLER_MODEL_USB_PCI_OHCI; else model = VIR_DOMAIN_CONTROLLER_MODEL_USB_PIIX3_UHCI; @@ -8573,7 +8577,8 @@ qemuBuildCommandLine(virConnectPtr conn, !qemuDomainMachineIsQ35(def) && (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_PIIX3_USB_UHCI) || (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_PCI_OHCI) && - def->os.arch == VIR_ARCH_PPC64))) { + (def->os.arch == VIR_ARCH_PPC64 || + def->os.arch == VIR_ARCH_PPC64LE)))) { if (usblegacy) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", _("Multiple legacy USB controllers are " @@ -9771,7 +9776,8 @@ qemuBuildCommandLine(virConnectPtr conn, } if (def->nvram) { - if (def->os.arch == VIR_ARCH_PPC64 && + if ((def->os.arch == VIR_ARCH_PPC64 || + def->os.arch == VIR_ARCH_PPC64LE) && STRPREFIX(def->os.machine, "pseries")) { if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_NVRAM)) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", @@ -9894,7 +9900,8 @@ qemuBuildSerialChrDeviceStr(char **devic { virBuffer cmd = VIR_BUFFER_INITIALIZER; - if ((arch == VIR_ARCH_PPC64) && STRPREFIX(machine, "pseries")) { + if ((arch == VIR_ARCH_PPC64 || + arch == VIR_ARCH_PPC64LE) && STRPREFIX(machine, "pseries")) { if (serial->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_SERIAL && serial->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_SPAPRVIO) { virBufferAsprintf(&cmd, "spapr-vty,chardev=char%s", @@ -10316,8 +10323,9 @@ qemuParseCommandLineDisk(virDomainXMLOpt if (VIR_ALLOC(def->src) < 0) goto error; - if (((dom->os.arch == VIR_ARCH_PPC64) && - dom->os.machine && STRPREFIX(dom->os.machine, "pseries"))) + if (((dom->os.arch == VIR_ARCH_PPC64 || + dom->os.arch == VIR_ARCH_PPC64LE) && + dom->os.machine && STRPREFIX(dom->os.machine, "pseries"))) def->bus = VIR_DOMAIN_DISK_BUS_SCSI; else def->bus = VIR_DOMAIN_DISK_BUS_IDE; @@ -10409,7 +10417,8 @@ qemuParseCommandLineDisk(virDomainXMLOpt } else if (STREQ(keywords[i], "if")) { if (STREQ(values[i], "ide")) { def->bus = VIR_DOMAIN_DISK_BUS_IDE; - if (((dom->os.arch == VIR_ARCH_PPC64) && + if (((dom->os.arch == VIR_ARCH_PPC64 || + dom->os.arch == VIR_ARCH_PPC64LE) && dom->os.machine && STRPREFIX(dom->os.machine, "pseries"))) { virReportError(VIR_ERR_INTERNAL_ERROR, _("pseries systems do not support ide devices '%s'"), val); @@ -11654,8 +11663,9 @@ qemuParseCommandLine(virCapsPtr qemuCaps } if (STREQ(arg, "-cdrom")) { disk->device = VIR_DOMAIN_DISK_DEVICE_CDROM; - if (((def->os.arch == VIR_ARCH_PPC64) && - def->os.machine && STRPREFIX(def->os.machine, "pseries"))) + if (((def->os.arch == VIR_ARCH_PPC64 || + def->os.arch == VIR_ARCH_PPC64LE) && + def->os.machine && STRPREFIX(def->os.machine, "pseries"))) disk->bus = VIR_DOMAIN_DISK_BUS_SCSI; if (VIR_STRDUP(disk->dst, "hdc") < 0) goto error; @@ -11670,9 +11680,10 @@ qemuParseCommandLine(virCapsPtr qemuCaps disk->bus = VIR_DOMAIN_DISK_BUS_IDE; else disk->bus = VIR_DOMAIN_DISK_BUS_SCSI; - if (((def->os.arch == VIR_ARCH_PPC64) && - def->os.machine && STRPREFIX(def->os.machine, "pseries"))) - disk->bus = VIR_DOMAIN_DISK_BUS_SCSI; + if (((def->os.arch == VIR_ARCH_PPC64 || + def->os.arch == VIR_ARCH_PPC64LE) && + def->os.machine && STRPREFIX(def->os.machine, "pseries"))) + disk->bus = VIR_DOMAIN_DISK_BUS_SCSI; } if (VIR_STRDUP(disk->dst, arg + 1) < 0) goto error; Index: libvirt-1.2.10/src/qemu/qemu_domain.c =================================================================== --- libvirt-1.2.10.orig/src/qemu/qemu_domain.c +++ libvirt-1.2.10/src/qemu/qemu_domain.c @@ -980,6 +980,7 @@ qemuDomainDefPostParse(virDomainDefPtr d break; case VIR_ARCH_PPC64: + case VIR_ARCH_PPC64LE: addPCIRoot = true; addDefaultUSBKBD = true; addDefaultUSBMouse = true;