KVM: MMU: Mark sp mmio cached when creating mmio spte
This will be used not to zap unrelated mmu pages when creating/moving a memory slot later. Reviewed-by: Marcelo Tosatti <mtosatti@redhat.com> Signed-off-by: Takuya Yoshikawa <yoshikawa_takuya_b1@lab.ntt.co.jp> Signed-off-by: Gleb Natapov <gleb@redhat.com>
This commit is contained in:
Родитель
0238ea913c
Коммит
95b0430d1a
|
@ -230,6 +230,7 @@ struct kvm_mmu_page {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int write_flooding_count;
|
int write_flooding_count;
|
||||||
|
bool mmio_cached;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct kvm_pio_request {
|
struct kvm_pio_request {
|
||||||
|
|
|
@ -199,8 +199,11 @@ EXPORT_SYMBOL_GPL(kvm_mmu_set_mmio_spte_mask);
|
||||||
|
|
||||||
static void mark_mmio_spte(u64 *sptep, u64 gfn, unsigned access)
|
static void mark_mmio_spte(u64 *sptep, u64 gfn, unsigned access)
|
||||||
{
|
{
|
||||||
|
struct kvm_mmu_page *sp = page_header(__pa(sptep));
|
||||||
|
|
||||||
access &= ACC_WRITE_MASK | ACC_USER_MASK;
|
access &= ACC_WRITE_MASK | ACC_USER_MASK;
|
||||||
|
|
||||||
|
sp->mmio_cached = true;
|
||||||
trace_mark_mmio_spte(sptep, gfn, access);
|
trace_mark_mmio_spte(sptep, gfn, access);
|
||||||
mmu_spte_set(sptep, shadow_mmio_mask | access | gfn << PAGE_SHIFT);
|
mmu_spte_set(sptep, shadow_mmio_mask | access | gfn << PAGE_SHIFT);
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче