On 08/24/2009 07:55 AM, Avi Kivity wrote:
On 08/24/2009 12:59 AM, Stephen Donnelly wrote:
On Thu, Aug 20, 2009 at 12:14 AM, Avi Kivity<avi@xxxxxxxxxx> wrote:
On 08/13/2009 07:07 AM, Stephen Donnelly wrote:
npages = get_user_pages_fast(addr, 1, 1, page); returns -EFAULT,
presumably because (vma->vm_flags& (VM_IO | VM_PFNMAP)).
It takes then unlikely branch, and checks the vma, but I don't
understand what it is doing here: pfn = ((addr - vma->vm_start)>>
PAGE_SHIFT) + vma->vm_pgoff;
It's calculating the pfn according to pfnmap rules.
From what I understand this will only work when remapping 'main
memory', e.g. where the pgoff is equal to the physical page offset?
VMAs that remap IO memory will usually set pgoff to 0 for the start of
the mapping.
If so, how do they calculate the pfn when mapping pages? kvm needs to
be able to do the same thing.
Maybe the simplest thing is to call vma->vm_ops->fault here.
Marcelo/Chris? Context is improving gfn_to_pfn() on the mmio path.
--
error compiling committee.c: too many arguments to function
--
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