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

WaxDragon waxdragon at gmail.com
Wed Dec 21 14:37:54 CET 2005


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

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
KeBugCheck at ./ntoskrnl/ke/ipi.c:89
A problem has been detected and ReactOS has been shut down to prevent
damage to your computer.

Technical information:

*** STOP: 0x00000000 (0x00000000,0x00000000,0x00000000,0x00000000)

Frames:
<ntoskrnl.exe:2630>    ./ntoskrnl/ke/bug.c:0 ()
<ntoskrnl.exe:2668>    ./ntoskrnl/ke/bug.c:504 (KeBugCheck)
<ntoskrnl.exe:414f>     ./ntoskrnl/ke/ipi.c:0 ()
<ntoskrnl.exe:4470>    ./ntoskrnl/ke/ipi.c:0 ()
<ntoskrnl.exe:44df>     ./ntoskrnl/ke/ipi.c:174 (KeIpiGenericCall)
<ntoskrnl.exe:abd71>  ./ntoskrnl/mm/i386/page.c:1043 (MmDeleteVirtualMapping)
<ntoskrnl.exe:ac891>  ./ntoskrnl/mm/i386/page.c:431 (MmDeletePageTable)
<ntoskrnl.exe:d52ce>  ./ntoskrnl/mm/mminit.c:459 (MmInit3)
<ntoskrnl.exe:cf7c0>   ./ntoskrnl/ex/init.c:622 (ExpInitializeExecutive)
<ntoskrnl.exe:66fc>    ./ntoskrnl/ke/main.c:106 (KiSystemStartup)
<ntoskrnl.exe:cd851> ./ntoskrnl/ke/main.c:300 (_main)
<ntoskrnl.exe:104b>   ./ntoskrnl/ke/i386/main_asm.S:46 (NtProcessStartup)


An MP bootcd I made several months ago (~18xxx) did the same thing on
a Abit BP6 with dual Celerons, so I'm fairly confident qemu is acting
properly.  I still have the BP6 and am willing to test MP builds, but
I wasted about 10 CD-R's trying to get a working MP bootcd before
giving up.

Am I just doing something wrong?  I would like to get this worked out
and documented somewhere.

WD
--
<Russell> argh
<Russell> iterator shenanigans :/



More information about the Ros-dev mailing list