Problems booting the 2nd processor
Posted: Mon Nov 26, 2007 12:40 am
Hey
I'm trying to get the second processor in my system to boot but I can't really make it do anything besides hanging.
So far I've managed to parse the SMP table seemingly correctly. The only thing I didn't get was the Apic ID specified for each processor entry. When I try to signal the Apic specified by that ID nothing happens, but if I instead signal by the logical processor number then at least it hangs
Next I've asserted and deasserted init ipi's. Then if I try to send the startup ipi with the bootpage loaded(0x1000) it just hangs.
The contents of the bootpage:
Can anyone give a clue where I might be going wrong here? Another thing: Is it possible to get some debug info from QEmu while it's running?
I'm trying to get the second processor in my system to boot but I can't really make it do anything besides hanging.
So far I've managed to parse the SMP table seemingly correctly. The only thing I didn't get was the Apic ID specified for each processor entry. When I try to signal the Apic specified by that ID nothing happens, but if I instead signal by the logical processor number then at least it hangs
Next I've asserted and deasserted init ipi's. Then if I try to send the startup ipi with the bootpage loaded(0x1000) it just hangs.
The contents of the bootpage:
Code: Select all
[bits 16]
[org 0x1000] ;Will be loaded at address 0x1000
BOOTAPENTRY:
lgdt [GDTDESC]
mov eax, cr0
or al, 1
mov cr0, eax
jmp GDT_DATA:GO_PMODE
[BITS 32]
GO_PMODE:
mov ax, GDT_DATA
mov ds, ax
mov es, ax
mov ss, ax
JMP GDT_END
GDTDESC:
dw GDT_END - GDT - 1
dd GDT
GDT:
times 8 db 0
GDT_CODE equ $-GDT
dw 0xFFFF
dw 0
db 0
db 0x9A
db 0xCF
db 0
GDT_DATA equ $-GDT
dw 0xFFFF
dw 0
db 0
db 0x92
db 0xCF
db 0
GDT_END: