I've spent some time trying to figure out where and why the UEFI 2.70 firmware is crashing when built with CSM support under Bhyve.

The first thing I noticed is that the code that builds the E820 table doesn't appear to be finding the location of the EBDA at 0x40E: the first entry should be something like 0x0 to 0x4cf00, but is 0-0 instead.

E820[ 0]: 0x               0 ---- 0x               0, Type = 0x1
E820[ 1]: 0x               0 ---- 0x           A0000, Type = 0x2
E820[ 2]: 0x           E0000 ---- 0x          100000, Type = 0x2
E820[ 3]: 0x          100000 ---- 0x          406000, Type = 0x1

...


As an aside, I'm working on a patch to submit upstream to fix the output so it pads with zeros instead of spaces.


I've also found that as was probably pretty obvious the system is crashing when trying to call into the CSM to initialize it. It gets as far as calling AsmThunk16 (AsmThunk.nasm), but never appears to reach CsmMain in BhyveCsm16.c. I'll see if I can work on it some more to narrow down the error.


Another thing: the GNUmakefile in OvmfPkg/Csm/BhyveCsm16 has "CC ?= gcc", but it appears the build system already sets CC to "cc", which uses the system's clang compiler, which can't compile the assembly code.

I don't know if we might want to either hard-code CC to "gcc" for now, or have users create a 'cc' symlinks in BaseTools/Bin/FreeBSD-amd64 ?


--

Rebecca Cran

_______________________________________________
freebsd-virtualization@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-virtualization
To unsubscribe, send any mail to 
"freebsd-virtualization-unsubscr...@freebsd.org"

Reply via email to