2015-09-25 16:12:59 +00:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
|
|
|
set -e
|
|
|
|
|
2016-01-25 10:49:26 +00:00
|
|
|
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
|
|
|
|
}
|
|
|
|
|
2015-09-25 16:12:59 +00:00
|
|
|
function configure_linux {
|
2015-10-08 18:05:17 +00:00
|
|
|
rmmod nvme || true
|
2016-01-25 10:49:26 +00:00
|
|
|
rmmod uio_pci_generic || true
|
2015-12-03 21:30:38 +00:00
|
|
|
rmmod ioatdma || true
|
2016-01-25 10:49:26 +00:00
|
|
|
modprobe uio_pci_generic || true
|
|
|
|
prep_nvme
|
|
|
|
prep_ioat
|
2015-09-25 16:12:59 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function configure_freebsd {
|
|
|
|
TMP=`mktemp`
|
|
|
|
AWK_PROG="{if (count > 0) printf \",\"; printf \"%s:%s:%s\",\$2,\$3,\$4; count++}"
|
|
|
|
echo $AWK_PROG > $TMP
|
2015-12-03 21:30:38 +00:00
|
|
|
PCICONF=`pciconf -l | grep 'class=0x010802\|^ioat'`
|
|
|
|
BDFS=`echo $PCICONF | awk -F: -f $TMP`
|
2015-10-08 18:05:17 +00:00
|
|
|
kldunload nic_uio.ko || true
|
2015-09-25 16:12:59 +00:00
|
|
|
kenv hw.nic_uio.bdfs=$BDFS
|
2015-10-08 18:05:17 +00:00
|
|
|
kldload nic_uio.ko
|
2015-09-25 16:12:59 +00:00
|
|
|
rm $TMP
|
|
|
|
}
|
|
|
|
|
|
|
|
if [ `uname` = Linux ]; then
|
|
|
|
configure_linux
|
|
|
|
else
|
|
|
|
configure_freebsd
|
|
|
|
fi
|
|
|
|
|