Hey Holger,
Well, I went ahead and backported it anyways :P It appears to work fine
for me. Do you want to give the attached patch a shot? If it works for
you I can include it in 0.8.12. If you don't have time to try it out,
no worries, we'll just wait for the 0.9.1 release for it to be in there.
Al
On Thu, 2010-11-18 at 05:14 -0800, Liebig, Holger wrote:
> Hey Al,
> Thanks for the reply.
> >
> > Hey Holger,
> >
> > By SVN Version, I assume you mean the head trunk, not the 0-8-0 stable
> > branch?
>
> Yepp, latest == greatest ;)
>
> >
> > The primary differences between 0.8.10 and trunk is my call to "BMC boot
> > flag valid bit clearing" (param 3 as you describe below). My
> > recollection about this section is a little hazy, but I believe you want
> > to call this command so that boot parameters are permanently stored
> > (rather than being cleared after a reboot). Is this the side affect
> > you're witnessing?
>
> Since this was reported from a customer, I might not have all information
> what he is really doing and if he was sending the chassis control command
> within the required 60 seconds (if not disabled with the BMC flag valid bit
> clearing).
>
> >
> > Since this was a semi-big change, I decided not to backport it.
> > However, if you guys need it, I can go ahead and backport it into the
> > stable branch and release with the next version.
>
> The current state is fine with me, I just wanted to check for the potential
> background.
>
> Thanks,
> Holger
>
--
Albert Chu
[email protected]
Computer Scientist
High Performance Systems Division
Lawrence Livermore National Laboratory
Index: ipmi-chassis-config/src/ipmi-chassis-config-boot-flags.c
===================================================================
--- ipmi-chassis-config/src/ipmi-chassis-config-boot-flags.c (revision 7534)
+++ ipmi-chassis-config/src/ipmi-chassis-config-boot-flags.c (working copy)
@@ -731,18 +731,61 @@
}
static config_err_t
-chassis_boot_flags_post (const char *section_name,
- void *arg)
+_set_system_boot_options_BMC_boot_flag_valid_bit_clearing (ipmi_chassis_config_state_data_t *state_data)
{
- ipmi_chassis_config_state_data_t *state_data = (ipmi_chassis_config_state_data_t *)arg;
+ config_err_t rv = CONFIG_ERR_FATAL_ERROR;
+ fiid_obj_t obj_cmd_rs = NULL;
+
+ assert (state_data);
+
+ if (!(obj_cmd_rs = fiid_obj_create (tmpl_cmd_set_system_boot_options_rs)))
+ {
+ pstdout_fprintf (state_data->pstate,
+ stderr,
+ "fiid_obj_create: %s\n",
+ strerror (errno));
+ goto cleanup;
+ }
+
+ if (ipmi_cmd_set_system_boot_options_BMC_boot_flag_valid_bit_clearing (state_data->ipmi_ctx,
+ IPMI_CHASSIS_BOOT_OPTIONS_DONT_CLEAR_VALID_BIT,
+ IPMI_CHASSIS_BOOT_OPTIONS_DONT_CLEAR_VALID_BIT,
+ IPMI_CHASSIS_BOOT_OPTIONS_DONT_CLEAR_VALID_BIT,
+ IPMI_CHASSIS_BOOT_OPTIONS_DONT_CLEAR_VALID_BIT,
+ IPMI_CHASSIS_BOOT_OPTIONS_DONT_CLEAR_VALID_BIT,
+ obj_cmd_rs) < 0)
+ {
+ config_err_t ret;
+
+ if (state_data->prog_data->args->config_args.common.debug)
+ pstdout_fprintf (state_data->pstate,
+ stderr,
+ "ipmi_cmd_set_system_boot_options_BMC_boot_flag_valid_bit_clearing: %s\n",
+ ipmi_ctx_errormsg (state_data->ipmi_ctx));
+
+ if (config_is_config_param_non_fatal_error (state_data->ipmi_ctx,
+ obj_cmd_rs,
+ &ret))
+ rv = ret;
+
+ goto cleanup;
+ }
+
+ rv = CONFIG_ERR_SUCCESS;
+ cleanup:
+ fiid_obj_destroy (obj_cmd_rs);
+ return (rv);
+}
+
+static config_err_t
+_set_system_boot_options_boot_info_acknowledge (ipmi_chassis_config_state_data_t *state_data)
+{
uint8_t boot_info_acknowledge = IPMI_CHASSIS_BOOT_OPTIONS_BOOT_INFO_UNACKNOWLEDGE;
config_err_t rv = CONFIG_ERR_FATAL_ERROR;
fiid_obj_t obj_cmd_rs = NULL;
-
- /* Following should be called to inform remaining chassis subsystems
- * that a boot configuration change has taken place.
- */
-
+
+ assert (state_data);
+
if (!(obj_cmd_rs = fiid_obj_create (tmpl_cmd_set_system_boot_options_rs)))
{
pstdout_fprintf (state_data->pstate,
@@ -751,7 +794,7 @@
strerror (errno));
goto cleanup;
}
-
+
if (ipmi_cmd_set_system_boot_options_boot_info_acknowledge (state_data->ipmi_ctx,
&boot_info_acknowledge,
&boot_info_acknowledge,
@@ -783,6 +826,49 @@
}
static config_err_t
+chassis_boot_flags_post (const char *section_name,
+ void *arg)
+{
+ ipmi_chassis_config_state_data_t *state_data = (ipmi_chassis_config_state_data_t *)arg;
+ config_err_t rv = CONFIG_ERR_FATAL_ERROR;
+ config_err_t ret;
+ fiid_obj_t obj_cmd_rs = NULL;
+
+ /* Following should be called to inform remaining chassis subsystems
+ * that a boot configuration change has taken place.
+ */
+
+ if (!(obj_cmd_rs = fiid_obj_create (tmpl_cmd_set_system_boot_options_rs)))
+ {
+ pstdout_fprintf (state_data->pstate,
+ stderr,
+ "fiid_obj_create: %s\n",
+ strerror (errno));
+ goto cleanup;
+ }
+
+ if ((ret = _set_system_boot_options_BMC_boot_flag_valid_bit_clearing (state_data)) == CONFIG_ERR_FATAL_ERROR)
+ {
+ rv = ret;
+ goto cleanup;
+ }
+
+ if (ret != CONFIG_ERR_SUCCESS)
+ rv = ret;
+
+ if ((ret = _set_system_boot_options_boot_info_acknowledge (state_data)) == CONFIG_ERR_FATAL_ERROR)
+ {
+ rv = ret;
+ goto cleanup;
+ }
+
+ if (rv == CONFIG_ERR_FATAL_ERROR)
+ rv = CONFIG_ERR_SUCCESS;
+ cleanup:
+ return (rv);
+}
+
+static config_err_t
firmware_bios_verbosity_checkout (const char *section_name,
struct config_keyvalue *kv,
void *arg)
_______________________________________________
Freeipmi-devel mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/freeipmi-devel