From df46add724afc377b011867a4995c942fed4170a Mon Sep 17 00:00:00 2001 From: Arun Saravanan Balachandran Date: Tue, 15 Mar 2022 16:27:57 +0530 Subject: [PATCH] DellEMC: Z9332f - Graceful platform reboot --- .../debian/platform-modules-z9332f.install | 6 ++++- .../z9332f/scripts/fast-reboot_plugin | 8 +++++++ .../z9332f/scripts/override.conf | 3 +++ .../z9332f/scripts/platform_reboot_override | 23 +++++++++++++++++++ .../z9332f/scripts/soft-reboot_plugin | 1 + .../z9332f/scripts/warm-reboot_plugin | 1 + 6 files changed, 41 insertions(+), 1 deletion(-) create mode 100755 platform/broadcom/sonic-platform-modules-dell/z9332f/scripts/fast-reboot_plugin create mode 100644 platform/broadcom/sonic-platform-modules-dell/z9332f/scripts/override.conf create mode 100755 platform/broadcom/sonic-platform-modules-dell/z9332f/scripts/platform_reboot_override create mode 120000 platform/broadcom/sonic-platform-modules-dell/z9332f/scripts/soft-reboot_plugin create mode 120000 platform/broadcom/sonic-platform-modules-dell/z9332f/scripts/warm-reboot_plugin diff --git a/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-z9332f.install b/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-z9332f.install index ad25015472da..ecbd88a6ffef 100644 --- a/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-z9332f.install +++ b/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-z9332f.install @@ -4,7 +4,11 @@ z9332f/scripts/sensors usr/bin z9332f/cfg/z9332f-modules.conf etc/modules-load.d z9332f/systemd/platform-modules-z9332f.service etc/systemd/system z9332f/modules/sonic_platform-1.0-py3-none-any.whl usr/share/sonic/device/x86_64-dellemc_z9332f_d1508-r0 -common/platform_reboot usr/share/sonic/device/x86_64-dellemc_z9332f_d1508-r0 +z9332f/scripts/platform_reboot_override usr/share/sonic/device/x86_64-dellemc_z9332f_d1508-r0 +z9332f/scripts/override.conf /etc/systemd/system/systemd-reboot.service.d +z9332f/scripts/fast-reboot_plugin usr/share/sonic/device/x86_64-dellemc_z9332f_d1508-r0 +z9332f/scripts/soft-reboot_plugin usr/share/sonic/device/x86_64-dellemc_z9332f_d1508-r0 +z9332f/scripts/warm-reboot_plugin usr/share/sonic/device/x86_64-dellemc_z9332f_d1508-r0 common/pcisysfs.py usr/bin common/io_rd_wr.py usr/local/bin common/fw-updater usr/local/bin diff --git a/platform/broadcom/sonic-platform-modules-dell/z9332f/scripts/fast-reboot_plugin b/platform/broadcom/sonic-platform-modules-dell/z9332f/scripts/fast-reboot_plugin new file mode 100755 index 000000000000..0335f71d02b5 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-dell/z9332f/scripts/fast-reboot_plugin @@ -0,0 +1,8 @@ +#!/bin/bash + +ONIE_PATH="/mnt/onie-boot" + +# Unmount ONIE partition if mounted +if grep -qs ${ONIE_PATH} /proc/mounts; then + umount ${ONIE_PATH} +fi diff --git a/platform/broadcom/sonic-platform-modules-dell/z9332f/scripts/override.conf b/platform/broadcom/sonic-platform-modules-dell/z9332f/scripts/override.conf new file mode 100644 index 000000000000..9f17da1c2335 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-dell/z9332f/scripts/override.conf @@ -0,0 +1,3 @@ +[Service] +ExecStart= +ExecStart=/usr/share/sonic/device/x86_64-dellemc_z9332f_d1508-r0/platform_reboot_override diff --git a/platform/broadcom/sonic-platform-modules-dell/z9332f/scripts/platform_reboot_override b/platform/broadcom/sonic-platform-modules-dell/z9332f/scripts/platform_reboot_override new file mode 100755 index 000000000000..ca04ac0635a7 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-dell/z9332f/scripts/platform_reboot_override @@ -0,0 +1,23 @@ +#!/usr/bin/python3 +import os +import struct + +PORT_RES = '/dev/port' + + +def portio_reg_write(resource, offset, val): + fd = os.open(resource, os.O_RDWR) + if(fd < 0): + print('file open failed %s' % resource) + return + if(os.lseek(fd, offset, os.SEEK_SET) != offset): + print('lseek failed on %s' % resource) + return + ret = os.write(fd, struct.pack('B', val)) + if(ret != 1): + print('write failed %d' % ret) + return + os.close(fd) + +if __name__ == "__main__": + portio_reg_write(PORT_RES, 0xcf9, 0xe) diff --git a/platform/broadcom/sonic-platform-modules-dell/z9332f/scripts/soft-reboot_plugin b/platform/broadcom/sonic-platform-modules-dell/z9332f/scripts/soft-reboot_plugin new file mode 120000 index 000000000000..180742bbc4d5 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-dell/z9332f/scripts/soft-reboot_plugin @@ -0,0 +1 @@ +fast-reboot_plugin \ No newline at end of file diff --git a/platform/broadcom/sonic-platform-modules-dell/z9332f/scripts/warm-reboot_plugin b/platform/broadcom/sonic-platform-modules-dell/z9332f/scripts/warm-reboot_plugin new file mode 120000 index 000000000000..180742bbc4d5 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-dell/z9332f/scripts/warm-reboot_plugin @@ -0,0 +1 @@ +fast-reboot_plugin \ No newline at end of file