linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: mst@redhat.com (Michael S. Tsirkin)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 0/3] virtio-mmio: handle BE guests on LE hosts
Date: Mon, 14 Oct 2013 17:05:27 +0300	[thread overview]
Message-ID: <20131014140527.GB5106@redhat.com> (raw)
In-Reply-To: <525BF656.7020207@arm.com>

On Mon, Oct 14, 2013 at 02:49:10PM +0100, Marc Zyngier wrote:
> On 14/10/13 14:39, Alexander Graf wrote:
> > 
> > On 14.10.2013, at 15:24, Marc Zyngier <marc.zyngier@arm.com> wrote:
> > 
> >> On 14/10/13 14:10, Alexander Graf wrote:
> >>>
> >>> On 14.10.2013, at 15:03, Paolo Bonzini <pbonzini@redhat.com> 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?
> > 
> > It's in QEMU's exec.c. It only gets used for config space access that goes through PCI though. Is there any other place where virtio specifies native endianness today?
> 
> That's the main problem. Today's virtio flavour doesn't specify anything
> about endianness, and that is what I'm adding. Or rather (as Paolo put
> it), the prefered endianness of the virtio driver.
> 
> So once (and if) this flags are in place, you always know what you're
> dealing with. And because it is virtio-centric, you can implement it in
> an architecture independent way.
> 
> Also, most of my life revolves around kvmtool. QEMU is hardly on my
> radar, these days (for reasons that are neither technical, nor relevant
> to this forum). So it is important to me that the solution is platform
> emulation agnostic.
> 
> 	M.

f you like, you should be able to implement virtio_is_big_endian
in kvmtool too.

> -- 
> Jazz is not dead. It just smells funny...

  reply	other threads:[~2013-10-14 14:05 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-10-11 14:36 [PATCH 0/3] virtio-mmio: handle BE guests on LE hosts Marc Zyngier
2013-10-11 14:36 ` [PATCH 1/3] virtio: let the guest report its endianess if advertized by the host Marc Zyngier
2013-10-11 14:36 ` [PATCH 2/3] virtio: mmio: fix signature checking for BE guests Marc Zyngier
2013-10-14  8:46   ` Pawel Moll
2013-10-14  9:11     ` Rusty Russell
2013-11-05  3:36       ` Rusty Russell
2013-11-05 10:45         ` Pawel Moll
2013-11-07  0:36           ` Rusty Russell
2013-10-11 14:36 ` [PATCH 3/3] virtio: mmio: access configuration space as little-endian Marc Zyngier
2013-10-14  8:44   ` Pawel Moll
2013-10-12 18:28 ` [PATCH 0/3] virtio-mmio: handle BE guests on LE hosts Michael S. Tsirkin
2013-10-14  8:24   ` Marc Zyngier
2013-10-14  8:59     ` Michael S. Tsirkin
2013-10-14  9:04       ` Pawel Moll
2013-10-14 10:46         ` Michael S. Tsirkin
2013-10-14 10:50           ` Pawel Moll
2013-10-14 23:02             ` Rusty Russell
2013-10-14  9:13     ` Rusty Russell
2013-10-14  8:21 ` Rusty Russell
2013-10-14 12:36   ` Marc Zyngier
2013-10-14 12:51     ` Michael S. Tsirkin
2013-10-17  0:27     ` Rusty Russell
2013-10-14 13:03 ` Paolo Bonzini
2013-10-14 13:10   ` Alexander Graf
2013-10-14 13:13     ` Paolo Bonzini
2013-10-14 13:24     ` Marc Zyngier
2013-10-14 13:29       ` Paolo Bonzini
2013-10-14 13:39       ` Alexander Graf
2013-10-14 13:49         ` Marc Zyngier
2013-10-14 14:05           ` Michael S. Tsirkin [this message]
2013-10-14 14:13             ` Marc Zyngier
2013-10-14 14:16               ` Alexander Graf
2013-10-14 14:52                 ` Marc Zyngier
2013-10-14 14:56                   ` Paolo Bonzini
2013-10-14 15:12                     ` Marc Zyngier
2013-10-14 15:22                       ` Paolo Bonzini
2013-10-14 15:36                         ` Marc Zyngier
2013-10-14 16:50                           ` Paolo Bonzini
2013-10-14 17:10                             ` Michael S. Tsirkin
2013-10-14 23:23                               ` Rusty Russell
2013-10-15  6:38                                 ` Michael S. Tsirkin
2013-10-15  9:19                                   ` Marc Zyngier
2013-10-14 15:45                         ` Anup Patel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20131014140527.GB5106@redhat.com \
    --to=mst@redhat.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).