Skip to content

Commit

Permalink
Merge pull request facebook#60 from adamcalabrigo/meru800bia_udev_upd…
Browse files Browse the repository at this point in the history
…ates

Meru800bia: update udev rules and add platform_init.sh
  • Loading branch information
adamcalabrigo committed Aug 18, 2023
2 parents a88a749 + 4f5ecf6 commit 8ab9c93
Show file tree
Hide file tree
Showing 4 changed files with 86 additions and 28 deletions.
8 changes: 6 additions & 2 deletions arista/core/scripts/fboss_init.sh
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,13 @@ if [ -f "./bin/platform_init.sh" ]; then
fi

# Now run the core setup scripts.
echo -ne "\nRunning fboss setup\n"
source ./bin/setup_fboss_env
./bin/setup.py
if [ ! -f /tmp/.fboss_skip_setup ]; then
echo -ne "\nRunning fboss setup\n"
./bin/setup.py
else
echo -ne "Skipping fboss setup\n"
fi

# Link binaries.
echo -ne "\nLinking FBOSS binaries\n"
Expand Down
54 changes: 28 additions & 26 deletions arista/platform/meru800bia/config/udev/99-meru800bia.rules
Original file line number Diff line number Diff line change
@@ -1,31 +1,33 @@
# Initial udev rules for MERU SCM board 7/28/2023.
SUBSYSTEM=="pci", KERNEL=="0000:00:1a.3", ATTR{device}=="0x001a", ATTR{subsystem_vendor}=="0x8086", ATTR{subsystem_device}=="0x0000", RUN{builtin}+="kmod load scd", RUN+="/bin/sh -c 'echo \"8086 18d9\" > /sys/bus/pci/drivers/scd/new_id'"
SUBSYSTEM=="i2c", ATTR{name}=="SCD 0000:00:1a.3 SMBus master 0 bus 0", RUN+="/bin/mkdir -p /run/devmap/i2c-busses", RUN+="/bin/ln -sf /dev/i2c-%n /run/devmap/i2c-busses/CPU_CPLD_SMBUS0_CH0"
SUBSYSTEM=="i2c", ATTR{name}=="SCD 0000:00:1a.3 SMBus master 0 bus 1", RUN+="/bin/mkdir -p /run/devmap/i2c-busses", RUN+="/bin/ln -sf /dev/i2c-%n /run/devmap/i2c-busses/CPU_CPLD_SMBUS0_CH1"
SUBSYSTEM=="i2c", ATTR{name}=="SCD 0000:00:1a.3 SMBus master 0 bus 2", RUN+="/bin/mkdir -p /run/devmap/i2c-busses", RUN+="/bin/ln -sf /dev/i2c-%n /run/devmap/i2c-busses/CPU_CPLD_SMBUS0_CH2"
SUBSYSTEM=="i2c", ATTR{name}=="SCD 0000:00:1a.3 SMBus master 0 bus 3", RUN+="/bin/mkdir -p /run/devmap/i2c-busses", RUN+="/bin/ln -sf /dev/i2c-%n /run/devmap/i2c-busses/CPU_CPLD_SMBUS0_CH3"
SUBSYSTEM=="i2c", ATTR{name}=="SCD 0000:00:1a.3 SMBus master 0 bus 4", RUN+="/bin/mkdir -p /run/devmap/i2c-busses", RUN+="/bin/ln -sf /dev/i2c-%n /run/devmap/i2c-busses/CPU_CPLD_SMBUS0_CH4"
SUBSYSTEM=="i2c", ATTR{name}=="SCD 0000:00:1a.3 SMBus master 0 bus 5", RUN+="/bin/mkdir -p /run/devmap/i2c-busses", RUN+="/bin/ln -sf /dev/i2c-%n /run/devmap/i2c-busses/CPU_CPLD_SMBUS0_CH5"
SUBSYSTEM=="i2c", ATTR{name}=="SCD 0000:00:1a.3 SMBus master 0 bus 6", RUN+="/bin/mkdir -p /run/devmap/i2c-busses", RUN+="/bin/ln -sf /dev/i2c-%n /run/devmap/i2c-busses/CPU_CPLD_SMBUS0_CH6"
SUBSYSTEM=="i2c", ATTR{name}=="SCD 0000:00:1a.3 SMBus master 0 bus 7", RUN+="/bin/mkdir -p /run/devmap/i2c-busses", RUN+="/bin/ln -sf /dev/i2c-%n /run/devmap/i2c-busses/CPU_CPLD_SMBUS0_CH7"
SUBSYSTEM=="i2c", ATTR{name}=="SCD 0000:00:1a.3 SMBus master 1 bus 0", RUN+="/bin/mkdir -p /run/devmap/i2c-busses", RUN+="/bin/ln -sf /dev/i2c-%n /run/devmap/i2c-busses/CPU_CPLD_SMBUS1_CH0"
SUBSYSTEM=="i2c", ATTR{name}=="SCD 0000:00:1a.3 SMBus master 1 bus 1", RUN+="/bin/mkdir -p /run/devmap/i2c-busses", RUN+="/bin/ln -sf /dev/i2c-%n /run/devmap/i2c-busses/CPU_CPLD_SMBUS1_CH1"
SUBSYSTEM=="i2c", ATTR{name}=="SCD 0000:00:1a.3 SMBus master 1 bus 2", RUN+="/bin/mkdir -p /run/devmap/i2c-busses", RUN+="/bin/ln -sf /dev/i2c-%n /run/devmap/i2c-busses/CPU_CPLD_SMBUS1_CH2"
SUBSYSTEM=="i2c", ATTR{name}=="SCD 0000:00:1a.3 SMBus master 1 bus 3", RUN+="/bin/mkdir -p /run/devmap/i2c-busses", RUN+="/bin/ln -sf /dev/i2c-%n /run/devmap/i2c-busses/CPU_CPLD_SMBUS1_CH3"
SUBSYSTEM=="i2c", ATTR{name}=="SCD 0000:00:1a.3 SMBus master 1 bus 4", RUN+="/bin/mkdir -p /run/devmap/i2c-busses", RUN+="/bin/ln -sf /dev/i2c-%n /run/devmap/i2c-busses/CPU_CPLD_SMBUS1_CH4"
SUBSYSTEM=="i2c", ATTR{name}=="SCD 0000:00:1a.3 SMBus master 1 bus 5", RUN+="/bin/mkdir -p /run/devmap/i2c-busses", RUN+="/bin/ln -sf /dev/i2c-%n /run/devmap/i2c-busses/CPU_CPLD_SMBUS1_CH5"
SUBSYSTEM=="i2c", ATTR{name}=="SCD 0000:00:1a.3 SMBus master 1 bus 6", RUN+="/bin/mkdir -p /run/devmap/i2c-busses", RUN+="/bin/ln -sf /dev/i2c-%n /run/devmap/i2c-busses/CPU_CPLD_SMBUS1_CH6"
SUBSYSTEM=="i2c", ATTR{name}=="SCD 0000:00:1a.3 SMBus master 1 bus 7", RUN+="/bin/mkdir -p /run/devmap/i2c-busses", RUN+="/bin/ln -sf /dev/i2c-%n /run/devmap/i2c-busses/CPU_CPLD_SMBUS1_CH7"
SUBSYSTEM=="pci", KERNEL=="0000:00:1a.3", ATTR{vendor}=="0x3475", RUN+="/bin/mkdir -p /run/devmap/fpgas", RUN+="/bin/ln -sf %S%p /run/devmap/fpgas/MERU_SCM_CPLD"
SUBSYSTEM=="i2c", ATTRS{name}=="SCD 0000:00:1a.3 SMBus master 0 bus 1", KERNEL=="*-0050", RUN+="/bin/mkdir -p /run/devmap/eeproms", RUN+="/bin/ln -sf %S%p/eeprom /run/devmap/eeproms/MERU_SCM_EEPROM"
# Initial udev rules for MERU SCM board 8/15/2023.

