On 09/02/2018 08:14, Cédric Le Goater wrote: >>> @@ -402,8 +450,15 @@ int kvmppc_book3s_radix_page_fault(struct kvm_run *run, struct kvm_vcpu *vcpu, >>> vma = find_vma(current->mm, hva); >>> if (vma && vma->vm_start <= hva && hva < vma->vm_end && >>> (vma->vm_flags & VM_PFNMAP)) { >>> - pfn = vma->vm_pgoff + >>> - ((hva - vma->vm_start) >> PAGE_SHIFT); >>> + if (vma->vm_flags & (VM_IO | VM_PFNMAP)) { >>> + ret = hva_to_pfn_remapped(vma, hva, writing, >>> + &pfn); >>> + if (ret == -EAGAIN) >>> + return RESUME_GUEST; >>> + } else { >>> + pfn = vma->vm_pgoff + >>> + ((hva - vma->vm_start) >> PAGE_SHIFT); >>> + } >> I don't think the else case is useful. If fact you are checking >> VM_PFNMAP twice... > yes. I am not sure what the VM_PFNMAP case does. The code comes > from kvmppc_book3s_hv_page_fault() I suppose. Maybe the outer check should be for VM_IO|VM_PFNMAP? (Also, why is this code reinventing most of hva_to_pfn? Not asking you to fix that of course, but perhaps there's something to improve in the generic code too). Thanks, Paolo -- To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html