From: Paul Brook <paul@codesourcery.com>
To: Alexander Graf <agraf@suse.de>
Cc: Blue Swirl <blauwirbel@gmail.com>,
QEMU-devel Developers <qemu-devel@nongnu.org>
Subject: [Qemu-devel] Re: [PATCH 00/15] [RFC] MMIO endianness cleanup
Date: Thu, 25 Nov 2010 12:14:46 +0000 [thread overview]
Message-ID: <201011251214.46800.paul@codesourcery.com> (raw)
In-Reply-To: <1290670555-12575-1-git-send-email-agraf@suse.de>
> The way mmio endianness is currently implemented is horrifying.
Agreed.
> #ifdef TARGET_WORDS_BIGENDIAN
> val = bswap32(val);
> #endif
>
> With the move to get device code only compiled once, this has
> become harder and harder to justify though, since we don't know
> the target endianness during compile time.
Not just that, it's wrong to start with. I've used machines with both native
and cross-endian 16550 based UARTs.
> So my solution to the issue is to make every device define if
> it's a little, big or native (target) endianness device. This
> basically tells the layers below what endianness the device
> expects mmio to occur in. Little endian devices on little endian
> hosts don't swap. On big endian hosts they do. Same the other
> way around.
>
> The only reason I added "native" endianness is that we have some
> PV devices like the fw_cfg that expect qemu's broken behavior.
> These devices are the minority though. In the long run I'd expect
> to see most code be committed with either of the two endianness
> choices.
I'd prefer to avoid this, or at least document it as a temporary hack that
should be removed. If a device can exist in either endian, then we really
want to push this decision down to the board-level code.
One of the reasons I haven't bothered fixing this yet is that this feels like
something that should be a device/bus property. e.g. PCI devices/busses are
always little-endian[1], as as mentioned above some devices come in both
flavors. I guess we can go with your approach for now, and make sure we fix
this properly when we introduce bus-specific registration functions.
Paul
[1] Ignoring magical byteswapping cpu-pci bridges, but they're broken by
design, and thankfully quite rare.
next prev parent reply other threads:[~2010-11-25 12:14 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-11-25 7:35 [Qemu-devel] [PATCH 00/15] [RFC] MMIO endianness cleanup Alexander Graf
2010-11-25 7:35 ` [Qemu-devel] [PATCH 01/15] exec: introduce endianness swapped mmio Alexander Graf
2010-11-26 23:00 ` Andreas Färber
2010-11-26 23:06 ` Alexander Graf
2010-11-26 23:18 ` Peter Maydell
2010-11-26 23:47 ` Paul Brook
2010-11-27 10:05 ` Blue Swirl
2010-11-27 10:24 ` Paul Brook
2010-11-28 8:12 ` Gleb Natapov
2010-11-28 11:05 ` Alexander Graf
2010-11-25 7:35 ` [Qemu-devel] [PATCH 02/15] Add endianness as io mem parameter Alexander Graf
2010-11-25 7:35 ` [Qemu-devel] [PATCH 03/15] Make simple io mem handler endian aware Alexander Graf
2010-11-25 7:35 ` [Qemu-devel] [PATCH 04/15] dbdma: Make little endian Alexander Graf
2010-11-25 7:35 ` [Qemu-devel] [PATCH 05/15] pci-host: Delegate bswap to mmio layer Alexander Graf
2010-11-25 7:35 ` [Qemu-devel] [PATCH 06/15] uninorth: Get rid of bswap Alexander Graf
2010-11-25 7:35 ` [Qemu-devel] [PATCH 07/15] e1000: Make little endian Alexander Graf
2010-11-25 7:35 ` [Qemu-devel] [PATCH 08/15] prep: Declare as " Alexander Graf
2010-11-26 21:58 ` Andreas Färber
2010-11-26 22:06 ` Alexander Graf
2010-11-27 0:08 ` Benjamin Herrenschmidt
2010-11-25 7:35 ` [Qemu-devel] [PATCH 09/15] versatile_pci: " Alexander Graf
2010-11-25 7:35 ` [Qemu-devel] [PATCH 10/15] ppc4xx_pci: " Alexander Graf
2010-11-25 7:35 ` [Qemu-devel] [PATCH 11/15] openpic: Replace explicit byte swap with endian hints Alexander Graf
2010-11-25 7:35 ` [Qemu-devel] [PATCH 12/15] rtl8139: Declare as little endian Alexander Graf
2010-11-25 7:35 ` [Qemu-devel] [PATCH 13/15] heathrow_pic: " Alexander Graf
2010-11-25 7:35 ` [Qemu-devel] [PATCH 14/15] isa_mmio: Always use " Alexander Graf
2010-11-25 7:35 ` [Qemu-devel] [PATCH 15/15] usb_ohci: " Alexander Graf
2010-11-25 10:18 ` [Qemu-devel] [PATCH 00/15] [RFC] MMIO endianness cleanup Gerd Hoffmann
2010-11-25 10:23 ` Alexander Graf
2010-11-25 10:42 ` Gleb Natapov
2010-11-25 12:14 ` Paul Brook [this message]
2010-11-26 18:44 ` [Qemu-devel] " Blue Swirl
2010-11-26 18:49 ` Alexander Graf
2010-11-27 10:09 ` Avi Kivity
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=201011251214.46800.paul@codesourcery.com \
--to=paul@codesourcery.com \
--cc=agraf@suse.de \
--cc=blauwirbel@gmail.com \
--cc=qemu-devel@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.