diff options
author | David S. Miller <davem@sunset.davemloft.net> | 2007-05-25 18:49:59 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-05-29 05:49:41 -0400 |
commit | 5cbc30737398b49f62ae8603129ce43ac7db1a41 (patch) | |
tree | 45d01a686865e6fd9c32b670f77af1e37db03008 /arch/sparc64/mm/init.c | |
parent | e01c0d6d8cf29c1c11725837b265598cab687952 (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.c | 17 |
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> | |
48 | extern 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) | |||
1335 | extern void cheetah_ecache_flush_init(void); | 1335 | extern void cheetah_ecache_flush_init(void); |
1336 | extern void sun4v_patch_tlb_handlers(void); | 1336 | extern void sun4v_patch_tlb_handlers(void); |
1337 | 1337 | ||
1338 | extern void cpu_probe(void); | ||
1339 | extern void central_probe(void); | ||
1340 | |||
1338 | static unsigned long last_valid_pfn; | 1341 | static unsigned long last_valid_pfn; |
1339 | pgd_t swapper_pg_dir[2048]; | 1342 | pgd_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 | ||
1443 | static void __init taint_real_pages(void) | 1454 | static void __init taint_real_pages(void) |