Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 16 additions & 5 deletions libvirt/tests/src/virtual_disks/virtual_disks_dasd.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
# disable pylint spell checker to allow for dasda, fdasda, vdb, vda, virtio, blk
import logging as log
import re
import time

from avocado.core.exceptions import TestError

Expand Down Expand Up @@ -47,12 +48,18 @@ def try_enable_disk(disk_id):
:raises: TestError if can't use disk
"""

cmd = "chzdev -e %s" % disk_id
err, out = cmd_status_output(cmd, shell=True)
if 'already configured' not in out:
cleanup_actions.append(lambda: disable_disk(disk_id))
cmd = "lszdev --online %s" % disk_id
err, _ = cmd_status_output(cmd, shell=True)
if err: # device not online
logging.debug(cmd_status_output("lscss -t 3390")[1])
cmd = "chzdev -e %s" % disk_id
err, out = cmd_status_output(cmd, shell=True)
logging.debug("Wait to account for delayed CRW.")
time.sleep(2)
logging.debug(cmd_status_output("lscss -t 3390")[1])
if err:
raise TestError("Couldn't enable dasd '%s'. %s" % (disk_id, out))
raise TestError(f"Couldn't set device online: {out}")
cleanup_actions.append(lambda: disable_disk(disk_id))


def disable_disk(disk_id):
Expand All @@ -63,8 +70,12 @@ def disable_disk(disk_id):
:raises: TestError if can't use disk
"""

logging.debug(cmd_status_output("lscss -t 3390")[1])
cmd = "chzdev -d %s" % disk_id
err, out = cmd_status_output(cmd, shell=True)
logging.debug("Wait to account for delayed CRW.")
time.sleep(2)
logging.debug(cmd_status_output("lscss -t 3390")[1])
if err:
raise TestError("Couldn't disable dasd '%s'. %s" % (disk_id, out))

Expand Down
21 changes: 21 additions & 0 deletions provider/vfio/ccw.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import logging as log
import time

from avocado.core.exceptions import TestError
from virttest import utils_package, virsh
Expand Down Expand Up @@ -157,8 +158,12 @@ def set_device_offline(device_id, session=None):
:raises TestError: if the device can't be set offline
"""

logging.debug(cmd_status_output("lscss -t 3390")[1])
cmd = "chccwdev -d %s" % device_id
err, out = cmd_status_output(cmd, shell=True, session=session)
logging.debug("Wait to account for delayed CRW.")
time.sleep(2)
logging.debug(cmd_status_output("lscss -t 3390")[1])
if err:
raise TestError("Could not set device offline. %s" % out)

Expand All @@ -172,8 +177,12 @@ def set_device_online(device_id, session=None):
:raises TestError: if the device can't be set online
"""

logging.debug(cmd_status_output("lscss -t 3390")[1])
cmd = "chccwdev -e %s" % device_id
err, out = cmd_status_output(cmd, shell=True, session=session)
logging.debug("Wait to account for delayed CRW.")
time.sleep(2)
logging.debug(cmd_status_output("lscss -t 3390")[1])
if err:
raise TestError("Could not set device online. %s" % out)

Expand Down Expand Up @@ -234,8 +243,12 @@ def set_override(schid):
:raises TestError: if override can't be set
"""

logging.debug(cmd_status_output("lscss -t 3390")[1])
cmd = "driverctl -b css set-override %s vfio_ccw" % schid
err, out = cmd_status_output(cmd, shell=True)
logging.debug("Wait to account for delayed CRW.")
time.sleep(2)
logging.debug(cmd_status_output("lscss -t 3390")[1])
if err:
raise TestError("Can't set driver override. %s" % out)

Expand All @@ -248,8 +261,16 @@ def unset_override(schid):
:raises TestError: if override can't be unset
"""

_, dmesg_before = cmd_status_output("dmesg", shell=True)
logging.debug(cmd_status_output("lscss -t 3390")[1])
cmd = "driverctl -b css unset-override %s" % schid
err, out = cmd_status_output(cmd, shell=True)
logging.debug("Wait to account for delayed CRW.")
time.sleep(2)
logging.debug(cmd_status_output("lscss -t 3390")[1])
_, dmesg_after = cmd_status_output("dmesg", shell=True)
logging.debug("dmesg since unset-override:")
logging.debug("\n".join(set(dmesg_after.split("\n")) - set(dmesg_before.split("\n"))))
if err:
raise TestError("Can't unset driver override. %s" % out)

Expand Down