如何在 KVM 的内存中固定访客页面?
How to pin a guest page in memory in KVM?
我正在 KVM 内存中做一些事情。我注意到有时会调用 kvm_mmu_notifier_invalidate_range_start()
,然后调用 kvm_unmap_hva_range()
,然后调用 drop_stpe()
,这会将某个 spte 设置为零。我猜 QEMU 中从 HVA 到 PFN 的映射发生了变化,所以它需要使指向那些 PFN 的那些 sptes 无效,对吗?
我对 spte 做了一些 CoW 机制,所以 drop_spte()
让它很难工作。我可以将一个页面固定在内存中,这样从它的 HVA 到 PFN 的映射就不会改变吗?我想在 CoW 来宾页面时固定一个页面,这样它就不会被意外删除。
非常感谢!
我想 kvm_get_pfn() 可以用来固定 pfn。可以使用gfn_to_pfn()得到gfn对应的pfn。要取消固定页面,您可以使用 kvm_release_pfn_clean().
我正在 KVM 内存中做一些事情。我注意到有时会调用 kvm_mmu_notifier_invalidate_range_start()
,然后调用 kvm_unmap_hva_range()
,然后调用 drop_stpe()
,这会将某个 spte 设置为零。我猜 QEMU 中从 HVA 到 PFN 的映射发生了变化,所以它需要使指向那些 PFN 的那些 sptes 无效,对吗?
我对 spte 做了一些 CoW 机制,所以 drop_spte()
让它很难工作。我可以将一个页面固定在内存中,这样从它的 HVA 到 PFN 的映射就不会改变吗?我想在 CoW 来宾页面时固定一个页面,这样它就不会被意外删除。
非常感谢!
我想 kvm_get_pfn() 可以用来固定 pfn。可以使用gfn_to_pfn()得到gfn对应的pfn。要取消固定页面,您可以使用 kvm_release_pfn_clean().