diff --git a/platform/broadcom/sonic-platform-modules-nexthop/common/sonic_platform/watchdog.py b/platform/broadcom/sonic-platform-modules-nexthop/common/sonic_platform/watchdog.py index 10c03aede1a..4507278fa6a 100644 --- a/platform/broadcom/sonic-platform-modules-nexthop/common/sonic_platform/watchdog.py +++ b/platform/broadcom/sonic-platform-modules-nexthop/common/sonic_platform/watchdog.py @@ -15,7 +15,7 @@ # Watchdog punching is paused if file is present _WATCHDOG_PAUSE_FILE_PATH = Path("/var/lock/pddf-locks/watchdog.pause") # How long the watchdog is armed for by the watchdog.timer -_WATCHDOG_PUNCH_DAEMON_ARM_SECONDS = 360 +_WATCHDOG_PUNCH_DAEMON_ARM_SECONDS = 300 def _pause_watchdog_punching(duration: datetime.timedelta) -> None: @@ -126,6 +126,12 @@ def _do_real_arm(self, seconds: int) -> int: self._toggle_watchdog_counter_enable(True) self._toggle_watchdog_reboot(True) self._update_watchdog_countdown_value(milliseconds=seconds*1_000) + # TODO: workaround: arm watchdog 2 to trigger watchdog 1 + fpga_lib.write_32( + pci_address=self.fpga_pci_addr, + offset=0x1d8, + val=0x80000001, + ) except Exception as e: _logger.log_error(f"cannot arm watchdog: {e}") return -1 diff --git a/platform/broadcom/sonic-platform-modules-nexthop/test/unit/sonic_platform/test_watchdog.py b/platform/broadcom/sonic-platform-modules-nexthop/test/unit/sonic_platform/test_watchdog.py index 6d48e5e55e2..5a882cd441f 100644 --- a/platform/broadcom/sonic-platform-modules-nexthop/test/unit/sonic_platform/test_watchdog.py +++ b/platform/broadcom/sonic-platform-modules-nexthop/test/unit/sonic_platform/test_watchdog.py @@ -195,6 +195,7 @@ def test_arm_seconds_out_of_bound_error(self, seconds): def test_arm_should_update_counter( self, + watchdog_module, mock_update_watchdog_countdown_value, mock_toggle_watchdog_reboot, mock_toggle_watchdog_counter_enable, @@ -211,7 +212,9 @@ def test_arm_should_update_counter( ) # Act - actual_return_value = self.watchdog.arm(timeout_seconds) + # TODO: workaround: arm watchdog 2 to trigger watchdog 1 + with patch.object(watchdog_module.fpga_lib, "write_32", autospec=True): + actual_return_value = self.watchdog.arm(timeout_seconds) # Assert assert (