Firmware hub/ICH top block swap

Jeremy Jackson jerj at
Wed Sep 1 17:57:01 CEST 2004

Has anyone pursued this feature of the i8xx series chipsets? Seems it 
could do what the Bios saviour does, even for boards with a soldered on 
flash chip.

At least for the 810e, there is a "top block swap" feature:
The FWH flash part is a 512kB (or more) part, of 8x (or more) 64kB 
blocks.  The top block can be write protected separately via a jumper. 
The other blocks can also be collectively write protected by a jumper.

The ICH (like a southbridge I guess) contains the CMOS batter-backed 
ram.  One extra bit in CMOS can be set in the PCI config space of the 
ICH.  The "top block swap" can be used for failsafe top or "boot" block 
updates to the FWH flash.

The update utility first copies the top block to the block just below 
it, and verifies the flash operation.  It then sets the top block swap 
bit.  From this point on, if a flash operation to the top block fails, 
the power is lost, etc, the system will boot to the 2nd from top block, 
which presumably contains enough code to load the flash utility from 
some device (floppy/cdrom?)  Once the update has completed successfully, 
the top block swap is disabled.

I have verified this using setpci.  On an IBM NetVista 6341-23U, it 
works in that the system fails to boot upon setting the bit, and 
clearing the CMOS restores the system to normal.

The chipset docs also advertise a power-on strapping option for the ICH, 
but the system I tested had neither that or the write protect jumpers. 
( It did have a recovery jumper, but that seems to just activate 
recovery mode in the top block's boot block code, not force a top block 

I'm going to try using this as a way of trying out Linuxbios with a way 
to get back the vendor bios (the FWH is soldered on);  flash linuxbios 
to the 2nd from top block, set the swap bit.  If it breaks, clear CMOS, 
recover the vendor bios.

BTW - does anyone have any working code to flash an ST M50FW0404 or an 
Intel 82802?  Uniflash/devbios don't support the ST at least.

Jeremy Jackson
Coplanar Networks

More information about the coreboot mailing list