qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PULL for-2.0 2/7] raven: Implement non-contiguous I/O


From: Andreas Färber
Subject: Re: [Qemu-devel] [PULL for-2.0 2/7] raven: Implement non-contiguous I/O region
Date: Mon, 07 Apr 2014 21:32:43 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0

Am 05.04.2014 22:26, schrieb Hervé Poussineau:
> Hi Andreas,
> 
> Le sam. 05 avril 2014 17:41:43 CEST, Andreas Färber a écrit :
>> Hi Hervé,
>>
>> Am 20.03.2014 00:36, schrieb Andreas Färber:
>>> From: Hervé Poussineau <address@hidden>
>>>
>>> Remove now duplicated code from prep board.
>>>
>>> Signed-off-by: Hervé Poussineau <address@hidden>
>>> Signed-off-by: Andreas Färber <address@hidden>
>>> ---
>>>   hw/pci-host/prep.c | 85
>>> ++++++++++++++++++++++++++++++++++++++++++++++++
>>>   hw/ppc/prep.c      | 94
>>> ++----------------------------------------------------
>>>   2 files changed, 88 insertions(+), 91 deletions(-)
>>
>> I'm facing endianness-test failures in -rc1 on both openSUSE ppc/ppc64
>> and OSX ppc64 (below) as well as "broken pipe" on OSX ppc.
>>
>> $ make check-qtest-ppc V=1
>> [...]
>>    /ppc/endianness/prep:                                              **
>> ERROR:/Users/andreas/QEMU/tests/endianness-test.c:131:test_endianness:
>> assertion failed (isa_inw(test, 0xe2) == 0x8765): (0x00004321 ==
>> 0x00008765)
>> FAIL
>> [...]
>>    /ppc/endianness/split/prep:                                        **
>> ERROR:/Users/andreas/QEMU/tests/endianness-test.c:206:test_endianness_split:
>>
>> assertion failed (isa_inw(test, 0xe2) == 0x8765): (0x00004321 ==
>> 0x00008765)
>> FAIL
>> [...]
>>    /ppc/endianness/combine/prep:                                      **
>> ERROR:/Users/andreas/QEMU/tests/endianness-test.c:253:test_endianness_combine:
>>
>> assertion failed (isa_inw(test, 0xea) == 0x8765): (0x00004321 ==
>> 0x00008765)
>> FAIL
>> [...]
>> FAIL: tests/endianness-test
>>
>> On x86 everything is fine. git-bisect points to this commit.
>>
>> There is one "FIXME: handle endianness switch" in here, but I don't spot
>> such code where it's being moved from either.
>>
>> My suspect is the cpu_inw() -> ldl_p() change, but I'm unsure whether
>> the code or the test is wrong...
> 
> Code removed in this commit was using DEVICE_NATIVE_ENDIAN, and then
> using cpu_inl, which does a ldl_p.
> Code added in this commit is using DEVICE_LITTLE_ENDIAN, and then is
> using ldl_p.
> So, yes, it seems that endianness of memory region does change things.
> Native endian means native endian of the guest of of the host?
> 
> I also checked tests/endianness-test.c.
> The failing test is:
>    isa_outl(test, 0xe0, 0x87654321);
>    g_assert_cmphex(isa_inl(test, 0xe0), ==, 0x87654321);
>    g_assert_cmphex(isa_inw(test, 0xe2), ==, 0x8765);
>    g_assert_cmphex(isa_inw(test, 0xe0), ==, 0x4321);
> which seems perfectly valid as ISA is little-endian.
> 
> However, PReP is marked as bswap= true in this file, which means that
> values are inverted before writing and after reading them.

I tested .bswap = false - that fixes ppc64 host but breaks x86_64 host.

Any further suggestions anyone?

Regards,
Andreas


> Paolo, what does it mean? It is supposed to be true for big endian
> machines, and false for little endian machines ?
> 
> Hervé




reply via email to

[Prev in Thread] Current Thread [Next in Thread]