diff options
| author | Michal Simek <monstr@monstr.eu> | 2012-01-10 06:15:58 -0500 |
|---|---|---|
| committer | Michal Simek <monstr@monstr.eu> | 2012-01-11 03:20:55 -0500 |
| commit | d761f0c521868e59cd0bc59159cbdb4686fe210d (patch) | |
| tree | b76736a73f86a5c0d745cc4c6ca1ae59a4394df8 /arch/microblaze/kernel | |
| parent | e343a895a9f342f239c5e3c5ffc6c0b1707e6244 (diff) | |
microblaze: Add topology init
Init topology subsystem by cpu registration.
Microblaze Linux kernel is fauling by
"Oops: kernel access of bad area, sig: 11"
because cpu is not initialized.
Signed-off-by: Michal Simek <monstr@monstr.eu>
Diffstat (limited to 'arch/microblaze/kernel')
| -rw-r--r-- | arch/microblaze/kernel/setup.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/arch/microblaze/kernel/setup.c b/arch/microblaze/kernel/setup.c index 604cd9dd133..d4fc1a97177 100644 --- a/arch/microblaze/kernel/setup.c +++ b/arch/microblaze/kernel/setup.c | |||
| @@ -26,6 +26,7 @@ | |||
| 26 | #include <linux/cache.h> | 26 | #include <linux/cache.h> |
| 27 | #include <linux/of_platform.h> | 27 | #include <linux/of_platform.h> |
| 28 | #include <linux/dma-mapping.h> | 28 | #include <linux/dma-mapping.h> |
| 29 | #include <linux/cpu.h> | ||
| 29 | #include <asm/cacheflush.h> | 30 | #include <asm/cacheflush.h> |
| 30 | #include <asm/entry.h> | 31 | #include <asm/entry.h> |
| 31 | #include <asm/cpuinfo.h> | 32 | #include <asm/cpuinfo.h> |
| @@ -226,5 +227,23 @@ static int __init setup_bus_notifier(void) | |||
| 226 | 227 | ||
| 227 | return 0; | 228 | return 0; |
| 228 | } | 229 | } |
| 229 | |||
| 230 | arch_initcall(setup_bus_notifier); | 230 | arch_initcall(setup_bus_notifier); |
| 231 | |||
| 232 | static DEFINE_PER_CPU(struct cpu, cpu_devices); | ||
| 233 | |||
| 234 | static int __init topology_init(void) | ||
| 235 | { | ||
| 236 | int i, ret; | ||
| 237 | |||
| 238 | for_each_present_cpu(i) { | ||
| 239 | struct cpu *c = &per_cpu(cpu_devices, i); | ||
| 240 | |||
| 241 | ret = register_cpu(c, i); | ||
| 242 | if (ret) | ||
| 243 | printk(KERN_WARNING "topology_init: register_cpu %d " | ||
| 244 | "failed (%d)\n", i, ret); | ||
| 245 | } | ||
| 246 | |||
| 247 | return 0; | ||
| 248 | } | ||
| 249 | subsys_initcall(topology_init); | ||
