"petitboot,debug?",
"petitboot,write?",
"petitboot,snapshots?",
+ "petitboot,tty",
NULL,
};
val = get_param(platform, "petitboot,snapshots?");
if (val)
config->disable_snapshots = !strcmp(val, "false");
+
+ val = get_param(platform, "petitboot,tty");
+ if (val)
+ config->boot_tty = talloc_strdup(config, val);
}
static char *iface_config_str(void *ctx, struct interface_config *config)
val = config->allow_writes ? "true" : "false";
update_string_config(platform, "petitboot,write?", val);
+ val = config->boot_tty ?: "";
+ update_string_config(platform, "petitboot,tty", val);
+
update_network_config(platform, config);
update_bootdev_config(platform, config);
}
}
+static void get_active_consoles(struct config *config)
+{
+ 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)
+ goto err;
+
+ config->tty_list[0] = talloc_asprintf(config->tty_list,
+ "/dev/hvc0 [IPMI / Serial]");
+ config->tty_list[1] = talloc_asprintf(config->tty_list,
+ "/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)
+ goto err;
+ config->tty_list[config->n_tty++] = talloc_asprintf(
+ config->tty_list,
+ "/dev/hvc1 [Serial]");
+ }
+
+ return;
+err:
+ config->n_tty = 0;
+ pb_log("Failed to allocate memory for tty_list\n");
+}
+
static int load_config(struct platform *p, struct config *config)
{
struct platform_powerpc *platform = to_platform_powerpc(p);
if (platform->ipmi)
get_ipmi_network_override(platform, config);
+ get_active_consoles(config);
+
return 0;
}