[libvirt] [PATCH] qemu: Add conditions for qemu-kvm use on ppc64
Jiri Denemark
jdenemar at redhat.com
Thu Oct 1 15:00:01 UTC 2015
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
More information about the libvir-list
mailing list