On Tue, 20 Feb 2024 14:41:50 -0500 Kevin O'Connor kevin@koconnor.net wrote:
On Sat, Feb 10, 2024 at 11:17:54PM +0300, Michael Tokarev wrote:
So.. the difference is vgabios only, not seabios (vgabios-stdvga in this case).
And I can't get it to work with debugging vgabios, it always fails even with DEBUG_LEVEL=2 (and level-1 logging isn't useful).
I was able to capture logs just for the non-working version, so there's nothing to compare it against. So I tried a different machine type in qemu, the one which works, which uses SMBIOS 3.0 (q35-8.2).
Thanks for testing. So, if I understand the issue correctly:
- If smbios v3 is used then the problem does not occur.
one thing to note is that Windows isn't able to find SMBIOS v3 tables due to bug in anchor lookup within winload.exe. So essentially v3 tables mean that Windows doesn't access SMBIOS at all, while with v2 it's actually using SMBIOS tables.
- If gcc v13 is used to compile vgabios then the problem does not occur.
- If smbios v2 is used and gcc v12 is used then win10 can not boot.
Is that correct?
A strange issue. Issues like this tend to be very difficult to track down.
As a random guess, one possibility is that it could be related to vgabios stack size usage. You could try always enabling the "extra vga stack" with a change like:
--- a/vgasrc/vgabios.c +++ b/vgasrc/vgabios.c @@ -285,8 +285,7 @@ vga_set_mode(int mode, int flags) // Disable extra stack if it appears a modern OS is in use. // This works around bugs in some versions of Windows (Vista // and possibly later) when the stack is in the e-segment.
MASK_BDA_EXT(flags, BF_EXTRA_STACK
, (flags & MF_LEGACY) ? BF_EXTRA_STACK : 0);
if (memmodel == MM_TEXT) { SET_BDA(video_cols, width); SET_BDA(video_rows, height-1);MASK_BDA_EXT(flags, BF_EXTRA_STACK, BF_EXTRA_STACK);
Separately, if you can provide the failing and succeeding builds, I can try to take a look at it locally. To do this, make sure you're on commit 82faf1d5, run make, run "tar cfz fullbuild.tgz out/", and provide the resulting tgz file.
-Kevin _______________________________________________ SeaBIOS mailing list -- seabios@seabios.org To unsubscribe send an email to seabios-leave@seabios.org