[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Plugin virtual-to-physical translation incorrect for some IO accesse
From: |
Philippe Mathieu-Daudé |
Subject: |
Re: Plugin virtual-to-physical translation incorrect for some IO accesses |
Date: |
Tue, 6 Jul 2021 23:10:08 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 |
+Peter/Paolo
On 7/6/21 10:47 PM, Aaron Lindsay wrote:
> 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?
'safety' is not my area, but using mrs->offset_within_address_space
sounds correct to me.
> Thanks!
>
> -Aaron
>
> [0] https://lists.nongnu.org/archive/html/qemu-devel/2021-03/msg03137.html
>