]> git.ozlabs.org Git - petitboot/blobdiff - discover/platform-powerpc.c
discover: Nicely format IPMI response buffers
[petitboot] / discover / platform-powerpc.c
index 84e18ccca5c51e73edc93585cbefe1a30b822598..f8f33054648fc7fbb0ebc3c82095a6830d866785 100644 (file)
@@ -25,7 +25,7 @@ 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)(
@@ -89,13 +89,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 +145,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 +368,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 +393,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 +472,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 +488,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 +555,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 +605,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 +642,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 +706,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;