Hi Andres, On Wed, Sep 17, 2014 at 10:51:48AM -0700, Andres Lagar-Cavilla wrote: [...] > static inline int check_user_page_hwpoison(unsigned long addr) > { > int rc, flags = FOLL_TOUCH | FOLL_HWPOISON | FOLL_WRITE; >@@ -1177,9 +1214,15 @@ static int hva_to_pfn_slow(unsigned long addr, bool *async, bool write_fault, > npages = get_user_page_nowait(current, current->mm, > addr, write_fault, page); > up_read(¤t->mm->mmap_sem); >- } else >- npages = get_user_pages_fast(addr, 1, write_fault, >- page); >+ } else { >+ /* >+ * By now we have tried gup_fast, and possibly async_pf, and we >+ * are certainly not atomic. Time to retry the gup, allowing >+ * mmap semaphore to be relinquished in the case of IO. >+ */ >+ npages = kvm_get_user_page_io(current, current->mm, addr, >+ write_fault, page); >+ } try_async_pf gfn_to_pfn_async __gfn_to_pfn async = false __gfn_to_pfn_memslot hva_to_pfn hva_to_pfn_fast hva_to_pfn_slow kvm_get_user_page_io page will always be ready after kvm_get_user_page_io which leads to APF don't need to work any more. Regards, Wanpeng Li > if (npages != 1) > return npages; > >-- >2.1.0.rc2.206.gedb03e5 > >-- >To unsubscribe, send a message with 'unsubscribe linux-mm' in >the body to majordomo@xxxxxxxxx. For more info on Linux MM, >see: http://www.linux-mm.org/ . >Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a> -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>