Confusion #2 is with my OS and APIC's. I've my test environment broadened up a notch:
- Bochs (256Mb RAM, 2 CPUs)
- QEmu (256Mb RAM, 2 CPUs)
- VirtualBox (256Mb RAM, 2CPUs, VT-x and PAE enabled)
- VMWare Player (256Mb RAM, 2CPUs, VT-x enabled, I don't know about PAE though)
And last but not least. There should be 1 Local APIC per core and a single IO APIC per system, right? But MADT has only a single address of Local APIC (same goes if I query a MSR). How do I get the other ones, or are they mapped per CPU? Funny enough, but enumerating them through ACPI it returns 2 entries for Local APIC, but these entries do not hold an address. I can just use them to enumerate how many CPUs there are.
Sorry for being a noob
PS. VMWare also has some bug with E820 memory map - it shows that I have 4GB of RAM instead of 256MB that I've configured.