[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] ioport: remove LITTLE_ENDIAN mark for portio
From: |
Alexander Graf |
Subject: |
Re: [Qemu-devel] [PATCH] ioport: remove LITTLE_ENDIAN mark for portio |
Date: |
Fri, 12 Jul 2013 22:34:58 +0200 |
On 12.07.2013, at 22:30, Anthony Liguori wrote:
> Setting it to LE forces a byte swap when host != guest endian but
> this makes no sense at all.
>
> Herve made the suggestion upon observing that word writes/reads
> were broken into byte writes/reads in such a way as to assume
> devices are interpret registers as LE.
>
> However, even if this were a problem, marking the region as LE is
> not useful because what's essentially happening here is that LE is
> open coded. So by marking it LE in MemoryRegionOps, we're doing a
> superflous swap.
>
> Now, the portio code is suspicious to begin with. The dispatch
> layer really has no purpose in splitting I/O requests in the first
> place...
>
> Cc: Hervé Poussineau <address@hidden>
> Cc: Alex Graf <address@hidden>
> Cc: Benjamin Herrenschmidt <address@hidden>
> Signed-off-by: Anthony Liguori <address@hidden>
Acked-by: Alexander Graf <address@hidden>
Let's take a look at the PReP breakage with a test case after we fixed everyone
else again.
Alex
> ---
> ioport.c | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/ioport.c b/ioport.c
> index 79b7f1a..89b17d6 100644
> --- a/ioport.c
> +++ b/ioport.c
> @@ -183,7 +183,6 @@ static void portio_write(void *opaque, hwaddr addr,
> uint64_t data,
> static const MemoryRegionOps portio_ops = {
> .read = portio_read,
> .write = portio_write,
> - .endianness = DEVICE_LITTLE_ENDIAN,
> .valid.unaligned = true,
> .impl.unaligned = true,
> };
> --
> 1.8.0
>