VOGONS


First post, by superfury

User metadata
Rank l33t++
Rank
l33t++

Would it be possible to somehow force the official BIOS flash update utility that flashes the updated revision i450gx BIOS ROM to flash onto it's documented BIOS ROM, ignoring the BIOS ROM (the i440fx BIOS) that's reporting itself as an incorrect size and type instead?

Perhaps create a simple BIOS option ROM (like I did with the XT RTC BIOS ROM) to override some BIOS functions to detect it's ROM correctly?

Although I don't know exactly how the flash utility goes about flashing and detecting the flash ROM in the first place on said motherboard.

I managed to get the "IBM PC 704 Server POST/BIOS Flash Diskette" as the README tells me (version 16) on an IMD disk image (created by the utility). So the utility itself should be usable.
The main issue is it probably detects the i440fx BIOS instead (as it's seems to be either hardcoded in the BIOS what to report or not supporting it's detection method). The flash chip otoh is correctly implemented afaik.

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 1 of 2, by _Rob

User metadata
Rank Member
Rank
Member

The IBM PC Server 704 was a quad-socket PentiumPro server with PCI and EISA. I remember the box from back in the day. I don't think you want to use any BIOS meant for that system into some random motherboard.

For those curious about IBM selling an EISA system... IBM never made the system themselves, they just rebranded a server made by someone else (I think Intel?). I recall that you could get the same server from other PC vendors with a different badge on it.

Reply 2 of 2, by superfury

User metadata
Rank l33t++
Rank
l33t++
_Rob wrote on 2023-02-23, 16:07:

The IBM PC Server 704 was a quad-socket PentiumPro server with PCI and EISA. I remember the box from back in the day. I don't think you want to use any BIOS meant for that system into some random motherboard.

For those curious about IBM selling an EISA system... IBM never made the system themselves, they just rebranded a server made by someone else (I think Intel?). I recall that you could get the same server from other PC vendors with a different badge on it.

The system emulated is actually a full implementation of the 704 chipset (according to documentation). The main difference between a real one(which is emulated normally, but in this case it's emulating two motherboards at the same time for POSTing (using the i440fx emulation) being required to be able to boot the floppy and start the flashing process) is that it's emulating both the 704 chipset and i440fx chipset (on different PCI devices). The boot-required PCI configuration of the i440fx is mirrored to the i450gx PCI space (modifying one modifies the other). So if software modifies ROM mapping on the i440fx, the i450gx gets a copy in it's registers and vise-versa. So changes to both chipsets get applied (for example mapping BIOS RAM as ROM (F0000 area block) instead of PCI on one performs (mirrors) the same action on the other motherboard. This is done for all emulated functions present on both motherboards.

The flash memory otoh behaves a bit special in this special i440fx-on-i450gx emulation mode. If the flash is write-unprotected on the i440fx (meaning it's being flashed by the i440fx BIOS itself), it will behave as the i440fx BIOS (effecting it's documented chip's blocks bordering 4GB address (FFFFFFFFh down to it's chip size) during erase commands and related commands. That allows the BIOS to set-up required ACPI tables during the boot process.
If however, the write-protect on the i440fx is enabled, the flash ROM is switched to i450gx-compatible mode. This means it starts responding as the 512KB flash ROM chip instead. That chip instead doesn't use any software-controlled write-protect, instead using the write-protect set by the emulated jumpers (from the emulator settings), which affect boot-block write protection(although all chips do that) and generic chip write-protection (making the entire chip not respond to writes by the CPU).
As the boot block is unprotected (required for the full flash) and the chip is made writeable (required for the flashing utility to detect and flash) in the emulator settings, when the flashing utility starts, it should theoretically have all it needs (the i450gx motherboard chipset is present and functional (although i440fx BIOS is still running the show from it's 512KB flash chip using the emulated i440fx mirror chipset)) and the i450gx flash chip should report itself as such).

Is there anything else required for the flash tool to start flashing using the i450gx flash chip, other than the PCI chipset (and it's southbridge) and flash ROM?

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io