EPT學習總結及KVM的處理

EPT爲了提升虛擬化內存映射的效率而提供的一項技術。

打開EPT後,GuestOS運行時,通過頁錶轉化出來的地址不再是真實的物理地址,而是被稱作爲guest-physical addresses,經過EPT的轉化後才成爲真實的物理地址。

 

如果CR0.PG=0,GuestOS分頁機制沒有打開,直接使用線性地址作爲guest-physical addresses,如果CR0.PG=1,使用分頁機制轉化後的地址作爲guest-physical addresses。

 

EPT的表和頁表基本類似,具體可以參見Intel的編程手冊。

 

EPT的建立:

 

EPT misconfigurations and EPT violations.

EPT misconfigurations 出現在對應的表項不合法,EPT violations出現在表項不允許訪問或者不存在。

 

對於EPT violations引起的vm exit:

gpa = vmcs_read64(GUEST_PHYSICAL_ADDRESS);

kvm_mmu_page_fault(vcpu, gpa & PAGE_MASK, 0);

 

tdp_page_fault處理如下,gpa 根據計算出來pfn,然後調用__direct_map函數,填充對應的表項。

 

KVM對EPT misconfigurations的處理:

EPT misconfigurations 出現在對應的表項不合法,正常情況下不應該出現,KVM對其進行記錄,不進行處理。

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章