diff mbox

ioport: remove LITTLE_ENDIAN mark for portio

Message ID 1373661046-23421-1-git-send-email-aliguori@us.ibm.com
State New
Headers show

Commit Message

Anthony Liguori July 12, 2013, 8:30 p.m. UTC
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 <hpoussin@reactos.org>
Cc: Alex Graf <agraf@suse.de>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
---
 ioport.c | 1 -
 1 file changed, 1 deletion(-)

Comments

Alexander Graf July 12, 2013, 8:34 p.m. UTC | #1
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 <hpoussin@reactos.org>
> Cc: Alex Graf <agraf@suse.de>
> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>

Acked-by: Alexander Graf <agraf@suse.de>

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
>
Anthony Liguori July 18, 2013, 7:36 p.m. UTC | #2
Applied.  Thanks.

Regards,

Anthony Liguori
diff mbox

Patch

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,
 };