public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH kvmtool] kvmtool: virtio: fix endian for big endian hosts
@ 2025-01-15 10:11 Ben Dooks
  2025-01-15 14:24 ` Andrew Jones
  0 siblings, 1 reply; 6+ messages in thread
From: Ben Dooks @ 2025-01-15 10:11 UTC (permalink / raw)
  To: kvm; +Cc: felix.chong, lawrence.hunter, roan.richmond, Ben Dooks

When running on a big endian host, the virtio mmio-modern.c correctly
sets all reads to return little endian values. However the header uses
a 4 byte char for the magic value, which is always going to be in the
correct endian regardless of host endian.

To make the simplest change, simply avoid endian convresion of the
read of the magic value. This fixes the following bug from the guest:

[    0.592838] virtio-mmio 10020000.virtio: Wrong magic value 0x76697274!

Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk>
---
 virtio/mmio-modern.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/virtio/mmio-modern.c b/virtio/mmio-modern.c
index 6c0bb38..fd9c0cb 100644
--- a/virtio/mmio-modern.c
+++ b/virtio/mmio-modern.c
@@ -66,7 +66,10 @@ static void virtio_mmio_config_in(struct kvm_cpu *vcpu,
 		return;
 	}
 
-	*data = cpu_to_le32(val);
+	if (addr != VIRTIO_MMIO_MAGIC_VALUE)
+		*data = cpu_to_le32(val);
+	else
+		*data = val;
 }
 
 static void virtio_mmio_config_out(struct kvm_cpu *vcpu,
-- 
2.37.2.352.g3c44437643


^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2025-01-17 10:39 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-01-15 10:11 [PATCH kvmtool] kvmtool: virtio: fix endian for big endian hosts Ben Dooks
2025-01-15 14:24 ` Andrew Jones
2025-01-15 15:09   ` Ben Dooks
2025-01-16  9:28     ` Andrew Jones
2025-01-17  9:57       ` Ben Dooks
2025-01-17 10:07         ` Andrew Jones

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox