On Mon, Jan 18, 2021 at 10:26:09PM +1000, Nicholas Piggin wrote: > As explained in the comment, there is no need to flush TLBs on all > threads in a core when a vcpu moves between threads in the same core. > > Thread migrations can be a significant proportion of vcpu migrations, > so this can help reduce the TLB flushing and IPI traffic. > > Signed-off-by: Nicholas Piggin <npiggin@xxxxxxxxx> > --- > I believe we can do this and have the TLB coherency correct as per > the architecture, but would appreciate someone else verifying my > thinking. So far I have not been able to convince myself that migrating within a core is really different from migrating across cores as far as the architecture is concerned. If you're trying to allow for an implementation where TLB entries are shared but tlbiel only works (effectively and completely) on the local thread, then I don't think you can do this. If a TLB entry is created on T0, then the vcpu moves to T1 and does a tlbiel, then the guest task on that vcpu migrates to the vcpu that is on T2, it might still see a stale TLB entry. Paul.