From 90260c6c0960b2745d79455ceaa6cb50fb796e02 Mon Sep 17 00:00:00 2001 From: Jan Kiszka Date: Sun, 26 May 2013 21:46:51 +0200 Subject: exec: Resolve subpages in one step except for IOTLB fills Except for the case of setting the IOTLB entry in TCG mode, we can avoid the subpage dispatching handlers and do the resolution directly on address_space_lookup_region. An IOTLB entry describes a full page, not only the region that the first access to a sub-divided page may return. This patch therefore introduces a special translation function, address_space_translate_for_iotlb, that avoids the subpage resolutions. In contrast, callers of the existing address_space_translate service will now always receive the terminal memory region section. This will be important for breaking the BQL and for enabling unaligned memory region. Signed-off-by: Jan Kiszka Signed-off-by: Paolo Bonzini --- cputlb.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'cputlb.c') diff --git a/cputlb.c b/cputlb.c index 1230e9e8ff..947f17cd11 100644 --- a/cputlb.c +++ b/cputlb.c @@ -256,8 +256,8 @@ void tlb_set_page(CPUArchState *env, target_ulong vaddr, } sz = size; - section = address_space_translate(&address_space_memory, paddr, &xlat, &sz, - false); + section = address_space_translate_for_iotlb(&address_space_memory, paddr, + &xlat, &sz); assert(sz >= TARGET_PAGE_SIZE); #if defined(DEBUG_TLB) -- cgit v1.2.1