On 31 May 2012 05:17, Marc Zyngier <marc.zyngier at arm.com> wrote: > The ARM ARM says in bold (B1.14.4): > "Virtualizing a uniprocessor system within an MP system, permitting a > ?virtual machine to move between different physical processors, makes > ?cache maintenance by set/way difficult. This is because a set/way > ?operation might be interrupted part way through its operation, and > ?therefore the hypervisor must reproduce the effect of the maintenance > ?on both physical processors." > > The direct consequence of this is that we have to trap all set/way > operations and make sure the other CPUs get the memo. In order to > avoid performance degradation, we maintain a per vcpu cpumask that > tracks the physcal CPUs on which the cache operation must be performed. "physical" > The remote operation is only executed when migrating the vcpu. > > On the receiving end, we simply clean+invalidate the whole data cache > to avoid queuiing up individual set/way operations. "queueing" (my kernel patch review skills extend only to total trivia :-)) -- PMM