From Linux PARISC Wiki
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.

Discussing 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