gdt and pirq issues

Steve M. Gehlbach steve at nexpath.com
Sun Dec 15 01:34:01 CET 2002


In working with the sis630, I noticed the linuxbios code as it stands does
not normally enable the ram in the hole at 0xf0000 when booting from flash.
So I turned it on and discovered that Linux needs the gdt, which gets
covered by the ram when it is turned on.  So I wrote code to shadow the gdt
to ram (at the same addr), and discovered that the pirq_routing table will
overwrite the gdt if it is too large (>0x50 bytes), which of course mine
was. (pirq_table at offset 0, gdtptr at offset 0x40).

So I decided to set the bios base address to 0xffff0000 using the biosbase
command to avoid the whole problem (normally defaults to 0xf0000).  But
Linux won't boot with a gdt located >1M (apparently), so I added code to
relocate the gdt into lower ram where it works fine.

Maybe someone knows else knows why Linux won't start with a gdt in high
flash but I couldn't figure it out.


-Steve







More information about the coreboot mailing list