having problems with remap_page_range() and virt_to_phys()
From: Chris Friesen
Date: Thu Sep 09 2004 - 19:13:11 EST
I'm trying to allocate a page of in-kernel memory and make it accessable to
userspace and to late asm code where we don't have virtual memory enabled.
I'm running code essentially equivalent to the following, where "map_addr" is a
virtual address passed in by userspace, and "vma" is the appropriate one for
that address:
struct page *pg = alloc_page(GFP_KERNEL);
void *virt = page_address(pg);
unsigned long phys = virt_to_phys(virt)
remap_page_range(vma, map_addr, phys, PAGE_SIZE, vma->vm_page_prot)
The problem that I'm having is that after the call to remap_page_range, the
result of
virt_to_phys(map_addr)
is not equal to "phys", and I assume it should be since its supposed to be
pointing to the same physical page as "virt".
Anyone have any ideas? I can't post the exact code right now since the machine
is at work and hung (Oops.) but I could post it tomorrow if that is necessary.
I'm using 2.6.5 for ppc, if it makes any difference.
Thanks,
Chris
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/