On Thursday, July 11, 2024 7:42 AM, James Houghton wrote: > The first prong for enabling KVM Userfault support for x86 is to be able to > inform userspace of userfaults. We know when userfaults occurs when > fault->pfn comes back as KVM_PFN_ERR_FAULT, so in > kvm_mmu_prepare_memory_fault_exit(), simply check if fault->pfn is indeed > KVM_PFN_ERR_FAULT. This means always setting fault->pfn to a known value (I > have chosen KVM_PFN_ERR_FAULT) before calling > kvm_mmu_prepare_memory_fault_exit(). > > The next prong is to unmap pages that are newly userfault-enabled. Do this in > kvm_arch_pre_set_memory_attributes(). Why is there a need to unmap it? I think a userfault is triggered on a page during postcopy when its data has not yet been fetched from the source, that is, the page is never accessed by guest on the destination and the page table leaf entry is empty.