On 2/2/26 00:29, Philippe Mathieu-Daudé wrote:
> VirtIODevice::access_is_big_endian boolean field, initialized on
> device reset, represents whether load/store accesses are ordered
> using big endianness.
>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
> include/hw/virtio/virtio.h | 5 +++++
> hw/virtio/virtio.c | 1 +
> 2 files changed, 6 insertions(+)
>
> diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h
> index 17b105c146d..7a4f7de7475 100644
> --- a/include/hw/virtio/virtio.h
> +++ b/include/hw/virtio/virtio.h
> @@ -154,6 +154,11 @@ struct VirtIODevice
> VMChangeStateEntry *vmstate;
> char *bus_name;
> uint8_t device_endian;
> + /**
> + * @access_is_big_endian: whether load/store memory accesses are ordered
> + * using big endianness. Might change during device resets.
> + */
> + bool access_is_big_endian;
> /**
> * @user_guest_notifier_mask: gate usage of ->guest_notifier_mask() callback.
> * This is used to suppress the masking of guest updates for
> diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
> index 86fc0e262f7..242c207a591 100644
> --- a/hw/virtio/virtio.c
> +++ b/hw/virtio/virtio.c
> @@ -3247,6 +3247,7 @@ void virtio_reset(VirtIODevice *vdev)
> /* System reset */
> vdev->device_endian = virtio_default_endian();
IIUC vdev->device_endian is only used in vhost_needs_vring_endian().
> }
> + vdev->access_is_big_endian = virtio_access_is_big_endian(vdev);
>
> if (k->get_vhost) {
> struct vhost_dev *hdev = k->get_vhost(vdev);