Firmware Timestamping for Multi-Host Environment
In a multi-host environment, every host can upgrade the NIC firmware. All hosts are treated equally and there is no designated host. Hence, there can be situations where one host will try to upgrade the firmware and another will try to downgrade; which may lead to two or more unnecessary server reboots. In order to avoid such situations, the administrator can add a timestamp to the firmware they want to upgrade to. Attempts to burn a firmware image with a timestamp value that is lower than the current firmware timestamp will fail.
Firmware timestamping can be used on Connect-IB/ConnectX-4/ConnectX-4 Lx HCAs for controlling the firmware upgrade/downgrade flow.
In order to set a timestamp on an image, run:
# flint -i ./fw-4115
.bin timestamp set [UTC time]
The user can either specify a combined date and time timestamp in UTC which conforms to ISO 8601, or let the tool use the machine’s time for the timestamp.
To view the timestamp that was set on the device, run:
# flint -d /dev/mst/mt4115_pciconf0 timestamp query
Current timestamp : N/A. No valid timestamp found
Next timestamp : 2015
-12
-21T10:58
:23Z 12.15
.0005
“Current timestamp” represents the current running firmware timestamp. If “N/A” is visible, then the timestamp entry is invalid (example: first use of the feature or after resetting the timestamp).
“Next timestamp” represents the next firmware that is allowed to be burnt on the HCA. Updating the “Next timestamp” requires an equal or newer timestamp to be provided.
To reset the timestamp that was set on the device, run:
# flint -d /dev/mst/mt4115_pciconf0 timestamp reset
Resetting the timestamp on device causes invalidation of both “Current timestamp” and “Next timestamp” fields.
In case it is not possible to modify the firmware image, it is possible to set the timestamp directly on the device by specifying the timestamp and firmware version tied to it.
# flint -d /dev/mst/mt4115_pciconf0 timestamp set <UTC time> <Firmware version>
To view the timestamp that was set on the device, run:
# flint -d /dev/mst/mt4115_pciconf0 timestamp query
Current timestamp : N/A. No valid timestamp found
Next timestamp : 2015
-12
-21T10:58
:23Z 12.15
.0005
“Current timestamp” represents the current running firmware timestamp. If N/A is visible, then the timestamp entry is invalid (example: first use of the feature or after resetting the timestamp).
“Next timestamp” represents the next firmware that is allowed to be burnt on the HCA. Updating the “Next timestamp” requires an equal or newer timestamp to be provided.
To reset the timestamp that were set on the device, run:
# flint -d /dev/mst/mt4115_pciconf0 timestamp reset
Resetting the timestamp on device causes invalidation of both “Current timestamp” and “Next timestamp” fields.
Please note the following:
If a firmware image contains a timestamp, the burning tool will automatically attempt to set it on the device. If the operation succeeds, the firmware will be burnt.
If a timestamp was only set on the device, the burning tool will prevent the burning of any firmware version different than the one set in the timestamp set operation.
Lack of timestamp in both image and device will cause no checks to be performed.