Update of /cvsroot/linuxconsole/ruby/linux/arch/alpha/kernel
In directory sc8-pr-cvs1:/tmp/cvs-serv15026/linux/arch/alpha/kernel
Modified Files:
setup.c
Log Message:
Synced to 2.5.59
Index: setup.c
===================================================================
RCS file: /cvsroot/linuxconsole/ruby/linux/arch/alpha/kernel/setup.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- setup.c 23 Nov 2002 00:55:44 -0000 1.12
+++ setup.c 1 Feb 2003 18:57:11 -0000 1.13
@@ -155,6 +155,7 @@
WEAK(eiger_mv);
WEAK(jensen_mv);
WEAK(lx164_mv);
+WEAK(marvel_ev7_mv);
WEAK(miata_mv);
WEAK(mikasa_mv);
WEAK(mikasa_primo_mv);
@@ -174,6 +175,7 @@
WEAK(shark_mv);
WEAK(sx164_mv);
WEAK(takara_mv);
+WEAK(titan_mv);
WEAK(webbrick_mv);
WEAK(wildfire_mv);
WEAK(xl_mv);
@@ -288,7 +290,7 @@
(hwrpb->mddt_offset + (unsigned long) hwrpb);
for_each_mem_cluster(memdesc, cluster, i) {
- printk("memcluster %d, usage %01lx, start %8lu, end %8lu\n",
+ printk("memcluster %lu, usage %01lx, start %8lu, end %8lu\n",
i, cluster->usage, cluster->start_pfn,
cluster->start_pfn + cluster->numpages);
@@ -303,6 +305,24 @@
max_low_pfn = end;
}
+ /*
+ * Except for the NUMA systems (wildfire, marvel) all of the
+ * Alpha systems we run on support 32GB of memory or less.
+ * Since the NUMA systems introduce large holes in memory addressing,
+ * we can get into a situation where there is not enough contiguous
+ * memory for the memory map.
+ *
+ * Limit memory to the first 32GB to limit the NUMA systems to
+ * memory on their first node (wildfire) or 2 (marvel) to avoid
+ * not being able to produce the memory map. In order to access
+ * all of the memory on the NUMA systems, build with discontiguous
+ * memory support.
+ *
+ * If the user specified a memory limit, let that memory limit stand.
+ */
+ if (!mem_size_limit)
+ mem_size_limit = (32ul * 1024 * 1024 * 1024) >> PAGE_SHIFT;
+
if (mem_size_limit && max_low_pfn >= mem_size_limit)
{
printk("setup: forcing memory size to %ldK (from %ldK).\n",
@@ -664,7 +684,7 @@
"Mikasa", "EB64", "EB66", "EB64+", "AlphaBook1",
"Rawhide", "K2", "Lynx", "XL", "EB164", "Noritake",
"Cortex", "29", "Miata", "XXM", "Takara", "Yukon",
- "Tsunami", "Wildfire", "CUSCO", "Eiger", "Titan"
+ "Tsunami", "Wildfire", "CUSCO", "Eiger", "Titan", "Marvel"
};
static char unofficial_names[][8] = {"100", "Ruffian"};
@@ -683,15 +703,20 @@
static char eb66_names[][8] = {"EB66", "EB66+"};
static int eb66_indices[] = {0,0,1};
+static char marvel_names[][16] = {
+ "Marvel/EV7"
+};
+static int marvel_indices[] = { 0 };
+
static char rawhide_names[][16] = {
"Dodge", "Wrangler", "Durango", "Tincup", "DaVinci"
};
static int rawhide_indices[] = {0,0,0,1,1,2,2,3,3,4,4};
static char titan_names[][16] = {
- "0", "Privateer"
+ "DEFAULT", "Privateer", "Falcon", "Granite"
};
-static int titan_indices[] = {0,1};
+static int titan_indices[] = {0,1,2,2,3};
static char tsunami_names[][16] = {
"0", "DP264", "Warhol", "Windjammer", "Monet", "Clipper",
@@ -744,6 +769,7 @@
NULL, /* CUSCO */
&eiger_mv, /* Eiger */
NULL, /* Titan */
+ NULL, /* Marvel */
};
static struct alpha_machine_vector *unofficial_vecs[] __initdata =
@@ -781,10 +807,17 @@
&eb66p_mv
};
+ static struct alpha_machine_vector *marvel_vecs[] __initdata =
+ {
+ &marvel_ev7_mv,
+ };
+
static struct alpha_machine_vector *titan_vecs[] __initdata =
{
- NULL,
+ &titan_mv, /* default */
&privateer_mv, /* privateer */
+ &titan_mv, /* falcon */
+ &privateer_mv, /* granite */
};
static struct alpha_machine_vector *tsunami_vecs[] __initdata =
@@ -849,7 +882,12 @@
if (member < N(eb66_indices))
vec = eb66_vecs[eb66_indices[member]];
break;
+ case ST_DEC_MARVEL:
+ if (member < N(marvel_indices))
+ vec = marvel_vecs[marvel_indices[member]];
+ break;
case ST_DEC_TITAN:
+ vec = titan_vecs[0]; /* default */
if (member < N(titan_indices))
vec = titan_vecs[titan_indices[member]];
break;
@@ -988,11 +1026,16 @@
if (member < N(eb66_indices))
*variation_name = eb66_names[eb66_indices[member]];
break;
+ case ST_DEC_MARVEL:
+ if (member < N(marvel_indices))
+ *variation_name = marvel_names[marvel_indices[member]];
+ break;
case ST_DEC_RAWHIDE:
if (member < N(rawhide_indices))
*variation_name = rawhide_names[rawhide_indices[member]];
break;
case ST_DEC_TITAN:
+ *variation_name = titan_names[0]; /* default */
if (member < N(titan_indices))
*variation_name = titan_names[titan_indices[member]];
break;
|