blob: 22dda9944095a9fecda173fee901e466bd4bf4b9 [file] [log] [blame]
#!/bin/bash
{#
SPDX-FileCopyrightText: © 2022 Open Networking Foundation <support@opennetworking.org>
SPDX-FileCopyrightText: © 2019 Intel Corporation
SPDX-License-Identifier: Apache-2.0
# adapted from https://github.com/clearlinux/cloud-native-setup/blob/master/clr-k8s-examples/9-multi-network/systemd/sriov.sh
#}
# {{ ansible_managed }}
set -o errexit
set -o pipefail
set -o nounset
set -x
QAT_PFs=($(lspci -Dmm | grep Quick | awk '{print $1}'))
QAT_DIR="/sys/bus/pci/devices/"
setup_qat_pf_vfs() {
echo "Restarting services qat_service and qat_service_vfs"
service qat_service restart
service qat_service_vfs restart
}
setup_pf() {
local pf=$1
local num_vfs
echo "Resetting PF $pf"
echo 0 | tee "$QAT_DIR"/"$pf"/sriov_numvfs
num_vfs=$(cat "$QAT_DIR"/"$pf"/sriov_totalvfs)
echo "Enabling $num_vfs VFs for $pf"
echo "$num_vfs" | tee "$QAT_DIR"/"$pf"/sriov_numvfs
}
vfio_bind() {
local pf=$1
vfs_dirs=($(ls "$QAT_DIR"/"$pf" | grep virtfn))
for vf_name in "${vfs_dirs[@]}"; do
local vf_dir="$QAT_DIR"/"$pf"/"$vf_name"
vfpci=$(ls -l "$vf_dir" | awk '{print substr($11,4)}')
vfpci_dir=$(readlink -f "$vf_dir")
echo "Binding qat VF $vfpci with vfio-pci"
echo "$vfpci" >"$vfpci_dir"/driver/unbind
echo "vfio-pci" >"$vfpci_dir"/driver_override
echo "$vfpci" >/sys/bus/pci/drivers/vfio-pci/bind
done
}
setup_qat_pf_vfs
for pf in "${QAT_PFs[@]}"; do
# setup_pf "$pf"
vfio_bind "$pf"
done