Message ID | 20120510004445.GA19059@morn.localdomain |
---|---|
State | New |
Headers | show |
On Wed, May 09, 2012 at 08:44:45PM -0400, Kevin O'Connor wrote: > On Wed, May 09, 2012 at 08:57:53AM -0700, Alain Ribière wrote: > > I wonder what is the CDOS system at 0D4000... It seems a bit strange. > > Very odd. This is still controlled by seabios. Indeed, if I apply > this (clearly incorrect) patch to seabios: > > diff --git a/src/shadow.c b/src/shadow.c > index c0c8cc2..73c0670 100644 > --- a/src/shadow.c > +++ b/src/shadow.c [...] Just for kicks, I tried a simple hack to try and reserve more memory in the c/d/e-segments, and it seems to work for the image you posted. Run: python -c 'import sys; sys.stdout.write("\x55\xaa\xc8\xcb\x6e" + "\x00"*(100*1024 - 5))' > dummy.rom and then add "-option-rom dummy.rom" to your qemu command line. (The idea is to build a 100K dummy option rom that seabios will load and mark as read-only memory.) -Kevin
Both solutions work for my application ! Thanks a lot. I think I will use one of them, even if I know it's not really "clean". Thanks again, Alain
diff --git a/src/shadow.c b/src/shadow.c index c0c8cc2..73c0670 100644 --- a/src/shadow.c +++ b/src/shadow.c @@ -83,7 +83,7 @@ make_bios_readonly_intel(u16 bdf, u32 pam0) for (i=0; i<6; i++) { u32 mem = BUILD_ROM_START + i * 32*1024; u32 pam = pam0 + 1 + i; - if (RomEnd <= mem + 16*1024) { + if (0 && RomEnd <= mem + 16*1024) { if (RomEnd > mem) pci_config_writeb(bdf, pam, 0x31); break;