SUBSYSTEM=="pci", KERNEL=="0000:07:00.0", ATTR{device}=="0x0001", ATTR{subsystem_vendor}=="0x3475", ATTR{subsystem_device}=="0x0008", RUN{builtin}+="kmod load scd", RUN+="/bin/sh -c 'echo \"3475 0001\" > /sys/bus/pci/drivers/scd/new_id'"
SUBSYSTEM=="i2c", ATTR{name}=="SCD 0000:07:00.0 SMBus master 0 bus 0", RUN+="/bin/mkdir -p /run/devmap/i2c-busses", RUN+="/bin/ln -sf /dev/i2c-%n /run/devmap/i2c-busses/CPU_CPLD_SMBUS0_CH0"
SUBSYSTEM=="i2c", ATTR{name}=="SCD 0000:07:00.0 SMBus master 0 bus 1", RUN+="/bin/mkdir -p /run/devmap/i2c-busses", RUN+="/bin/ln -sf /dev/i2c-%n /run/devmap/i2c-busses/CPU_CPLD_SMBUS0_CH1"
SUBSYSTEM=="i2c", ATTR{name}=="SCD 0000:07:00.0 SMBus master 0 bus 2", RUN+="/bin/mkdir -p /run/devmap/i2c-busses", RUN+="/bin/ln -sf /dev/i2c-%n /run/devmap/i2c-busses/CPU_CPLD_SMBUS0_CH2"
SUBSYSTEM=="i2c", ATTR{name}=="SCD 0000:07:00.0 SMBus master 0 bus 3", RUN+="/bin/mkdir -p /run/devmap/i2c-busses", RUN+="/bin/ln -sf /dev/i2c-%n /run/devmap/i2c-busses/CPU_CPLD_SMBUS0_CH3"
SUBSYSTEM=="i2c", ATTR{name}=="SCD 0000:07:00.0 SMBus master 0 bus 4", RUN+="/bin/mkdir -p /run/devmap/i2c-busses", RUN+="/bin/ln -sf /dev/i2c-%n /run/devmap/i2c-busses/CPU_CPLD_SMBUS0_CH4"
SUBSYSTEM=="i2c", ATTR{name}=="SCD 0000:07:00.0 SMBus master 0 bus 5", RUN+="/bin/mkdir -p /run/devmap/i2c-busses", RUN+="/bin/ln -sf /dev/i2c-%n /run/devmap/i2c-busses/CPU_CPLD_SMBUS0_CH5"
SUBSYSTEM=="i2c", ATTR{name}=="SCD 0000:07:00.0 SMBus master 0 bus 6", RUN+="/bin/mkdir -p /run/devmap/i2c-busses", RUN+="/bin/ln -sf /dev/i2c-%n /run/devmap/i2c-busses/CPU_CPLD_SMBUS0_CH6"
SUBSYSTEM=="i2c", ATTR{name}=="SCD 0000:07:00.0 SMBus master 0 bus 7", RUN+="/bin/mkdir -p /run/devmap/i2c-busses", RUN+="/bin/ln -sf /dev/i2c-%n /run/devmap/i2c-busses/CPU_CPLD_SMBUS0_CH7"
SUBSYSTEM=="i2c", ATTR{name}=="SCD 0000:07:00.0 SMBus master 1 bus 0", RUN+="/bin/mkdir -p /run/devmap/i2c-busses", RUN+="/bin/ln -sf /dev/i2c-%n /run/devmap/i2c-busses/CPU_CPLD_SMBUS1_CH0"
SUBSYSTEM=="i2c", ATTR{name}=="SCD 0000:07:00.0 SMBus master 1 bus 1", RUN+="/bin/mkdir -p /run/devmap/i2c-busses", RUN+="/bin/ln -sf /dev/i2c-%n /run/devmap/i2c-busses/CPU_CPLD_SMBUS1_CH1"
SUBSYSTEM=="i2c", ATTR{name}=="SCD 0000:07:00.0 SMBus master 1 bus 2", RUN+="/bin/mkdir -p /run/devmap/i2c-busses", RUN+="/bin/ln -sf /dev/i2c-%n /run/devmap/i2c-busses/CPU_CPLD_SMBUS1_CH2"
SUBSYSTEM=="i2c", ATTR{name}=="SCD 0000:07:00.0 SMBus master 1 bus 3", RUN+="/bin/mkdir -p /run/devmap/i2c-busses", RUN+="/bin/ln -sf /dev/i2c-%n /run/devmap/i2c-busses/CPU_CPLD_SMBUS1_CH3"
SUBSYSTEM=="i2c", ATTR{name}=="SCD 0000:07:00.0 SMBus master 1 bus 4", RUN+="/bin/mkdir -p /run/devmap/i2c-busses", RUN+="/bin/ln -sf /dev/i2c-%n /run/devmap/i2c-busses/CPU_CPLD_SMBUS1_CH4"
SUBSYSTEM=="i2c", ATTR{name}=="SCD 0000:07:00.0 SMBus master 1 bus 5", RUN+="/bin/mkdir -p /run/devmap/i2c-busses", RUN+="/bin/ln -sf /dev/i2c-%n /run/devmap/i2c-busses/CPU_CPLD_SMBUS1_CH5"
SUBSYSTEM=="i2c", ATTR{name}=="SCD 0000:07:00.0 SMBus master 1 bus 6", RUN+="/bin/mkdir -p /run/devmap/i2c-busses", RUN+="/bin/ln -sf /dev/i2c-%n /run/devmap/i2c-busses/CPU_CPLD_SMBUS1_CH6"
SUBSYSTEM=="i2c", ATTR{name}=="SCD 0000:07:00.0 SMBus master 1 bus 7", RUN+="/bin/mkdir -p /run/devmap/i2c-busses", RUN+="/bin/ln -sf /dev/i2c-%n /run/devmap/i2c-busses/CPU_CPLD_SMBUS1_CH7"
SUBSYSTEM=="pci", KERNEL=="0000:07:00.0", ATTR{vendor}=="0x3475", RUN+="/bin/mkdir -p /run/devmap/fpgas", RUN+="/bin/ln -sf %S%p /run/devmap/fpgas/MERU_SCM_CPLD"
SUBSYSTEM=="i2c", ATTRS{name}=="SCD 0000:07:00.0 SMBus master 0 bus 1", KERNEL=="*-0050", RUN+="/bin/mkdir -p /run/devmap/eeproms", RUN+="/bin/ln -sf %S%p/eeprom /run/devmap/eeproms/MERU_SCM_EEPROM"
SUBSYSTEM=="hwmon", ATTR{name}=="coretemp", RUN+="/bin/mkdir -p /run/devmap/sensors", RUN+="/bin/ln -sf %S/class/hwmon/hwmon%n /run/devmap/sensors/CPU_CORE_TEMP"
SUBSYSTEM=="hwmon", ATTR{name}=="nvme", RUN+="/bin/mkdir -p /run/devmap/sensors", RUN+="/bin/ln -sf %S/class/hwmon/hwmon%n /run/devmap/sensors/CPU_NVME_TEMP"
SUBSYSTEM=="hwmon", ATTR{name}=="pmbus", DEVPATH=="*/0000:00:1a.3/scd-smbus.0/i2c-*/*-0040/*", RUN+="/bin/mkdir -p /run/devmap/sensors", RUN+="/bin/ln -sf %S/class/hwmon/hwmon%n /run/devmap/sensors/CPU_MPS_PMBUS"
SUBSYSTEM=="hwmon", ATTR{name}=="pxe1610", DEVPATH=="*/0000:00:1a.3/scd-smbus.0/i2c-*/*-003e/*", RUN+="/bin/mkdir -p /run/devmap/sensors", RUN+="/bin/ln -sf %S/class/hwmon/hwmon%n /run/devmap/sensors/CPU_PXE1211"
SUBSYSTEM=="hwmon", ATTR{name}=="pxm1310", DEVPATH=="*/0000:00:1a.3/scd-smbus.0/i2c-*/*-0040/*", RUN+="/bin/mkdir -p /run/devmap/sensors", RUN+="/bin/ln -sf %S/class/hwmon/hwmon%n /run/devmap/sensors/CPU_PXM1310"
SUBSYSTEM=="hwmon", ATTR{name}=="pmbus", DEVPATH=="*/0000:07:00.0/scd-smbus.0/i2c-*/*-0040/*", RUN+="/bin/mkdir -p /run/devmap/sensors", RUN+="/bin/ln -sf %S/class/hwmon/hwmon%n /run/devmap/sensors/CPU_MPS_PMBUS"
SUBSYSTEM=="hwmon", ATTR{name}=="pxm1310", DEVPATH=="*/0000:07:00.0/scd-smbus.0/i2c-*/*-0030/*", RUN+="/bin/mkdir -p /run/devmap/sensors", RUN+="/bin/ln -sf %S/class/hwmon/hwmon%n /run/devmap/sensors/CPU_PXM1310_1"
SUBSYSTEM=="hwmon", ATTR{name}=="pxe1610", DEVPATH=="*/0000:07:00.0/scd-smbus.0/i2c-*/*-003e/*", RUN+="/bin/mkdir -p /run/devmap/sensors", RUN+="/bin/ln -sf %S/class/hwmon/hwmon%n /run/devmap/sensors/CPU_PXE1211"
SUBSYSTEM=="hwmon", ATTR{name}=="pxm1310", DEVPATH=="*/0000:07:00.0/scd-smbus.0/i2c-*/*-0040/*", RUN+="/bin/mkdir -p /run/devmap/sensors", RUN+="/bin/ln -sf %S/class/hwmon/hwmon%n /run/devmap/sensors/CPU_PXM1310_2"
SUBSYSTEM=="pci", ACTION=="remove", RUN+="/bin/sh -c 'find /run/devmap/fpgas/ -xtype l -delete'"
SUBSYSTEM=="i2c", ACTION=="remove", RUN+="/bin/sh -c 'find /run/devmap/i2c-busses/ -xtype l -delete'", RUN+="/bin/sh -c 'find /run/devmap/eeproms/ -xtype l -delete'"
SUBSYSTEM=="hwmon", ACTION=="remove", RUN+="/bin/sh -c 'find /run/devmap/sensors/ -xtype l -delete'"
SUBSYSTEM=="i2c", ATTR{name}=="SCD 0000:00:1a.3 SMBus master 0 bus 0", RUN+="/bin/sh -c 'test -d /sys/bus/i2c/devices/i2c-%n/%n-0040 || echo pmbus 0x40 > /sys/bus/i2c/devices/i2c-%n/new_device'"
SUBSYSTEM=="i2c", ATTR{name}=="SCD 0000:00:1a.3 SMBus master 0 bus 1", RUN+="/bin/sh -c 'test -d /sys/bus/i2c/devices/i2c-%n/%n-0050 || echo 24c512 0x50 > /sys/bus/i2c/devices/i2c-%n/new_device'"
SUBSYSTEM=="i2c", ATTR{name}=="SCD 0000:00:1a.3 SMBus master 0 bus 2", RUN+="/bin/sh -c 'test -d /sys/bus/i2c/devices/i2c-%n/%n-003e || echo pxe1610 0x3e > /sys/bus/i2c/devices/i2c-%n/new_device'", RUN+="/bin/sh -c 'test -d /sys/bus/i2c/devices/i2c-%n/%n-0040 || echo pxm1310 0x40 > /sys/bus/i2c/devices/i2c-%n/new_device'"
SUBSYSTEM=="i2c", ATTR{name}=="SCD 0000:07:00.0 SMBus master 0 bus 0", RUN+="/bin/sh -c 'test -d /sys/bus/i2c/devices/i2c-%n/%n-0040 || echo pmbus 0x40 > /sys/bus/i2c/devices/i2c-%n/new_device'"
SUBSYSTEM=="i2c", ATTR{name}=="SCD 0000:07:00.0 SMBus master 0 bus 1", RUN+="/bin/sh -c 'test -d /sys/bus/i2c/devices/i2c-%n/%n-0050 || echo 24c512 0x50 > /sys/bus/i2c/devices/i2c-%n/new_device'"
SUBSYSTEM=="i2c", ATTR{name}=="SCD 0000:07:00.0 SMBus master 0 bus 2", RUN+="/bin/sh -c 'test -d /sys/bus/i2c/devices/i2c-%n/%n-0030 || echo pxm1310 0x30 > /sys/bus/i2c/devices/i2c-%n/new_device'", RUN+="/bin/sh -c 'test -d /sys/bus/i2c/devices/i2c-%n/%n-003e || echo pxe1610 0x3e > /sys/bus/i2c/devices/i2c-%n/new_device'", RUN+="/bin/sh -c 'test -d /sys/bus/i2c/devices/i2c-%n/%n-0040 || echo pxm1310 0x40 > /sys/bus/i2c/devices/i2c-%n/new_device'"
48 changes: 48 additions & 0 deletions arista/platform/meru800bia/scripts/platform_init.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
#!/bin/bash

