Skip to content

Commit 1a62423

Browse files
committed
qat-init: bind QAT VFs to vfio-pci
QAT device plugin has some initialization functions that require special SecurityContext parameters (e.g., setting Apparmor policies on some OSes). It's better to move all of the initialization to the privileged init-container that is already taking care some parts of it. With this change, we default to vfio-pci "DpdkDrv". Signed-off-by: Mikko Ylinen <[email protected]>
1 parent 2b42d41 commit 1a62423

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

cmd/qat_plugin/dpdkdrv/dpdkdrv.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -629,6 +629,7 @@ func (dp *DevicePlugin) scan() (dpapi.DeviceTree, error) {
629629
for _, vfDevice := range dp.getVfDevices() {
630630
vfBdf := filepath.Base(vfDevice)
631631

632+
// TODO(mythi): can be dropped in a later release since the same is already done in qat-init.sh.
632633
if drv := getCurrentDriver(vfDevice); drv != dp.dpdkDriver {
633634
if drv != "" {
634635
err := writeToDriver(filepath.Join(dp.pciDriverDir, drv, "unbind"), vfBdf)

demo/qat-init.sh

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,10 +58,32 @@ enable_sriov() {
5858
echo "error: $NUMVFS is not found or not writable. Check if QAT driver module is loaded"
5959
exit 1
6060
fi
61+
if ! test -d /sys/bus/pci/drivers/vfio-pci; then
62+
echo "error: vfio-pci driver needed by QAT VFs must be loaded"
63+
exit 1
64+
fi
6165
if [ "$(cat "$NUMVFS")" -ne 0 ]; then
6266
echo "$DEVPATH already configured"
6367
else
6468
tee "$NUMVFS" < "$DEVPATH/sriov_totalvfs"
69+
VFDEVS=$(realpath -L "$DEVPATH"/virtfn*)
70+
for vfdev in $VFDEVS; do
71+
BSF=$(basename "$vfdev")
72+
VF_DEV="/sys/bus/pci/devices/$BSF"
73+
if test -e "$VF_DEV/driver"; then
74+
P=$(realpath -L "$VF_DEV/driver")
75+
VF_DRIVER=$(basename "$P")
76+
else
77+
VF_DRIVER=""
78+
fi
79+
if [ "$VF_DRIVER" != "vfio-pci" ]; then
80+
if [ "$VF_DRIVER" ]; then
81+
echo -n "$BSF" > /sys/bus/pci/drivers/"$VF_DRIVER"/unbind
82+
fi
83+
echo -n vfio-pci > /sys/bus/pci/devices/"$BSF"/driver_override
84+
echo -n "$BSF" > /sys/bus/pci/drivers/vfio-pci/bind
85+
fi
86+
done
6587
fi
6688
done
6789
}

0 commit comments

Comments
 (0)