From ae2c3152c45652fba08859e935a91bed5de08a77 Mon Sep 17 00:00:00 2001 From: Jim Harris Date: Fri, 25 Sep 2015 09:12:59 -0700 Subject: [PATCH] Add unbind_nvme.sh script. This will rmmod nvme on Linux, and use the DPDK nic_uio driver to unbind nvme devices from the nvme driver on FreeBSD. "nic_uio" is actually a misnomer - it is not NIC driver specific, and can safely be used to bind NVMe devices to an effectively null driver. Signed-off-by: Jim Harris Change-Id: I8b964a070586166d762d79696385b82eeb2e88bd --- scripts/unbind_nvme.sh | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100755 scripts/unbind_nvme.sh diff --git a/scripts/unbind_nvme.sh b/scripts/unbind_nvme.sh new file mode 100755 index 000000000..67af2547d --- /dev/null +++ b/scripts/unbind_nvme.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash + +set -e + +function configure_linux { + lsmod | grep nvme && rmmod nvme +} + +function configure_freebsd { + TMP=`mktemp` + AWK_PROG="{if (count > 0) printf \",\"; printf \"%s:%s:%s\",\$2,\$3,\$4; count++}" + echo $AWK_PROG > $TMP + NVME_PCICONF=`pciconf -l | grep class=0x010802` + BDFS=`echo $NVME_PCICONF | awk -F: -f $TMP` + kenv hw.nic_uio.bdfs=$BDFS + kldload `find . -name nic_uio.ko | head -1` + rm $TMP +} + +if [ `uname` = Linux ]; then + configure_linux +else + configure_freebsd +fi +