diff --git a/scripts/unbind.sh b/scripts/unbind.sh index a57b4a83c..dd09841fa 100755 --- a/scripts/unbind.sh +++ b/scripts/unbind.sh @@ -2,9 +2,44 @@ set -e +function prep_nvme { + TMP=`mktemp` + # Get vendor_id:device_id by nvme's class_id and subcalss_id + lspci -n | awk -F " " '{if ($2 == "0108:") {print $3}}' \ + | awk -F ":" '{print $1" "$2}' > $TMP + + cat $TMP | while read device + do + echo $device > /sys/bus/pci/drivers/uio_pci_generic/new_id + done + rm $TMP +} + +function prep_ioat { + TMP=`mktemp` + #collect all the device_id info of ioat devices. + grep "PCI_DEVICE_ID_INTEL_IOAT" $rootdir/lib/ioat/ioat_pci.h \ + | awk -F"x" '{print $2}' > $TMP + vendor=8086 + + for device in `cat $TMP` + do + result=`lspci -n | grep "$vendor:$device"` + if [ "$result" ] + then + echo $vendor $device > /sys/bus/pci/drivers/uio_pci_generic/new_id + fi + done + rm $TMP +} + function configure_linux { rmmod nvme || true + rmmod uio_pci_generic || true rmmod ioatdma || true + modprobe uio_pci_generic || true + prep_nvme + prep_ioat } function configure_freebsd {