KVM: MMU: remove prefault from invlpg handler
authorMarcelo Tosatti <mtosatti@redhat.com>
Sat, 5 Dec 2009 14:34:11 +0000 (12:34 -0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Wed, 6 Jan 2010 23:04:00 +0000 (15:04 -0800)
commit3a9f99234194d5f6c987098c288f29f200dabf5e
treee9142c9dfc27356808b3b46f001871334f2882f4
parent8b9f03819c4165799c463b14a30b23f228d13cdb
KVM: MMU: remove prefault from invlpg handler

commit fb341f572d26e0786167cd96b90cc4febed830cf upstream.

The invlpg prefault optimization breaks Windows 2008 R2 occasionally.

The visible effect is that the invlpg handler instantiates a pte which
is, microseconds later, written with a different gfn by another vcpu.

The OS could have other mechanisms to prevent a present translation from
being used, which the hypervisor is unaware of.

While the documentation states that the cpu is at liberty to prefetch tlb
entries, it looks like this is not heeded, so remove tlb prefetch from
invlpg.

Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
arch/x86/kvm/paging_tmpl.h