memory-management - 如何在 KVM 内存中固定访客页面?

标签 memory-management linux-kernel virtualization qemu 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()。

关于memory-management - 如何在 KVM 内存中固定访客页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34115301/

相关文章:

string - 为什么 Fortran 版本的 Delphi 的 TStringList 的业余实现比 Delphi 的内置版本低 10 倍?

winapi - windows上的fadvise/madvise等价物是什么?

c# - 调整 List<T> 的容量

linux - 更改 SCHED_OTHER 调度程序的时间量

c - 如何在 debian/ubuntu 上编写系统调用

android - 我收到此错误 "your cpu doesn' t 支持 vt-x 或 svm,AMD 6300 处理器中的 android studio 2.1.1”

ios - CGContextDrawPDFPage 在没有产生内存警告的情况下崩溃

linux - 刷新CPU缓存而不使缓存失效?

amazon-web-services - AWS Cloudwatch 警报不停止 EC2 实例

vagrant - 如何在运行时从 guest 内部禁用 VirtualBox 时间同步