Hi Guangrong, Thanks a lot! I will reopen a new discussion next time. Does that means once the level 1 guest page table entry is modified, the host should make a decision in page fault handler whether the page sync or unsync? My question is that since all level 1 guest page tables are writable, when the entry in the page table is modified. there is no page fault will happen, how can the mmu_need_write_protect to be called to make whether sync or unsync decision? Thanks for your time! Best Wishes, Yaohui On Wed, Mar 26, 2014 at 1:07 AM, Xiao Guangrong <xiaoguangrong@xxxxxxxxxxxxxxxxxx> wrote: > On 03/26/2014 12:40 PM, Hu Yaohui wrote: >> Hi all, >> I hope you have a good day! >> I have debugged the code myself. I have called dump_stack() in >> function "__kvm_unsync_page" >> and function "invlpg". Actually every time before invlpg is called, >> the page fault handled will call "__kvm_unsync_page" before invlpg to >> mark the specified sp as unsynced. (correct me if I am wrong). I am >> wondering why there is a page fault. AFAIK when calling flush_tlb_page >> in the guest os. it will issue invlpg instruction directly, I did not >> see any operation which could always cause the page fault.I would >> really appreciate if if someone could shed me some lights on it. >> Thanks for your time! > > Page fault is used to map a page into guest and set the proper permission > on for it so this is the right place to make decision if the page need be > writable. > > Tlb flush is used when guest wants to have a clean tlb so that host syncs the > unsync page tables when it is happing. > -- 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