X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=discover%2Fplatform-powerpc.c;h=a3f7bf53a7292b8728092cdb0a92de466190cf02;hb=cfd6bf4f7da1ee71a65f57f28912d43ab757b968;hp=84e18ccca5c51e73edc93585cbefe1a30b822598;hpb=6fe83028cc8de0954e81bede58115c18ec29b040;p=petitboot diff --git a/discover/platform-powerpc.c b/discover/platform-powerpc.c index 84e18cc..a3f7bf5 100644 --- a/discover/platform-powerpc.c +++ b/discover/platform-powerpc.c @@ -25,9 +25,8 @@ static const char *sysparams_dir = "/sys/firmware/opal/sysparams/"; static const char *devtree_dir = "/proc/device-tree/"; struct platform_powerpc { - struct param_list params; + struct param_list *params; struct ipmi *ipmi; - bool ipmi_bootdev_persistent; int (*get_ipmi_bootdev)( struct platform_powerpc *platform, uint8_t *bootdev, bool *persistent); @@ -89,13 +88,13 @@ static int parse_nvram_params(struct platform_powerpc *platform, if (namelen == 0) continue; - if (!param_list_is_known_n(&platform->params, name, namelen)) + if (!param_list_is_known_n(platform->params, name, namelen)) continue; *value = '\0'; value++; - param_list_set(&platform->params, name, value, false); + param_list_set(platform->params, name, value, false); } return 0; @@ -145,7 +144,7 @@ static int write_nvram(struct platform_powerpc *platform) process->path = "nvram"; process->argv = argv; - param_list_for_each(&platform->params, param) { + param_list_for_each(platform->params, param) { char *paramstr; if (!param->modified) @@ -368,6 +367,7 @@ static int get_ipmi_bootdev_ipmi(struct platform_powerpc *platform, { uint16_t resp_len; uint8_t resp[8]; + char *debug_buf; int rc; uint8_t req[] = { 0x05, /* parameter selector: boot flags */ @@ -392,10 +392,9 @@ static int get_ipmi_bootdev_ipmi(struct platform_powerpc *platform, return -1; } - pb_debug("IPMI get_bootdev response:\n"); - for (int i = 0; i < resp_len; i++) - pb_debug("%x ", resp[i]); - pb_debug("\n"); + debug_buf = format_buffer(platform, resp, resp_len); + pb_debug_fn("IPMI get_bootdev response:\n%s\n", debug_buf); + talloc_free(debug_buf); if (resp[0] != 0) { pb_log("platform: non-zero completion code %d from IPMI req\n", @@ -472,6 +471,7 @@ static void get_ipmi_network_override(struct platform_powerpc *platform, uint16_t min_len = 12, resp_len = 53, version; const uint32_t magic_value = 0x21706221; uint8_t resp[resp_len]; + char *debug_buf; uint32_t cookie; bool persistent; int i, rc; @@ -487,17 +487,9 @@ static void get_ipmi_network_override(struct platform_powerpc *platform, resp, &resp_len, ipmi_timeout); - pb_debug("IPMI net override resp [%d][%d]:\n", rc, resp_len); - if (resp_len > 0) { - for (i = 0; i < resp_len; i++) { - pb_debug(" %02x", resp[i]); - if (i && (i + 1) % 16 == 0 && i != resp_len - 1) - pb_debug("\n"); - else if (i && (i + 1) % 8 == 0) - pb_debug(" "); - } - pb_debug("\n"); - } + debug_buf = format_buffer(platform, resp, resp_len); + pb_debug_fn("IPMI net override response:\n%s\n", debug_buf); + talloc_free(debug_buf); if (rc) { pb_debug("IPMI network config option unavailable\n"); @@ -562,7 +554,7 @@ static void get_ipmi_network_override(struct platform_powerpc *platform, if (!rc && persistent) { /* Write this new config to NVRAM */ - params_update_network_values(&platform->params, + params_update_network_values(platform->params, "petitboot,network", config); rc = write_nvram(platform); if (rc) @@ -612,7 +604,7 @@ static int load_config(struct platform *p, struct config *config) if (rc) pb_log_fn("Failed to parse nvram\n"); - config_populate_all(config, &platform->params); + config_populate_all(config, platform->params); if (platform->get_ipmi_bootdev) { bool bootdev_persistent; @@ -649,7 +641,7 @@ static int save_config(struct platform *p, struct config *config) defaults = talloc_zero(platform, struct config); config_set_defaults(defaults); - params_update_all(&platform->params, config, defaults); + params_update_all(platform->params, config, defaults); talloc_free(defaults); return write_nvram(platform); @@ -713,7 +705,8 @@ static bool probe(struct platform *p, void *ctx) return false; platform = talloc_zero(ctx, struct platform_powerpc); - param_list_init(&platform->params, common_known_params()); + platform->params = talloc_zero(platform, struct param_list); + param_list_init(platform->params, common_known_params()); p->platform_data = platform;