aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2024-02-15 11:30:45 +0000
committerPeter Maydell <peter.maydell@linaro.org>2024-02-15 11:30:45 +0000
commitf94d58f2608d2cae4a59f07c89e811ca8b6753e1 (patch)
treebda08202e678cb52676da6a289dc1c4a309bdf2e
parent855f94eca80c85a99f459e36684ea2f98f6a3243 (diff)
downloadqemu-f94d58f2608d2cae4a59f07c89e811ca8b6753e1.zip
qemu-f94d58f2608d2cae4a59f07c89e811ca8b6753e1.tar.gz
qemu-f94d58f2608d2cae4a59f07c89e811ca8b6753e1.tar.bz2
hw/pci-host/raven.c: Mark raven_io_ops as implementing unaligned accesses
The raven_io_ops MemoryRegionOps is the only one in the source tree which sets .valid.unaligned to indicate that it should support unaligned accesses and which does not also set .impl.unaligned to indicate that its read and write functions can do the unaligned handling themselves. This is a problem, because at the moment the core memory system does not implement the support for handling unaligned accesses by doing a series of aligned accesses and combining them (system/memory.c:access_with_adjusted_size() has a TODO comment noting this). Fortunately raven_io_read() and raven_io_write() will correctly deal with the case of being passed an unaligned address, so we can fix the missing unaligned access support by setting .impl.unaligned in the MemoryRegionOps struct. Fixes: 9a1839164c9c8f06 ("raven: Implement non-contiguous I/O region") Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Tested-by: Cédric Le Goater <clg@redhat.com> Reviewed-by: Cédric Le Goater <clg@redhat.com> Message-id: 20240112134640.1775041-1-peter.maydell@linaro.org
-rw-r--r--hw/pci-host/raven.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/hw/pci-host/raven.c b/hw/pci-host/raven.c
index c7a0a28..a7dfddd 100644
--- a/hw/pci-host/raven.c
+++ b/hw/pci-host/raven.c
@@ -200,6 +200,7 @@ static const MemoryRegionOps raven_io_ops = {
.write = raven_io_write,
.endianness = DEVICE_LITTLE_ENDIAN,
.impl.max_access_size = 4,
+ .impl.unaligned = true,
.valid.unaligned = true,
};