mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-17 01:04:19 +08:00
KVM: MMU: don't atomicly set spte if it's not present
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>
This commit is contained in:
parent
9ed5520dd3
commit
be233d49ea
@ -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)));
|
||||
|
Loading…
Reference in New Issue
Block a user