[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[tyndur-devel] [PATCH] cdi: Auf PCI-Service warten
! cdi: Beim Lesen der Liste aller PCI-Geraete sollte man erstmal warten,
bis der PCI-Service da ist, sonst wird die Liste recht leer. Damit
hängt jetzt die Benutzung von Busmaster-IDE auch nicht mehr von einem
Race ab.
Signed-off-by: Kevin Wolf <kevin@xxxxxxxxxx>
---
src/modules/cdi/lib/pci.c | 17 ++++++++++++++++-
1 files changed, 16 insertions(+), 1 deletions(-)
diff --git a/src/modules/cdi/lib/pci.c b/src/modules/cdi/lib/pci.c
index 9c2e47f..9b37da8 100644
--- a/src/modules/cdi/lib/pci.c
+++ b/src/modules/cdi/lib/pci.c
@@ -23,6 +23,19 @@
#include "cdi/lists.h"
#include "cdi/pci.h"
+/*
+ * Wartet, bis der PCI-Service auftaucht
+ */
+static void wait_for_pci_service(void)
+{
+ static bool pci_started = false;
+
+ if (!pci_started) {
+ servmgr_need("pci");
+ pci_started = true;
+ }
+}
+
/**
* Liest die Daten eines PCI-Geraets ein
*/
@@ -78,7 +91,7 @@ static struct cdi_pci_device* read_pci_device(uint8_t* data, size_t size)
return cdi_device;
}
-
+
/**
* Gibt alle PCI-Geraete im System zurueck. Die Geraete werden dazu
* in die uebergebene Liste eingefuegt.
@@ -89,6 +102,8 @@ void cdi_pci_get_all_devices(cdi_list_t list)
uint8_t* data;
int ret;
+ wait_for_pci_service();
+
ret = init_dev_list(&devs);
if (ret < 0) {
return;
--
1.6.0.2