Firmware hub/ICH top block swap
jerj at coplanar.net
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
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.
More information about the coreboot