Why I did it Requirements from Microsoft for fwutil update all state that all firmwares which support this upgrade flow must support upgrade within a single boot cycle. This conflicted with a number of Mellanox upgrade flows which have been revised to safely meet this requirement. How I did it Added --no-power-cycle flags to SSD and ONIE firmware scripts Modified Platform API to call firmware upgrade flows with this new flag during fwutil update all Added a script to our reboot plugin to handle installing firmwares in the correct order with prior to reboot How to verify it Populate platform_components.json with firmware for CPLD / BIOS / ONIE / SSD Execute fwutil update all fw --boot cold CPLD will burn / ONIE and BIOS images will stage / SSD will schedule for reboot Reboot the switch SSD will install / CPLD will refresh / switch will power cycle into ONIE ONIE installer will upgrade ONIE and BIOS / switch will reboot back into SONiC In SONiC run fwutil show status to check that all firmware upgrades were successful |
||
---|---|---|
.. | ||
docker-saiserver-mlnx | ||
docker-syncd-mlnx | ||
docker-syncd-mlnx-rpc | ||
hw-management | ||
issu-version | ||
mft | ||
mlnx-platform-api | ||
mlnx-sai | ||
sdk-src | ||
.gitignore | ||
asic_table.j2 | ||
docker-saiserver-mlnx.dep | ||
docker-saiserver-mlnx.mk | ||
docker-syncd-mlnx-rpc.dep | ||
docker-syncd-mlnx-rpc.mk | ||
docker-syncd-mlnx.dep | ||
docker-syncd-mlnx.mk | ||
fw.dep | ||
fw.mk | ||
hw-management.dep | ||
hw-management.mk | ||
install-pending-fw.dep | ||
install-pending-fw.mk | ||
install-pending-fw.py | ||
issu-version.dep | ||
issu-version.mk | ||
libsaithrift-dev.dep | ||
libsaithrift-dev.mk | ||
mft.dep | ||
mft.mk | ||
mlnx-ffb.dep | ||
mlnx-ffb.mk | ||
mlnx-ffb.sh | ||
mlnx-fw-upgrade.j2 | ||
mlnx-onie-fw-update.dep | ||
mlnx-onie-fw-update.mk | ||
mlnx-onie-fw-update.sh | ||
mlnx-platform-api.dep | ||
mlnx-platform-api.mk | ||
mlnx-sai.dep | ||
mlnx-sai.mk | ||
mlnx-ssd-fw-update.dep | ||
mlnx-ssd-fw-update.mk | ||
mlnx-ssd-fw-update.sh | ||
one-image.dep | ||
one-image.mk | ||
peripheral_table.j2 | ||
platform.conf | ||
rules.dep | ||
rules.mk | ||
sdk.dep | ||
sdk.mk | ||
zero_profiles.j2 |