Subject: [PATCH][UPDATE] kvm-userspace: sync icache for more architectures From: Christian Ehrhardt <[EMAIL PROTECTED]>
A ia64 patch introduced kvm_sync_icache within a ifdef __ia64__, but the concept of split caches is not bound to ia64. This patch replaces the the call to kvm_synch_icache by the flush_icache_range function that is already available in qemu for ia64 and ppc (noop for x86). The call now depends on USE_KVM. Signed-off-by: Christian Ehrhardt <[EMAIL PROTECTED]> diff --git a/qemu/exec.c b/qemu/exec.c index 8b6a2f6..7371cc7 100644 --- a/qemu/exec.c +++ b/qemu/exec.c @@ -35,6 +35,7 @@ #include "cpu.h" #include "exec-all.h" #ifdef USE_KVM +#include "dyngen.h" #include "qemu-kvm.h" #endif #if defined(CONFIG_USER_ONLY) @@ -2600,8 +2601,10 @@ void cpu_physical_memory_rw(target_phys_addr_t addr, uint8_t *buf, phys_ram_dirty[addr1 >> TARGET_PAGE_BITS] |= (0xff & ~CODE_DIRTY_FLAG); } -#ifdef __ia64__ - kvm_sync_icache((unsigned long)ptr, l); +#ifdef USE_KVM + /* qemu doesn't execute guest code directly, but kvm does + therefore fluch instruction caches */ + flush_icache_range((unsigned long)ptr, ((unsigned long)ptr)+l); #endif } } else { diff --git a/qemu/hw/ipf.c b/qemu/hw/ipf.c index 03df73d..cf76f35 100644 --- a/qemu/hw/ipf.c +++ b/qemu/hw/ipf.c @@ -273,17 +273,6 @@ static void pc_init_ne2k_isa(NICInfo *nd, qemu_irq *pic) #ifdef USE_KVM extern kvm_context_t kvm_context; extern int kvm_allowed; - -void kvm_sync_icache(unsigned long address, int len) -{ - int l; - - for(l = 0; l < (len + 32); l += 32) - __ia64_fc(address + l); - - ia64_sync_i(); - ia64_srlz_i(); -} #endif static void main_cpu_reset(void *opaque) diff --git a/qemu/target-ia64/cpu.h b/qemu/target-ia64/cpu.h index 7349e94..be409c7 100644 --- a/qemu/target-ia64/cpu.h +++ b/qemu/target-ia64/cpu.h @@ -73,9 +73,4 @@ CPUState *cpu_ia64_init(void); #include "cpu-all.h" -/* IA64 has seperate I/D cache, with coherence maintained by DMA controller. - * So to emulate right behavior that guest OS is assumed, we need to flush - * I/D cache here. - */ -void kvm_sync_icache(unsigned long address, int len); #endif ------------------------------------------------------------------------- SF.Net email is sponsored by: Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace _______________________________________________ kvm-devel mailing list kvm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kvm-devel