Re: [PATCH] Tight check of pfn_valid on sparsemem - v4

From: Minchan Kim
Date: Fri Jul 30 2010 - 05:44:05 EST

On Fri, Jul 30, 2010 at 9:38 AM, Dave Hansen <dave@xxxxxxxxxxxxxxxxxx> wrote:
> On Thu, 2010-07-29 at 23:14 +0100, Russell King - ARM Linux wrote:
>> What we need is something which allows us to handle memory scattered
>> in several regions of the physical memory map, each bank being a
>> variable size.
> Russell, it does sound like you have a pretty pathological case here. :)
> It's not one that we've really attempted to address on any other
> architectures.
> Just to spell it out, if you have 4GB of physical address space, with
> 512k sections, you need 8192 sections, which means 8192*8 bytes, so it'd
> eat 64k of memory.  That's the normal SPARSEMEM case.
> SPARSEMEM_EXTREME would be a bit different.  It's a 2-level lookup.
> You'd have 16 "section roots", each representing 256MB of address space.
> Each time we put memory under one of those roots, we'd fill in a
> 512-section second-level table, which is designed to always fit into one
> page.  If you start at 256MB, you won't waste all those entries.
> The disadvantage of SPARSEMEM_EXTREME is that it costs you the extra
> level in the lookup.  The space loss in arm's case would only be 16
> pointers, which would more than be made up for by the other gains.
> The other case where it really makes no sense is when you're populating
> a single (or small number) of sections, evenly across the address space.
> For instance, let's say you have 16 512k banks, evenly spaced at 256MB
> intervals:
>        512k@0x00000000
>        512k@0x10000000
>        512k@0x20000000
>        ...
>        512k@0xF0000000
> If you use SPARSEMEM_EXTREME on that it will degenerate to having the
> same memory consumption as classic SPARSEMEM, along with the extra
> lookup of EXTREME.  But, I haven't heard you say that you have this kind
> of configuration, yet. :)
> SPARSEMEM_EXTREME is really easy to test.  You just have to set it in
> your .config.  To get much use out of it, you'd also need to make the
> SECTION_SIZE, like the 512k we were talking about.

Thanks for good explanation.
When this problem happened, I suggested to use section size 16M.
The space isn't a big cost but failed since Russell doesn't like it.

So I tried to enhance sparsemem to support hole but you guys doesn't like it.
Frankly speaking myself don't like this approach but I think whoever
have to care of the problem.

Hmm, Is it better to give up Samsung's good embedded board?
It depends on Russell's opinion.

I will hold this patch until reaching the conclusion of controversial
Thanks, Dave.

> -- Dave

Kind regards,
Minchan Kim
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at