Re: [PATCH] mm: bootmem: use phys_addr_t for physical addresses

From: Cyril Chemparathy
Date: Wed Sep 12 2012 - 20:41:10 EST


Hi Tejun,

On 9/12/2012 8:34 PM, Tejun Heo wrote:
Hello,

On Wed, Sep 12, 2012 at 08:08:30PM -0400, Cyril Chemparathy wrote:
So, a function which takes phys_addr_t for goal and limit but returns
void * doesn't make much sense unless the function creates directly
addressable mapping somewhere.

On the 32-bit PAE platform in question, physical memory is located
outside the 4GB range. Therefore phys_to_virt takes a 64-bit
physical address and returns a 32-bit kernel mapped lowmem pointer.

Yes but phys_to_virt() can return the vaddr only if the physical
address is already mapped in the kernel address space; otherwise, you
need one of the kmap*() calls which may not be online early in the
boot and consumes either the vmalloc area or fixmaps. bootmem
interface can't handle unmapped memory.


You probably missed the lowmem bit from my response?

This system has all of its memory outside the 4GB physical address space. This includes lowmem, which is permanently mapped into the kernel virtual address space as usual.

--
Thanks
- Cyril
--
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/