From 63c851a15d4a72a56e2edfa0124cb4a840b0dcd5 Mon Sep 17 00:00:00 2001 From: Philippe Houdoin Date: Sun, 15 Feb 2009 18:26:13 +0000 Subject: [PATCH] Applied patch supplied by jkeeping in #3445: smp_do_mp_config wasn't checking MPS table CPU entries for the enabled flag. This caused Haiku to fail to boot under KVM on Linux. Thanks you, jkeeping. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29222 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/boot/platform/bios_ia32/smp.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/system/boot/platform/bios_ia32/smp.cpp b/src/system/boot/platform/bios_ia32/smp.cpp index 4f59a9dfec..f8dccfc7d4 100644 --- a/src/system/boot/platform/bios_ia32/smp.cpp +++ b/src/system/boot/platform/bios_ia32/smp.cpp @@ -151,6 +151,10 @@ smp_do_mp_config(mp_floating_struct *floatingStruct) struct mp_base_processor *processor = (struct mp_base_processor *)pointer; + /* skip if the processor is not enabled. */ + if(!(processor->cpu_flags & 0x1)) + break; + 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_apic_version[gKernelArgs.num_cpus] = processor->apic_version;