Try rc = remap_page_range(vma->vm_start, virt_to_phys(heap_map_base), npages*PAGE_SIZE, vma->vm_page_prot);
Arno > I'm trying to use the bigphysarea patch to help me allocate big > physical chunks of memory for use by some custom embedded devices. > I've applied the bigphysarea-2.4.20 patch and built, no trouble, > and I've got it to config for my PPC. I can see at boot time that > the bigphysarea is getting its pages. > > I'm trying to use a mmap call to the driver to map a chunk of this > memory into the process. The mmap for the driver has this: > > pgprot_val(vma->vm_page_prot) |= _PAGE_NO_CACHE; > vma->vm_flags |= VM_RESERVED; > > npages = (vma->vm_end - vma->vm_start) / PAGE_SIZE; > heap_map_base = bigphysarea_alloc_pages(npages, 1, GFP_KERNEL); > > printk("XXXX Map base=%p, %ld pages\n", heap_map_base, npages); > > rc = remap_page_range(vma->vm_start, > (unsigned long)heap_map_base, > npages*PAGE_SIZE, > vma->vm_page_prot); > > The mmap returns without an error, but any access to the mapped > region gets me an immediate "Oops: machine check, sig: 7". I don't > see it. Where is the stupid mistake that I'm invariably making?