|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] EPT: utilize GLA->GPA translation known for certain faults
At 15:40 +0100 on 28 Aug (1409236857), Jan Beulich wrote:
> Rather than doing the translation ourselves in __hvmemul_{read,write}()
> leverage that we know the association for faults other than such having
> occurred when translating addresses of page tables.
>
> There is one intentional but not necessarily obvious (and possibly
> subtle) adjustment to behavior: __hvmemul_read() no longer blindly
> bails on instruction fetches matching the MMIO GVA (the callers of
> handle_mmio_with_translation() now control the behavior via the struct
> npfec they pass, and it didn't seem right to bail here rather than just
> falling through to the unaccelerated path)
Understood. I think the test you have is not quite right:
> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
>
> --- a/xen/arch/x86/hvm/emulate.c
> +++ b/xen/arch/x86/hvm/emulate.c
> @@ -481,10 +481,11 @@ static int __hvmemul_read(
> while ( off & (chunk - 1) )
> chunk >>= 1;
>
> - if ( unlikely(vio->mmio_gva == (addr & PAGE_MASK)) && vio->mmio_gva )
> + if ( ((access_type != hvm_access_insn_fetch
> + ? vio->mmio_access.read_access
> + : vio->mmio_access.insn_fetch)) &&
> + (vio->mmio_gva == (addr & PAGE_MASK)) )
This seems like it will follow the fast path for some instruction
fetches, which might be OK, but doesn't quite match your description.
If that's the behaviour you want then I think we can simplify the test
a lot because we don't care whether this is an ifetch or not; only
whether the mapping is valid (assuming we model a coherent
icache/dcache and itlb/dtlb here).
But IIRC we don't really support fetching instructions from MMIO
addresses anyway (raising questions about, e.g. operation sizes,
idempotence and readahead) so we probably want:
if ( access_type != hvm_access_insn_fetch &&
vio->mmio_access.read_access &&
vio->mmio_gva == (addr & PAGE_MASK) )
For the rest, Reviewed-by: Tim Deegan <tim@xxxxxxx>
Cheers,
Tim.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |