Hi,
After I configure coreboot4.16 on my board(Intel Atom C3758) and run it, I'm having a problem with some runs (sometimes in rapid succession, sometimes very rarely). There are some machine-check exceptions (18- #MC) when I boot or reboot my operation system. You can have a detailed look at the link here : "https://drive.google.com/drive/folders/1TC_3OEooulHbGcRxybTuFz7oqkFpOf4B?usp..."
To solve the problem, I reviwed your guides "Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 1: Basic Architecture" and "Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 3 (3A, 3B, 3C & 3D): System Programming Guide". When I want to look at the source of the problem with the error code in "Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 3 (3A, 3B, 3C & 3D): System Programming Guide", here is the a information about machine-check exception. ( 6.15 EXCEPTION AND INTERRUPT REFERENCE - Interrupt 18- Machine-Check Exception (#MC) )
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 ;
1- What is the source of the machine-check exception problem and why does it happen occasionally?
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)
3- 0xdeadbeef errors are seen at some addresses of ramstage, what is the reason?
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