|
@@ -84,54 +84,6 @@
|
|
|
/* max amount of RAM to use */
|
|
|
unsigned long __max_memory;
|
|
|
|
|
|
-/* info on what we think the IO hole is */
|
|
|
-unsigned long io_hole_start;
|
|
|
-unsigned long io_hole_size;
|
|
|
-
|
|
|
-/*
|
|
|
- * Do very early mm setup.
|
|
|
- */
|
|
|
-void __init mm_init_ppc64(void)
|
|
|
-{
|
|
|
-#ifndef CONFIG_PPC_ISERIES
|
|
|
- unsigned long i;
|
|
|
-#endif
|
|
|
-
|
|
|
- ppc64_boot_msg(0x100, "MM Init");
|
|
|
-
|
|
|
- /* This is the story of the IO hole... please, keep seated,
|
|
|
- * unfortunately, we are out of oxygen masks at the moment.
|
|
|
- * So we need some rough way to tell where your big IO hole
|
|
|
- * is. On pmac, it's between 2G and 4G, on POWER3, it's around
|
|
|
- * that area as well, on POWER4 we don't have one, etc...
|
|
|
- * We need that as a "hint" when sizing the TCE table on POWER3
|
|
|
- * So far, the simplest way that seem work well enough for us it
|
|
|
- * to just assume that the first discontinuity in our physical
|
|
|
- * RAM layout is the IO hole. That may not be correct in the future
|
|
|
- * (and isn't on iSeries but then we don't care ;)
|
|
|
- */
|
|
|
-
|
|
|
-#ifndef CONFIG_PPC_ISERIES
|
|
|
- for (i = 1; i < lmb.memory.cnt; i++) {
|
|
|
- unsigned long base, prevbase, prevsize;
|
|
|
-
|
|
|
- prevbase = lmb.memory.region[i-1].base;
|
|
|
- prevsize = lmb.memory.region[i-1].size;
|
|
|
- base = lmb.memory.region[i].base;
|
|
|
- if (base > (prevbase + prevsize)) {
|
|
|
- io_hole_start = prevbase + prevsize;
|
|
|
- io_hole_size = base - (prevbase + prevsize);
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
-#endif /* CONFIG_PPC_ISERIES */
|
|
|
- if (io_hole_start)
|
|
|
- printk("IO Hole assumed to be %lx -> %lx\n",
|
|
|
- io_hole_start, io_hole_start + io_hole_size - 1);
|
|
|
-
|
|
|
- ppc64_boot_msg(0x100, "MM Init Done");
|
|
|
-}
|
|
|
-
|
|
|
void free_initmem(void)
|
|
|
{
|
|
|
unsigned long addr;
|