]> git.ozlabs.org Git - petitboot/blobdiff - discover/platform-powerpc.c
Use 'consoles' instead of 'tty' to refer to interfaces
[petitboot] / discover / platform-powerpc.c
index eb54c6dddf231d73a5f1f1965f76703f7967d471..57618c3592bc5922c395de72e0fb6b9a411a5cf6 100644 (file)
@@ -569,7 +569,7 @@ static void populate_config(struct platform_powerpc *platform,
 
        val = get_param(platform, "petitboot,tty");
        if (val)
 
        val = get_param(platform, "petitboot,tty");
        if (val)
-               config->boot_tty = talloc_strdup(config, val);
+               config->boot_console = talloc_strdup(config, val);
 }
 
 static char *iface_config_str(void *ctx, struct interface_config *config)
 }
 
 static char *iface_config_str(void *ctx, struct interface_config *config)
@@ -635,6 +635,15 @@ static void update_network_config(struct platform_powerpc *platform,
        unsigned int i;
        char *val;
 
        unsigned int i;
        char *val;
 
+       /*
+        * Don't store IPMI overrides to NVRAM. If this was a persistent
+        * override it was already stored in NVRAM by
+        * get_ipmi_network_override()
+        */
+       if (config->network.n_interfaces &&
+               config->network.interfaces[0]->override)
+               return;
+
        val = talloc_strdup(platform, "");
 
        for (i = 0; i < config->network.n_interfaces; i++) {
        val = talloc_strdup(platform, "");
 
        for (i = 0; i < config->network.n_interfaces; i++) {
@@ -737,7 +746,7 @@ static int update_config(struct platform_powerpc *platform,
                val = config->allow_writes ? "true" : "false";
        update_string_config(platform, "petitboot,write?", val);
 
                val = config->allow_writes ? "true" : "false";
        update_string_config(platform, "petitboot,write?", val);
 
-       val = config->boot_tty ?: "";
+       val = config->boot_console ?: "";
        update_string_config(platform, "petitboot,tty", val);
 
        update_network_config(platform, config);
        update_string_config(platform, "petitboot,tty", val);
 
        update_network_config(platform, config);
@@ -1230,32 +1239,32 @@ static void get_active_consoles(struct config *config)
        struct stat sbuf;
        char *fsp_prop = NULL;
 
        struct stat sbuf;
        char *fsp_prop = NULL;
 
-       config->n_tty = 2;
-       config->tty_list = talloc_array(config, char *, config->n_tty);
-       if (!config->tty_list)
+       config->n_consoles = 2;
+       config->consoles = talloc_array(config, char *, config->n_consoles);
+       if (!config->consoles)
                goto err;
 
                goto err;
 
-       config->tty_list[0] = talloc_asprintf(config->tty_list,
+       config->consoles[0] = talloc_asprintf(config->consoles,
                                        "/dev/hvc0 [IPMI / Serial]");
                                        "/dev/hvc0 [IPMI / Serial]");
-       config->tty_list[1] = talloc_asprintf(config->tty_list,
+       config->consoles[1] = talloc_asprintf(config->consoles,
                                        "/dev/tty1 [VGA]");
 
        fsp_prop = talloc_asprintf(config, "%sfsps", devtree_dir);
        if (stat(fsp_prop, &sbuf) == 0) {
                /* FSP based machines also have a separate serial console */
                                        "/dev/tty1 [VGA]");
 
        fsp_prop = talloc_asprintf(config, "%sfsps", devtree_dir);
        if (stat(fsp_prop, &sbuf) == 0) {
                /* FSP based machines also have a separate serial console */
-               config->tty_list = talloc_realloc(config, config->tty_list,
-                                               char *, config->n_tty + 1);
-               if (!config->tty_list)
+               config->consoles = talloc_realloc(config, config->consoles,
+                                               char *, config->n_consoles + 1);
+               if (!config->consoles)
                        goto err;
                        goto err;
-               config->tty_list[config->n_tty++] = talloc_asprintf(
-                                               config->tty_list,
+               config->consoles[config->n_consoles++] = talloc_asprintf(
+                                               config->consoles,
                                                "/dev/hvc1 [Serial]");
        }
 
        return;
 err:
                                                "/dev/hvc1 [Serial]");
        }
 
        return;
 err:
-       config->n_tty = 0;
-       pb_log("Failed to allocate memory for tty_list\n");
+       config->n_consoles = 0;
+       pb_log("Failed to allocate memory for consoles\n");
 }
 
 static int load_config(struct platform *p, struct config *config)
 }
 
 static int load_config(struct platform *p, struct config *config)
@@ -1348,6 +1357,7 @@ static bool probe(struct platform *p, void *ctx)
 {
        struct platform_powerpc *platform;
        struct stat statbuf;
 {
        struct platform_powerpc *platform;
        struct stat statbuf;
+       bool bmc_present;
        int rc;
 
        /* we need a device tree */
        int rc;
 
        /* we need a device tree */
@@ -1363,7 +1373,9 @@ static bool probe(struct platform *p, void *ctx)
 
        p->platform_data = platform;
 
 
        p->platform_data = platform;
 
-       if (ipmi_present()) {
+       bmc_present = stat("/proc/device-tree/bmc", &statbuf) == 0;
+
+       if (ipmi_present() && bmc_present) {
                pb_debug("platform: using direct IPMI for IPMI paramters\n");
                platform->ipmi = ipmi_open(platform);
                platform->get_ipmi_bootdev = get_ipmi_bootdev_ipmi;
                pb_debug("platform: using direct IPMI for IPMI paramters\n");
                platform->ipmi = ipmi_open(platform);
                platform->get_ipmi_bootdev = get_ipmi_bootdev_ipmi;
@@ -1378,8 +1390,7 @@ static bool probe(struct platform *p, void *ctx)
                pb_log("platform: no IPMI parameter support\n");
        }
 
                pb_log("platform: no IPMI parameter support\n");
        }
 
-       rc = stat("/proc/device-tree/bmc", &statbuf);
-       if (!rc)
+       if (bmc_present)
                platform->get_platform_versions = hostboot_load_versions;
 
        return true;
                platform->get_platform_versions = hostboot_load_versions;
 
        return true;