为访客页面表设置英特尔 EPT 访问和脏标志

setting of intel EPT Accessed and dirty FLags for guest page tables

我正在阅读 Intel 虚拟化手册,其中手册说如果设置了 EPTP(VM 执行控制字段)的位 6,处理器将根据某些规则在相关 EPT 条目中设置访问和脏位。

我试图了解如果处理器在访问和修改相关页面时在 EPT 中设置 A/D 位,那么来宾操作将如何从该设置中获益,因为来宾 Os 无法访问 EPT .在我的理解中,A/D 位被 OS 的内存管理器用于优化和交换算法,并且这些位在 page walker 中没有任何作用。

我(作为 VMM 的程序员)必须在 VMM 中添加代码以搜索 GPA 中的相关条目 space 并相应地标记位? 如果是这种情况,那么我们怎么能说这些位是在 VMM 不知情的情况下设置的呢? kvm 处理这个问题的方式也将是一个很好的答案

一般来说,来宾 OS 不会从设置 EPT 中的访问位和脏位中获益。如您所述,来宾通常无权访问 EPT。这纯粹是为了hypervisor/VMM。类似于进程页table中的dirty和access bit,进程不用它,只有OS.

关于你的第二个问题,我不太清楚你问的是什么。但是,硬件会在假设已正确设置的情况下标记访问位和脏位,您不必手动执行此操作。