micflash — A tool to update Flash memory and System Management Controller firmware on Intel(R) Xeon Phi(TM) coprocessors.
micflash is a tool to query the state of flash memory on Intel® Xeon Phi™ coprocessors (also known as Many Integrated Core or MIC), and update its contents as well as the firmware of onboard System Management Controller (SMC).
micflash -update
Flash memory and SMC firmware contents may be modified by passing the -update argument to the command. This command must be run when the device is in the ready state. The micctrl command may be used to put the device into the ready state prior to issuing the update request:
# micctrl -r [device] # micctrl -w [device] mic0: ready
The action depends on the content of the image file that is passed with the <path> argument, or selected by the rules specified later in this document. If the file contains two images (Flash and SMC firmware), then both updates are attempted. Otherwise, only the available image is updated. Note that the files are usually saved with .rom extension for Flash-only images, .smc for SMC firmware, and .rom.smc for both.
If <path> specifies a regular file, then that file is used for the update. If a directory name is specified, then a compatible image from that directory is chosen. The files in the directory are sorted in reverse alphabetical order when searching for an image to use for update. If the <path> argument is not specified, then a search for a compatible image is made in /usr/share/mpss/flash.
The --device argument may be used to specify a single device ID, a comma-separated list of device IDs, or all to denote all MIC devices present on the system. This option may be omitted on a single-card system, in which case the only available device is used.
By default, micflash outputs a line at the start of flash read, update, SMC update, and device reset. The -v option may be used to augment this behavior with more verbose output that updates progress every 4 seconds. The default output is ASCII-only. The -silent option may be used to suppress any output. A zero exit-status signals a successful flash update operation.
Use the -log <logfile> option with the -silent option to save the log in a file while nothing is displayed on the screen.
The -vv option may be used to display the output status with a rotating bar progress monitor.
Note: The behavior of prompting for reboot at the end of a successful update is now discontinued. The reason is that a flash update requires a cold boot, but a warm-reboot may have been specified as a boot parameter. Instead, a message reminding the user to perform a cold restart is displayed. This can be suppressed by using the -noreboot option.
For SMC firmware versions 1.7 and earlier, an SMC boot loader update is necessary. Use the -smcbootloader option with the update command to update the SMC boot loader, in addition to the SMC image. If -smcbootloader is specified on the command line of a flash update operation, then micflash will first look for the highest compatible version of the SMC boot loader image in the /usr/share/mpss/flash directory. If no such image is found, then the operation will fail. If the operation is successful, then micflash will attempt to use one of the following (in order):
Note that the compatibility check may be skipped to allow a user to perform an SMC firmware upgrade alone (without flash upgrade), along with the SMC boot loader modification. However, the user should make sure the SMC image is actually compatible with the device as there may be no way for micflash to determine if the given image is compatible.
If any of these operations fail, then the update will fail and the SMC boot loader will not be modified. Otherwise, the SMC boot loader will be modified first, followed by an update of the flash and/or SMC images.
micflash -getversion
This command may be used to display the flash firmware version that is currently present on the installed device(s), or from an image file. When reading physical flash, this command must be executed with the specified devices in the ready state. In this case the device is first put into maintenance mode, the flash is read, and finally reset back to the ready state.
The default behavior is to output the flash version for each device as soon as it is read. Use -v option to monitor progress as the flash device is read and reset back to ready state.
Use the log <file> option to save the operation log in a file.
Update the Intel® Xeon Phi™ coprocessor flash with the given flash image file.
Get the version of the flash image from the specified file, or from the specified device.
Save the flash image from the given device into the specified file.
Get the flash device vendor information.
Check if the specified flash image is compatible with the given device.
-version Display the tool version.
Example 1. Updating the flash
# micflash -update -device all No image path specified - Searching: /usr/share/mpss/flash mic0: Using: /usr/share/mpss/flash/EXT_HP2_B0_0375-02.rom.smc mic1: Using: /usr/share/mpss/flash/EXT_HP2_B0_0375-02.rom.smc mic0: Flash read started... mic1: Flash read started... mic0: Read done mic0: Flash update started... mic1: Read done mic1: Flash update started... mic0: Flash update done mic0: SMC update started... mic1: Flash update done mic1: SMC update started... mic0: SMC update done mic0: Resetting... mic1: Update done mic1: Resetting... mic0: Exit status: 0 mic1: Exit status: 0 Please restart host for flash changes to take effect #
For progress updates, use the -v option:
# ./micflash -update /usr/share/mpss/flash/EXT_HP2_B0_0375-02.rom.smc -device all -v mic0: Reading flash mic1: Reading flash mic0: Flash update successful: Updating SMC: 3% mic1: Flash update successful: Updating SMC: 3% mic0: Flash update successful: Updating SMC: 19% mic1: Flash update successful: Updating SMC: 19% mic0: Flash update successful: Updating SMC: 35% mic1: Flash update successful: Updating SMC: 35% mic0: Flash update successful: Updating SMC: 51% mic1: Flash update successful: Updating SMC: 51% mic0: Flash update successful: Updating SMC: 67% mic1: Flash update successful: Updating SMC: 67% mic0: Flash update successful: Updating SMC: 83% mic1: Flash update successful: Updating SMC: 83% mic0: Flash update successful: Updating SMC: 100% mic1: Flash update successful: Updating SMC: 100% mic0: Resetting: Flash update successful: SMC update successful: POST code: 3C mic1: Resetting: Flash update successful: SMC update successful: POST code: 3C mic0: Resetting: Flash update successful: SMC update successful: POST code: 3C mic1: Resetting: Flash update successful: SMC update successful: POST code: mic0: Resetting: Flash update successful: SMC update successful: POST code: 3C mic1: Resetting: Flash update successful: SMC update successful: POST code: 3C mic0: Resetting: Flash update successful: SMC update successful: POST code: 3C mic1: Resetting: Flash update successful: SMC update successful: POST code: 3C mic0: Resetting: Flash update successful: SMC update successful: POST code: 3C mic1: Resetting: Flash update successful: SMC update successful: POST code: 3C mic0: Resetting: Flash update successful: SMC update successful: POST code: 3C mic1: Resetting: Flash update successful: SMC update successful: POST code: 3C mic0: Resetting: Flash update successful: SMC update successful: POST code: 3d mic1: Resetting: Flash update successful: SMC update successful: POST code: 3C mic0: Resetting: Flash update successful: SMC update successful: POST code: 3d mic1: Resetting: Flash update successful: SMC update successful: POST code: 3d mic0: Resetting: Flash update successful: SMC update successful: POST code: 3d mic1: Resetting: Flash update successful: SMC update successful: POST code: 3d mic0: Resetting: Flash update successful: SMC update successful: POST code: 3d mic1: Resetting: Flash update successful: SMC update successful: POST code: 3d mic0: Resetting: Flash update successful: SMC update successful: POST code: 3d mic1: Resetting: Flash update successful: SMC update successful: POST code: 3d mic0: Resetting: Flash update successful: SMC update successful: POST code: 3d mic1: Resetting: Flash update successful: SMC update successful: POST code: 3d mic0: Resetting: Flash update successful: SMC update successful: POST code: 3d mic1: Resetting: Flash update successful: SMC update successful: POST code: 3d mic0: Resetting: Flash update successful: SMC update successful: POST code: 3d mic1: Resetting: Flash update successful: SMC update successful: POST code: 3d mic0: Resetting: Flash update successful: SMC update successful: POST code: 3E mic1: Resetting: Flash update successful: SMC update successful: POST code: 3E mic0: Resetting: Flash update successful: SMC update successful: POST code: 10 mic1: Resetting: Flash update successful: SMC update successful: POST code: 09 mic0: Done mic1: Done Please restart host for flash changes to take effect #
Example 2. Getting version information
# micflash -getversion -device all mic0: Version: 2.1.02.0375 mic1: Version: 2.1.02.0375 #
For progress updates, use the -v option:
# micflash -getversion -device all -v mic0: Reading flash mic1: Reading flash mic0: Version: 2.1.02.0375 mic1: Version: 2.1.02.0375 mic0: Resetting: POST code: 3C mic1: Resetting: POST code: 3C mic0: Resetting: POST code: 3C mic1: Resetting: POST code: 3C mic0: Resetting: POST code: 3C mic1: Resetting: POST code: 3C mic0: Resetting: POST code: 3C mic1: Resetting: POST code: 3C mic0: Resetting: POST code: 3C mic1: Resetting: POST code: 3C mic0: Resetting: POST code: 3C mic1: Resetting: POST code: 3C mic0: Resetting: POST code: 3d mic1: Resetting: POST code: 3C mic0: Resetting: POST code: 3d mic1: Resetting: POST code: 3d mic0: Resetting: POST code: 3d mic1: Resetting: POST code: 3d mic0: Resetting: POST code: 3d mic1: Resetting: POST code: 3d mic0: Resetting: POST code: 3d mic1: Resetting: POST code: 3d mic0: Resetting: POST code: 3d mic1: Resetting: POST code: 3d mic0: Resetting: POST code: 3d mic1: Resetting: POST code: 3d mic0: Resetting: POST code: 3d mic1: Resetting: POST code: 3d mic0: Resetting: POST code: 3E mic1: Resetting: POST code: 3E mic0: Resetting: POST code: 10 mic1: Resetting: POST code: 09 mic0: Done mic1: Done #
# micflash -getversion /usr/share/mpss/flash/EXT_HP2_A0_0375-02.rom.smc 2.1.02.0375 #
micflash exits with status 0 if the operation succeeds on all specified devices, otherwise it returns with a non-zero status.
Even when -silent is specified, any error encountered before this option is processed may still be displayed.
The -vv option uses clear(1) command to clear the screen.
For SMC firmware versions 1.7 and earlier, an SMC boot loader update is necessary. Use the -smcbootloader option with the update command to update the SMC boot loader in addition to the SMC image.