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

From: Cyril Chemparathy
Date: Wed Sep 12 2012 - 20:08:37 EST


Hi Tejun,

On 9/12/2012 4:39 PM, Tejun Heo wrote:
Hello,

On Wed, Sep 12, 2012 at 12:06:48PM -0400, Cyril Chemparathy wrote:
static void * __init alloc_bootmem_core(unsigned long size,
unsigned long align,
- unsigned long goal,
- unsigned long limit)
+ phys_addr_t goal,
+ phys_addr_t limit)

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.

The right thing to do would be converting to nobootmem (ie. memblock)
and use the memblock interface. Have no idea at all whether that
would be a realistic short-term solution for arm.


I must plead ignorance and let wiser souls chime in on ARM architecture plans w.r.t. nobootmem. As far as I can tell, the only thing that blocks us from using nobootmem at present is the need for sparsemem on some platforms.

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