sonic-buildimage/files/image_config/pcie-check/pcie-check.sh
Joe LeVeque 57a6fb9f39 [pcie-check] Update underlying pcieutil command and add to sudoers file (#6682)
- Why I did it

As of Azure/sonic-utilities#1297, subcommands of pcieutil have changed to remove the redundant pcie- prefix. This PR adapts calling applications (pcie-check) to the new syntax.

Resolves #6676

- How I did it

Remove pcie- prefix from pcieutil subcommands in calling applications
Also add pcieutil * to sudoers file, as pcieutil requires elevated permissions
2021-02-05 15:47:58 -08:00

60 lines
1.5 KiB
Bash
Executable File

#! /bin/bash
## Check the platform PCIe device presence and status
VERBOSE="no"
RESULTS="PCIe Device Checking All Test"
EXPECTED="PCIe Device Checking All Test ----------->>> PASSED"
MAX_WAIT_SECONDS=15
function debug()
{
/usr/bin/logger "$0 : $1"
if [[ x"${VERBOSE}" == x"yes" ]]; then
echo "$(date) $0: $1"
fi
}
function check_and_rescan_pcie_devices()
{
PCIE_CHK_CMD='sudo pcieutil check | grep "$RESULTS"'
PLATFORM=$(sonic-cfggen -H -v DEVICE_METADATA.localhost.platform)
if [ ! -f /usr/share/sonic/device/$PLATFORM/plugins/pcie.yaml ]; then
debug "pcie.yaml does not exist! Can't check PCIe status!"
exit
fi
begin=$SECONDS
end=$((begin + MAX_WAIT_SECONDS))
rescan_time=$((MAX_WAIT_SECONDS/2))
rescan_time=$((begin + rescan_time))
while true
do
now=$SECONDS
if [[ $now -gt $end ]]; then
break
fi
if [ "$(eval $PCIE_CHK_CMD)" = "$EXPECTED" ]; then
redis-cli -n 6 HSET "PCIE_DEVICES" "status" "PASSED"
debug "PCIe check passed"
exit
else
debug "sleep 0.1 seconds"
sleep 0.1
fi
if [ $now -gt $rescan_time ]; then
debug "PCIe check failed, try pci bus rescan"
echo 1 > /sys/bus/pci/rescan
rescan_time=$end
fi
done
debug "PCIe check failed"
redis-cli -n 6 HSET "PCIE_DEVICES" "status" "FAILED"
}
check_and_rescan_pcie_devices