DiscontiguousMemorySupport

From Linux PARISC Wiki
Revision as of 12:00, 5 February 2014 by Deller (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Discontiguous Memory Support

Several PA-RISC machines have large memory holes in their memory maps. e.g. Astro-based machines, the N-class, and the new zx1-based PA8800 machines.

We have these possible memory map layouts:

 * Astro: 0-3.75, 67.75-68, 4-64
 * zx1: 0-1, 257-260, 4-256
 * Stretch (N-class): 0-2, 4-32, 34-xxx

Normally Linux uses a single contiguous memory map to address all the physical memory in a machine. In order to support discontiguous memory, several memory maps representing each contiguous segment of memory are created. Each of these segments is called a "node". From the above memory maps, we can see that each 1GB can only belong to one region (node), so we can create an index table for pfn to nid lookup.

[[1]] PA-RISC hardware implementations and issues around N-class machines, MatthewWilcox also explained:

A500/L1000/L2000 use Astro/Elroy just like the B/C/J class. L1500/L3000/N use Ike and Stretch in place of Astro. I once downloaded an N-class PDF which I've subsequently lost. If I remember correctly, it looked like:

CPU --+-- CPU RAM CPU --+-- CPU DEW ||||| DEW +--------+--------+---- Stretch ----+--------+------+ IKE DEW DEW IKE ||||| CPU --+-- CPU CPU --+-- CPU ||||| Ropes Ropes

(Elroys on the end of the ropes, of course).

My understanding is that Stretch is the problem. We don't follow the rules for non-coherent aliases and Stretch isn't as lenient as other memory controllers.

Personal tools