X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fparisc%2Fkernel%2Fprocessor.c;h=13b721cb9f557f3a2111b74c857da8c33f4bbf95;hb=6a77f38946aaee1cd85eeec6cf4229b204c15071;hp=5b05759ac9d116b643115bb8b178650d0e82ec25;hpb=5273a3df6485dc2ad6aa7ddd441b9a21970f003b;p=linux-2.6.git diff --git a/arch/parisc/kernel/processor.c b/arch/parisc/kernel/processor.c index 5b05759ac..13b721cb9 100644 --- a/arch/parisc/kernel/processor.c +++ b/arch/parisc/kernel/processor.c @@ -33,12 +33,14 @@ #include #include #include +#include #include #include /* for register_parisc_driver() stuff */ #include #include #include +#include #include /* for struct irq_region */ #include @@ -151,7 +153,7 @@ static int __init processor_probe(struct parisc_device *dev) p->cpuid = cpuid; /* save CPU id */ p->txn_addr = txn_addr; /* save CPU IRQ address */ #ifdef CONFIG_SMP - p->lock = SPIN_LOCK_UNLOCKED; + spin_lock_init(&p->lock); /* ** FIXME: review if any other initialization is clobbered @@ -187,6 +189,17 @@ static int __init processor_probe(struct parisc_device *dev) cpu_irq_actions[cpuid] = actions; } #endif + + /* + * Bring this CPU up now! (ignore bootstrap cpuid == 0) + */ +#ifdef CONFIG_SMP + if (cpuid) { + cpu_set(cpuid, cpu_present_map); + cpu_up(cpuid); + } +#endif + return 0; } @@ -231,9 +244,7 @@ void __init collect_boot_cpu_data(void) boot_cpu_data.hversion = boot_cpu_data.pdc.model.hversion; boot_cpu_data.sversion = boot_cpu_data.pdc.model.sversion; - boot_cpu_data.cpu_type = - parisc_get_cpu_type(boot_cpu_data.hversion); - + boot_cpu_data.cpu_type = parisc_get_cpu_type(boot_cpu_data.hversion); boot_cpu_data.cpu_name = cpu_name_version[boot_cpu_data.cpu_type][0]; boot_cpu_data.family_name = cpu_name_version[boot_cpu_data.cpu_type][1]; } @@ -276,6 +287,7 @@ int __init init_per_cpu(int cpunum) int ret; struct pdc_coproc_cfg coproc_cfg; + set_firmware_width(); ret = pdc_coproc_cfg(&coproc_cfg); if(ret >= 0 && coproc_cfg.ccr_functional) {