diff --git a/files/image_config/config-setup/config-setup b/files/image_config/config-setup/config-setup index 7053cab08a..614cbaa9a6 100755 --- a/files/image_config/config-setup/config-setup +++ b/files/image_config/config-setup/config-setup @@ -170,15 +170,37 @@ copy_config_files_and_directories() done } -# Check if SONiC switch has booted after a warm reboot request +# Check if SONiC switch has booted after a warm reboot request. +# Prefers STATE_DB when available (reflects true warm boot state and +# gets cleared after warm boot completes). Falls back to /proc/cmdline +# only during the "boot" command when database services may not be up yet. check_system_warm_boot() { - SYSTEM_WARM_START=`sonic-db-cli STATE_DB hget "WARM_RESTART_ENABLE_TABLE|system" enable` - # SYSTEM_WARM_START could be empty, always make WARM_BOOT meaningful. - if [[ x"$SYSTEM_WARM_START" == x"true" ]]; then - WARM_BOOT="true" - else - WARM_BOOT="false" + WARM_BOOT="false" + + # Try STATE_DB first — authoritative source that reflects current + # warm boot state and is cleared after warm boot completes. + SYSTEM_WARM_START=$(sonic-db-cli STATE_DB hget "WARM_RESTART_ENABLE_TABLE|system" enable) + DB_RC=$? + + if [ $DB_RC -eq 0 ]; then + # DB is reachable — use its answer exclusively + if [[ x"$SYSTEM_WARM_START" == x"true" ]]; then + WARM_BOOT="true" + fi + return + fi + + # DB not available — fall back to /proc/cmdline only during boot, + # when database services may not have started yet. + # Outside of boot context, /proc/cmdline may contain a stale + # SONIC_BOOT_TYPE=warm from a previous warm reboot. + if [ "$CMD" = "boot" ]; then + case "$(cat /proc/cmdline)" in + *SONIC_BOOT_TYPE=warm*) + WARM_BOOT="true" + ;; + esac fi } @@ -256,11 +278,24 @@ generate_config() } # Create SONiC configuration for first time bootup -# - If ZTP is enabled, ZTP configuraion is created -# - If ZTP is disabled, factory default configuration +# - If minigraph.xml is available, use it to generate configuration +# - If ZTP is enabled and no minigraph, ZTP configuration is created +# - If ZTP is disabled and no minigraph, factory default configuration # is created do_config_initialization() { + # If minigraph.xml is available, prefer it over ZTP/factory default. + # This avoids ZTP triggering a config reload that removes management IP + # when the device has a valid minigraph but no config_db.json + # (e.g., during upgrade path tests). + if [ -r ${MINGRAPH_FILE} ]; then + echo "No config_db.json found but minigraph.xml is available, using minigraph..." + reload_minigraph + rm -f /tmp/pending_config_initialization + sonic-db-cli CONFIG_DB SET "CONFIG_DB_INITIALIZED" "1" + return 0 + fi + if ! ztp_is_enabled ; then echo "No configuration detected, generating factory default configuration..." generate_config factory ${CONFIG_DB_JSON} @@ -412,6 +447,18 @@ boot_config() do_config_migration fi + # During warm boot the existing configuration must be preserved. + # Never run config initialization or ZTP — doing so would generate + # a new config and trigger config reload, wiping management IP. + if [ x"${WARM_BOOT}" == x"true" ]; then + echo "Warm boot detected, skipping config initialization and ZTP." + # Mark config as initialized so subsequent boots don't re-trigger + # initialization unnecessarily (warm-reboot to new image scenario). + sonic-db-cli CONFIG_DB SET "CONFIG_DB_INITIALIZED" "1" + rm -f /tmp/pending_config_initialization + return 0 + fi + # For multi-npu platfrom we don't support config initialization. Assumption # is there should be existing minigraph or config_db from previous image # file system to trigger. pending_config_initialization will remain set @@ -424,11 +471,14 @@ boot_config() do_config_initialization fi - # If no startup configuration is found, create a configuration to be used + # If no startup configuration is found, create a configuration to be used. + # do_config_initialization() will prefer minigraph.xml if available, + # falling back to ZTP or factory default only when no minigraph exists. if [ ! -e ${CONFIG_DB_JSON} ]; then do_config_initialization - # force ZTP to restart - if ztp_is_enabled ; then + # force ZTP to restart (only relevant when ZTP was actually used, + # i.e., when minigraph.xml was not available) + if [ ! -e ${MINGRAPH_FILE} ] && ztp_is_enabled ; then ztp_status=$(ztp status -c) if [ "$ztp_status" = "5:SUCCESS" ] || \ [ "$ztp_status" = "6:FAILED" ]; then diff --git a/platform/components/docker-gbsyncd-agera2.mk b/platform/components/docker-gbsyncd-agera2.mk index 5e1651bd11..a4ae1f2b6b 100644 --- a/platform/components/docker-gbsyncd-agera2.mk +++ b/platform/components/docker-gbsyncd-agera2.mk @@ -1,5 +1,5 @@ # Agera2 PAI Library Package - URL-based download similar to broncos -LIBSAI_AGERA2_VERSION = 3.14.0-2 +LIBSAI_AGERA2_VERSION = 3.14.0-3 LIBSAI_AGERA2_BRANCH_NAME = REL_3.14 LIBSAI_AGERA2_URL_PREFIX = "https://packages.trafficmanager.net/public/sai/bcmpai/$(LIBSAI_AGERA2_BRANCH_NAME)/$(LIBSAI_AGERA2_VERSION)" diff --git a/platform/mellanox/fw.mk b/platform/mellanox/fw.mk index 58dcf0da8a..77bdf8bb83 100644 --- a/platform/mellanox/fw.mk +++ b/platform/mellanox/fw.mk @@ -21,38 +21,38 @@ MLNX_FW_BASE_PATH = $(MLNX_SDK_BASE_PATH) # Place an URL here to FW if you want to download FW instead MLNX_FW_BASE_URL = -SIMX_VERSION = 25.10-1153 +SIMX_VERSION = 26.1-1158 FW_FROM_URL = y -MLNX_FW_ASSETS_RELEASE_TAG = fw-2016.3404 +MLNX_FW_ASSETS_RELEASE_TAG = fw-2016.3412 MLNX_FW_ASSETS_URL = $(MLNX_ASSETS_GITHUB_URL)/releases/download/$(MLNX_FW_ASSETS_RELEASE_TAG) ifeq ($(MLNX_FW_BASE_URL), ) MLNX_FW_BASE_URL = $(MLNX_FW_ASSETS_URL) endif -MLNX_SPC_FW_VERSION = 13.2016.3404 +MLNX_SPC_FW_VERSION = 13.2016.3412 MLNX_SPC_FW_FILE = fw-SPC-rel-$(subst .,_,$(MLNX_SPC_FW_VERSION))-EVB.mfa $(MLNX_SPC_FW_FILE)_PATH = $(MLNX_FW_BASE_PATH) $(MLNX_SPC_FW_FILE)_URL = $(MLNX_FW_BASE_URL)/$(MLNX_SPC_FW_FILE) -MLNX_SPC2_FW_VERSION = 29.2016.3404 +MLNX_SPC2_FW_VERSION = 29.2016.3412 MLNX_SPC2_FW_FILE = fw-SPC2-rel-$(subst .,_,$(MLNX_SPC2_FW_VERSION))-EVB.mfa $(MLNX_SPC2_FW_FILE)_PATH = $(MLNX_FW_BASE_PATH) $(MLNX_SPC2_FW_FILE)_URL = $(MLNX_FW_BASE_URL)/$(MLNX_SPC2_FW_FILE) -MLNX_SPC3_FW_VERSION = 30.2016.3404 +MLNX_SPC3_FW_VERSION = 30.2016.3412 MLNX_SPC3_FW_FILE = fw-SPC3-rel-$(subst .,_,$(MLNX_SPC3_FW_VERSION))-EVB.mfa $(MLNX_SPC3_FW_FILE)_PATH = $(MLNX_FW_BASE_PATH) $(MLNX_SPC3_FW_FILE)_URL = $(MLNX_FW_BASE_URL)/$(MLNX_SPC3_FW_FILE) -MLNX_SPC4_FW_VERSION = 34.2016.3404 +MLNX_SPC4_FW_VERSION = 34.2016.3412 MLNX_SPC4_FW_FILE = fw-SPC4-rel-$(subst .,_,$(MLNX_SPC4_FW_VERSION))-EVB.mfa $(MLNX_SPC4_FW_FILE)_PATH = $(MLNX_FW_BASE_PATH) $(MLNX_SPC4_FW_FILE)_URL = $(MLNX_FW_BASE_URL)/$(MLNX_SPC4_FW_FILE) -MLNX_SPC5_FW_VERSION = 37.2016.3404 +MLNX_SPC5_FW_VERSION = 37.2016.3412 MLNX_SPC5_FW_FILE = fw-SPC5-rel-$(subst .,_,$(MLNX_SPC5_FW_VERSION))-EVB.mfa $(MLNX_SPC5_FW_FILE)_PATH = $(MLNX_FW_BASE_PATH) $(MLNX_SPC5_FW_FILE)_URL = $(MLNX_FW_BASE_URL)/$(MLNX_SPC5_FW_FILE) diff --git a/platform/mellanox/hw-management.mk b/platform/mellanox/hw-management.mk index 9458a0bf5f..be5ed7e82b 100644 --- a/platform/mellanox/hw-management.mk +++ b/platform/mellanox/hw-management.mk @@ -17,7 +17,7 @@ # # Mellanox HW Management -MLNX_HW_MANAGEMENT_VERSION = 7.0050.3001 +MLNX_HW_MANAGEMENT_VERSION = 7.0050.3002 export MLNX_HW_MANAGEMENT_VERSION diff --git a/platform/mellanox/hw-management/hw-mgmt b/platform/mellanox/hw-management/hw-mgmt index cad3563da0..bd26aeeca5 160000 --- a/platform/mellanox/hw-management/hw-mgmt +++ b/platform/mellanox/hw-management/hw-mgmt @@ -1 +1 @@ -Subproject commit cad3563da0ea695fc74098fe483a052175858248 +Subproject commit bd26aeeca59d26c12f2fcb05ea67cd2d80d1be2b diff --git a/platform/mellanox/mlnx-sai.mk b/platform/mellanox/mlnx-sai.mk index b1bd87bf89..f3c2b06635 100644 --- a/platform/mellanox/mlnx-sai.mk +++ b/platform/mellanox/mlnx-sai.mk @@ -1,6 +1,6 @@ # Mellanox SAI -MLNX_SAI_VERSION = SAIBuild2511.35.3400.0 +MLNX_SAI_VERSION = SAIBuild2511.35.3400.5 MLNX_SAI_ASSETS_GITHUB_URL = https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins MLNX_SAI_ASSETS_RELEASE_TAG = sai-$(MLNX_SAI_VERSION)-$(BLDENV)-$(CONFIGURED_ARCH) MLNX_SAI_ASSETS_URL = $(MLNX_SAI_ASSETS_GITHUB_URL)/releases/download/$(MLNX_SAI_ASSETS_RELEASE_TAG) diff --git a/platform/mellanox/sdk.mk b/platform/mellanox/sdk.mk index 9c811d5fd2..66c08749ed 100644 --- a/platform/mellanox/sdk.mk +++ b/platform/mellanox/sdk.mk @@ -15,7 +15,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # -MLNX_SDK_VERSION = 4.8.3404 +MLNX_SDK_VERSION = 4.8.3412 MLNX_SDK_ISSU_VERSION = 101 MLNX_SDK_DRIVERS_GITHUB_URL = https://github.com/Mellanox/Spectrum-SDK-Drivers diff --git a/src/sonic-utilities b/src/sonic-utilities index 0315da212b..ddc241ecb2 160000 --- a/src/sonic-utilities +++ b/src/sonic-utilities @@ -1 +1 @@ -Subproject commit 0315da212bc8b30bdd6a5ba82a65f952902073ea +Subproject commit ddc241ecb209d50a659da9a6827c899e7d184988