Fixed the patch: on disabled processor entry, next entry pointer wasn't computed,
leading to an infinite loop... git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29224 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -151,9 +151,8 @@ smp_do_mp_config(mp_floating_struct *floatingStruct)
|
|||||||
|
|
||||||
struct mp_base_processor *processor = (struct mp_base_processor *)pointer;
|
struct mp_base_processor *processor = (struct mp_base_processor *)pointer;
|
||||||
|
|
||||||
/* skip if the processor is not enabled. */
|
/* is processor enabled? */
|
||||||
if(!(processor->cpu_flags & 0x1))
|
if(processor->cpu_flags & 0x1) {
|
||||||
break;
|
|
||||||
|
|
||||||
gKernelArgs.arch_args.cpu_apic_id[gKernelArgs.num_cpus] = processor->apic_id;
|
gKernelArgs.arch_args.cpu_apic_id[gKernelArgs.num_cpus] = processor->apic_id;
|
||||||
gKernelArgs.arch_args.cpu_os_id[processor->apic_id] = gKernelArgs.num_cpus;
|
gKernelArgs.arch_args.cpu_os_id[processor->apic_id] = gKernelArgs.num_cpus;
|
||||||
@@ -169,6 +168,8 @@ smp_do_mp_config(mp_floating_struct *floatingStruct)
|
|||||||
", BSP" : ""));
|
", BSP" : ""));
|
||||||
|
|
||||||
gKernelArgs.num_cpus++;
|
gKernelArgs.num_cpus++;
|
||||||
|
}
|
||||||
|
|
||||||
pointer += sizeof(struct mp_base_processor);
|
pointer += sizeof(struct mp_base_processor);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user