On Thu, Nov 19, 2020 at 03:41:46PM +0100, Daniel Vetter wrote: > @@ -4805,21 +4824,15 @@ EXPORT_SYMBOL(follow_pte_pmd); > * Return: zero and the pfn at @pfn on success, -ve otherwise. > */ > int follow_pfn(struct vm_area_struct *vma, unsigned long address, > - unsigned long *pfn) > + unsigned long *pfn, struct mmu_notifier *subscription) > { > - int ret = -EINVAL; > - spinlock_t *ptl; > - pte_t *ptep; > + if (WARN_ON(!subscription->mm)) > + return -EINVAL; > > + if (WARN_ON(subscription->mm != vma->vm_mm)) > + return -EINVAL; These two things are redundant right? vma->vm_mm != NULL? BTW, why do we even have this for nommu? If the only caller is kvm, can you even compile kvm on nommu?? Jason