From: Avi Kivity Date: Mon, 15 Mar 2010 11:59:57 +0000 (+0200) Subject: KVM: MMU: Reinstate pte prefetch on invlpg X-Git-Tag: v2.6.35-rc1~436^2~178 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=08e850c6536db302050c0287649e68e3bbdfe2c7;p=pandora-kernel.git KVM: MMU: Reinstate pte prefetch on invlpg Commit fb341f57 removed the pte prefetch on guest invlpg, citing guest races. However, the SDM is adamant that prefetch is allowed: "The processor may create entries in paging-structure caches for translations required for prefetches and for accesses that are a result of speculative execution that would never actually occur in the executed code path." And, in fact, there was a race in the prefetch code: we picked up the pte without the mmu lock held, so an older invlpg could install the pte over a newer invlpg. Reinstate the prefetch logic, but this time note whether another invlpg has executed using a counter. If a race occured, do not install the pte. Signed-off-by: Avi Kivity Signed-off-by: Marcelo Tosatti --- Reading git-diff-tree failed