File libvirt-ppc64le-support.patch of Package libvirt

Index: libvirt-1.2.5/src/conf/domain_conf.c
===================================================================
--- libvirt-1.2.5.orig/src/conf/domain_conf.c
+++ libvirt-1.2.5/src/conf/domain_conf.c
@@ -9391,7 +9391,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.5/src/cpu/cpu_powerpc.c
===================================================================
--- libvirt-1.2.5.orig/src/cpu/cpu_powerpc.c
+++ libvirt-1.2.5/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.5/src/qemu/qemu_capabilities.c
===================================================================
--- libvirt-1.2.5.orig/src/qemu/qemu_capabilities.c
+++ libvirt-1.2.5/src/qemu/qemu_capabilities.c
@@ -612,7 +612,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",
@@ -1941,7 +1942,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:
          *
@@ -3466,7 +3468,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.5/src/qemu/qemu_command.c
===================================================================
--- libvirt-1.2.5.orig/src/qemu/qemu_command.c
+++ libvirt-1.2.5/src/qemu/qemu_command.c
@@ -718,7 +718,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)) {
@@ -1420,7 +1421,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,
@@ -1429,7 +1431,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,
@@ -4210,7 +4213,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;
@@ -7965,7 +7969,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 "
@@ -9155,7 +9160,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",
@@ -9267,7 +9273,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",
@@ -9694,7 +9701,8 @@ qemuParseCommandLineDisk(virDomainXMLOpt
     if (VIR_ALLOC(def) < 0)
         goto cleanup;
 
-    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
@@ -9786,7 +9794,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);
@@ -11020,7 +11029,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)
@@ -11036,7 +11046,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.5/src/qemu/qemu_domain.c
===================================================================
--- libvirt-1.2.5.orig/src/qemu/qemu_domain.c
+++ libvirt-1.2.5/src/qemu/qemu_domain.c
@@ -752,6 +752,7 @@ qemuDomainDefPostParse(virDomainDefPtr d
        break;
 
     case VIR_ARCH_PPC64:
+    case VIR_ARCH_PPC64LE:
         addPCIRoot = true;
         addDefaultUSBKBD = true;
         addDefaultUSBMouse = true;