[ros-dev] How does one make a MP build anyway?

Hartmut Birr osexpert at googlemail.com
Wed Dec 21 18:00:18 CET 2005


WaxDragon wrote:
> Gang,
>
>    I have been unsuccessful in building a working MP bootcd for a
> while now.  I conferred with Hartmut about some of the details, but
> still cannot get it working.
>
> This is what I tried:
>
> 1. Set MP=1 in config.xml
> 2. Hacked the hal xml files to make halmp.dll hal.dll on the bootcd, per Harmut
>
> Index: halx86/up/halup.xml
> ===================================================================
> --- halx86/up/halup.xml (revision 20282)
> +++ halx86/up/halup.xml (working copy)
> @@ -1,6 +1,6 @@
>  <module name="halup" type="kernelmodedll">
>         <importlibrary definition="../../hal/hal.def" />
> -       <bootstrap base="reactos" nameoncd="hal.dll" />
> +       <bootstrap base="reactos" />
>         <include base="hal_generic">../include</include>
>         <include base="ntoskrnl">include</include>
>         <define name="_DISABLE_TIDENTS" />
> Index: halx86/mp/halmp.xml
> ===================================================================
> --- halx86/mp/halmp.xml (revision 20282)
> +++ halx86/mp/halmp.xml (working copy)
> @@ -1,6 +1,6 @@
>  <module name="halmp" type="kernelmodedll">
>         <importlibrary definition="../../hal/hal.def" />
> -       <bootstrap base="reactos" />
> +       <bootstrap base="reactos" nameoncd="hal.dll"/>
>         <include base="hal_generic">../include</include>
>         <include base="ntoskrnl">include</include>
>         <define name="_DISABLE_TIDENTS" />
>
> 3. make bootcd, as normal
>
>   
I can build a smp boot cd. The smp build runs on my smp machine (ASUS
P2B-DS motherboard with 2xPIII 500MHz). I've also boot the smp build on
my amd64. I've update my pc with a amd64x2 cpu. Since the update, the
smp build won't boot. Ros hangs before I can see any debug messages.

> The resulting bootcd fails to boot under "qemu -smp 2" with the following trace:
>
> (./ntoskrnl/ke/main.c:295)
> ---------------------------------------------------------------
> (./ntoskrnl/ke/main.c:296) ReactOS 0.3-SVN (Build 20051221-r20282)
> (hal/halx86/mp/apic.c:420) Getting VERSION: 50011
> (hal/halx86/mp/apic.c:423) Getting VERSION: 50011
> (hal/halx86/mp/apic.c:454) Getting ID: 0
> (hal/halx86/mp/apic.c:457) Getting ID: f000000
> (hal/halx86/mp/apic.c:554) CPU0:
> (hal/halx86/mp/apic.c:555)   Physical APIC id: 0
> (hal/halx86/mp/apic.c:556)   Logical APIC id:  0
> (hal/halx86/mp/apic.c:557) 00000000 00000000 f0000000
> (hal/halx86/mp/apic.c:584) CPU0:
> (hal/halx86/mp/apic.c:585)   Physical APIC id: 0
> (hal/halx86/mp/apic.c:586)   Logical APIC id:  1
> (hal/halx86/mp/apic.c:587) 00000000 01000000 f0000000
> (hal/halx86/mp/apic.c:588) 0
> (hal/halx86/mp/apic.c:619) enabled ExtINT on CPU#0
> Used memory 131072Kb
> (./ntoskrnl/mm/mminit.c:386) Kernel Stack Limits. InitTop =
> 0x8013c000, Init = 0x80139000
> (./ntoskrnl/mm/mm.c:283) No current process
> (hal/halx86/mp/processor_mp.c:112) Attempting to boot CPU 1
> (hal/halx86/mp/apic.c:1014) Attempting to boot CPU 1
> (hal/halx86/mp/apic.c:1044) 80572be0 25000 80001000 0
> (hal/halx86/mp/apic.c:554) CPU1:
> (hal/halx86/mp/apic.c:555)   Physical APIC id: 1
> (hal/halx86/mp/apic.c:556)   Logical APIC id:  0
> (hal/halx86/mp/apic.c:557) 01000000 00000000 f0000000
> (hal/halx86/mp/apic.c:584) CPU1:
> (hal/halx86/mp/apic.c:585)   Physical APIC id: 1
> (hal/halx86/mp/apic.c:586)   Logical APIC id:  2
> (hal/halx86/mp/apic.c:587) 01000000 02000000 f0000000
> (hal/halx86/mp/apic.c:588) 1
> (hal/halx86/mp/apic.c:624) masked ExtINT on CPU#1
> CPU 1 is now running
> (ntoskrnl/ke/i386/exp.c:539) Ignoring P6 Local APIC Spurious Interrupt Bug...
> (./ntoskrnl/ke/ipi.c:88) CPU0, waiting longer than 5 seconds to start
> the ipi routine
The ipi interrupt isn't sent to the second cpu. I've looked to the qemu
apic code. The 'fixed delivery mode' isn't implemented in
apic_bus_deliver (hw\apic.c). This means,  a smp version of windows,
linux or ReactOS will not run with qemu.

- Hartmut


More information about the Ros-dev mailing list