I've decided to add multiprocessor support to Ghost. So I wrote parsers for the ACPI tables to get the required APIC information. I'm doing it all as said in the specification, use the XSDT when available (and in 32bit range), otherwise the RSDT. This works fine in QEMU, VirtualBox and Bochs, but the XSDT in VMWare for some reason contains a pointer to a structure that seems very bogus:
Code: Select all
[rsdplookup] base part of RSDP is valid
[rsdplookup] extended part of RSDP is valid
[rsdplookup] found valid pointer: oemId: 'PTLTD ', acpiVersion: 3.0
[acpi] found XSDT in 32bit range
[acpi] root table starts at phys 0x5A6F0804
[acpi] SDT: 'XSDT' (phys 0x5A6F0804)
oemId: 'INTEL ', oemTableId: '440BX '
revision: 0x00000001, creatorId: 0x20574D56
creatorRevision: 0x01324272
length: 0x0000004C, checksum: 0x00000039
[acpi] is available
[acpi] SDT: 'FACP' (phys 0x5A6FEE98)
oemId: 'INTEL ', oemTableId: '440BX '
revision: 0x00000004, creatorId: 0x204C5450
creatorRevision: 0x000F4240
length: 0x000000F4, checksum: 0x000000AA
[acpi] SDT: 'ij(DC4)(SO)' (phys 0x5A6F0994)
oemId: 'PTLTD ', oemTableId: '$SBFTBL$'
revision: 0x00000001, creatorId: 0x50544C20
creatorRevision: 0x00000001
length: 0x00000028, checksum: 0x000000A5
[acpi] SDT: 'APIC' (phys 0x5A6F0944)
oemId: 'PTLTD ', oemTableId: ' APIC '
revision: 0x00000001, creatorId: 0x50544C20
creatorRevision: 0x00000000
length: 0x00000050, checksum: 0x00000073
[acpi] multiple APIC descriptor table found
[madt] listing entries in MADT:
lapic, id: 0, processorId: 0
ioapic, id: 1, address: 0xFEC00000
interrupt source overdrive, irqSource: 0, busSource: 0
[madt] device of unknown type 4 in MADT
Can this really happen/is this "normal"?? I'm near to 100% sure that I don't write values to these physical pages (my PPA never even gave these pages out)..
EDIT: I am a 100% sure that I don't write anything to these physical pages accidentally, because GRUB reports them to me as not usable and therefore I don't make them accessible to my PPA.
Any ideas would be great.
Thanks in advance
Greets, Max