hw_hotplug: use all available GPIO lines
Prepare Beetles to use all available GPIO lines to manage NVMe drives. The two reasons are: + we want to test multiple NVMes instead just one + setting all GPIO will make it easier to physically connect NVMe connectors to Beetles Change-Id: I0351dd2e7cfef0a75eff0692be3c746ad1b5664f Signed-off-by: Krzysztof Karas <krzysztof.karas@intel.com> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/13748 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Reviewed-by: Konrad Sztyber <konrad.sztyber@intel.com> Reviewed-by: Karol Latecki <karol.latecki@intel.com>
This commit is contained in:
parent
f110891143
commit
dc43aae54d
@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
shopt -s nullglob
|
||||||
|
|
||||||
testdir=$(readlink -f $(dirname $0))
|
testdir=$(readlink -f $(dirname $0))
|
||||||
rootdir=$(readlink -f $testdir/../..)
|
rootdir=$(readlink -f $testdir/../..)
|
||||||
@ -15,22 +16,25 @@ function beetle_ssh() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function insert_device() {
|
function insert_device() {
|
||||||
beetle_ssh 'Beetle --SetGpio "$gpio" HIGH'
|
beetle_ssh 'for gpio in {0..10}; do Beetle --SetGpio "$gpio" HIGH; done'
|
||||||
waitforblk $name
|
for name in "${names[@]}"; do
|
||||||
|
waitforblk $name
|
||||||
|
done
|
||||||
DRIVER_OVERRIDE=$driver $rootdir/scripts/setup.sh
|
DRIVER_OVERRIDE=$driver $rootdir/scripts/setup.sh
|
||||||
}
|
}
|
||||||
|
|
||||||
function remove_device() {
|
function remove_device() {
|
||||||
beetle_ssh 'Beetle --SetGpio "$gpio" LOW'
|
beetle_ssh 'for gpio in {0..10}; do Beetle --SetGpio "$gpio" LOW; done'
|
||||||
}
|
}
|
||||||
|
|
||||||
function restore_device() {
|
function restore_device() {
|
||||||
beetle_ssh 'Beetle --SetGpio "$gpio" HIGH'
|
beetle_ssh 'for gpio in {0..10}; do Beetle --SetGpio "$gpio" HIGH; done'
|
||||||
|
# Bind all devices to kernel
|
||||||
|
"$rootdir/scripts/setup.sh" reset
|
||||||
}
|
}
|
||||||
|
|
||||||
ip=$1
|
ip=$1
|
||||||
gpio=$2
|
driver=$2
|
||||||
driver=$3
|
|
||||||
|
|
||||||
declare -i io_time=5
|
declare -i io_time=5
|
||||||
declare -i kernel_hotplug_time=7
|
declare -i kernel_hotplug_time=7
|
||||||
@ -38,18 +42,22 @@ declare -i kernel_hotplug_time=7
|
|||||||
timing_enter hotplug_hw_cfg
|
timing_enter hotplug_hw_cfg
|
||||||
|
|
||||||
# Configure microcontroller
|
# Configure microcontroller
|
||||||
beetle_ssh 'Beetle --SetGpioDirection "$gpio" OUT'
|
beetle_ssh 'for gpio in {0..10}; do Beetle --SetGpioDirection "$gpio" OUT; done'
|
||||||
|
|
||||||
# Get blk dev name connected to interposer
|
# Get blk dev names connected to interposer
|
||||||
beetle_ssh 'Beetle --SetGpio "$gpio" HIGH'
|
restore_device
|
||||||
sleep $kernel_hotplug_time
|
sleep $kernel_hotplug_time
|
||||||
$rootdir/scripts/setup.sh reset
|
|
||||||
blk_list1=$(lsblk -d --output NAME | grep "^nvme")
|
blk_list1=$(lsblk -d --output NAME | grep "^nvme")
|
||||||
remove_device
|
remove_device
|
||||||
sleep $kernel_hotplug_time
|
sleep $kernel_hotplug_time
|
||||||
blk_list2=$(lsblk -d --output NAME | grep "^nvme") || true
|
blk_list2=$(lsblk -d --output NAME | grep "^nvme") || true
|
||||||
name=${blk_list1#"$blk_list2"}
|
|
||||||
|
|
||||||
|
names=(${blk_list1#"$blk_list2"})
|
||||||
|
|
||||||
|
nvme_count="${#names[@]}"
|
||||||
|
echo nvme_count
|
||||||
|
|
||||||
|
# Move devices back to userspace
|
||||||
insert_device
|
insert_device
|
||||||
|
|
||||||
timing_exit hotplug_hw_cfg
|
timing_exit hotplug_hw_cfg
|
||||||
@ -64,7 +72,7 @@ fi
|
|||||||
exec {log}> >(tee -a "$testdir/log.txt")
|
exec {log}> >(tee -a "$testdir/log.txt")
|
||||||
exec >&$log 2>&1
|
exec >&$log 2>&1
|
||||||
|
|
||||||
$SPDK_EXAMPLE_DIR/hotplug -i 0 -t 100 -n 2 -r 2 $mode &
|
"$SPDK_EXAMPLE_DIR/hotplug" -i 0 -t 100 -n $((2 * nvme_count)) -r $((2 * nvme_count)) $mode &
|
||||||
hotplug_pid=$!
|
hotplug_pid=$!
|
||||||
|
|
||||||
trap 'killprocess $hotplug_pid; restore_device; rm $testdir/log.txt; exit 1' SIGINT SIGTERM EXIT
|
trap 'killprocess $hotplug_pid; restore_device; rm $testdir/log.txt; exit 1' SIGINT SIGTERM EXIT
|
||||||
@ -105,4 +113,6 @@ rm $testdir/log.txt
|
|||||||
|
|
||||||
trap - SIGINT SIGTERM EXIT
|
trap - SIGINT SIGTERM EXIT
|
||||||
|
|
||||||
|
restore_device
|
||||||
|
|
||||||
timing_exit hotplug_hw_test
|
timing_exit hotplug_hw_test
|
||||||
|
Loading…
Reference in New Issue
Block a user