Support >4 GB physical memory accesses.
Signed-off-by: Stefan Hajnoczi <[email protected]>
---
hw/virtio-blk.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/hw/virtio-blk.c b/hw/virtio-blk.c
index abd9386..99654f1 100644
--- a/hw/virtio-blk.c
+++ b/hw/virtio-blk.c
@@ -64,6 +64,13 @@ static VirtIOBlock *to_virtio_blk(VirtIODevice *vdev)
*/
static inline void *phys_to_host(VirtIOBlock *s, target_phys_addr_t phys)
{
+ /* Adjust for 3.6-4 GB PCI memory range */
+ if (phys >= 0x100000000) {
+ phys -= 0x100000000 - 0xe0000000;
+ } else if (phys >= 0xe0000000) {
+ fprintf(stderr, "phys_to_host bad physical address in PCI range
%#lx\n", phys);
+ exit(1);
+ }
return s->phys_mem_zero_host_ptr + phys;
}
--
1.7.10.4
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html