Messages in this thread | | | Date | Wed, 11 Oct 2006 12:12:19 +0200 | From | Thomas Hellstrom <> | Subject | Re: [patch 4/5] mm: add vm_insert_pfn helpler |
| |
Nick Piggin wrote: > Add a vm_insert_pfn helper, so that ->fault handlers can have nopfn > functionality by installing their own pte and returning NULL. > > Signed-off-by: Nick Piggin <npiggin@suse.de> > > Index: linux-2.6/include/linux/mm.h > =================================================================== > --- linux-2.6.orig/include/linux/mm.h > +++ linux-2.6/include/linux/mm.h > @@ -1121,6 +1121,7 @@ unsigned long vmalloc_to_pfn(void *addr) > int remap_pfn_range(struct vm_area_struct *, unsigned long addr, > unsigned long pfn, unsigned long size, pgprot_t); > int vm_insert_page(struct vm_area_struct *, unsigned long addr, struct page *); > +int vm_insert_pfn(struct vm_area_struct *, unsigned long addr, unsigned long pfn); > > struct page *follow_page(struct vm_area_struct *, unsigned long address, > unsigned int foll_flags); > Index: linux-2.6/mm/memory.c > =================================================================== > --- linux-2.6.orig/mm/memory.c > +++ linux-2.6/mm/memory.c > @@ -1267,6 +1267,50 @@ int vm_insert_page(struct vm_area_struct > } > EXPORT_SYMBOL(vm_insert_page); > > +/** > + * vm_insert_pfn - insert single pfn into user vma > + * @vma: user vma to map to > + * @addr: target user address of this page > + * @pfn: source kernel pfn > + * > + * Similar to vm_inert_page, this allows drivers to insert individual pages > + * they've allocated into a user vma. Same comments apply. > + * > + * This function should only be called from a vm_ops->fault handler, and > + * in that case the handler should return NULL. > + */ > +int vm_insert_pfn(struct vm_area_struct *vma, unsigned long addr, unsigned long pfn)
Nick, I just realized: would it be possible to have a pgprot_t argument to this one, instead of it using vma->vm_pgprot?
The motivation for this (DRM again) is that some architectures (powerpc) cannot map the AGP aperture through IO space, but needs to remap the page from memory with a nocache attribute set. Others need special pgprot settings for write-combined mappings.
Now, there's a possibility to change vma->vm_pgprot during the first ->fault(), but again, we only have the mmap_sem in read mode.
/Thomas
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |