Hi,
On 09. 01. 23 6:09, Ahmet Fenerci via coreboot wrote:
Lastly, I checked the "Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 4: Model-Specific Registers" to solve problem, but I couldn't find the source of the problem. I have a few questions ;
You need to modify the machine check handler routine to print the machine check bank registers which are described in the volume 4, and then decode the numbers. Every CPU model has different amount of register banks. You will likely need to patch the handler to print it in there, or use some kind of hardware debugger.
1- What is the source of the machine-check exception problem and why does it happen occasionally?
Basically machine check means that something seriously went wrong. Possible causes:
1) ECC memory errors/misconfigured memory setup 2) PCI resource allocation problem (e.g. something overlaping I/O apic area) 3) CPU erratum - I remember some CPU suffer from fake machine check exception 4) system memory map wrong?
2- As seen in the MC Exception error content in the given google drive link ( Unexpected Exception:18 @ 10:7f998256 ) , at here ;18 indicates to Machine-Check Exception. What does 10 indicate here? ( 7f998256 is an address at Ramstage)
10 would be the selector value of CS.
3- 0xdeadbeef errors are seen at some addresses of ramstage, what is the reason?
This is probably just a stackguard. What is interesting is that your machinecheck happens while SeaBIOS is already running and also somehow it seems that it then tries to boot the openbsd.
I think SeaBIOS changes the IDT table so only possible explanation is that the machinecheck happens somehow during SMM mode.
Again, sorry I don't know more because I did not work on coreboot for very long time.
Thanks, Rudolf
coreboot mailing list -- coreboot@coreboot.org To unsubscribe send an email to coreboot-leave@coreboot.org