[SeaBIOS] [PATCH 1/2] nvme: add option to toggle probing only boot devices

Julian Stecklina jsteckli at amazon.de
Fri Jul 6 11:32:37 CEST 2018


Some systems have a large number of NVMe controllers. Probing all of
them requires an excessive amount of memory and with out-of-order
probing this also means that the important ones will not be probed,
because SeaBIOS runs out of memory.

Add an option to skip probing of NVMe devices, if there is no boot
priority for them.

Signed-off-by: Julian Stecklina <jsteckli at amazon.de>
---
 src/Kconfig   |  8 ++++++++
 src/hw/nvme.c | 14 +++++++++++++-
 2 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/src/Kconfig b/src/Kconfig
index 55a87cb..ef8f458 100644
--- a/src/Kconfig
+++ b/src/Kconfig
@@ -233,6 +233,14 @@ menu "Hardware support"
         default y
         help
             Support for NVMe disk code.
+    config NVME_PROBE_BOOTDEVICES_ONLY
+        depends on NVME
+        bool "Only probe NVMe controllers with boot priority"
+        default n
+        help
+            Only enables NVMe controllers that have a boot priority
+            configured. This saves memory on systems with many non-bootable
+            NVMe devices.
 
     config PS2PORT
         depends on KEYBOARD || MOUSE
diff --git a/src/hw/nvme.c b/src/hw/nvme.c
index e6d739d..5525f68 100644
--- a/src/hw/nvme.c
+++ b/src/hw/nvme.c
@@ -625,6 +625,16 @@ nvme_controller_setup(void *opaque)
     dprintf(2, "Failed to enable NVMe controller.\n");
 }
 
+
+static int should_setup_controller(struct pci_device *pci)
+{
+#ifdef NVME_PROBE_BOOTDEVICES_ONLY
+        return bootprio_find_pci_device(pci) >= 0;
+#else
+        return 1;
+#endif
+}
+
 // Locate and init NVMe controllers
 static void
 nvme_scan(void)
@@ -640,7 +650,9 @@ nvme_scan(void)
             continue;
         }
 
-        run_thread(nvme_controller_setup, pci);
+        if (should_setup_controller(pci)) {
+            run_thread(nvme_controller_setup, pci);
+        }
     }
 }
 
-- 
2.7.4




More information about the SeaBIOS mailing list