X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=cputlb.c;h=fff0afbd4af2ccea5087dd91591a726e41218b0b;hb=0478f37ce258438d74164dd182b0ae125f174ec6;hp=80b2a94ade9e93f611f8c4159c025697cc0d7995;hpb=8a9c98aedc1a3fb4dfbebeccc926e273df54f2ba;p=qemu.git diff --git a/cputlb.c b/cputlb.c index 80b2a94ad..fff0afbd4 100644 --- a/cputlb.c +++ b/cputlb.c @@ -158,28 +158,26 @@ void tlb_reset_dirty_range(CPUTLBEntry *tlb_entry, uintptr_t start, } } -static inline void tlb_update_dirty(CPUTLBEntry *tlb_entry) +static inline ram_addr_t qemu_ram_addr_from_host_nofail(void *ptr) { ram_addr_t ram_addr; - void *p; - if (tlb_is_dirty_ram(tlb_entry)) { - p = (void *)(uintptr_t)((tlb_entry->addr_write & TARGET_PAGE_MASK) - + tlb_entry->addend); - ram_addr = qemu_ram_addr_from_host_nofail(p); - if (!cpu_physical_memory_is_dirty(ram_addr)) { - tlb_entry->addr_write |= TLB_NOTDIRTY; - } + if (qemu_ram_addr_from_host(ptr, &ram_addr) == NULL) { + fprintf(stderr, "Bad ram pointer %p\n", ptr); + abort(); } + return ram_addr; } void cpu_tlb_reset_dirty_all(ram_addr_t start1, ram_addr_t length) { + CPUState *cpu; CPUArchState *env; - for (env = first_cpu; env != NULL; env = env->next_cpu) { + CPU_FOREACH(cpu) { int mmu_idx; + env = cpu->env_ptr; for (mmu_idx = 0; mmu_idx < NB_MMU_MODES; mmu_idx++) { unsigned int i;