Index: libvirt-1.2.8/src/conf/domain_conf.c =================================================================== --- libvirt-1.2.8.orig/src/conf/domain_conf.c +++ libvirt-1.2.8/src/conf/domain_conf.c @@ -9690,7 +9690,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.8/src/cpu/cpu_powerpc.c =================================================================== --- libvirt-1.2.8.orig/src/cpu/cpu_powerpc.c +++ libvirt-1.2.8/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.8/src/qemu/qemu_capabilities.c =================================================================== --- libvirt-1.2.8.orig/src/qemu/qemu_capabilities.c +++ libvirt-1.2.8/src/qemu/qemu_capabilities.c @@ -631,7 +631,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", @@ -1996,7 +1997,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: * @@ -3567,7 +3569,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.8/src/qemu/qemu_command.c =================================================================== --- libvirt-1.2.8.orig/src/qemu/qemu_command.c +++ libvirt-1.2.8/src/qemu/qemu_command.c @@ -703,7 +703,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) && STREQ(def->os.machine, "pseries")) { *model = VIR_DOMAIN_CONTROLLER_MODEL_SCSI_IBMVSCSI; } else if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_SCSI_LSI)) { @@ -1250,7 +1251,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) && STREQ(def->os.machine, "pseries")) def->serials[i]->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_SPAPRVIO; if (qemuAssignSpaprVIOAddress(def, &def->serials[i]->info, @@ -1259,7 +1261,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) && STREQ(def->os.machine, "pseries")) def->nvram->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_SPAPRVIO; if (qemuAssignSpaprVIOAddress(def, &def->nvram->info, @@ -4147,7 +4150,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; @@ -8176,7 +8180,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 " @@ -9366,7 +9371,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) && STREQ(def->os.machine, "pseries")) { if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_NVRAM)) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", @@ -9478,7 +9484,8 @@ qemuBuildSerialChrDeviceStr(char **devic { virBuffer cmd = VIR_BUFFER_INITIALIZER; - if ((arch == VIR_ARCH_PPC64) && STREQ(machine, "pseries")) { + if ((arch == VIR_ARCH_PPC64 || + arch == VIR_ARCH_PPC64LE) && STREQ(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", @@ -9900,7 +9907,8 @@ qemuParseCommandLineDisk(virDomainXMLOpt if (VIR_ALLOC(def->src) < 0) goto error; - if (((dom->os.arch == VIR_ARCH_PPC64) && + if (((dom->os.arch == VIR_ARCH_PPC64 || + dom->os.arch == VIR_ARCH_PPC64LE) && dom->os.machine && STREQ(dom->os.machine, "pseries"))) def->bus = VIR_DOMAIN_DISK_BUS_SCSI; else @@ -9992,7 +10000,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 && STREQ(dom->os.machine, "pseries"))) { virReportError(VIR_ERR_INTERNAL_ERROR, _("pseries systems do not support ide devices '%s'"), val); @@ -11233,7 +11242,8 @@ qemuParseCommandLine(virCapsPtr qemuCaps disk->src->type = VIR_STORAGE_TYPE_FILE; if (STREQ(arg, "-cdrom")) { disk->device = VIR_DOMAIN_DISK_DEVICE_CDROM; - if (((def->os.arch == VIR_ARCH_PPC64) && + if (((def->os.arch == VIR_ARCH_PPC64 || + def->os.arch == VIR_ARCH_PPC64LE) && def->os.machine && STREQ(def->os.machine, "pseries"))) disk->bus = VIR_DOMAIN_DISK_BUS_SCSI; if (VIR_STRDUP(disk->dst, "hdc") < 0) @@ -11249,7 +11259,8 @@ 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) && + if (((def->os.arch == VIR_ARCH_PPC64 || + def->os.arch == VIR_ARCH_PPC64LE) && def->os.machine && STREQ(def->os.machine, "pseries"))) disk->bus = VIR_DOMAIN_DISK_BUS_SCSI; } Index: libvirt-1.2.8/src/qemu/qemu_domain.c =================================================================== --- libvirt-1.2.8.orig/src/qemu/qemu_domain.c +++ libvirt-1.2.8/src/qemu/qemu_domain.c @@ -754,6 +754,7 @@ qemuDomainDefPostParse(virDomainDefPtr d break; case VIR_ARCH_PPC64: + case VIR_ARCH_PPC64LE: addPCIRoot = true; addDefaultUSBKBD = true; addDefaultUSBMouse = true;