@@ -855,19 +855,31 @@ impl<H: AxVCpuHal> VmxVcpu<H> {
855855 vaddr + seg_base
856856 }
857857
858+ /// Query guest page table to get mapping info.
858859 pub fn guest_page_table_query (
859860 & self ,
860861 gva : GuestVirtAddr ,
861862 ) -> PagingResult < ( GuestPhysAddr , MappingFlags , PageSize ) > {
862863 let addr = self . gva_to_linear_addr ( gva) ;
864+ let guest_ptw_info = self . get_pagetable_walk_info ( ) ;
865+ let guest_page_table: GuestPageTable64 < X64PTE , H :: PagingHandler , H :: EPTTranslator > =
866+ GuestPageTable64 :: construct ( & guest_ptw_info) ;
863867
864- // debug!("guest_page_table_query: gva {:?} linear {:?}", gva, addr);
868+ guest_page_table. query ( addr)
869+ }
865870
871+ /// Query guest page table to get mapping info,
872+ /// alone with raw page table entry value.
873+ pub fn guest_page_table_query_raw (
874+ & self ,
875+ gva : GuestVirtAddr ,
876+ ) -> PagingResult < ( GuestPhysAddr , MappingFlags , PageSize , usize ) > {
877+ let addr = self . gva_to_linear_addr ( gva) ;
866878 let guest_ptw_info = self . get_pagetable_walk_info ( ) ;
867879 let guest_page_table: GuestPageTable64 < X64PTE , H :: PagingHandler , H :: EPTTranslator > =
868880 GuestPageTable64 :: construct ( & guest_ptw_info) ;
869881
870- guest_page_table. query ( addr)
882+ guest_page_table. query_raw ( addr)
871883 }
872884}
873885
0 commit comments