mirror of https://github.com/xemu-project/xemu.git
cputlb: destroy CPUTLB with tlb_destroy
I was after adding qemu_spin_destroy calls, but while at it I noticed that we are leaking some memory. Signed-off-by: Emilio G. Cota <cota@braap.org> Signed-off-by: Robert Foley <robert.foley@linaro.org> Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20200609200738.445-5-robert.foley@linaro.org> Message-Id: <20200612190237.30436-8-alex.bennee@linaro.org>
This commit is contained in:
parent
4384a70d01
commit
816d9be5ea
|
@ -270,6 +270,21 @@ void tlb_init(CPUState *cpu)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void tlb_destroy(CPUState *cpu)
|
||||||
|
{
|
||||||
|
CPUArchState *env = cpu->env_ptr;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
qemu_spin_destroy(&env_tlb(env)->c.lock);
|
||||||
|
for (i = 0; i < NB_MMU_MODES; i++) {
|
||||||
|
CPUTLBDesc *desc = &env_tlb(env)->d[i];
|
||||||
|
CPUTLBDescFast *fast = &env_tlb(env)->f[i];
|
||||||
|
|
||||||
|
g_free(fast->table);
|
||||||
|
g_free(desc->iotlb);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* flush_all_helper: run fn across all cpus
|
/* flush_all_helper: run fn across all cpus
|
||||||
*
|
*
|
||||||
* If the wait flag is set then the src cpu's helper will be queued as
|
* If the wait flag is set then the src cpu's helper will be queued as
|
||||||
|
|
1
exec.c
1
exec.c
|
@ -892,6 +892,7 @@ void cpu_exec_unrealizefn(CPUState *cpu)
|
||||||
{
|
{
|
||||||
CPUClass *cc = CPU_GET_CLASS(cpu);
|
CPUClass *cc = CPU_GET_CLASS(cpu);
|
||||||
|
|
||||||
|
tlb_destroy(cpu);
|
||||||
cpu_list_remove(cpu);
|
cpu_list_remove(cpu);
|
||||||
|
|
||||||
if (cc->vmsd != NULL) {
|
if (cc->vmsd != NULL) {
|
||||||
|
|
|
@ -124,6 +124,11 @@ void cpu_address_space_init(CPUState *cpu, int asidx,
|
||||||
* @cpu: CPU whose TLB should be initialized
|
* @cpu: CPU whose TLB should be initialized
|
||||||
*/
|
*/
|
||||||
void tlb_init(CPUState *cpu);
|
void tlb_init(CPUState *cpu);
|
||||||
|
/**
|
||||||
|
* tlb_destroy - destroy a CPU's TLB
|
||||||
|
* @cpu: CPU whose TLB should be destroyed
|
||||||
|
*/
|
||||||
|
void tlb_destroy(CPUState *cpu);
|
||||||
/**
|
/**
|
||||||
* tlb_flush_page:
|
* tlb_flush_page:
|
||||||
* @cpu: CPU whose TLB should be flushed
|
* @cpu: CPU whose TLB should be flushed
|
||||||
|
@ -284,6 +289,9 @@ void tlb_set_page(CPUState *cpu, target_ulong vaddr,
|
||||||
static inline void tlb_init(CPUState *cpu)
|
static inline void tlb_init(CPUState *cpu)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
static inline void tlb_destroy(CPUState *cpu)
|
||||||
|
{
|
||||||
|
}
|
||||||
static inline void tlb_flush_page(CPUState *cpu, target_ulong addr)
|
static inline void tlb_flush_page(CPUState *cpu, target_ulong addr)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue