From: "Philippe Mathieu-Daudé" <philmd@linaro.org>
To: Richard Henderson <richard.henderson@linaro.org>,
Paolo Bonzini <pbonzini@redhat.com>,
qemu-devel@nongnu.org, Anton Johansson <anjo@rev.ng>
Cc: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
"Peter Maydell" <peter.maydell@linaro.org>,
"Alistair Francis" <alistair@alistair23.me>,
"Thomas Huth" <thuth@redhat.com>,
qemu-arm@nongnu.org, devel@lists.libvirt.org,
"Marc-André Lureau" <marcandre.lureau@redhat.com>,
"Jason Wang" <jasowang@redhat.com>
Subject: Re: [PATCH 12/19] hw/net/xilinx_ethlite: Only expect big-endian accesses
Date: Tue, 5 Nov 2024 23:29:48 +0000 [thread overview]
Message-ID: <5434961f-93ec-4cda-a0be-3e35aaab5d7d@linaro.org> (raw)
In-Reply-To: <eae65cf8-af71-4b6d-8bfb-b22224f8496b@redhat.com>
On 5/11/24 14:18, Paolo Bonzini wrote:
> On 11/5/24 14:04, Philippe Mathieu-Daudé wrote:
>> The Xilinx 'ethlite' device was added in commit b43848a100
>> ("xilinx: Add ethlite emulation"), being only built back
>> then for a big-endian MicroBlaze target (see commit 72b675caac
>> "microblaze: Hook into the build-system").
>>
>> I/O endianness access was then clarified in commit d48751ed4f
>> ("xilinx-ethlite: Simplify byteswapping to/from brams"). Here
>> the 'fix' was to use tswap32(). Since the machine was built as
>> big-endian target, tswap32() use means the fix was for a little
>> endian host. While the datasheet (reference added in file header)
>> is not precise about it, we interpret such change as the device
>> expects accesses in big-endian order. Besides, this is what other
>> Xilinx/MicroBlaze devices use (see the 3 previous commits).
>>
>> Correct the MemoryRegionOps endianness. Add a 'access-little-endian'
>> property, so if the bus access expect little-endian order we swap
>> the values. Replace the tswap32() calls accordingly.
>>
>> Set the property on the single machine using this device.
>
> I don't understand. This machine type is little-endian only and
> expecting inverted accesses, isn't it? Therefore, all that you need is
>
>> - .endianness = DEVICE_NATIVE_ENDIAN,
>> + .endianness = DEVICE_BIG_ENDIAN,
>
> And removing the tswap altogether. The big-endian petalogix board will
> start getting "correct" values (not swapped anymore). That's a feature,
> not a bug.
The feature is memory.c swapping MemoryRegionOps depending on the
*qemu-system binary* target endianness.
We assumed most guest vCPUs run with the same endianness of the binary.
Now we want to swap wrt the vCPU, not the binary. So indeed this patch
effectively undo the memory.c swapping (feature).
I suppose the better way is to modify memory.c, possibly passing MemOp
all over. For HW accel where vCPU endianness is forced to host one,
this would become a no-op. Lot of rework in perspective.
next prev parent reply other threads:[~2024-11-05 23:30 UTC|newest]
Thread overview: 78+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-05 13:04 [PATCH 00/19] hw/microblaze: Allow running cross-endian vCPUs Philippe Mathieu-Daudé
2024-11-05 13:04 ` [PATCH 01/19] target/microblaze: Rename CPU endianness property as 'little-endian' Philippe Mathieu-Daudé
2024-11-05 14:16 ` Anton Johansson via
2024-11-05 14:16 ` Anton Johansson via
2024-11-05 22:29 ` Alistair Francis
2024-11-05 22:54 ` Edgar E. Iglesias
2024-11-05 23:01 ` Philippe Mathieu-Daudé
2024-11-05 23:18 ` Philippe Mathieu-Daudé
2024-11-05 23:20 ` Edgar E. Iglesias
2024-11-05 13:04 ` [PATCH 02/19] hw/microblaze: Deprecate big-endian petalogix-ml605 & xlnx-zynqmp-pmu Philippe Mathieu-Daudé
2024-11-05 14:22 ` Anton Johansson via
2024-11-05 14:22 ` Anton Johansson via
2024-11-05 22:34 ` Alistair Francis
2024-11-05 22:56 ` Edgar E. Iglesias
2024-11-05 13:04 ` [PATCH 03/19] hw/microblaze/s3adsp1800: Explicit CPU endianness Philippe Mathieu-Daudé
2024-11-05 13:22 ` Richard Henderson
2024-11-05 22:34 ` Alistair Francis
2024-11-05 22:59 ` Edgar E. Iglesias
2024-11-05 13:04 ` [PATCH 04/19] hw/microblaze/s3adsp1800: Rename unimplemented MMIO region as xps_gpio Philippe Mathieu-Daudé
2024-11-05 14:26 ` Anton Johansson via
2024-11-05 22:37 ` Alistair Francis
2024-11-05 22:59 ` Edgar E. Iglesias
2024-11-05 13:04 ` [PATCH 05/19] hw/microblaze/s3adsp1800: Declare machine type using DEFINE_TYPES macro Philippe Mathieu-Daudé
2024-11-05 14:33 ` Anton Johansson via
2024-11-05 14:33 ` Anton Johansson via
2024-11-05 22:40 ` Alistair Francis
2024-11-05 22:59 ` Edgar E. Iglesias
2024-11-05 13:04 ` [PATCH 06/19] hw/microblaze: Fix MemoryRegionOps coding style Philippe Mathieu-Daudé
2024-11-05 13:23 ` Richard Henderson
2024-11-05 22:38 ` Alistair Francis
2024-11-05 23:00 ` Edgar E. Iglesias
2024-11-05 13:04 ` [PATCH 07/19] hw/microblaze: Restrict MemoryRegionOps are implemented as 32-bit Philippe Mathieu-Daudé
2024-11-05 14:50 ` Anton Johansson via
2024-11-05 14:50 ` Anton Johansson via
2024-11-05 22:24 ` Philippe Mathieu-Daudé
2024-11-05 22:27 ` Philippe Mathieu-Daudé
2025-01-02 12:20 ` Philippe Mathieu-Daudé
2024-11-05 13:04 ` [PATCH 08/19] hw/microblaze: Propagate CPU endianness to microblaze_load_kernel() Philippe Mathieu-Daudé
2024-11-05 16:56 ` Anton Johansson via
2024-11-05 16:56 ` Anton Johansson via
2024-11-05 22:13 ` Alistair Francis
2024-11-05 23:02 ` Edgar E. Iglesias
2024-11-05 13:04 ` [PATCH 09/19] hw/intc/xilinx_intc: Only expect big-endian accesses Philippe Mathieu-Daudé
2024-11-05 16:58 ` Anton Johansson via
2024-11-05 16:58 ` Anton Johansson via
2024-11-05 22:24 ` Alistair Francis
2024-11-05 23:08 ` Edgar E. Iglesias
2024-11-14 22:43 ` Philippe Mathieu-Daudé
2024-11-15 15:00 ` Michal Simek
2024-11-05 13:04 ` [PATCH 10/19] hw/timer/xilinx_timer: " Philippe Mathieu-Daudé
2024-11-05 16:58 ` Anton Johansson via
2024-11-05 23:09 ` Edgar E. Iglesias
2024-11-05 13:04 ` [PATCH 11/19] hw/timer/xilinx_timer: Allow down to 8-bit memory access Philippe Mathieu-Daudé
2024-11-05 17:00 ` Anton Johansson via
2024-11-05 22:25 ` Alistair Francis
2024-11-05 23:09 ` Edgar E. Iglesias
2024-11-05 13:04 ` [PATCH 12/19] hw/net/xilinx_ethlite: Only expect big-endian accesses Philippe Mathieu-Daudé
2024-11-05 13:30 ` Richard Henderson
2024-11-06 9:53 ` Philippe Mathieu-Daudé
2024-11-05 14:18 ` Paolo Bonzini
2024-11-05 23:29 ` Philippe Mathieu-Daudé [this message]
2024-11-06 6:45 ` Paolo Bonzini
2024-11-05 23:16 ` Edgar E. Iglesias
2024-11-05 13:04 ` [PATCH 13/19] target/microblaze: Explode MO_TExx -> MO_TE | MO_xx Philippe Mathieu-Daudé
2024-11-05 13:31 ` Richard Henderson
2024-11-05 22:57 ` Alistair Francis
2024-11-05 13:04 ` [PATCH 14/19] target/microblaze: Set MO_TE once in do_load() / do_store() Philippe Mathieu-Daudé
2024-11-05 13:32 ` Richard Henderson
2024-11-05 13:04 ` [PATCH 15/19] target/microblaze: Introduce mo_endian() helper Philippe Mathieu-Daudé
2024-11-05 13:32 ` Richard Henderson
2024-11-05 13:04 ` [PATCH 16/19] target/microblaze: Consider endianness while translating code Philippe Mathieu-Daudé
2024-11-05 13:33 ` Richard Henderson
2024-11-05 13:04 ` [PATCH 17/19] hw/microblaze: Support various endianness for s3adsp1800 machines Philippe Mathieu-Daudé
2024-11-05 13:43 ` Richard Henderson
2024-11-05 13:04 ` [PATCH 18/19] tests/functional: Explicit endianness of microblaze assets Philippe Mathieu-Daudé
2024-11-05 13:44 ` Richard Henderson
2024-11-05 13:04 ` [PATCH 19/19] tests/functional: Add microblaze cross-endianness tests Philippe Mathieu-Daudé
2024-11-05 13:46 ` Richard Henderson
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=5434961f-93ec-4cda-a0be-3e35aaab5d7d@linaro.org \
--to=philmd@linaro.org \
--cc=alistair@alistair23.me \
--cc=anjo@rev.ng \
--cc=devel@lists.libvirt.org \
--cc=edgar.iglesias@gmail.com \
--cc=jasowang@redhat.com \
--cc=marcandre.lureau@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=thuth@redhat.com \
/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.