util/supermicro: Add and use new tool smcbiosinfo
The BMC and tools interacting with it depend on metadata placed inside the ROM in order the flash the BIOS. Add a new tool smcbiosinfo, integrate it into the build system, and generate a 128byte metadata file called smcbiosinfo.bin on build. You need to provide the BoardID for every SMC mainboard through a new Kconfig symbol: SUPERMICRO_BOARDID Some fields are unknown, but it's sufficient to flash it using SMC vendor tools. Tested on Supermicro X11SSH: * Flashing using the WebUI works * Flashing using SMCIPMITool works No further validation is done on the firmware. Change-Id: Id608c2ce78614b45a2fd0b26d97d666f02223998 Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/35484 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Philipp Deppenwiese <zaolin.daisuki@gmail.com> Reviewed-by: Nico Huber <nico.h@gmx.de>
This commit is contained in:
committed by
Nico Huber
parent
9b5447b781
commit
9e877ec60d
@@ -126,6 +126,7 @@ The boards in this section are not real mainboards, but emulators.
|
||||
|
||||
- [X10SLM+-F](supermicro/x10slm-f.md)
|
||||
- [X11 LGA1151 series](supermicro/x11-lga1151-series/x11-lga1151-series.md)
|
||||
- [Flashing using the BMC](supermicro/flashing_on_vendorbmc.md)
|
||||
|
||||
## UP
|
||||
|
||||
|
32
Documentation/mainboard/supermicro/flashing_on_vendorbmc.md
Normal file
32
Documentation/mainboard/supermicro/flashing_on_vendorbmc.md
Normal file
@@ -0,0 +1,32 @@
|
||||
# Flashing coreboot using SMC IPMI (BMC) firmware
|
||||
|
||||
## Metadata
|
||||
In order to flash anything to the "BIOS" IC, it needs to contain a valid
|
||||
BIOSINFO struct.
|
||||
|
||||
The BIOSINFO struct contains a `$FID` marker at the beginning and is
|
||||
128 bytes in total. Besides the *BoardID* it contains the *firmware version*
|
||||
and *build date*. The BMC verifies that the BoardID is correct and refuses to
|
||||
flash if it's not.
|
||||
|
||||
The struct has no checksum or cryptographic protection.
|
||||
|
||||
## The smcinfobios tool
|
||||
|
||||
The smcbiosinfo tool can be found in `util/supermicro/smcbiosinfo`.
|
||||
|
||||
It parses the `build/build.h` header to get the current coreboot version and
|
||||
build timestamp.
|
||||
The *board ID* is passed as command line argument.
|
||||
|
||||
It will place a file in CBFS called `smcbiosinfo.bin`, which is then found
|
||||
by the vendor tools. The file contains the struct described above.
|
||||
|
||||
## Flashing using SMCIPMItool
|
||||
|
||||
You can use the *SMCIPMITool* to remotely flash the BIOS:
|
||||
|
||||
`SMCIPMITool <remote BMC IP> <user> <password> bios update build/coreboot.rom`
|
||||
|
||||
Make sure that the ME isn't in recovery mode, otherwise you get an error
|
||||
message on updating the BIOS.
|
Reference in New Issue
Block a user