Reply 700 of 1090, by RichardG867
red-ray wrote on 2020-12-15, 14:21:When I looked some more at the save file I noticed that MSR 0000001B is returned as zero and as this is the APIC base it should never be zero. As a result of this SIV did not even try to read any of the other MSRs as it deduced the CPU was not a real CPU and therefore unlikely to return anything useful in the MSRs. Which MSRs are implemented?
The APIC is not emulated yet, which is why MSR 1B is implemented as read-only and always 0. I was more concerned about SIV trying to read unimplemented MSRs and resulting in a BSOD (UNEXPECTED_KERNEL_MODE_TRAP with parameter 0x0000000D) but that's clearly an emulation issue since you do catch the GPF exceptions.
If you're really curious about what MSRs are implemented, here's WRMSR and RDMSR for P6 CPUs. I didn't write these, but the people who did usually amend the MSR implementation on demand, whenever a BIOS or an application shows up requiring a specific MSR (MTRRs are notably not implemented but will be in the future because I ran into the Coreboot BIOS which requires them).
red-ray wrote on 2020-12-15, 14:21:Your Intel 82443BX 440BX Chipset PCI to AGP Bridge - Vendor ID 8086-7191 is incorrect as 0F to 17 are reserved and should be zero. The values present result in impossible BAR 0 settings.
Noted. Thanks for all the insight.