From: "Michael S. Tsirkin" <mst@redhat.com>
To: Alexander Graf <agraf@suse.de>
Cc: qemu-devel@nongnu.org, Aurelien Jarno <aurelien@aurel32.net>,
Laurent Vivier <Laurent@vivier.eu>
Subject: [Qemu-devel] Re: [PATCH] Always swap endianness in DBDMA
Date: Tue, 22 Dec 2009 13:36:26 +0200 [thread overview]
Message-ID: <20091222113626.GB16053@redhat.com> (raw)
In-Reply-To: <1261477458-26222-1-git-send-email-agraf@suse.de>
On Tue, Dec 22, 2009 at 11:24:18AM +0100, Alexander Graf wrote:
> When we get an MMIO request, we always get variables in host endianness. The
> only time we need to actually reverse byte order is when we read bytes from
> guest memory.
>
> Apparently the DBDMA implementation is different there. A lot of the logic
> in there depends on values being big endian. Now, qemu does all the conversion
> in the MMIO handlers for us already though, so it turns out that we're in
> the same byte order from a C point of view, but cpu_to_be32 and be32_to_cpu
> end up being nops.
>
> This makes the code work differently on x86 (little endian) than on ppc (big
> endian). On x86 it works, on ppc it doesn't.
>
> This patch (while being seriously hacky and ugly) makes dbdma emulation work
> on ppc hosts. I'll leave the real fixing to someone else.
Come on,
#define cpu_to_dbdma32 bswap32
#define dbdma_to_cpu32 bswap32
and then
s/cpu_to_be32/cpu_to_dbdma32/g
s/be32_to_cpu/dbdma32_to_cpu/g
is not too hard, is it?
> Signed-off-by: Alexander Graf <agraf@suse.de>
> CC: Laurent Vivier <Laurent@vivier.eu>
> ---
> hw/mac_dbdma.c | 8 ++++++++
> 1 files changed, 8 insertions(+), 0 deletions(-)
>
> diff --git a/hw/mac_dbdma.c b/hw/mac_dbdma.c
> index 98dccfd..4dbfc16 100644
> --- a/hw/mac_dbdma.c
> +++ b/hw/mac_dbdma.c
> @@ -40,6 +40,14 @@
> #include "isa.h"
> #include "mac_dbdma.h"
>
> +/*
> + * XXX This is just plain wrong. Apparently we don't want to have big endian
> + * values, but reversed endian ones. The code as is doesn't work on big
> + * endian hosts. With these defines it does.
> + */
> +#define cpu_to_be32 bswap32
> +#define be32_to_cpu bswap32
> +
> /* debug DBDMA */
> //#define DEBUG_DBDMA
>
> --
> 1.6.0.2
>
>
next prev parent reply other threads:[~2009-12-22 11:39 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-12-22 10:24 [Qemu-devel] [PATCH] Always swap endianness in DBDMA Alexander Graf
2009-12-22 11:36 ` Michael S. Tsirkin [this message]
2009-12-22 12:07 ` [Qemu-devel] " Alexander Graf
2009-12-22 12:47 ` Michael S. Tsirkin
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=20091222113626.GB16053@redhat.com \
--to=mst@redhat.com \
--cc=Laurent@vivier.eu \
--cc=agraf@suse.de \
--cc=aurelien@aurel32.net \
--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.