aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc64/mm/init.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@sunset.davemloft.net>2007-05-25 18:49:59 -0400
committerDavid S. Miller <davem@sunset.davemloft.net>2007-05-29 05:49:41 -0400
commit5cbc30737398b49f62ae8603129ce43ac7db1a41 (patch)
tree45d01a686865e6fd9c32b670f77af1e37db03008 /arch/sparc64/mm/init.c
parente01c0d6d8cf29c1c11725837b265598cab687952 (diff)
[SPARC64]: Use machine description and OBP properly for cpu probing.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc64/mm/init.c')
-rw-r--r--arch/sparc64/mm/init.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/arch/sparc64/mm/init.c b/arch/sparc64/mm/init.c
index 0c9995c3b8ed..977698269d3a 100644
--- a/arch/sparc64/mm/init.c
+++ b/arch/sparc64/mm/init.c
@@ -23,6 +23,7 @@
23#include <linux/kprobes.h> 23#include <linux/kprobes.h>
24#include <linux/cache.h> 24#include <linux/cache.h>
25#include <linux/sort.h> 25#include <linux/sort.h>
26#include <linux/percpu.h>
26 27
27#include <asm/head.h> 28#include <asm/head.h>
28#include <asm/system.h> 29#include <asm/system.h>
@@ -44,8 +45,7 @@
44#include <asm/hypervisor.h> 45#include <asm/hypervisor.h>
45#include <asm/prom.h> 46#include <asm/prom.h>
46#include <asm/sstate.h> 47#include <asm/sstate.h>
47 48#include <asm/mdesc.h>
48extern void device_scan(void);
49 49
50#define MAX_PHYS_ADDRESS (1UL << 42UL) 50#define MAX_PHYS_ADDRESS (1UL << 42UL)
51#define KPTE_BITMAP_CHUNK_SZ (256UL * 1024UL * 1024UL) 51#define KPTE_BITMAP_CHUNK_SZ (256UL * 1024UL * 1024UL)
@@ -1335,6 +1335,9 @@ void __cpuinit sun4v_ktsb_register(void)
1335extern void cheetah_ecache_flush_init(void); 1335extern void cheetah_ecache_flush_init(void);
1336extern void sun4v_patch_tlb_handlers(void); 1336extern void sun4v_patch_tlb_handlers(void);
1337 1337
1338extern void cpu_probe(void);
1339extern void central_probe(void);
1340
1338static unsigned long last_valid_pfn; 1341static unsigned long last_valid_pfn;
1339pgd_t swapper_pg_dir[2048]; 1342pgd_t swapper_pg_dir[2048];
1340 1343
@@ -1419,8 +1422,13 @@ void __init paging_init(void)
1419 1422
1420 kernel_physical_mapping_init(); 1423 kernel_physical_mapping_init();
1421 1424
1425 real_setup_per_cpu_areas();
1426
1422 prom_build_devicetree(); 1427 prom_build_devicetree();
1423 1428
1429 if (tlb_type == hypervisor)
1430 sun4v_mdesc_init();
1431
1424 { 1432 {
1425 unsigned long zones_size[MAX_NR_ZONES]; 1433 unsigned long zones_size[MAX_NR_ZONES];
1426 unsigned long zholes_size[MAX_NR_ZONES]; 1434 unsigned long zholes_size[MAX_NR_ZONES];
@@ -1437,7 +1445,10 @@ void __init paging_init(void)
1437 zholes_size); 1445 zholes_size);
1438 } 1446 }
1439 1447
1440 device_scan(); 1448 prom_printf("Booting Linux...\n");
1449
1450 central_probe();
1451 cpu_probe();
1441} 1452}
1442 1453
1443static void __init taint_real_pages(void) 1454static void __init taint_real_pages(void)