Hi there, I have tried to log EPT construction status at VM startup, that is to add some codes in function __direct_map (arch/x86/kvm/mmu.c). __direct_map constructs the EPT paging structure when a guest page firstly touched, and I can get related gfn and pfn here. But I tracked a strange address, which is "vcpu 0 pfn 0x8000000000000000 gfn 0xfebf1". Here pfn and gfn are the value of the params in function __direct_map. How can pfn be 0x8000000000000000? Besides, I searched 0xfebf1 in kvm->memslots and cannot get it in any memslots, but __direct_map catches this memory access and build the mapping. Why should this happen? Thanks ahead, Arthur A1. Here's my code in __direct_map: for_each_shadow_entry(vcpu, (u64)gfn << PAGE_SHIFT, iterator) { if (iterator.level == level) { printk(KERN_NOTICE "vcpu %d\tpfn 0x%llx\tgfn 0x%llx\n", kvm->tm_turn, vcpu->vcpu_id, pfn, gfn); } mmu_set_spte(vcpu, iterator.sptep, ACC_ALL, write, &emulate, level, gfn, pfn, prefault, map_writable); direct_pte_prefetch(vcpu, iterator.sptep); ++vcpu->stat.pf_fixed; break; } -- Arthur Chunqi Li Department of Computer Science School of EECS Peking University Beijing, China -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html