From: Anthony Liguori <anthony@codemonkey.ws>
To: Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Alexander Graf <agraf@suse.de>
Cc: "Liu Ping Fan" <pingfank@linux.vnet.ibm.com>,
"Jan Kiszka" <jan.kiszka@web.de>,
"qemu-devel Developers" <qemu-devel@nongnu.org>,
"qemu-ppc@nongnu.org list:PowerPC" <qemu-ppc@nongnu.org>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Andreas Färber" <afaerber@suse.de>,
"Hervé Poussineau" <hpoussin@reactos.org>
Subject: Re: [Qemu-devel] [Qemu-ppc] [PATCH v3 11/14] ioport: Switch dispatching to memory core layer
Date: Fri, 12 Jul 2013 12:49:59 -0500 [thread overview]
Message-ID: <878v1bvfaw.fsf@codemonkey.ws> (raw)
In-Reply-To: <1373628932.19894.158.camel@pasglop>
Benjamin Herrenschmidt <benh@kernel.crashing.org> writes:
> On Fri, 2013-07-12 at 05:18 +0200, Alexander Graf wrote:
>> We model a single system wide io space today and access to that one
>> happens through you pci host controller. I just messed up the
>> terminology here.
>
> Single system wide IO space is broken. We have separate IO space per
> PHB. That was working afaik.
Hrm, probably not. We don't propagate I/O spaces very well today.
> In any case, I completely object to all that business with conversion in
> bridges.
>
> That's fundamentally WRONG.
>
> The whole business of endianness in qemu is a mess. In the end what
> matters and the only thing that does is:
It's not as bad as you think I suspect.
> * The endianness of a given memory access by the guest (which may or
> may not be the endianness of the guest -> MSR:LE, byteswap load/store
> instsructions, etc..)
Correct.
> vs.
>
> * The endianness of the target device register (and I say register ...
> a framebuffer does NOT have endianness per-se and thus accesses to BAR
> mapping a "memory" range (framebuffer, ROM, ...) should go such that the
> *byte order* of individual bytes is preserved, which typically means
> untranslated).
Yes. To put it another way, an MMIO write is a store and depending on
the VCPU, that will result in a write with a certain byte order. That
byte order should be preserved.
However, what we don't model today, and why we have the silly
endianness in MemoryRegionOps, is the fact that I/O may pass through
multiple layers and those layers may change byte ordering.
We jump through great hoops to have a flat dispatch table. I've never
liked it but that's what we do. That means that in cases where a host
bridge may do byte swapping, we cannot easily support that.
That's really what endianness is for but it's abused.
> Unless they are completely broken (and those exist, don't get me wrong,
> though mostly they are a thing of a past long gone), bridges and busses
> have no effect on endianness.
That's simply not true. There are programmable PCI host bridges that
support byte swapping. Some allow this to be done on a per-device basis
too.
> So I'm not sure what you guys are up to, but from what I read, it's
> wrong, and the fact at this stage is that your broke IO space (and thus
> virtio and VGA) on powerpc (including pseries).
I'm not sure what this patch was trying to do but it was certainly
wrong.
Regards,
Anthony Liguori
>
> Cheers,
> Ben.
next prev parent reply other threads:[~2013-07-12 17:50 UTC|newest]
Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-22 6:06 [Qemu-devel] [PATCH v3 00/14] Refactor portio dispatching Jan Kiszka
2013-06-22 6:06 ` [Qemu-devel] [PATCH v3 01/14] adlib: replace register_ioport* Jan Kiszka
2013-06-22 6:06 ` [Qemu-devel] [PATCH v3 02/14] applesmc: " Jan Kiszka
2013-06-22 6:06 ` [Qemu-devel] [PATCH v3 03/14] wdt_ib700: " Jan Kiszka
2013-06-22 6:06 ` [Qemu-devel] [PATCH v3 04/14] i82374: " Jan Kiszka
2013-06-22 6:06 ` [Qemu-devel] [PATCH v3 05/14] prep: " Jan Kiszka
2013-06-22 6:06 ` [Qemu-devel] [PATCH v3 06/14] vt82c686: " Jan Kiszka
2013-06-22 6:07 ` [Qemu-devel] [PATCH v3 07/14] Privatize register_ioport_read/write Jan Kiszka
2013-06-22 6:07 ` [Qemu-devel] [PATCH v3 08/14] isa: implement isa_is_ioport_assigned via memory_region_find Jan Kiszka
2013-06-22 6:07 ` [Qemu-devel] [PATCH v3 09/14] vmware-vga: Accept unaligned I/O accesses Jan Kiszka
2013-06-22 6:07 ` [Qemu-devel] [PATCH v3 10/14] xen: Mark fixed platform I/O as unaligned Jan Kiszka
2013-06-22 6:07 ` [Qemu-devel] [PATCH v3 11/14] ioport: Switch dispatching to memory core layer Jan Kiszka
2013-06-23 20:50 ` Hervé Poussineau
2013-06-24 6:07 ` Jan Kiszka
2013-07-11 12:29 ` Alexander Graf
2013-07-11 12:34 ` Alexander Graf
2013-07-11 12:46 ` Andreas Färber
2013-07-11 12:48 ` Alexander Graf
2013-07-11 13:28 ` Alexander Graf
2013-07-11 13:35 ` Alexander Graf
2013-07-11 22:30 ` [Qemu-devel] [Qemu-ppc] " Benjamin Herrenschmidt
2013-07-11 22:32 ` Benjamin Herrenschmidt
2013-07-12 3:18 ` Alexander Graf
2013-07-12 11:35 ` Benjamin Herrenschmidt
2013-07-12 17:04 ` Hervé Poussineau
2013-07-12 19:06 ` Anthony Liguori
2013-07-12 22:59 ` Benjamin Herrenschmidt
2013-07-12 22:39 ` Benjamin Herrenschmidt
2013-07-12 17:49 ` Anthony Liguori [this message]
2013-07-12 18:26 ` Peter Maydell
2013-07-12 22:50 ` Benjamin Herrenschmidt
2013-07-12 23:10 ` Peter Maydell
2013-07-12 23:49 ` Benjamin Herrenschmidt
2013-07-15 14:01 ` Anthony Liguori
2013-07-15 14:10 ` Peter Maydell
2013-07-15 14:16 ` Benjamin Herrenschmidt
2013-07-12 22:44 ` Benjamin Herrenschmidt
2013-07-13 14:38 ` [Qemu-devel] " Paolo Bonzini
2013-07-13 15:22 ` Anthony Liguori
2013-07-13 18:11 ` Hervé Poussineau
2013-07-14 6:15 ` Paolo Bonzini
2013-07-14 13:05 ` Anthony Liguori
2013-07-14 14:58 ` Peter Maydell
2013-07-14 15:18 ` Anthony Liguori
2013-07-14 16:50 ` Peter Maydell
2013-07-16 7:18 ` Jan Kiszka
2013-07-16 7:33 ` Paolo Bonzini
2013-07-16 16:59 ` Hervé Poussineau
2013-07-16 17:12 ` Paolo Bonzini
2013-07-12 12:56 ` Anthony Liguori
2013-07-12 14:30 ` Alexander Graf
2013-07-19 11:09 ` [Qemu-devel] BUG: " Alexey Kardashevskiy
2013-07-19 12:49 ` Paolo Bonzini
2013-07-19 15:48 ` Alexey Kardashevskiy
2013-07-20 0:55 ` Alexey Kardashevskiy
2013-07-20 1:11 ` Alexey Kardashevskiy
2013-07-20 10:11 ` Paolo Bonzini
2013-07-20 20:53 ` Edgar E. Iglesias
2013-07-21 15:13 ` Hervé Poussineau
2013-07-22 10:25 ` Paolo Bonzini
2013-06-24 8:45 ` [Qemu-devel] [PATCH v4 " Jan Kiszka
2013-07-12 19:36 ` [Qemu-devel] [PATCH v3 " Anthony Liguori
2013-06-22 6:07 ` [Qemu-devel] [PATCH v3 12/14] ioport: Remove unused old dispatching services Jan Kiszka
2013-06-22 6:07 ` [Qemu-devel] [PATCH v3 13/14] vmport: Disentangle read handler type from portio Jan Kiszka
2013-06-22 6:07 ` [Qemu-devel] [PATCH v3 14/14] ioport: Move portio types to ioport.h Jan Kiszka
2013-06-23 20:45 ` [Qemu-devel] [PATCH v3 00/14] Refactor portio dispatching Hervé Poussineau
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=878v1bvfaw.fsf@codemonkey.ws \
--to=anthony@codemonkey.ws \
--cc=afaerber@suse.de \
--cc=agraf@suse.de \
--cc=benh@kernel.crashing.org \
--cc=hpoussin@reactos.org \
--cc=jan.kiszka@web.de \
--cc=pbonzini@redhat.com \
--cc=pingfank@linux.vnet.ibm.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.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).