From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marc Zyngier Subject: Re: [PATCH 0/3] virtio-mmio: handle BE guests on LE hosts Date: Mon, 14 Oct 2013 14:24:25 +0100 Message-ID: <525BF089.9050408@arm.com> References: <1381502171-8187-1-git-send-email-marc.zyngier@arm.com> <525BEBB4.4050603@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=WINDOWS-1252 Content-Transfer-Encoding: 8BIT Cc: Paolo Bonzini , "kvm@vger.kernel.org mailing list" , Pawel Moll , "Michael S. Tsirkin" , "kvmarm@lists.cs.columbia.edu" , linux-arm-kernel To: Alexander Graf Return-path: Received: from service87.mimecast.com ([91.220.42.44]:42315 "EHLO service87.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756036Ab3JNNY2 convert rfc822-to-8bit (ORCPT ); Mon, 14 Oct 2013 09:24:28 -0400 In-Reply-To: Sender: kvm-owner@vger.kernel.org List-ID: On 14/10/13 14:10, Alexander Graf wrote: > > On 14.10.2013, at 15:03, Paolo Bonzini wrote: > >> Il 11/10/2013 16:36, Marc Zyngier ha scritto: >>> This small patch series adds just enough kernel infrastructure and >>> fixes to allow a BE guest to use virtio-mmio on a LE host, provided >>> that the host actually supports such madness. >> >> More precisely, it allows the guest drivers to pick the endianness they >> prefer. Mixed-endian virtio works fine on QEMU with e.g. a mips guest >> in emulation mode, because then any given QEMU binary will always use >> the same endianness (e.g. big for qemu-system-mips). > > We have the same problem (runtime switchable endianness) on PowerPC. IBM POWER is gaining Little Endian support in Linux now, so we could easily end up with an LE guest on a BE host. > > IIRC the way we're going to solve this is to hack up virtio_is_big_endian() to evaluate the first CPU's endianness mode (which will always be the same as all other CPU's endianness mode due to hypercall restrictions). I have implemented something similar for MMIO emulation in KVM/arm (except that I only care about the faulting CPU). See my initial patch for that: https://lists.cs.columbia.edu/pipermail/kvmarm/2013-October/007359.html That doesn't really change the non-trapping virtio accesses, though. Where is this virtio_is_big_endian() thing? > You could do the same with ARM if you need to support guest kernels before the new virtio stuff is there. LE POWER is definitely already reality upstream. So is BE ARM support... M. -- Jazz is not dead. It just smells funny...