Skip to content

Commit

Permalink
KVM: MMU: don't atomicly set spte if it's not present
Browse files Browse the repository at this point in the history
If the old mapping is not present, the spte.a is not lost, so no need
atomic operation to set it

Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
  • Loading branch information
Xiao Guangrong authored and Avi Kivity committed Aug 2, 2010
1 parent 9ed5520 commit be233d4
Showing 1 changed file with 3 additions and 2 deletions.
5 changes: 3 additions & 2 deletions arch/x86/kvm/mmu.c
Original file line number Diff line number Diff line change
Expand Up @@ -307,9 +307,10 @@ static void update_spte(u64 *sptep, u64 new_spte)
{
u64 old_spte;

if (!shadow_accessed_mask || (new_spte & shadow_accessed_mask)) {
if (!shadow_accessed_mask || (new_spte & shadow_accessed_mask) ||
!is_rmap_spte(*sptep))
__set_spte(sptep, new_spte);
} else {
else {
old_spte = __xchg_spte(sptep, new_spte);
if (old_spte & shadow_accessed_mask)
mark_page_accessed(pfn_to_page(spte_to_pfn(old_spte)));
Expand Down

0 comments on commit be233d4

Please sign in to comment.