lkml.org 
[lkml]   [2010]   [Jul]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH] Tight check of pfn_valid on sparsemem - v4
    From
    Date
    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.


    -- Dave



    \
     
     \ /
      Last update: 2010-07-30 02:41    [W:0.165 / U:0.060 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site