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 swap)
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 jerj@coplanar.net writes:
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.
Largely this requires a cooperative BIOS if you want to restore to something besides LinuxBIOS.
Once you have LinuxBIOS we implement essentially the same thing in software so the benefit is minor. And by doing it in software we have it for every kind of flash chip.
Eric
Eric W. Biederman wrote:
Jeremy Jackson jerj@coplanar.net writes:
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.
Largely this requires a cooperative BIOS if you want to restore to something besides LinuxBIOS.
I have a specific case in mind: a motherboard with a soldered in flash chip, and a 'cooperative' BIOS. I need to keep the option of restoring the vendor BIOS open until Linuxbios is working 100%.
Once you have LinuxBIOS we implement essentially the same thing in software so the benefit is minor. And by doing it in software we have it for every kind of flash chip.
Will this work for a sector erase flash? Is there any documentation I can look at?
Eric