[Cbe-oss-dev] [Lhms-devel] Re: [RFC] spufs: memory-add fix for CONFIG_NUMA

Arnd Bergmann arnd at arndb.de
Wed Apr 12 07:48:08 EST 2006


Am Tuesday 11 April 2006 21:55 schrieb Mike Kravetz:
> I'm guessing this is to allow adding memory at a 'sub-section' level.
> For example:  First add 1/2 a section worth of memory at 'Section N'
> physical address.  Then later, add another 1/2 section worth of memory
> at 'Section N' + '1/2 section size' physical address.

Yes. Even worse than that, we are not really adding RAM to the mem_map
but rather io pages that are in a sparsely populated address range.

To be more exact, we have 16 SPEs that are spread over the
address range in a rather weird way:

0x20000000000 SPE0..SPE0..SPE1..SPE1..SPE2..SPE2..SPE3..SPE3
0x20000100000 SPE4..SPE4..SPE5..SPE5..SPE5..SPE6..SPE7..SPE7
0x20001000000 SPE0..SPE1..SPE2..SPE3..SPE4..SPE5..SPE6..SPE7
0x30000000000 SPE8..SPE8..SPE9..SPE9..SPEa..SPEa..SPEb..SPEb
0x30000100000 SPEc..SPEc..SPEd..SPEd..SPEe..SPEe..SPEf..SPEf
0x30001000000 SPE8..SPE9..SPEa..SPEb..SPEc..SPEd..SPEe..SPEf

Basically, each one of them has four different areas, two of
which need to be added to the mem_map. In the most general
case (future CPU with hypervisor and unused SPEs), we can
not make any assumptions about them beyond the fact that
they are in a different range from the main memory.

So for simplicity, the idea is to always add a full section
to mem_map whenever we need to add a few pages for one SPE,
and then ignore that if it was already there.

	Arnd <><



More information about the cbe-oss-dev mailing list