On Mon, 2016-09-12 at 11:18 +0530, Nikunj A Dadhania wrote: > PowerPC targets should do tlb invalidation on other cpus on > instructions that expect a global effect. > > * ptesync for BookS > * tlbsync primarily for BookE > (for BookS make it a nop, as it always come along with ptesync) > * tlbivax for other ppc tragets > * H_REMOVE, H_BULK_REMOVE and H_PROTECT hcalls in case of pseries
The above is confusing. The instructions that have global effects are tlbie (BookS) and tlbivax (BookE) plus the H_CALLs since they contain a tlbie on a real hypervisor. The ptesync and tlbsync instructions are barriers use to synchronize with the global invalidations. That means that we don't need to ensure the global invalidations have completed until we hit those barriers. We typically use them as a way to "batch" the invalidations in TCG. > The implementation provides a single point that can be used in MTTCG > for > doing async-flushes. > > The patchset introduces bit-flags in CPUPPCState::tlb_need_flush: > > TLB_NEED_LOCAL_FLUSH (0x1) - Flush local tlb > TLB_NEED_GLOBAL_FLUSH (0x2) - Flush tlb on other cpus. > > Nikunj A Dadhania (3): > target-ppc: add TLB_NEED_LOCAL_FLUSH flag > target-ppc: add flag in chech_tlb_flush() > target-ppc: tlbie should have global effect > > hw/ppc/spapr_hcall.c | 6 ++++-- > target-ppc/cpu.h | 2 ++ > target-ppc/excp_helper.c | 4 ++-- > target-ppc/helper.h | 2 +- > target-ppc/helper_regs.h | 25 +++++++++++++++++++++---- > target-ppc/mmu-hash64.c | 6 +++--- > target-ppc/mmu_helper.c | 20 ++++++++++++-------- > target-ppc/translate.c | 26 ++++++++++++++++---------- > 8 files changed, 61 insertions(+), 30 deletions(-) >