# Platform init script for Meru800bia.

set -e

load_kernel_modules() {
# Load required kernel modules. The udev rules depend on these.
printf "\nLoading kernel modules\n"
kernel="$(uname -r)"
kernel_lib_dir="/lib/modules/${kernel}"
declare -a kmodules=("kernel/drivers/mfd/mfd-core"
"kernel/drivers/leds/led-class"
"scd"
"scd-leds"
"scd-smbus"
"scd-watchdog"
"scd-xcvr"
)

for mod in "${kmodules[@]}"
do
if $(lsmod | grep "$(basename ${mod//-/_})" >& /dev/null); then
echo "${mod} already installed"
else
echo "Installing ${mod}"
insmod "${kernel_lib_dir}"/"${mod}".ko
fi
done
}

load_udev_rules() {
printf "\nLoading udev rules\n"
udevadm control -R
udevadm trigger
}

# Meru800bia init.
load_kernel_modules
load_udev_rules

# TODO FIXME: if running kernel 5.19, skip setup.py because the BCM kernel
# modules will fail to load.
kernel=$(uname -r)
if [[ "${kernel}" == "5.19.0" ]]; then
touch /tmp/.fboss_skip_setup
depmod -A
fi
4 changes: 4 additions & 0 deletions arista/rpm/arista-fboss-platform-meru800bia.spec
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ Source: %{expand:%%(pwd)}

