【发布时间】:2013-08-30 21:39:05
【问题描述】:
我正在寻找一种方法来捕获 kvm 源中特定 gfn 上的“读取”。
看起来函数堆栈通过使用 PT_WRITABLE_MASK 翻转写入位来删除给定页面的写入权限。从而捕获写入。
rmap_write_protect(kvm, gfn) --> kvm_mmu_rmap_write_protect(kvm, gfn, slot)
对于捕获读取,我看到等效标志 PM_PRESENT_MASK。因此,一种方法可能是编写类似于上面的包装程序来翻转读取(存在)和写入位。或者使用下面的函数来删除 spte 就足够了吗? drop_spte()
以上两种方法都需要kvm_flush_remote_tlbs()吗?
【问题讨论】:
-
您是否进一步发现了您的问题?如果您取得了任何进展,更新问题可能是一个好主意,因为它会影响问题。您是否尝试过您提出的各种方法?一个小测试可能会让其他人更容易帮助你。最后,听起来您可能有几个问题。你能把它缩小到一个吗?
标签: linux-kernel virtualization qemu kvm