blob: 22dda9944095a9fecda173fee901e466bd4bf4b9 [file] [log] [blame]
Raphael Vicente Rosa86e56912022-02-01 17:49:05 +01001#!/bin/bash
2
3{#
4SPDX-FileCopyrightText: © 2022 Open Networking Foundation <support@opennetworking.org>
5SPDX-FileCopyrightText: © 2019 Intel Corporation
6SPDX-License-Identifier: Apache-2.0
7
8# adapted from https://github.com/clearlinux/cloud-native-setup/blob/master/clr-k8s-examples/9-multi-network/systemd/sriov.sh
9#}
10# {{ ansible_managed }}
11
12set -o errexit
13set -o pipefail
14set -o nounset
15set -x
16
17QAT_PFs=($(lspci -Dmm | grep Quick | awk '{print $1}'))
18QAT_DIR="/sys/bus/pci/devices/"
19
20
21setup_qat_pf_vfs() {
22 echo "Restarting services qat_service and qat_service_vfs"
23 service qat_service restart
24 service qat_service_vfs restart
25}
26
27setup_pf() {
28 local pf=$1
29 local num_vfs
30
31 echo "Resetting PF $pf"
32 echo 0 | tee "$QAT_DIR"/"$pf"/sriov_numvfs
33 num_vfs=$(cat "$QAT_DIR"/"$pf"/sriov_totalvfs)
34 echo "Enabling $num_vfs VFs for $pf"
35 echo "$num_vfs" | tee "$QAT_DIR"/"$pf"/sriov_numvfs
36}
37
38vfio_bind() {
39 local pf=$1
40
41 vfs_dirs=($(ls "$QAT_DIR"/"$pf" | grep virtfn))
42
43 for vf_name in "${vfs_dirs[@]}"; do
44 local vf_dir="$QAT_DIR"/"$pf"/"$vf_name"
45
46 vfpci=$(ls -l "$vf_dir" | awk '{print substr($11,4)}')
47 vfpci_dir=$(readlink -f "$vf_dir")
48
49 echo "Binding qat VF $vfpci with vfio-pci"
50
51 echo "$vfpci" >"$vfpci_dir"/driver/unbind
52 echo "vfio-pci" >"$vfpci_dir"/driver_override
53 echo "$vfpci" >/sys/bus/pci/drivers/vfio-pci/bind
54 done
55}
56
57setup_qat_pf_vfs
58
59for pf in "${QAT_PFs[@]}"; do
60 # setup_pf "$pf"
61 vfio_bind "$pf"
62done