Bugfixes Xeon Phi Driver startup - removed check for boot info - added initialization...
[barrelfish] / usr / kaluga / driver_startup.c
index 29ea7bd..39bc720 100644 (file)
@@ -14,15 +14,15 @@ extern char **environ;
 
 #ifdef __x86__
 errval_t default_start_function(coreid_t where, struct module_info* mi,
-        char* record)
+                char* record)
 {
     assert(mi != NULL);
     errval_t err = SYS_ERR_OK;
-/*
- *  XXX: there may be more device using this driver, so starting it a second time
- *       may be needed.
- */
-    if (is_started(mi) && strcmp("xeon_phi  ",mi->binary)) {
+    /*
+     *  XXX: there may be more device using this driver, so starting it a second time
+     *       may be needed.
+     */
+    if (is_started(mi) && strcmp("xeon_phi",mi->binary)) {
         return KALUGA_ERR_DRIVER_ALREADY_STARTED;
     }
 
@@ -37,8 +37,8 @@ errval_t default_start_function(coreid_t where, struct module_info* mi,
     bool cleanup = false;
 
     err = oct_read(record,
-                   "_ { bus: %d, device: %d, function: %d, vendor: %d, device_id: %d }",
-                   &bus, &dev, &fun, &vendor_id, &device_id);
+                    "_ { bus: %d, device: %d, function: %d, vendor: %d, device_id: %d }",
+                    &bus, &dev, &fun, &vendor_id, &device_id);
 
     if (err_is_ok(err)) {
         // We assume that we're starting a device if the query above succeeds
@@ -46,18 +46,23 @@ errval_t default_start_function(coreid_t where, struct module_info* mi,
         // list.
         argv = malloc((mi->argc+1) * sizeof(char *));
         memcpy(argv, mi->argv, mi->argc * sizeof(char *));
-        char *pci_id  = malloc(26);
+        char *pci_id = malloc(26);
         // Make sure pci vendor and device id fit into our argument
         assert(vendor_id < 0x9999 && device_id < 0x9999);
         snprintf(pci_id, 26, "%04"PRIx64":%04"PRIx64":%04"PRIx64":%04"
-                 PRIx64":%04"PRIx64, vendor_id, device_id, bus, dev, fun);
+                        PRIx64":%04"PRIx64, vendor_id, device_id, bus, dev, fun);
 
         argv[mi->argc] = pci_id;
         argv[mi->argc+1] = NULL;
         cleanup = true;
     }
+
+    if (is_started(mi) && !strcmp("xeon_phi",mi->binary)) {
+        where !=20;
+    }
+
     err = spawn_program(where, mi->path, argv,
-            environ, 0, &mi->did);
+                    environ, 0, &mi->did);
 
     if (err_is_fail(err)) {
         DEBUG_ERR(err, "Spawning %s failed.", mi->path);
@@ -72,8 +77,9 @@ errval_t default_start_function(coreid_t where, struct module_info* mi,
 }
 #endif
 
-errval_t start_networking(coreid_t core, struct module_info* driver,
-        char* record)
+errval_t start_networking(coreid_t core,
+                          struct module_info* driver,
+                          char* record)
 {
     assert(driver != NULL);
     errval_t err = SYS_ERR_OK;
@@ -98,8 +104,12 @@ errval_t start_networking(coreid_t core, struct module_info* driver,
         return KALUGA_ERR_DRIVER_NOT_AUTO;
     }
 
-    err = spawn_program(core, driver->path, driver->argv + 1, environ, 0,
-            &driver->did);
+    err = spawn_program(core,
+                        driver->path,
+                        driver->argv + 1,
+                        environ,
+                        0,
+                        &driver->did);
     if (err_is_fail(err)) {
         DEBUG_ERR(err, "Spawning %s failed.", driver->path);
         return err;
@@ -108,7 +118,7 @@ errval_t start_networking(coreid_t core, struct module_info* driver,
     // XXX: Manually add cardname (overwrite first (auto) argument)
     // +Weird convention, e1000n binary but cardname=e1000
     char* cardname =
-            strcmp(driver->binary, "e1000n") == 0 ? "e1000" : driver->binary;
+                    strcmp(driver->binary, "e1000n") == 0 ? "e1000" : driver->binary;
 
     size_t name_len = strlen("cardname=") + strlen(cardname) + 1;
     char* card_argument = malloc(name_len);
@@ -120,8 +130,12 @@ errval_t start_networking(coreid_t core, struct module_info* driver,
     err = spawn_program(core, netd->path, netd->argv, environ, 0, &netd->did);
 
     ngd_mng->argv[0] = card_argument;
-    err = spawn_program(core, ngd_mng->path, ngd_mng->argv, environ, 0,
-            &ngd_mng->did);
+    err = spawn_program(core,
+                        ngd_mng->path,
+                        ngd_mng->argv,
+                        environ,
+                        0,
+                        &ngd_mng->did);
 
     free(card_argument);
     return err;
@@ -305,7 +319,6 @@ errval_t start_networking(coreid_t core, struct module_info* driver,
 /*         return KALUGA_ERR_DRIVER_ALREADY_STARTED; */
 /*     } */
 
-
 /*     err = spawn_program_with_caps(core, driver->path, driver->argv, environ, */
 /*             NULL_CAP, l4_CFG_domain_cap, 0, &driver->did); */
 /*     if (err_is_fail(err)) { */