On Thu, Oct 01, 2015 at 14:47:11 +0200, Andrea Bolognani wrote: > qemu-kvm can be used to run ppc64 guests on ppc64le hosts and vice > versa, since the hardware is actually the same and the endianness > is chosen by the guest kernel. > > Up until now, however, libvirt didn't allow the use of qemu-kvm > to run guests if their endianness didn't match the host's. > > Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1267882 > --- > src/qemu/qemu_capabilities.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c > index eb2edf5..8253398 100644 > --- a/src/qemu/qemu_capabilities.c > +++ b/src/qemu/qemu_capabilities.c > @@ -768,7 +768,7 @@ virQEMUCapsInitGuest(virCapsPtr caps, > char *binary = NULL; > virQEMUCapsPtr qemubinCaps = NULL; > virQEMUCapsPtr kvmbinCaps = NULL; > - bool native_kvm, x86_32on64_kvm, arm_32on64_kvm; > + bool native_kvm, x86_32on64_kvm, arm_32on64_kvm, ppc64_kvm; > int ret = -1; > > /* Check for existence of base emulator, or alternate base > @@ -788,14 +788,16 @@ virQEMUCapsInitGuest(virCapsPtr caps, > * - host & guest arches match > * - hostarch is x86_64 and guest arch is i686 (needs -cpu qemu32) > * - hostarch is aarch64 and guest arch is armv7l (needs -cpu aarch64=off) > + * - hostarch and guestarch are both ppc64* > */ > native_kvm = (hostarch == guestarch); > x86_32on64_kvm = (hostarch == VIR_ARCH_X86_64 && > guestarch == VIR_ARCH_I686); > arm_32on64_kvm = (hostarch == VIR_ARCH_AARCH64 && > guestarch == VIR_ARCH_ARMV7L); > + ppc64_kvm = (ARCH_IS_PPC64(hostarch) && ARCH_IS_PPC64(guestarch)); > > - if (native_kvm || x86_32on64_kvm || arm_32on64_kvm) { > + if (native_kvm || x86_32on64_kvm || arm_32on64_kvm || ppc64_kvm) { > const char *kvmbins[] = { > "/usr/libexec/qemu-kvm", /* RHEL */ > "qemu-kvm", /* Fedora */ I wonder if this case shouldn't somehow fall into the hostarch == guestarch case, via something like native_kvm = ARCH_CANONICAL(hostarch) == ARCH_CANONICAL(guestarch), but probably not since it maybe non-trivial (and depending on the actual usage) what a canonical architecture would be for every given architecture we support. In other words, ACK :-) Jirka -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list