[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Plugin virtual-to-physical translation incorrect for some IO accesses
From: |
Aaron Lindsay |
Subject: |
Plugin virtual-to-physical translation incorrect for some IO accesses |
Date: |
Tue, 6 Jul 2021 16:47:34 -0400 |
Hello,
I previously supplied a patch which modified the plugin interface such
that it will return physical addresses for IO regions [0]. However, I
have now found a case where the interface does not appear to correctly
return the full physical addresses.
In particular, when in qemu_plugin_hwaddr_phys_addr() for a particular
store to IO memory (haddr->is_io==true), I find that haddr->v.io.offset
is 0x0 and mrs->mr->addr is 0x3000, meaning 0x3000 is the returned
"physical address". However, I also find that
mrs->offset_within_address_space is 0x8000007000 (and also that
0x8000007000 matches up with what an actual translation would be from
inspecting the page tables).
Would it be 'safe' to *always* begin using
mrs->offset_within_address_space as the returned physical address here
instead of `haddr->v.io.offset + mrs->mr->addr`, or is there a reason we
should not do that?
Thanks!
-Aaron
[0] https://lists.nongnu.org/archive/html/qemu-devel/2021-03/msg03137.html
- Plugin virtual-to-physical translation incorrect for some IO accesses,
Aaron Lindsay <=