#!/bin/sh /etc/rc.common START=00 STOP=90 get_device_irq() { local device="$1" local line local seconds="0" while [ "${seconds}" -le 10 ]; do line=$(grep -m 1 "${device}\$" /proc/interrupts) && break seconds="$(( seconds + 2 ))" sleep 2 done echo ${line} | sed 's/:.*//' } set_smp_affinity() { local core_mask="$1" local interface="$2" [ -z "$interface" ] && return 0 local irq=$(get_device_irq "$interface") echo "${core_mask}" > /proc/irq/${irq}/smp_affinity } boot() { . /lib/functions/uci-defaults.sh case "$(board_name)" in friendlyarm,nanopi-r5s) set_smp_affinity "1" "nvme0q0" set_smp_affinity "2" "nvme0q1" set_smp_affinity "1" "nvme0q2" set_smp_affinity "1" "nvme0q3" set_smp_affinity "2" "nvme0q4" ;; esac }