aboutsummaryrefslogtreecommitdiffstats
path: root/src/hw/virtio-scsi.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/hw/virtio-scsi.c')
-rw-r--r--src/hw/virtio-scsi.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/hw/virtio-scsi.c b/src/hw/virtio-scsi.c
index e1e2f5d4..a27bdc1c 100644
--- a/src/hw/virtio-scsi.c
+++ b/src/hw/virtio-scsi.c
@@ -18,7 +18,7 @@
#include "stacks.h" // run_thread
#include "std/disk.h" // DISK_RET_SUCCESS
#include "string.h" // memset
-#include "util.h" // usleep
+#include "util.h" // usleep, bootprio_find_pci_device, is_bootprio_strict
#include "virtio-pci.h"
#include "virtio-ring.h"
#include "virtio-scsi.h"
@@ -205,6 +205,8 @@ fail:
void
virtio_scsi_setup(void)
{
+ u8 skip_nonbootable = is_bootprio_strict();
+
ASSERT32FLAT();
if (! CONFIG_VIRTIO_SCSI)
return;
@@ -217,6 +219,13 @@ virtio_scsi_setup(void)
(pci->device != PCI_DEVICE_ID_VIRTIO_SCSI_09 &&
pci->device != PCI_DEVICE_ID_VIRTIO_SCSI_10))
continue;
+
+ if (skip_nonbootable && bootprio_find_pci_device(pci) < 0) {
+ dprintf(1, "skipping init of a non-bootable virtio-scsi at %pP\n",
+ pci);
+ continue;
+ }
+
run_thread(init_virtio_scsi, pci);
}
}