cputlb: Remove tlb_c.pending_flushes
This is essentially redundant with tlb_c.dirty. Tested-by: Emilio G. Cota <cota@braap.org> Reviewed-by: Emilio G. Cota <cota@braap.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
3d1523ced6
commit
ab65110530
|
@ -174,20 +174,8 @@ void tlb_flush_by_mmuidx(CPUState *cpu, uint16_t idxmap)
|
||||||
tlb_debug("mmu_idx: 0x%" PRIx16 "\n", idxmap);
|
tlb_debug("mmu_idx: 0x%" PRIx16 "\n", idxmap);
|
||||||
|
|
||||||
if (cpu->created && !qemu_cpu_is_self(cpu)) {
|
if (cpu->created && !qemu_cpu_is_self(cpu)) {
|
||||||
CPUArchState *env = cpu->env_ptr;
|
|
||||||
uint16_t pending, to_clean;
|
|
||||||
|
|
||||||
qemu_spin_lock(&env->tlb_c.lock);
|
|
||||||
pending = env->tlb_c.pending_flush;
|
|
||||||
to_clean = idxmap & ~pending;
|
|
||||||
env->tlb_c.pending_flush = pending | idxmap;
|
|
||||||
qemu_spin_unlock(&env->tlb_c.lock);
|
|
||||||
|
|
||||||
if (to_clean) {
|
|
||||||
tlb_debug("reduced mmu_idx: 0x%" PRIx16 "\n", to_clean);
|
|
||||||
async_run_on_cpu(cpu, tlb_flush_by_mmuidx_async_work,
|
async_run_on_cpu(cpu, tlb_flush_by_mmuidx_async_work,
|
||||||
RUN_ON_CPU_HOST_INT(to_clean));
|
RUN_ON_CPU_HOST_INT(idxmap));
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
tlb_flush_by_mmuidx_async_work(cpu, RUN_ON_CPU_HOST_INT(idxmap));
|
tlb_flush_by_mmuidx_async_work(cpu, RUN_ON_CPU_HOST_INT(idxmap));
|
||||||
}
|
}
|
||||||
|
|
|
@ -160,12 +160,6 @@ typedef struct CPUTLBDesc {
|
||||||
typedef struct CPUTLBCommon {
|
typedef struct CPUTLBCommon {
|
||||||
/* Serialize updates to tlb_table and tlb_v_table, and others as noted. */
|
/* Serialize updates to tlb_table and tlb_v_table, and others as noted. */
|
||||||
QemuSpin lock;
|
QemuSpin lock;
|
||||||
/*
|
|
||||||
* Within pending_flush, for each bit N, there exists an outstanding
|
|
||||||
* cross-cpu flush for mmu_idx N. Further cross-cpu flushes to that
|
|
||||||
* mmu_idx may be discarded. Protected by tlb_c.lock.
|
|
||||||
*/
|
|
||||||
uint16_t pending_flush;
|
|
||||||
/*
|
/*
|
||||||
* Within dirty, for each bit N, modifications have been made to
|
* Within dirty, for each bit N, modifications have been made to
|
||||||
* mmu_idx N since the last time that mmu_idx was flushed.
|
* mmu_idx N since the last time that mmu_idx was flushed.
|
||||||
|
|
Loading…
Reference in a new issue