mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-03 15:53:54 -06:00
target/ppc: Flush the TLB locally when the LPIDR is written
Our TCG TLB only tags whether it's a HV vs a guest access, so it must be flushed when the LPIDR is changed. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Cédric Le Goater <clg@kaod.org> Message-Id: <20190215170029.15641-10-clg@kaod.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
74c4912f09
commit
c4dae9cd37
3 changed files with 22 additions and 1 deletions
|
@ -117,6 +117,21 @@ void helper_store_pidr(CPUPPCState *env, target_ulong val)
|
|||
tlb_flush(CPU(cpu));
|
||||
}
|
||||
|
||||
void helper_store_lpidr(CPUPPCState *env, target_ulong val)
|
||||
{
|
||||
PowerPCCPU *cpu = ppc_env_get_cpu(env);
|
||||
|
||||
env->spr[SPR_LPIDR] = val;
|
||||
|
||||
/*
|
||||
* We need to flush the TLB on LPID changes as we only tag HV vs
|
||||
* guest in TCG TLB. Also the quadrants means the HV will
|
||||
* potentially access and cache entries for the current LPID as
|
||||
* well.
|
||||
*/
|
||||
tlb_flush(CPU(cpu));
|
||||
}
|
||||
|
||||
void helper_store_hid0_601(CPUPPCState *env, target_ulong val)
|
||||
{
|
||||
target_ulong hid0;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue