set_boot_device should set the "timeout" flag

Bug #1390667 reported by Peter Martini
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Ironic
Fix Released
Medium
Jay Faulkner

Bug Description

Counterintuitively, the 'timeout' flag *disables* the timeout for changing boot devices.

From Section 28.12 of the IPMI 2.0, rev 1.1 spec (the one I happen to have handy):

"""
Thus, the BMC will automatically clear a ‘boot flags valid bit’ if a system restart is not initiated by a Chassis Control command within 60 seconds +/- 10% of the valid flag being set. The BMC will also clear the bit on any system resets or power-cycles that are not triggered by a System Control command. This default behavior can be temporarily overridden using the ‘BMC boot flag valid bit clearing’ parameter.
"""

pyghmi sets the timeout flag by sending the raw command '0x00 0x08 0x03 0x08', which translates to "Set System Boot Options" (0x00 0x08), option "BMC boot flag valid bit clearing" (0x03), to enable bit 1 << 3 "don’t automatically clear boot flag valid bit if Chassis Control command not received within 60-second timeout (countdown restarts when a Chassis Control command is received)". Also, https://bugs.launchpad.net/ironic/+bug/1340199 was filed to create the send_raw command explicitly to allow for that same option, but it doesn't seem ipmitool is actually doing that in set_boot_device right now.

Revision history for this message
Jay Faulkner (jason-oldos) wrote :

You're right Peter, we're using that send_raw command downstream to set these bits. I thought it was something specific to our hardware but with you pointing out it's a part of the IPMI spec, I'll get this into the ipmitool driver :).

Changed in ironic:
assignee: nobody → Jay Faulkner (jason-oldos)
importance: Undecided → Medium
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to ironic (master)

Fix proposed to branch: master
Review: https://review.openstack.org/134413

Changed in ironic:
status: New → In Progress
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to ironic (master)

Reviewed: https://review.openstack.org/134413
Committed: https://git.openstack.org/cgit/openstack/ironic/commit/?id=ff36647c9d799115c2d74296c68f6ba7ed67137f
Submitter: Jenkins
Branch: master

commit ff36647c9d799115c2d74296c68f6ba7ed67137f
Author: Jay Faulkner <email address hidden>
Date: Thu Nov 13 16:42:08 2014 -0800

    Disable IPMI timeout before setting boot device

    IPMI specs indicate that unless you explicitly disable it, there's a 60
    second timeout after setting boot device: if you don't reboot in that
    time the request in cancelled. Additionally, there's some hardware that
    behaves very badly when these bytes aren't sent.

    The timeout is already disabled by default in the ipminative / pyghmi
    driver.

    Change-Id: Ia1aa8814e2f48b32fa03f4e796b4c67d4f8c3fe4
    Closes-bug: 1390667

Changed in ironic:
status: In Progress → Fix Committed
Thierry Carrez (ttx)
Changed in ironic:
milestone: none → kilo-1
status: Fix Committed → Fix Released
Thierry Carrez (ttx)
Changed in ironic:
milestone: kilo-1 → 2015.1.0
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.