diff mbox

[blktests] Fix block/011 to not use sysfs for device disabling

Message ID 20180518174247.31098-1-keith.busch@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Keith Busch May 18, 2018, 5:42 p.m. UTC
The PCI sysfs interface may not be a dependable method for toggling the
PCI device state to trigger the timeouts. This patch goes directly to
the config space to make device failure occur.

The success of this test is still senstive to timing, as it may disable
IO memory when a driver is trying to bring it online. This can look like
a permanent device failure from the driver's perspective.

Signed-off-by: Keith Busch <keith.busch@intel.com>
---
 tests/block/011 | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

Comments

Ming Lei May 19, 2018, 11:58 a.m. UTC | #1
On Sat, May 19, 2018 at 1:42 AM, Keith Busch <keith.busch@intel.com> wrote:
> The PCI sysfs interface may not be a dependable method for toggling the
> PCI device state to trigger the timeouts. This patch goes directly to
> the config space to make device failure occur.
>
> The success of this test is still senstive to timing, as it may disable
> IO memory when a driver is trying to bring it online. This can look like
> a permanent device failure from the driver's perspective.
>
> Signed-off-by: Keith Busch <keith.busch@intel.com>
> ---
>  tests/block/011 | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/tests/block/011 b/tests/block/011
> index 62e89f7..2fc0ffb 100755
> --- a/tests/block/011
> +++ b/tests/block/011
> @@ -21,7 +21,7 @@ DESCRIPTION="disable PCI device while doing I/O"
>  TIMED=1
>
>  requires() {
> -       _have_fio
> +       _have_fio && _have_program setpci
>  }
>
>  device_requires() {
> @@ -43,10 +43,11 @@ test_device() {
>         _run_fio_rand_io --filename="$TEST_DEV" --size="$size" \
>                         --ignore_error=EIO,ENXIO,ENODEV &
>
> +       # toggle PCI Command Register's Memory and Bus Master enabling
>         while kill -0 $! 2>/dev/null; do
> -               echo 0 > "/sys/bus/pci/devices/${pdev}/enable"
> +               setpci -s "${pdev}" 4.w=0:6
>                 sleep .2
> -               echo 1 > "/sys/bus/pci/devices/${pdev}/enable"
> +               setpci -s "${pdev}" 4.w=6:6
>                 sleep .2
>         done

Given 'echo 0 > .../${pdev}/enable' clears 'Bus Master' bit only,
I suggest this patch only clear and set 'Bus Master' bit too.

And similar issue can be triggered as before if only 'Bus Master'
is touched.

Otherwise, this patch looks fine.

Thanks,
Ming Lei
diff mbox

Patch

diff --git a/tests/block/011 b/tests/block/011
index 62e89f7..2fc0ffb 100755
--- a/tests/block/011
+++ b/tests/block/011
@@ -21,7 +21,7 @@  DESCRIPTION="disable PCI device while doing I/O"
 TIMED=1
 
 requires() {
-	_have_fio
+	_have_fio && _have_program setpci
 }
 
 device_requires() {
@@ -43,10 +43,11 @@  test_device() {
 	_run_fio_rand_io --filename="$TEST_DEV" --size="$size" \
 			--ignore_error=EIO,ENXIO,ENODEV &
 
+	# toggle PCI Command Register's Memory and Bus Master enabling
 	while kill -0 $! 2>/dev/null; do
-		echo 0 > "/sys/bus/pci/devices/${pdev}/enable"
+		setpci -s "${pdev}" 4.w=0:6
 		sleep .2
-		echo 1 > "/sys/bus/pci/devices/${pdev}/enable"
+		setpci -s "${pdev}" 4.w=6:6
 		sleep .2
 	done