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>
This commit is contained in:
parent
e343a895a9
commit
d761f0c521
|
@ -26,6 +26,7 @@
|
||||||
#include <linux/cache.h>
|
#include <linux/cache.h>
|
||||||
#include <linux/of_platform.h>
|
#include <linux/of_platform.h>
|
||||||
#include <linux/dma-mapping.h>
|
#include <linux/dma-mapping.h>
|
||||||
|
#include <linux/cpu.h>
|
||||||
#include <asm/cacheflush.h>
|
#include <asm/cacheflush.h>
|
||||||
#include <asm/entry.h>
|
#include <asm/entry.h>
|
||||||
#include <asm/cpuinfo.h>
|
#include <asm/cpuinfo.h>
|
||||||
|
@ -226,5 +227,23 @@ static int __init setup_bus_notifier(void)
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
arch_initcall(setup_bus_notifier);
|
arch_initcall(setup_bus_notifier);
|
||||||
|
|
||||||
|
static DEFINE_PER_CPU(struct cpu, cpu_devices);
|
||||||
|
|
||||||
|
static int __init topology_init(void)
|
||||||
|
{
|
||||||
|
int i, ret;
|
||||||
|
|
||||||
|
for_each_present_cpu(i) {
|
||||||
|
struct cpu *c = &per_cpu(cpu_devices, i);
|
||||||
|
|
||||||
|
ret = register_cpu(c, i);
|
||||||
|
if (ret)
|
||||||
|
printk(KERN_WARNING "topology_init: register_cpu %d "
|
||||||
|
"failed (%d)\n", i, ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
subsys_initcall(topology_init);
|
||||||
|
|
Loading…
Reference in New Issue