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 <[email protected]>
> Cc: Alex Graf <[email protected]>
> Cc: Benjamin Herrenschmidt <[email protected]>
> Signed-off-by: Anthony Liguori <[email protected]>

Acked-by: Alexander Graf <[email protected]>

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
> 


Reply via email to