%define _fboss_target_share %{buildroot}/opt/fboss/share
%define _fboss_target_var %{buildroot}/var/facebook/fboss/
%define _fboss_target_bin %{buildroot}/opt/fboss/bin/
%define _fboss_target_udev %{buildroot}/etc/udev/rules.d/

%description
Expand All @@ -34,6 +35,8 @@ mkdir -p %{_fboss_target_share}
cp -rf db %{_fboss_target_share}/
mkdir -p %{_fboss_target_var}
install config/fruid/fruid.json %{_fboss_target_var}
mkdir -p %{_fboss_target_bin}
install -m 755 scripts/platform_init.sh %{_fboss_target_bin}
mkdir -p %{_fboss_target_udev}
install config/udev/99-meru800bia.rules %{_fboss_target_udev}
mkdir -p %{_fboss_target_share}/sensor_service/
Expand All @@ -42,5 +45,6 @@ install platform_sensors.conf %{_fboss_target_share}/sensor_service/
%files
/var/facebook/fboss/fruid.json
/opt/fboss/share/db
/opt/fboss/bin/platform_init.sh
/etc/udev/rules.d/99-meru800bia.rules
/opt/fboss/share/sensor_service/platform_sensors.conf

0 comments on commit 8ab9c93

Please sign in to comment.