193c8edc9SAndrew JefferyCopyright 2018 IBM 293c8edc9SAndrew Jeffery 36a51e5f4SPatrick WilliamsLicensed under the Apache License, Version 2.0 (the "License"); you may not use 46a51e5f4SPatrick Williamsthis file except in compliance with the License. You may obtain a copy of the 56a51e5f4SPatrick WilliamsLicense at 693c8edc9SAndrew Jeffery 793c8edc9SAndrew Jefferyhttp://www.apache.org/licenses/LICENSE-2.0 893c8edc9SAndrew Jeffery 96a51e5f4SPatrick WilliamsUnless required by applicable law or agreed to in writing, software distributed 106a51e5f4SPatrick Williamsunder the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 116a51e5f4SPatrick WilliamsCONDITIONS OF ANY KIND, either express or implied. See the License for the 126a51e5f4SPatrick Williamsspecific language governing permissions and limitations under the License. 1393c8edc9SAndrew Jeffery 1493c8edc9SAndrew Jeffery# Introduction 1593c8edc9SAndrew Jeffery 1693c8edc9SAndrew JefferyThis document defines a protocol and several transports for flash access 1793c8edc9SAndrew Jefferymediation between the host and the Baseboard Management Controller (BMC). 1893c8edc9SAndrew Jeffery 1993c8edc9SAndrew JefferyThe driving motivation for the protocol is to expose flash devices owned by the 2093c8edc9SAndrew JefferyBMC to the host. Usually, the flash device of interest is the host's firmware 2193c8edc9SAndrew Jefferyflash device - in some platform designs this is owned by the BMC to enable 2293c8edc9SAndrew Jefferylights-out updates of the host firmware. 2393c8edc9SAndrew Jeffery 2493c8edc9SAndrew JefferyAs the flash is owned by the BMC, access by the host to its firmware must be 2593c8edc9SAndrew Jefferyabstracted and mediated. Abstraction and mediation alleviates several problems: 2693c8edc9SAndrew Jeffery 2793c8edc9SAndrew Jeffery1. Proliferation of flash controller driver implementations throughout firmware 2893c8edc9SAndrew Jeffery2. Conflict of access between the host and the BMC to the flash controller 2993c8edc9SAndrew Jeffery3. In some circumstances, mitigates security concerns. 3093c8edc9SAndrew Jeffery 3193c8edc9SAndrew JefferyThe protocol introduced in this document addresses each of these issues. 3293c8edc9SAndrew JefferySpecifically, the document addresses defining a control mechanism for exposing 3393c8edc9SAndrew Jefferyflash data in the LPC firmware space, communicated via functions in the LPC IO 3493c8edc9SAndrew Jefferyspace. 3593c8edc9SAndrew Jeffery 3693c8edc9SAndrew Jeffery# Scope 3793c8edc9SAndrew Jeffery 3893c8edc9SAndrew JefferyThe scope of the document is limited to defining the protocol and its 3993c8edc9SAndrew Jefferytransports, and does not cover the content or structure of the data read or 4093c8edc9SAndrew Jefferywritten to the flash by the host firmware. 4193c8edc9SAndrew Jeffery 4293c8edc9SAndrew JefferyThe definition of transport-specific parameters, for example selection of IPMI 4393c8edc9SAndrew Jeffery`(NetFn, Command)` pairs, is also beyond the scope of the document. 4493c8edc9SAndrew Jeffery 4593c8edc9SAndrew Jeffery# Background, Design and Constraints 4693c8edc9SAndrew Jeffery 4793c8edc9SAndrew JefferyThe protocol was developed to meet requirements on OpenPOWER systems based 486a51e5f4SPatrick Williamsaround the ASPEED BMC System-on-Chips such as the AST2400 and AST2500. The 496a51e5f4SPatrick WilliamsASPEED BMCs have properties and features that need to be taken into account: 5093c8edc9SAndrew Jeffery 5193c8edc9SAndrew Jeffery1. A read-only mapping of the SPI flash devices onto the ARM core's AHB 5293c8edc9SAndrew Jeffery2. Remapping of LPC Firmware cycles onto the AHB (LPC2AHB bridge) 5393c8edc9SAndrew Jeffery3. A reasonable but not significant amount of attached DRAM 5493c8edc9SAndrew Jeffery 5593c8edc9SAndrew JefferyPrior to the development of the protocol described below flash reads were 5693c8edc9SAndrew Jefferyserviced by pointing the LPC2AHB bridge at the read-only flash mapping, and 5793c8edc9SAndrew Jefferywrites were serviced by a separate bridge that suffers significant performance 5893c8edc9SAndrew Jefferyand security issues. 5993c8edc9SAndrew Jeffery 606a51e5f4SPatrick WilliamsPoint 3 serves to justify some of the design decisions embodied in the protocol, 616a51e5f4SPatrick Williamsmainly the complexity required by the flexibility to absorb as much or as little 626a51e5f4SPatrick Williamsreserved memory as desired via the concept of BMC-controlled windowing. 6393c8edc9SAndrew Jeffery 646a51e5f4SPatrick WilliamsThe core concept of the protocol moves access away from the naive routing of LPC 656a51e5f4SPatrick Williamsfirmware cycles onto the host firmware SPI flash AHB mapping, and concentrates 666a51e5f4SPatrick Williamson servicing the LPC firmware cycles from reserved system memory. As the memory 676a51e5f4SPatrick Williamsbacking the LPC2AHB mapping is now writable the protocol meets the host's write 686a51e5f4SPatrick Williamsrequirements by defining commands to open, dirty and flush an in-memory window 696a51e5f4SPatrick Williamsrepresenting the state of the flash. The mechanism to read the flash becomes 706a51e5f4SPatrick Williamssame as write, just that the dirty and flush commands are not legal on such 716a51e5f4SPatrick Williamswindows. 7293c8edc9SAndrew Jeffery 7393c8edc9SAndrew Jeffery## Historic and Future Naming 7493c8edc9SAndrew Jeffery 7593c8edc9SAndrew JefferyThe original transport for the protocol was the ASPEED BMC LPC mailbox 7693c8edc9SAndrew Jefferyinterface, and previous revisions of the protocol documentation referred to the 7793c8edc9SAndrew Jefferyprotocol as the "mailbox" or "mbox" protocol. This naming is now deprecated, as 7893c8edc9SAndrew Jefferythe protocol has grown further transports and naming the protocol by its 7993c8edc9SAndrew Jefferytransport rather than its intent was, on reflection, misguided. 8093c8edc9SAndrew Jeffery 8193c8edc9SAndrew JefferyThe protocol has been tentatively renamed to the "Host I/O Mapping Protocol" or 8293c8edc9SAndrew Jeffery"hiomap". This is a reflection of its true purpose - to control the host's view 8393c8edc9SAndrew Jefferyof data exposed from the BMC. 8493c8edc9SAndrew Jeffery 8593c8edc9SAndrew Jeffery# Protocol Overview 8693c8edc9SAndrew Jeffery 8793c8edc9SAndrew JefferyThe primary flow of the protocol is for the host to send requests to the BMC, 8893c8edc9SAndrew Jefferywhich adjusts the mapping of the LPC firmware space as requested and returns a 8993c8edc9SAndrew Jefferystatus response to the host. These interactions are labelled "commands". 9093c8edc9SAndrew JefferyHowever, as there is now an active software component on the BMC consuming 9193c8edc9SAndrew Jefferyaccess requests, the BMC must occasionally indicate state changes to the host. 9293c8edc9SAndrew JefferySuch interactions are labelled "events". For example, if a user or other system 936a51e5f4SPatrick Williamssoftware on the BMC suspends the host's access to its flash device, the BMC-side 946a51e5f4SPatrick Williamsdaemon implementing the protocol must notify the host that its requests will be 956a51e5f4SPatrick Williamsdenied until further notice. 9693c8edc9SAndrew Jeffery 9793c8edc9SAndrew Jeffery## Protocol Versioning 9893c8edc9SAndrew Jeffery 9993c8edc9SAndrew JefferyTo enable evolution of the command and event interfaces, incremental changes to 1006a51e5f4SPatrick Williamsthe behaviour are defined in new versions of the protocol. The descriptions and 1016a51e5f4SPatrick Williamstables that follow all identify the versions to which they are applicable. 10293c8edc9SAndrew Jeffery 10393c8edc9SAndrew JefferyThe highest currently specified protocol version is version 3. 10493c8edc9SAndrew Jeffery 10593c8edc9SAndrew Jeffery## Table of Commands 10693c8edc9SAndrew Jeffery 10793c8edc9SAndrew Jeffery| ID | Name | v1 | v2 | v3 | Description | 1086a51e5f4SPatrick Williams| --- | ----------------------------------------------------- | --- | --- | --- | ------------------------------------------------------------------------ | 10993c8edc9SAndrew Jeffery| 1 | [`RESET`](#reset-command) | ✓ | ✓ | ✓ | Reset the state of the LPC firmware space, closing any active window | 11093c8edc9SAndrew Jeffery| 2 | [`GET_INFO`](#get_info-command) | ✓ | ✓ | ✓ | Perform protocol version negotiation and retrieve fundamental parameters | 11193c8edc9SAndrew Jeffery| 3 | [`GET_FLASH_INFO`](#get_flash_info-command) | ✓ | ✓ | ✓ | Retrieve flash-specific parameters | 11293c8edc9SAndrew Jeffery| 4 | [`CREATE_READ_WINDOW`](#create_read_window-command) | ✓ | ✓ | ✓ | Request mapping of a flash region for read | 11393c8edc9SAndrew Jeffery| 5 | [`CLOSE`](#close-command) | ✓ | ✓ | ✓ | Close the current window, flushing any dirty regions | 11493c8edc9SAndrew Jeffery| 6 | [`CREATE_WRITE_WINDOW`](#create_write_window-command) | ✓ | ✓ | ✓ | Request mapping of a flash region for write | 11593c8edc9SAndrew Jeffery| 7 | [`MARK_DIRTY`](#mark_dirty-command) | ✓ | ✓ | ✓ | Mark a region of a write window as modified | 11693c8edc9SAndrew Jeffery| 8 | [`FLUSH`](#flush-command) | ✓ | ✓ | ✓ | Flush dirty regions of the write window to flash | 11793c8edc9SAndrew Jeffery| 9 | [`ACK`](#ack-command) | ✓ | ✓ | ✓ | Acknowledge the receipt of an event from the BMC | 11893c8edc9SAndrew Jeffery| 10 | [`ERASE`](#erase-command) | | ✓ | ✓ | Mark a region of a write window as erased | 11993c8edc9SAndrew Jeffery| 11 | [`GET_FLASH_NAME`](#get_flash_name-command) | | | ✓ | Retrieve the name of an indexed flash device | 12093c8edc9SAndrew Jeffery| 12 | [`LOCK`](#lock-command) | | | ✓ | Mark a region of the current flash window as immutable | 12193c8edc9SAndrew Jeffery 12293c8edc9SAndrew Jeffery## Table of Events 12393c8edc9SAndrew Jeffery 12493c8edc9SAndrew Jeffery| ID | Name | v1 | v2 | v3 | Description | 1256a51e5f4SPatrick Williams| --- | ------------------------------------------------- | --- | --- | --- | ------------------------------------------------------------------------------------------- | 12693c8edc9SAndrew Jeffery| 0 | [`PROTOCOL_RESET`](#protocol_reset-event) | ✓ | ✓ | ✓ | The host is required to perform version negotiation and re-establish its window of interest | 12793c8edc9SAndrew Jeffery| 1 | [`WINDOW_RESET`](#window_reset-event) | | ✓ | ✓ | The host must re-establish its window of interest | 12893c8edc9SAndrew Jeffery| 6 | [`FLASH_CONTROL_LOST`](#flash_control_lost-event) | | ✓ | ✓ | The host should suspend access requests | 12993c8edc9SAndrew Jeffery| 7 | [`DAEMON_READY`](#daemon_ready-event) | | ✓ | ✓ | The daemon is active and can accept commands | 13093c8edc9SAndrew Jeffery 13193c8edc9SAndrew Jeffery## List of Transports 13293c8edc9SAndrew Jeffery 1336a51e5f4SPatrick WilliamsAn essential feature of the protocol is that its behaviour is independent of the 1346a51e5f4SPatrick Williamshost-BMC transport. The command and event interfaces of each transport 13593c8edc9SAndrew Jefferynecessarily reflect the version of the protocol they are implementing, but the 13693c8edc9SAndrew Jefferytransport has no influence otherwise. 13793c8edc9SAndrew Jeffery 13893c8edc9SAndrew JefferyThere are three documented transports for the protocol: 13993c8edc9SAndrew Jeffery 14093c8edc9SAndrew Jeffery1. The [ASPEED BMC LPC Mailbox transport](#mailbox-transport) 14193c8edc9SAndrew Jeffery2. The [IPMI transport](#ipmi-transport) 14293c8edc9SAndrew Jeffery3. The [DBus transport](#dbus-transport) 14393c8edc9SAndrew Jeffery 14493c8edc9SAndrew JefferyThe command layout, routing and event mechanism for each transport all have 14593c8edc9SAndrew Jefferydifferent features and are detailed below. An important note is that command 14693c8edc9SAndrew Jefferydesign is limited by the most constrained transport - the LPC mailbox 14793c8edc9SAndrew Jefferytransport - where only 11 bytes are available for encoding of command 14893c8edc9SAndrew Jefferyparameters. 14993c8edc9SAndrew Jeffery 1506a51e5f4SPatrick WilliamsImplementations must choose to support one or more of the transports outlined in 1516a51e5f4SPatrick Williamsthis document. 15293c8edc9SAndrew Jeffery 15393c8edc9SAndrew JefferyNote that the DBus transport is intended for BMC-internal communications, and 15493c8edc9SAndrew Jefferycan be used to separate a host-interface transport from the protocol 15593c8edc9SAndrew Jefferyimplementation. 15693c8edc9SAndrew Jeffery 15793c8edc9SAndrew Jeffery## Protocol Flow 15893c8edc9SAndrew Jeffery 15993c8edc9SAndrew JefferyThe high-level protocol flow is that the host first issues a `GET_INFO` command 16093c8edc9SAndrew Jefferyto negotiate the protocol version and acquire parameters fundamental to 16193c8edc9SAndrew Jefferyconstructing arguments to and interpreting responses from the commands that 16293c8edc9SAndrew Jefferyfollow. 16393c8edc9SAndrew Jeffery 16493c8edc9SAndrew JefferyOnce `GET_INFO` has successfully completed, the host should request the flash 1656a51e5f4SPatrick Williamsparameters with `GET_FLASH_INFO`. The response provides information on the flash 1666a51e5f4SPatrick Williamscapacity and the size of its erase granule. 16793c8edc9SAndrew Jeffery 16893c8edc9SAndrew JefferyFollowing `GET_FLASH_INFO`, the next act is to establish an active flash window 16993c8edc9SAndrew Jefferywith either one of the `CREATE_READ_WINDOW` or `CREATE_WRITE_WINDOW` commands. 17093c8edc9SAndrew Jeffery 17193c8edc9SAndrew JefferyIn the event of creating a write window the host must inform the BMC of the 17293c8edc9SAndrew Jefferyregions to which it has written with `MARK_DIRTY`- the BMC receives no 17393c8edc9SAndrew Jefferynotification of accesses from the host, they are simply mapped by the LPC2AHB 1746a51e5f4SPatrick Williamsbridge as necessary. As the accesses are to system memory and not the flash the 1756a51e5f4SPatrick Williamschanges identified by the `MARK_DIRTY` commands are not permanent until a 17693c8edc9SAndrew Jeffery`FLUSH` command is received (implicit flushes are discussed below), at which 17793c8edc9SAndrew Jefferypoint the dirty regions of the active window will be written to the flash 17893c8edc9SAndrew Jefferydevice. 17993c8edc9SAndrew Jeffery 18093c8edc9SAndrew JefferyAs an optimisation the host may choose to use the `ERASE` command to indicate 18193c8edc9SAndrew Jefferythat large regions should be set to the erased state. This optimisation saves 18293c8edc9SAndrew Jefferythe associated LPC firmware cycles to write the regions into the erased state. 18393c8edc9SAndrew Jeffery 18493c8edc9SAndrew Jeffery## Version Negotiation 18593c8edc9SAndrew Jeffery 1866a51e5f4SPatrick WilliamsWhen invoking `GET_INFO` the host must provide the BMC its highest supported 1876a51e5f4SPatrick Williamsversion of the protocol. The BMC must respond with a protocol version less than 1886a51e5f4SPatrick Williamsor equal to that requested by the host, or in the event that there is no such 1896a51e5f4SPatrick Williamsvalue, an error code. In the event that an error is returned the host must not 1906a51e5f4SPatrick Williamscontinue to communicate with the BMC. Otherwise, the protocol version returned 1916a51e5f4SPatrick Williamsby the BMC is the agreed protocol version for all further communication. The 1926a51e5f4SPatrick Williamshost may at a future point request a change in protocol version by issuing a 1936a51e5f4SPatrick Williamssubsequent `GET_INFO` command. 19493c8edc9SAndrew Jeffery 19593c8edc9SAndrew Jeffery### Unversioned Commands 19693c8edc9SAndrew Jeffery 19793c8edc9SAndrew JefferyIn some circumstances it is necessary for bootstrap or optimisation purposes to 19893c8edc9SAndrew Jefferysupport unversioned commands. The protocol supports three unversioned commands: 19993c8edc9SAndrew Jeffery 20093c8edc9SAndrew Jeffery1. `RESET` 20193c8edc9SAndrew Jeffery2. `GET_INFO` 20293c8edc9SAndrew Jeffery3. `ACK` 20393c8edc9SAndrew Jeffery 20493c8edc9SAndrew JefferyAll remaining commands have their presence and behaviour specified with respect 20593c8edc9SAndrew Jefferyto the negotiated version of the protocol. 20693c8edc9SAndrew Jeffery 20793c8edc9SAndrew JefferyThe arguments to the `GET_INFO` command are considered unversioned and as a 2086a51e5f4SPatrick Williamsresult are static in nature - the protocol implementation has no means to decode 2096a51e5f4SPatrick Williamsversion-specific arguments as the version has not yet been negotiated. With 2106a51e5f4SPatrick Williamsrespect to the response, the version field is unversioned, but all subsequent 2116a51e5f4SPatrick Williamsfields _may_ be versioned. 21293c8edc9SAndrew Jeffery 21393c8edc9SAndrew Jeffery`RESET` remaining unversioned is an optimisation catering to deeply embedded 2146a51e5f4SPatrick Williamscomponents on the host side that may need access to the command. Keeping `RESET` 2156a51e5f4SPatrick Williamsunversioned removes the complexity of implementing `GET_INFO` with its version 2166a51e5f4SPatrick Williamsnegotiation and minimises the overhead required to get into the pre-boot state. 21793c8edc9SAndrew Jeffery 21893c8edc9SAndrew JefferyDefining `ACK` as unversioned ensures host firmware that has minimal protocol 21993c8edc9SAndrew Jefferysupport can silence interrupts from the BMC as required. 22093c8edc9SAndrew Jeffery 22193c8edc9SAndrew Jeffery## Sequence Numbers 22293c8edc9SAndrew Jeffery 22393c8edc9SAndrew JefferySequence numbers are included in messages for correlation of commands and 22493c8edc9SAndrew Jefferyresponses. v1, v2 and v3 of the protocol permit either zero or one commands to 22593c8edc9SAndrew Jefferybe in progress (yet to receive a response). 22693c8edc9SAndrew Jeffery 22793c8edc9SAndrew JefferyFor generality, the host must generate a sequence number that is unique with 22893c8edc9SAndrew Jefferyrespect to the previous command (one that has received a response) and any 22993c8edc9SAndrew Jefferyin-progress commands. Sequence numbers meeting this requirement are considered 23093c8edc9SAndrew Jefferyvalid. The BMC's response to a command must contain the same sequence number 23193c8edc9SAndrew Jefferyissued by the host as found in the relevant command. 23293c8edc9SAndrew Jeffery 23393c8edc9SAndrew JefferySequence numbers may be reused in accordance with the constraints outlined 23493c8edc9SAndrew Jefferyabove. However, it is not an error if the BMC receives a unversioned command 23593c8edc9SAndrew Jeffery(`RESET`, `GET_INFO` or `ACK`) with an invalid sequence number. For all other 23693c8edc9SAndrew Jefferycases, the BMC must respond with an error if the constraints are violated. If 23793c8edc9SAndrew Jefferythe host receives a sequence-related error response it must consider any 23893c8edc9SAndrew Jefferyin-progress commands to have failed. The host may retry the affected command(s) 23993c8edc9SAndrew Jefferyafter generating a suitable sequence number. 24093c8edc9SAndrew Jeffery 24193c8edc9SAndrew Jeffery## Window Management 24293c8edc9SAndrew Jeffery 24393c8edc9SAndrew JefferyThere is only ever one active window which is the window created by the most 24493c8edc9SAndrew Jefferyrecent `CREATE_READ_WINDOW` or `CREATE_WRITE_WINDOW` call which succeeded. Even 24593c8edc9SAndrew Jefferythough there are two types of windows there can still only be one active window 24693c8edc9SAndrew Jefferyirrespective of type. The host must not write to a read window. The host may 24793c8edc9SAndrew Jefferyread from a write window and the BMC must guarantee that the window reflects 24893c8edc9SAndrew Jefferywhat the host has written there. 24993c8edc9SAndrew Jeffery 2506a51e5f4SPatrick WilliamsA window can be closed by issuing the `CLOSE` command, in which case there is no 2516a51e5f4SPatrick Williamsactive window and the host must not access the LPC firmware space until a window 2526a51e5f4SPatrick Williamsis subsequently opened. If the host closes an active write window then the BMC 2536a51e5f4SPatrick Williamsmust perform an implicit flush. If the host tries to open a new window with an 2546a51e5f4SPatrick Williamsalready active window then the active window is closed (and implicitly flushed 2556a51e5f4SPatrick Williamsif it was a write window). If the new window is successfully opened then it is 2566a51e5f4SPatrick Williamsthe new active window; if the command fails then there is no active window and 2576a51e5f4SPatrick Williamsthe previously active window must no longer be accessed. 25893c8edc9SAndrew Jeffery 25993c8edc9SAndrew JefferyThe host must not access an LPC address other than that which is contained by 26093c8edc9SAndrew Jefferythe active window. The host must not use write management functions (see below) 26193c8edc9SAndrew Jefferyif the active window is a read window or if there is no active window. 26293c8edc9SAndrew Jeffery 26393c8edc9SAndrew Jeffery## Command Parameter Types 26493c8edc9SAndrew Jeffery 2656a51e5f4SPatrick WilliamsIt is common in the protocol definition for command parameters to be represented 2666a51e5f4SPatrick Williamsin terms of a block size. This block size may refer to e.g. the size of the 2676a51e5f4SPatrick Williamserase granule of the flash, or it may be another value entirely. Regardless of 2686a51e5f4SPatrick Williamswhat it represents, the argument values are scaled by the block size determined 2696a51e5f4SPatrick Williamsby version negotiation. Specifying arguments in terms of a block size allows 2706a51e5f4SPatrick Williamstransports to keep a compact representation in constrained implementations such 2716a51e5f4SPatrick Williamsas the LPC mailbox transport. 27293c8edc9SAndrew Jeffery 27393c8edc9SAndrew JefferyNote that for simplicity block size must always be a power-of-2. The block size 27493c8edc9SAndrew Jefferymust also be greater than or equal to 4K regardless of the negotiated protocol 27593c8edc9SAndrew Jefferyversion. 27693c8edc9SAndrew Jeffery 27793c8edc9SAndrew JefferyFinally, conversion between blocks and bytes is achieved by respectively 27893c8edc9SAndrew Jefferydividing or multiplying the quantity by the negotiated block-size. 27993c8edc9SAndrew Jeffery 28093c8edc9SAndrew Jeffery# Transport Overview 28193c8edc9SAndrew Jeffery 28293c8edc9SAndrew JefferySeveral transports are defined for the protocol and are outlined below. The key 28393c8edc9SAndrew Jefferyfeatures of transport support are the wire-format, delivery mechanisms of 28493c8edc9SAndrew Jefferycommands and events, and the definition and delivery of response codes. 28593c8edc9SAndrew Jeffery 28693c8edc9SAndrew JefferyThe DBus transport is the most foreign of the three as it does not encode the 28793c8edc9SAndrew Jefferycommand index or a sequence number; these two elements are handled by the 28893c8edc9SAndrew Jefferyproperties of DBus itself. 28993c8edc9SAndrew Jeffery 29093c8edc9SAndrew Jeffery## Mailbox Transport 29193c8edc9SAndrew Jeffery 2926a51e5f4SPatrick Williams- Multi-byte quantity endianness: Little-endian 2936a51e5f4SPatrick Williams- Command length encoding: Assumed from negotiated protocol version 2946a51e5f4SPatrick Williams- Parameter alignment: Packed (no padding) 2956a51e5f4SPatrick Williams- Command status response: ABI-defined Response byte 2966a51e5f4SPatrick Williams- Event Delivery: ABI-defined BMC Status byte 29793c8edc9SAndrew Jeffery 2986a51e5f4SPatrick WilliamsThe mailbox transport defines the ABI used over the mailbox registers. There are 2996a51e5f4SPatrick Williams16 data registers and several status and control registers for managing 30093c8edc9SAndrew Jefferyinterrupts between the host and the BMC. For the purpose of defining the 30193c8edc9SAndrew Jefferytransport ABI the status and control registers can mostly be disregarded, save 30293c8edc9SAndrew Jefferyfor the necessity of issuing and responding to interrupts on each side. 30393c8edc9SAndrew Jeffery 30493c8edc9SAndrew JefferyAssuming the registers are in a contiguous layout (this is not reflected in the 3056a51e5f4SPatrick Williamshardware, but may be the abstraction presented by the associated kernel driver), 306*0bfd90deSNinad Palsulethe ABI is defined as follows, where the bytes in the range [2, 12] are 307*0bfd90deSNinad Palsuleavailable for command parameters and are defined on a per-command basis. 30893c8edc9SAndrew Jeffery 30993c8edc9SAndrew Jeffery``` 31093c8edc9SAndrew Jeffery 0 7 15 31 31193c8edc9SAndrew Jeffery +----------+----------+---------------------+ 31293c8edc9SAndrew Jeffery 0 | Command | Sequence | | 31393c8edc9SAndrew Jeffery +----------+----------+---------------------+ 31493c8edc9SAndrew Jeffery 4 | | 31593c8edc9SAndrew Jeffery +-------------------------------------------+ 31693c8edc9SAndrew Jeffery 8 | | 31793c8edc9SAndrew Jeffery +----------+----------+----------+----------+ 31893c8edc9SAndrew Jeffery12 | | Response | BMC Sts | Host Sts | 31993c8edc9SAndrew Jeffery +----------+----------+----------+----------+ 32093c8edc9SAndrew Jeffery 0 7 15 23 31 32193c8edc9SAndrew Jeffery``` 32293c8edc9SAndrew Jeffery 32393c8edc9SAndrew JefferyCommand status response codes are as follows: 32493c8edc9SAndrew Jeffery 32593c8edc9SAndrew Jeffery### Status Codes 32693c8edc9SAndrew Jeffery 32793c8edc9SAndrew Jeffery| ID | Name | v1 | v2 | v3 | Description | 3286a51e5f4SPatrick Williams| --- | -------------- | --- | --- | --- | ---------------------------------------------------- | 32993c8edc9SAndrew Jeffery| 1 | `SUCCESS` | ✓ | ✓ | ✓ | Command completed successfully | 33093c8edc9SAndrew Jeffery| 2 | `PARAM_ERROR` | ✓ | ✓ | ✓ | Error with parameters supplied or command invalid | 33193c8edc9SAndrew Jeffery| 3 | `WRITE_ERROR` | ✓ | ✓ | ✓ | Error writing to the backing file system | 33293c8edc9SAndrew Jeffery| 4 | `SYSTEM_ERROR` | ✓ | ✓ | ✓ | Error in BMC performing system action | 33393c8edc9SAndrew Jeffery| 5 | `TIMEOUT` | ✓ | ✓ | ✓ | Timeout in performing action | 33493c8edc9SAndrew Jeffery| 6 | `BUSY` | | ✓ | ✓ | Flash access suspended, retry later | 33593c8edc9SAndrew Jeffery| 7 | `WINDOW_ERROR` | | ✓ | ✓ | Invalid window state or command invalid for window | 33693c8edc9SAndrew Jeffery| 8 | `SEQ_ERROR` | | ✓ | ✓ | Invalid sequence number supplied with command | 33793c8edc9SAndrew Jeffery| 9 | `LOCKED_ERROR` | | | ✓ | Erased or dirtied region intersected a locked region | 33893c8edc9SAndrew Jeffery 33993c8edc9SAndrew Jeffery## IPMI Transport 34093c8edc9SAndrew Jeffery 3416a51e5f4SPatrick Williams- Multi-byte quantity endianness: Little-endian 3426a51e5f4SPatrick Williams- Command length encoding: Assumed from negotiated protocol version 3436a51e5f4SPatrick Williams- Parameter alignment: Packed (no padding) 3446a51e5f4SPatrick Williams- Command status response: Mapped to IPMI completion codes 3456a51e5f4SPatrick Williams- Event Delivery: Status byte in SEL via `SMS_ATN` 34693c8edc9SAndrew Jeffery 34793c8edc9SAndrew JefferyThe IPMI transport must reserve one `(NetFn, Command)` pair for host-to-BMC 34893c8edc9SAndrew Jefferycommunications and one SEL `(NetFn, Command)` pair for BMC-to-host 34993c8edc9SAndrew Jefferycommunication, signaled by `SMS_ATN`. 35093c8edc9SAndrew Jeffery 35193c8edc9SAndrew JefferyThe wire command framing is as follows: 35293c8edc9SAndrew Jeffery 35393c8edc9SAndrew Jeffery1. The command identifier is the first value and is encoded in one byte 35493c8edc9SAndrew Jeffery2. The sequence number is the second value and is encoded in one byte 35593c8edc9SAndrew Jeffery3. Parameters required by the (version, command) pair follow 35693c8edc9SAndrew Jeffery 35793c8edc9SAndrew Jeffery``` 35893c8edc9SAndrew Jeffery 0 7 15 N 35993c8edc9SAndrew Jeffery +----------+----------+--------- -------+ 36093c8edc9SAndrew Jeffery 0 | Command | Sequence | ... | 36193c8edc9SAndrew Jeffery +----------+----------+--------- -------+ 36293c8edc9SAndrew Jeffery``` 36393c8edc9SAndrew Jeffery 36493c8edc9SAndrew Jeffery## DBus Transport 36593c8edc9SAndrew Jeffery 3666a51e5f4SPatrick Williams- Multi-byte quantity endianness: Transport encoded 3676a51e5f4SPatrick Williams- Command length encoding: Transport encoded 3686a51e5f4SPatrick Williams- Parameter alignment: Transport encoded 3696a51e5f4SPatrick Williams- Command status response: Mapped to Unix system error codes 3706a51e5f4SPatrick Williams- Event Delivery: DBus signals and properties per event type 37193c8edc9SAndrew Jeffery 3726a51e5f4SPatrick WilliamsDBus defines its own wire-format for messages, and so support for this transport 3736a51e5f4SPatrick Williamsconcentrates on mapping commands and events onto DBus concepts. Specifically, 3746a51e5f4SPatrick Williamscommands are represented by DBus methods and events are represented by 3756a51e5f4SPatrick Williamsproperties. DBus will automatically generate a `PropertiesChanged` signal for 3766a51e5f4SPatrick Williamschanges to properties allowing consumers to learn of updates as they happen. 37793c8edc9SAndrew Jeffery 37893c8edc9SAndrew JefferyAs the commands are represented by DBus methods there is no need to encode the 37993c8edc9SAndrew Jefferycommand index in the request - this is represented by the appropriate method on 38093c8edc9SAndrew Jefferythe implementation object's interface. 38193c8edc9SAndrew Jeffery 38293c8edc9SAndrew JefferySimilarly, there's no need to encode sequence numbers as DBus handles the 38393c8edc9SAndrew Jefferycorrelation of messages over the bus. As there is no encoding of sequence 38493c8edc9SAndrew Jefferynumbers, there is no need to describe a command status response like 38593c8edc9SAndrew Jeffery`SEQ_ERROR`, which allows a clean mapping to Unix error codes. 38693c8edc9SAndrew Jeffery 38793c8edc9SAndrew JefferyFinally, commands mapped to methods have the number of parameters and types 38893c8edc9SAndrew Jefferydescribed by the method's type signature, though these descriptions concern the 38993c8edc9SAndrew Jefferybasic wire types and not the semantic types relevant to the protocol. The method 39093c8edc9SAndrew Jefferytype signature and parameter ordering are described in the relevant command 39193c8edc9SAndrew Jefferydefinition. 39293c8edc9SAndrew Jeffery 39393c8edc9SAndrew Jeffery# Command Definitions 39493c8edc9SAndrew Jeffery 39593c8edc9SAndrew JefferyThe command identifier values and command-response parameter formats are 39693c8edc9SAndrew Jefferydescribed in tables under headers for each command. The order of the parameters 3976a51e5f4SPatrick Williamsin the parameter tables reflects the order of the parameters in the commands and 3986a51e5f4SPatrick Williamsresponses. The M, I, and D columns represent the Mailbox, IPMI and DBus 39993c8edc9SAndrew Jefferytransports respectively. For the command identifier table the value in these 40093c8edc9SAndrew Jefferycolumns' cells represent the command index, or for DBus, its method name. For 40193c8edc9SAndrew Jefferythe parameter tables the value represent the parameter's offset in the message 40293c8edc9SAndrew Jeffery(disregarding the command and sequence bytes), or in the case of DBus the 4036a51e5f4SPatrick Williamsappropriate 4046a51e5f4SPatrick Williams[type signature](https://dbus.freedesktop.org/doc/dbus-specification.html#basic-types). 40593c8edc9SAndrew Jeffery 40693c8edc9SAndrew Jeffery## `RESET` Command 40793c8edc9SAndrew Jeffery 40893c8edc9SAndrew Jeffery| v1 | v2 | v3 | M | I | D | 4096a51e5f4SPatrick Williams| --- | --- | --- | --- | --- | ----- | 41093c8edc9SAndrew Jeffery| ✓ | ✓ | ✓ | 1 | 1 | Reset | 41193c8edc9SAndrew Jeffery 41293c8edc9SAndrew Jeffery### v1 Parameters 41393c8edc9SAndrew Jeffery 41493c8edc9SAndrew Jeffery<table> 41593c8edc9SAndrew Jeffery<tr> 41693c8edc9SAndrew Jeffery<th>Command</th><th>Response</th> 41793c8edc9SAndrew Jeffery</tr> 41893c8edc9SAndrew Jeffery<tr> 41993c8edc9SAndrew Jeffery<td valign="top"> 42093c8edc9SAndrew Jeffery 42193c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 4226a51e5f4SPatrick Williams| --------- | ---- | ---- | --- | --- | --- | 42393c8edc9SAndrew Jeffery 42493c8edc9SAndrew Jeffery</td> 42593c8edc9SAndrew Jeffery<td valign="top"> 42693c8edc9SAndrew Jeffery 42793c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 4286a51e5f4SPatrick Williams| --------- | ---- | ---- | --- | --- | --- | 42993c8edc9SAndrew Jeffery 43093c8edc9SAndrew Jeffery</td> 43193c8edc9SAndrew Jeffery</tr> 43293c8edc9SAndrew Jeffery</table> 43393c8edc9SAndrew Jeffery 43493c8edc9SAndrew Jeffery### v2 Parameters 43593c8edc9SAndrew Jeffery 43693c8edc9SAndrew Jeffery<table> 43793c8edc9SAndrew Jeffery<tr> 43893c8edc9SAndrew Jeffery<th>Command</th><th>Response</th> 43993c8edc9SAndrew Jeffery</tr> 44093c8edc9SAndrew Jeffery<tr> 44193c8edc9SAndrew Jeffery<td valign="top"> 44293c8edc9SAndrew Jeffery 44393c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 4446a51e5f4SPatrick Williams| --------- | ---- | ---- | --- | --- | --- | 44593c8edc9SAndrew Jeffery 44693c8edc9SAndrew Jeffery</td> 44793c8edc9SAndrew Jeffery<td valign="top"> 44893c8edc9SAndrew Jeffery 44993c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 4506a51e5f4SPatrick Williams| --------- | ---- | ---- | --- | --- | --- | 45193c8edc9SAndrew Jeffery 45293c8edc9SAndrew Jeffery</td> 45393c8edc9SAndrew Jeffery</tr> 45493c8edc9SAndrew Jeffery</table> 45593c8edc9SAndrew Jeffery 45693c8edc9SAndrew Jeffery### v3 Parameters 45793c8edc9SAndrew Jeffery 45893c8edc9SAndrew Jeffery<table> 45993c8edc9SAndrew Jeffery<tr> 46093c8edc9SAndrew Jeffery<th>Command</th><th>Response</th> 46193c8edc9SAndrew Jeffery</tr> 46293c8edc9SAndrew Jeffery<tr> 46393c8edc9SAndrew Jeffery<td valign="top"> 46493c8edc9SAndrew Jeffery 46593c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 4666a51e5f4SPatrick Williams| --------- | ---- | ---- | --- | --- | --- | 46793c8edc9SAndrew Jeffery 46893c8edc9SAndrew Jeffery</td> 46993c8edc9SAndrew Jeffery<td valign="top"> 47093c8edc9SAndrew Jeffery 47193c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 4726a51e5f4SPatrick Williams| --------- | ---- | ---- | --- | --- | --- | 47393c8edc9SAndrew Jeffery 47493c8edc9SAndrew Jeffery</td> 47593c8edc9SAndrew Jeffery</tr> 47693c8edc9SAndrew Jeffery</table> 47793c8edc9SAndrew Jeffery 47893c8edc9SAndrew Jeffery### Description 47993c8edc9SAndrew Jeffery 48093c8edc9SAndrew JefferyRequests the BMC return the LPC firmware space to a state ready for host 48193c8edc9SAndrew Jefferyfirmware bootstrap. 48293c8edc9SAndrew Jeffery 48393c8edc9SAndrew Jeffery## `GET_INFO` Command 48493c8edc9SAndrew Jeffery 48593c8edc9SAndrew Jeffery| v1 | v2 | v3 | M | I | D | 4866a51e5f4SPatrick Williams| --- | --- | --- | --- | --- | ------- | 48793c8edc9SAndrew Jeffery| ✓ | ✓ | ✓ | 2 | 2 | GetInfo | 48893c8edc9SAndrew Jeffery 48993c8edc9SAndrew Jeffery### v1 Parameters 49093c8edc9SAndrew Jeffery 49193c8edc9SAndrew Jeffery<table> 49293c8edc9SAndrew Jeffery<tr> 49393c8edc9SAndrew Jeffery<th>Command</th><th>Response</th> 49493c8edc9SAndrew Jeffery</tr> 49593c8edc9SAndrew Jeffery<tr> 49693c8edc9SAndrew Jeffery<td valign="top"> 49793c8edc9SAndrew Jeffery 49893c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 4996a51e5f4SPatrick Williams| --------- | ------- | ---- | --- | --- | --- | 50093c8edc9SAndrew Jeffery| Version | Version | 1 | 0 | 0 | y | 50193c8edc9SAndrew Jeffery 50293c8edc9SAndrew Jeffery</td> 50393c8edc9SAndrew Jeffery<td valign="top"> 50493c8edc9SAndrew Jeffery 50593c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 5066a51e5f4SPatrick Williams| ----------------- | ------- | ---- | --- | --- | --- | 50793c8edc9SAndrew Jeffery| Version | Version | 1 | 0 | 0 | y | 50893c8edc9SAndrew Jeffery| Read Window Size | Blocks | 2 | 1 | 1 | q | 50993c8edc9SAndrew Jeffery| Write Window Size | Blocks | 2 | 3 | 3 | q | 51093c8edc9SAndrew Jeffery 51193c8edc9SAndrew Jeffery</td> 51293c8edc9SAndrew Jeffery</tr> 51393c8edc9SAndrew Jeffery</table> 51493c8edc9SAndrew Jeffery 51593c8edc9SAndrew Jeffery### v2 Parameters 51693c8edc9SAndrew Jeffery 51793c8edc9SAndrew Jeffery<table> 51893c8edc9SAndrew Jeffery<tr> 51993c8edc9SAndrew Jeffery<th>Command</th><th>Response</th> 52093c8edc9SAndrew Jeffery</tr> 52193c8edc9SAndrew Jeffery<tr> 52293c8edc9SAndrew Jeffery<td valign="top"> 52393c8edc9SAndrew Jeffery 52493c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 5256a51e5f4SPatrick Williams| --------- | ------- | ---- | --- | --- | --- | 52693c8edc9SAndrew Jeffery| Version | Version | 1 | 0 | 0 | y | 52793c8edc9SAndrew Jeffery 52893c8edc9SAndrew Jeffery</td> 52993c8edc9SAndrew Jeffery<td valign="top"> 53093c8edc9SAndrew Jeffery 53193c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 5326a51e5f4SPatrick Williams| ---------------- | ------- | ---- | --- | --- | --- | 53393c8edc9SAndrew Jeffery| Version | Version | 1 | 0 | 0 | y | 53493c8edc9SAndrew Jeffery| Block Size Shift | Count | 1 | 5 | 1 | y | 53593c8edc9SAndrew Jeffery| Timeout | Seconds | 2 | 6 | 2 | q | 53693c8edc9SAndrew Jeffery 53793c8edc9SAndrew Jeffery</td> 53893c8edc9SAndrew Jeffery</tr> 53993c8edc9SAndrew Jeffery</table> 54093c8edc9SAndrew Jeffery 54193c8edc9SAndrew Jeffery### v3 Parameters 54293c8edc9SAndrew Jeffery 54393c8edc9SAndrew Jeffery<table> 54493c8edc9SAndrew Jeffery<tr> 54593c8edc9SAndrew Jeffery<th>Command</th><th>Response</th> 54693c8edc9SAndrew Jeffery</tr> 54793c8edc9SAndrew Jeffery<tr> 54893c8edc9SAndrew Jeffery<td valign="top"> 54993c8edc9SAndrew Jeffery 55093c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 5516a51e5f4SPatrick Williams| ---------------- | ------- | ---- | --- | --- | --- | 55293c8edc9SAndrew Jeffery| Version | Version | 1 | 0 | 0 | y | 55393c8edc9SAndrew Jeffery| Block Size Shift | Count | 1 | 1 | 1 | y | 55493c8edc9SAndrew Jeffery 55593c8edc9SAndrew Jeffery</td> 55693c8edc9SAndrew Jeffery<td valign="top"> 55793c8edc9SAndrew Jeffery 55893c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 5596a51e5f4SPatrick Williams| ---------------- | ------- | ---- | --- | --- | --- | 56093c8edc9SAndrew Jeffery| Version | Version | 1 | 0 | 0 | y | 56193c8edc9SAndrew Jeffery| Block Size Shift | Count | 1 | 5 | 1 | y | 56293c8edc9SAndrew Jeffery| Timeout | Seconds | 2 | 6 | 2 | q | 56393c8edc9SAndrew Jeffery| Devices | Count | 1 | 8 | 4 | y | 56493c8edc9SAndrew Jeffery 56593c8edc9SAndrew Jeffery</td> 56693c8edc9SAndrew Jeffery</tr> 56793c8edc9SAndrew Jeffery</table> 56893c8edc9SAndrew Jeffery 56993c8edc9SAndrew Jeffery### Description 57093c8edc9SAndrew Jeffery 57193c8edc9SAndrew JefferyThe suggested timeout is a hint to the host as to how long it should wait after 5726a51e5f4SPatrick Williamsissuing a command to the BMC before it times out waiting for a response. This is 5736a51e5f4SPatrick Williamsthe maximum time which the BMC thinks it could take to service any command which 5746a51e5f4SPatrick Williamsthe host could issue. This may be set to zero to indicate that the BMC does not 5756a51e5f4SPatrick Williamswish to provide a hint in which case the host must choose some reasonable value. 57693c8edc9SAndrew Jeffery 57793c8edc9SAndrew JefferyFrom v3 the host may desire a specific block size and thus can request this by 5786a51e5f4SPatrick Williamsgiving a hint to the daemon (may be zero). The daemon may use this to select the 5796a51e5f4SPatrick Williamsblock size which it will use however is free to ignore it. The value in the 58093c8edc9SAndrew Jefferyresponse is the block size which must be used for all further requests until a 58193c8edc9SAndrew Jefferynew size is negotiated by another call to `GET_INFO`. 58293c8edc9SAndrew Jeffery 58393c8edc9SAndrew Jeffery## `GET_FLASH_INFO` Command 58493c8edc9SAndrew Jeffery 58593c8edc9SAndrew Jeffery| v1 | v2 | v3 | M | I | D | 5866a51e5f4SPatrick Williams| --- | --- | --- | --- | --- | ------------ | 58793c8edc9SAndrew Jeffery| ✓ | ✓ | ✓ | 3 | 3 | GetFlashInfo | 58893c8edc9SAndrew Jeffery 58993c8edc9SAndrew Jeffery### v1 Parameters 59093c8edc9SAndrew Jeffery 59193c8edc9SAndrew Jeffery<table> 59293c8edc9SAndrew Jeffery<tr> 59393c8edc9SAndrew Jeffery<th>Command</th><th>Response</th> 59493c8edc9SAndrew Jeffery</tr> 59593c8edc9SAndrew Jeffery<tr> 59693c8edc9SAndrew Jeffery<td valign="top"> 59793c8edc9SAndrew Jeffery 59893c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 5996a51e5f4SPatrick Williams| --------- | ---- | ---- | --- | --- | --- | 60093c8edc9SAndrew Jeffery 60193c8edc9SAndrew Jeffery</td> 60293c8edc9SAndrew Jeffery<td valign="top"> 60393c8edc9SAndrew Jeffery 60493c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 6056a51e5f4SPatrick Williams| ------------- | ----- | ---- | --- | --- | --- | 60693c8edc9SAndrew Jeffery| Flash Size | Bytes | 4 | 0 | 0 | u | 60793c8edc9SAndrew Jeffery| Erase Granule | Bytes | 4 | 4 | 4 | u | 60893c8edc9SAndrew Jeffery 60993c8edc9SAndrew Jeffery</td> 61093c8edc9SAndrew Jeffery</tr> 61193c8edc9SAndrew Jeffery</table> 61293c8edc9SAndrew Jeffery 61393c8edc9SAndrew Jeffery### v2 Parameters 61493c8edc9SAndrew Jeffery 61593c8edc9SAndrew Jeffery<table> 61693c8edc9SAndrew Jeffery<tr> 61793c8edc9SAndrew Jeffery<th>Command</th><th>Response</th> 61893c8edc9SAndrew Jeffery</tr> 61993c8edc9SAndrew Jeffery<tr> 62093c8edc9SAndrew Jeffery<td valign="top"> 62193c8edc9SAndrew Jeffery 62293c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 6236a51e5f4SPatrick Williams| --------- | ---- | ---- | --- | --- | --- | 62493c8edc9SAndrew Jeffery 62593c8edc9SAndrew Jeffery</td> 62693c8edc9SAndrew Jeffery<td valign="top"> 62793c8edc9SAndrew Jeffery 62893c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 6296a51e5f4SPatrick Williams| ------------- | ------ | ---- | --- | --- | --- | 63093c8edc9SAndrew Jeffery| Flash Size | Blocks | 2 | 0 | 0 | q | 63193c8edc9SAndrew Jeffery| Erase Granule | Blocks | 2 | 2 | 2 | q | 63293c8edc9SAndrew Jeffery 63393c8edc9SAndrew Jeffery</td> 63493c8edc9SAndrew Jeffery</tr> 63593c8edc9SAndrew Jeffery</table> 63693c8edc9SAndrew Jeffery 63793c8edc9SAndrew Jeffery### v3 Parameters 63893c8edc9SAndrew Jeffery 63993c8edc9SAndrew Jeffery<table> 64093c8edc9SAndrew Jeffery<tr> 64193c8edc9SAndrew Jeffery<th>Command</th><th>Response</th> 64293c8edc9SAndrew Jeffery</tr> 64393c8edc9SAndrew Jeffery<tr> 64493c8edc9SAndrew Jeffery<td valign="top"> 64593c8edc9SAndrew Jeffery 64693c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 6476a51e5f4SPatrick Williams| --------- | ----- | ---- | --- | --- | --- | 64893c8edc9SAndrew Jeffery| Device ID | Index | 1 | 0 | 0 | y | 64993c8edc9SAndrew Jeffery 65093c8edc9SAndrew Jeffery</td> 65193c8edc9SAndrew Jeffery<td valign="top"> 65293c8edc9SAndrew Jeffery 65393c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 6546a51e5f4SPatrick Williams| ------------- | ------ | ---- | --- | --- | --- | 65593c8edc9SAndrew Jeffery| Flash Size | Blocks | 2 | 0 | 0 | q | 65693c8edc9SAndrew Jeffery| Erase Granule | Blocks | 2 | 2 | 2 | q | 65793c8edc9SAndrew Jeffery 65893c8edc9SAndrew Jeffery</td> 65993c8edc9SAndrew Jeffery</tr> 66093c8edc9SAndrew Jeffery</table> 66193c8edc9SAndrew Jeffery 66293c8edc9SAndrew Jeffery## `CREATE_READ_WINDOW` Command 66393c8edc9SAndrew Jeffery 66493c8edc9SAndrew Jeffery| v1 | v2 | v3 | M | I | D | 6656a51e5f4SPatrick Williams| --- | --- | --- | --- | --- | ---------------- | 66693c8edc9SAndrew Jeffery| ✓ | ✓ | ✓ | 4 | 4 | CreateReadWindow | 66793c8edc9SAndrew Jeffery 66893c8edc9SAndrew Jeffery### v1 Parameters 66993c8edc9SAndrew Jeffery 67093c8edc9SAndrew Jeffery<table> 67193c8edc9SAndrew Jeffery<tr> 67293c8edc9SAndrew Jeffery<th>Command</th><th>Response</th> 67393c8edc9SAndrew Jeffery</tr> 67493c8edc9SAndrew Jeffery<tr> 67593c8edc9SAndrew Jeffery<td valign="top"> 67693c8edc9SAndrew Jeffery 67793c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 6786a51e5f4SPatrick Williams| ------------ | ------ | ---- | --- | --- | --- | 67993c8edc9SAndrew Jeffery| Flash Offset | Blocks | 2 | 0 | 0 | q | 68093c8edc9SAndrew Jeffery 68193c8edc9SAndrew Jeffery</td> 68293c8edc9SAndrew Jeffery<td valign="top"> 68393c8edc9SAndrew Jeffery 68493c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 6856a51e5f4SPatrick Williams| ------------- | ------ | ---- | --- | --- | --- | 68693c8edc9SAndrew Jeffery| LPC FW Offset | Blocks | 2 | 0 | 0 | q | 68793c8edc9SAndrew Jeffery 68893c8edc9SAndrew Jeffery</td> 68993c8edc9SAndrew Jeffery</tr> 69093c8edc9SAndrew Jeffery</table> 69193c8edc9SAndrew Jeffery 69293c8edc9SAndrew Jeffery### v2 Parameters 69393c8edc9SAndrew Jeffery 69493c8edc9SAndrew Jeffery<table> 69593c8edc9SAndrew Jeffery<tr> 69693c8edc9SAndrew Jeffery<th>Command</th><th>Response</th> 69793c8edc9SAndrew Jeffery</tr> 69893c8edc9SAndrew Jeffery<tr> 69993c8edc9SAndrew Jeffery<td valign="top"> 70093c8edc9SAndrew Jeffery 70193c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 7026a51e5f4SPatrick Williams| ------------- | ------ | ---- | --- | --- | --- | 70393c8edc9SAndrew Jeffery| Flash Address | Blocks | 2 | 0 | 0 | q | 70493c8edc9SAndrew Jeffery| Length | Blocks | 2 | 2 | 2 | q | 70593c8edc9SAndrew Jeffery 70693c8edc9SAndrew Jeffery</td> 70793c8edc9SAndrew Jeffery<td valign="top"> 70893c8edc9SAndrew Jeffery 70993c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 7106a51e5f4SPatrick Williams| -------------- | ------ | ---- | --- | --- | --- | 71193c8edc9SAndrew Jeffery| LPC FW Address | Blocks | 2 | 0 | 0 | q | 71293c8edc9SAndrew Jeffery| Length | Blocks | 2 | 2 | 2 | q | 71393c8edc9SAndrew Jeffery| Flash Address | blocks | 2 | 4 | 4 | q | 71493c8edc9SAndrew Jeffery 71593c8edc9SAndrew Jeffery</td> 71693c8edc9SAndrew Jeffery</tr> 71793c8edc9SAndrew Jeffery</table> 71893c8edc9SAndrew Jeffery 71993c8edc9SAndrew Jeffery### v3 Parameters 72093c8edc9SAndrew Jeffery 72193c8edc9SAndrew Jeffery<table> 72293c8edc9SAndrew Jeffery<tr> 72393c8edc9SAndrew Jeffery<th>Command</th><th>Response</th> 72493c8edc9SAndrew Jeffery</tr> 72593c8edc9SAndrew Jeffery<tr> 72693c8edc9SAndrew Jeffery<td valign="top"> 72793c8edc9SAndrew Jeffery 72893c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 7296a51e5f4SPatrick Williams| ------------- | ------ | ---- | --- | --- | --- | 73093c8edc9SAndrew Jeffery| Flash Address | Blocks | 2 | 0 | 0 | q | 73193c8edc9SAndrew Jeffery| Length | Blocks | 2 | 2 | 2 | q | 73293c8edc9SAndrew Jeffery| Device ID | Index | 1 | 4 | 4 | y | 73393c8edc9SAndrew Jeffery 73493c8edc9SAndrew Jeffery</td> 73593c8edc9SAndrew Jeffery<td valign="top"> 73693c8edc9SAndrew Jeffery 73793c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 7386a51e5f4SPatrick Williams| -------------- | ------ | ---- | --- | --- | --- | 73993c8edc9SAndrew Jeffery| LPC FW Address | Blocks | 2 | 0 | 0 | q | 74093c8edc9SAndrew Jeffery| Length | Blocks | 2 | 2 | 2 | q | 74193c8edc9SAndrew Jeffery| Flash Address | blocks | 2 | 4 | 4 | q | 74293c8edc9SAndrew Jeffery 74393c8edc9SAndrew Jeffery</td> 74493c8edc9SAndrew Jeffery</tr> 74593c8edc9SAndrew Jeffery</table> 74693c8edc9SAndrew Jeffery 74793c8edc9SAndrew Jeffery### Description 74893c8edc9SAndrew Jeffery 74993c8edc9SAndrew JefferyThe flash offset which the host requests access to is always taken from the 75093c8edc9SAndrew Jefferystart of flash - that is it is an absolute offset into flash. 75193c8edc9SAndrew Jeffery 75293c8edc9SAndrew JefferyLPC bus address is always given from the start of the LPC address space - that 75393c8edc9SAndrew Jefferyis it is an absolute address. 75493c8edc9SAndrew Jeffery 7556a51e5f4SPatrick WilliamsThe requested access size is only a hint. The response indicates the actual size 7566a51e5f4SPatrick Williamsof the window. The BMC may want to use the requested size to pre-load the 75793c8edc9SAndrew Jefferyremainder of the request. The host must not access past the end of the active 75893c8edc9SAndrew Jefferywindow. 75993c8edc9SAndrew Jeffery 76093c8edc9SAndrew JefferyThe flash offset mapped by the window is an absolute flash offset and must be 76193c8edc9SAndrew Jefferyless than or equal to the flash offset requested by the host. It is the 7626a51e5f4SPatrick Williamsresponsibility of the host to use this information to access any offset which is 7636a51e5f4SPatrick Williamsrequired. 76493c8edc9SAndrew Jeffery 76593c8edc9SAndrew JefferyThe requested window size may be zero. In this case the BMC is free to create 76693c8edc9SAndrew Jefferyany sized window but it must contain at least the first block of data requested 76793c8edc9SAndrew Jefferyby the host. A large window is of course preferred and should correspond to the 76893c8edc9SAndrew Jefferydefault size returned in the `GET_INFO` command. 76993c8edc9SAndrew Jeffery 77093c8edc9SAndrew JefferyIf this command returns successfully then the created window is the active 77193c8edc9SAndrew Jefferywindow. If it fails then there is no active window. 77293c8edc9SAndrew Jeffery 77393c8edc9SAndrew Jeffery## `CLOSE` Command 77493c8edc9SAndrew Jeffery 77593c8edc9SAndrew Jeffery| v1 | v2 | v3 | M | I | D | 7766a51e5f4SPatrick Williams| --- | --- | --- | --- | --- | ----- | 77793c8edc9SAndrew Jeffery| ✓ | ✓ | ✓ | 5 | 5 | Close | 77893c8edc9SAndrew Jeffery 77993c8edc9SAndrew Jeffery### v1 Parameters 78093c8edc9SAndrew Jeffery 78193c8edc9SAndrew Jeffery<table> 78293c8edc9SAndrew Jeffery<tr> 78393c8edc9SAndrew Jeffery<th>Command</th><th>Response</th> 78493c8edc9SAndrew Jeffery</tr> 78593c8edc9SAndrew Jeffery<tr> 78693c8edc9SAndrew Jeffery<td valign="top"> 78793c8edc9SAndrew Jeffery 78893c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 7896a51e5f4SPatrick Williams| --------- | ---- | ---- | --- | --- | --- | 79093c8edc9SAndrew Jeffery 79193c8edc9SAndrew Jeffery</td> 79293c8edc9SAndrew Jeffery<td valign="top"> 79393c8edc9SAndrew Jeffery 79493c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 7956a51e5f4SPatrick Williams| --------- | ---- | ---- | --- | --- | --- | 79693c8edc9SAndrew Jeffery 79793c8edc9SAndrew Jeffery</td> 79893c8edc9SAndrew Jeffery</tr> 79993c8edc9SAndrew Jeffery</table> 80093c8edc9SAndrew Jeffery 80193c8edc9SAndrew Jeffery### v2 Parameters 80293c8edc9SAndrew Jeffery 80393c8edc9SAndrew Jeffery<table> 80493c8edc9SAndrew Jeffery<tr> 80593c8edc9SAndrew Jeffery<th>Command</th><th>Response</th> 80693c8edc9SAndrew Jeffery</tr> 80793c8edc9SAndrew Jeffery<tr> 80893c8edc9SAndrew Jeffery<td valign="top"> 80993c8edc9SAndrew Jeffery 81093c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 8116a51e5f4SPatrick Williams| --------- | ----- | ---- | --- | --- | --- | 81293c8edc9SAndrew Jeffery| Flags | Field | 1 | 0 | 0 | y | 81393c8edc9SAndrew Jeffery 81493c8edc9SAndrew Jeffery</td> 81593c8edc9SAndrew Jeffery<td valign="top"> 81693c8edc9SAndrew Jeffery 81793c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 8186a51e5f4SPatrick Williams| --------- | ---- | ---- | --- | --- | --- | 81993c8edc9SAndrew Jeffery 82093c8edc9SAndrew Jeffery</td> 82193c8edc9SAndrew Jeffery</tr> 82293c8edc9SAndrew Jeffery</table> 82393c8edc9SAndrew Jeffery 82493c8edc9SAndrew Jeffery### v3 Parameters 82593c8edc9SAndrew Jeffery 82693c8edc9SAndrew Jeffery<table> 82793c8edc9SAndrew Jeffery<tr> 82893c8edc9SAndrew Jeffery<th>Command</th><th>Response</th> 82993c8edc9SAndrew Jeffery</tr> 83093c8edc9SAndrew Jeffery<tr> 83193c8edc9SAndrew Jeffery<td valign="top"> 83293c8edc9SAndrew Jeffery 83393c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 8346a51e5f4SPatrick Williams| --------- | ----- | ---- | --- | --- | --- | 83593c8edc9SAndrew Jeffery| Flags | Field | 1 | 0 | 0 | y | 83693c8edc9SAndrew Jeffery 83793c8edc9SAndrew Jeffery</td> 83893c8edc9SAndrew Jeffery<td valign="top"> 83993c8edc9SAndrew Jeffery 84093c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 8416a51e5f4SPatrick Williams| --------- | ---- | ---- | --- | --- | --- | 84293c8edc9SAndrew Jeffery 84393c8edc9SAndrew Jeffery</td> 84493c8edc9SAndrew Jeffery</tr> 84593c8edc9SAndrew Jeffery</table> 84693c8edc9SAndrew Jeffery 84793c8edc9SAndrew Jeffery### Description 84893c8edc9SAndrew Jeffery 8496a51e5f4SPatrick WilliamsCloses the active window. Any further access to the LPC bus address specified to 8506a51e5f4SPatrick Williamsaddress the previously active window will have undefined effects. If the active 8516a51e5f4SPatrick Williamswindow is a write window then the BMC must perform an implicit flush. 85293c8edc9SAndrew Jeffery 85393c8edc9SAndrew JefferyThe Flags argument allows the host to provide some hints to the BMC. Defined 85493c8edc9SAndrew Jefferyvalues are: 85593c8edc9SAndrew Jeffery 85693c8edc9SAndrew Jeffery``` 85793c8edc9SAndrew Jeffery0x01 - Short Lifetime: 85893c8edc9SAndrew Jeffery The window is unlikely to be accessed anytime again in the near future. 85993c8edc9SAndrew Jeffery The effect of this will depend on BMC implementation. In the event that 86093c8edc9SAndrew Jeffery the BMC performs some caching the BMC daemon could mark data contained 86193c8edc9SAndrew Jeffery in a window closed with this flag as first to be evicted from the cache. 86293c8edc9SAndrew Jeffery``` 86393c8edc9SAndrew Jeffery 86493c8edc9SAndrew Jeffery## `CREATE_WRITE_WINDOW` Command 86593c8edc9SAndrew Jeffery 86693c8edc9SAndrew Jeffery| v1 | v2 | v3 | M | I | D | 8676a51e5f4SPatrick Williams| --- | --- | --- | --- | --- | ----------------- | 86893c8edc9SAndrew Jeffery| ✓ | ✓ | ✓ | 6 | 6 | CreateWriteWindow | 86993c8edc9SAndrew Jeffery 87093c8edc9SAndrew Jeffery### v1 Parameters 87193c8edc9SAndrew Jeffery 87293c8edc9SAndrew Jeffery<table> 87393c8edc9SAndrew Jeffery<tr> 87493c8edc9SAndrew Jeffery<th>Command</th><th>Response</th> 87593c8edc9SAndrew Jeffery</tr> 87693c8edc9SAndrew Jeffery<tr> 87793c8edc9SAndrew Jeffery<td valign="top"> 87893c8edc9SAndrew Jeffery 87993c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 8806a51e5f4SPatrick Williams| ------------ | ------ | ---- | --- | --- | --- | 88193c8edc9SAndrew Jeffery| Flash Offset | Blocks | 2 | 0 | 0 | q | 88293c8edc9SAndrew Jeffery 88393c8edc9SAndrew Jeffery</td> 88493c8edc9SAndrew Jeffery<td valign="top"> 88593c8edc9SAndrew Jeffery 88693c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 8876a51e5f4SPatrick Williams| ------------- | ------ | ---- | --- | --- | --- | 88893c8edc9SAndrew Jeffery| LPC FW Offset | Blocks | 2 | 0 | 0 | q | 88993c8edc9SAndrew Jeffery 89093c8edc9SAndrew Jeffery</td> 89193c8edc9SAndrew Jeffery</tr> 89293c8edc9SAndrew Jeffery</table> 89393c8edc9SAndrew Jeffery 89493c8edc9SAndrew Jeffery### v2 Parameters 89593c8edc9SAndrew Jeffery 89693c8edc9SAndrew Jeffery<table> 89793c8edc9SAndrew Jeffery<tr> 89893c8edc9SAndrew Jeffery<th>Command</th><th>Response</th> 89993c8edc9SAndrew Jeffery</tr> 90093c8edc9SAndrew Jeffery<tr> 90193c8edc9SAndrew Jeffery<td valign="top"> 90293c8edc9SAndrew Jeffery 90393c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 9046a51e5f4SPatrick Williams| ------------- | ------ | ---- | --- | --- | --- | 90593c8edc9SAndrew Jeffery| Flash Address | Blocks | 2 | 0 | 0 | q | 90693c8edc9SAndrew Jeffery| Length | Blocks | 2 | 2 | 2 | q | 90793c8edc9SAndrew Jeffery 90893c8edc9SAndrew Jeffery</td> 90993c8edc9SAndrew Jeffery<td valign="top"> 91093c8edc9SAndrew Jeffery 91193c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 9126a51e5f4SPatrick Williams| -------------- | ------ | ---- | --- | --- | --- | 91393c8edc9SAndrew Jeffery| LPC FW Address | Blocks | 2 | 0 | 0 | q | 91493c8edc9SAndrew Jeffery| Length | Blocks | 2 | 2 | 2 | q | 91593c8edc9SAndrew Jeffery| Flash Address | blocks | 2 | 4 | 4 | q | 91693c8edc9SAndrew Jeffery 91793c8edc9SAndrew Jeffery</td> 91893c8edc9SAndrew Jeffery</tr> 91993c8edc9SAndrew Jeffery</table> 92093c8edc9SAndrew Jeffery 92193c8edc9SAndrew Jeffery### v3 Parameters 92293c8edc9SAndrew Jeffery 92393c8edc9SAndrew Jeffery<table> 92493c8edc9SAndrew Jeffery<tr> 92593c8edc9SAndrew Jeffery<th>Command</th><th>Response</th> 92693c8edc9SAndrew Jeffery</tr> 92793c8edc9SAndrew Jeffery<tr> 92893c8edc9SAndrew Jeffery<td valign="top"> 92993c8edc9SAndrew Jeffery 93093c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 9316a51e5f4SPatrick Williams| ------------- | ------ | ---- | --- | --- | --- | 93293c8edc9SAndrew Jeffery| Flash Address | Blocks | 2 | 0 | 0 | q | 93393c8edc9SAndrew Jeffery| Length | Blocks | 2 | 2 | 2 | q | 93493c8edc9SAndrew Jeffery| Device ID | Index | 1 | 4 | 4 | y | 93593c8edc9SAndrew Jeffery 93693c8edc9SAndrew Jeffery</td> 93793c8edc9SAndrew Jeffery<td valign="top"> 93893c8edc9SAndrew Jeffery 93993c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 9406a51e5f4SPatrick Williams| -------------- | ------ | ---- | --- | --- | --- | 94193c8edc9SAndrew Jeffery| LPC FW Address | Blocks | 2 | 0 | 0 | q | 94293c8edc9SAndrew Jeffery| Length | Blocks | 2 | 2 | 2 | q | 94393c8edc9SAndrew Jeffery| Flash Address | blocks | 2 | 4 | 4 | q | 94493c8edc9SAndrew Jeffery 94593c8edc9SAndrew Jeffery</td> 94693c8edc9SAndrew Jeffery</tr> 94793c8edc9SAndrew Jeffery</table> 94893c8edc9SAndrew Jeffery 94993c8edc9SAndrew Jeffery### Description 95093c8edc9SAndrew Jeffery 95193c8edc9SAndrew JefferyThe flash offset which the host requests access to is always taken from the 95293c8edc9SAndrew Jefferystart of flash - that is it is an absolute offset into flash. 95393c8edc9SAndrew Jeffery 95493c8edc9SAndrew JefferyLPC bus address is always given from the start of the LPC address space - that 95593c8edc9SAndrew Jefferyis it is an absolute address. 95693c8edc9SAndrew Jeffery 9576a51e5f4SPatrick WilliamsThe requested access size is only a hint. The response indicates the actual size 9586a51e5f4SPatrick Williamsof the window. The BMC may want to use the requested size to pre-load the 95993c8edc9SAndrew Jefferyremainder of the request. The host must not access past the end of the active 96093c8edc9SAndrew Jefferywindow. 96193c8edc9SAndrew Jeffery 96293c8edc9SAndrew JefferyThe flash offset mapped by the window is an absolute flash offset and must be 96393c8edc9SAndrew Jefferyless than or equal to the flash offset requested by the host. It is the 9646a51e5f4SPatrick Williamsresponsibility of the host to use this information to access any offset which is 9656a51e5f4SPatrick Williamsrequired. 96693c8edc9SAndrew Jeffery 96793c8edc9SAndrew JefferyThe requested window size may be zero. In this case the BMC is free to create 96893c8edc9SAndrew Jefferyany sized window but it must contain at least the first block of data requested 96993c8edc9SAndrew Jefferyby the host. A large window is of course preferred and should correspond to the 97093c8edc9SAndrew Jefferydefault size returned in the `GET_INFO` command. 97193c8edc9SAndrew Jeffery 97293c8edc9SAndrew JefferyIf this command returns successfully then the created window is the active 97393c8edc9SAndrew Jefferywindow. If it fails then there is no active window. 97493c8edc9SAndrew Jeffery 97593c8edc9SAndrew Jeffery## `MARK_DIRTY` Command 97693c8edc9SAndrew Jeffery 97793c8edc9SAndrew Jeffery| v1 | v2 | v3 | M | I | D | 9786a51e5f4SPatrick Williams| --- | --- | --- | --- | --- | --------- | 97993c8edc9SAndrew Jeffery| ✓ | ✓ | ✓ | 7 | 7 | MarkDirty | 98093c8edc9SAndrew Jeffery 98193c8edc9SAndrew Jeffery### v1 Parameters 98293c8edc9SAndrew Jeffery 98393c8edc9SAndrew Jeffery<table> 98493c8edc9SAndrew Jeffery<tr> 98593c8edc9SAndrew Jeffery<th>Command</th><th>Response</th> 98693c8edc9SAndrew Jeffery</tr> 98793c8edc9SAndrew Jeffery<tr> 98893c8edc9SAndrew Jeffery<td valign="top"> 98993c8edc9SAndrew Jeffery 99093c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 9916a51e5f4SPatrick Williams| ------------ | ------ | ---- | --- | --- | --- | 99293c8edc9SAndrew Jeffery| Flash Offset | Blocks | 2 | 0 | 0 | q | 99393c8edc9SAndrew Jeffery| Length | Bytes | 4 | 2 | 2 | u | 99493c8edc9SAndrew Jeffery 99593c8edc9SAndrew Jeffery</td> 99693c8edc9SAndrew Jeffery<td valign="top"> 99793c8edc9SAndrew Jeffery 99893c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 9996a51e5f4SPatrick Williams| --------- | ---- | ---- | --- | --- | --- | 100093c8edc9SAndrew Jeffery 100193c8edc9SAndrew Jeffery</td> 100293c8edc9SAndrew Jeffery</tr> 100393c8edc9SAndrew Jeffery</table> 100493c8edc9SAndrew Jeffery 100593c8edc9SAndrew Jeffery### v2 Parameters 100693c8edc9SAndrew Jeffery 100793c8edc9SAndrew Jeffery<table> 100893c8edc9SAndrew Jeffery<tr> 100993c8edc9SAndrew Jeffery<th>Command</th><th>Response</th> 101093c8edc9SAndrew Jeffery</tr> 101193c8edc9SAndrew Jeffery<tr> 101293c8edc9SAndrew Jeffery<td valign="top"> 101393c8edc9SAndrew Jeffery 101493c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 10156a51e5f4SPatrick Williams| ------------- | ------ | ---- | --- | --- | --- | 101693c8edc9SAndrew Jeffery| Window Offset | Blocks | 2 | 0 | 0 | q | 101793c8edc9SAndrew Jeffery| Length | Blocks | 2 | 2 | 2 | q | 101893c8edc9SAndrew Jeffery 101993c8edc9SAndrew Jeffery</td> 102093c8edc9SAndrew Jeffery<td valign="top"> 102193c8edc9SAndrew Jeffery 102293c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 10236a51e5f4SPatrick Williams| --------- | ---- | ---- | --- | --- | --- | 102493c8edc9SAndrew Jeffery 102593c8edc9SAndrew Jeffery</td> 102693c8edc9SAndrew Jeffery</tr> 102793c8edc9SAndrew Jeffery</table> 102893c8edc9SAndrew Jeffery 102993c8edc9SAndrew Jeffery### v3 Parameters 103093c8edc9SAndrew Jeffery 103193c8edc9SAndrew Jeffery<table> 103293c8edc9SAndrew Jeffery<tr> 103393c8edc9SAndrew Jeffery<th>Command</th><th>Response</th> 103493c8edc9SAndrew Jeffery</tr> 103593c8edc9SAndrew Jeffery<tr> 103693c8edc9SAndrew Jeffery<td valign="top"> 103793c8edc9SAndrew Jeffery 103893c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 10396a51e5f4SPatrick Williams| ------------- | ------ | ---- | --- | --- | --- | 104093c8edc9SAndrew Jeffery| Window Offset | Blocks | 2 | 0 | 0 | q | 104193c8edc9SAndrew Jeffery| Length | Blocks | 2 | 2 | 2 | q | 104293c8edc9SAndrew Jeffery| Flags | Field | 1 | 4 | 4 | y | 104393c8edc9SAndrew Jeffery 104493c8edc9SAndrew Jeffery</td> 104593c8edc9SAndrew Jeffery<td valign="top"> 104693c8edc9SAndrew Jeffery 104793c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 10486a51e5f4SPatrick Williams| --------- | ---- | ---- | --- | --- | --- | 104993c8edc9SAndrew Jeffery 105093c8edc9SAndrew Jeffery</td> 105193c8edc9SAndrew Jeffery</tr> 105293c8edc9SAndrew Jeffery</table> 105393c8edc9SAndrew Jeffery 105493c8edc9SAndrew Jeffery### Description 105593c8edc9SAndrew Jeffery 10566a51e5f4SPatrick WilliamsThe BMC has no method for intercepting writes that occur over the LPC bus. The 10576a51e5f4SPatrick Williamshost must explicitly notify the daemon of where and when a write has occurred so 10586a51e5f4SPatrick Williamsit can be flushed to backing storage. 105993c8edc9SAndrew Jeffery 10606a51e5f4SPatrick WilliamsOffsets are given as an absolute (either into flash (V1) or the active window 10616a51e5f4SPatrick Williams(V2)) and a zero offset refers to the first block. If the offset + number 10626a51e5f4SPatrick Williamsexceeds the size of the active window then the command must not succeed. 106393c8edc9SAndrew Jeffery 106493c8edc9SAndrew JefferyThe host can give a hint to the daemon that is doesn't have to erase a flash 10656a51e5f4SPatrick Williamsarea before writing to it by setting bit zero of the Flags parameter. This means 10666a51e5f4SPatrick Williamsthat the daemon will blindly perform a write to that area and will not try to 10676a51e5f4SPatrick Williamserase it before hand. This can be used if the host knows that a large area has 10686a51e5f4SPatrick Williamsalready been erased for example but then wants to perform many small writes. 106993c8edc9SAndrew Jeffery 107093c8edc9SAndrew Jeffery## `FLUSH` Command 107193c8edc9SAndrew Jeffery 107293c8edc9SAndrew Jeffery| v1 | v2 | v3 | M | I | D | 10736a51e5f4SPatrick Williams| --- | --- | --- | --- | --- | ----- | 107493c8edc9SAndrew Jeffery| ✓ | ✓ | ✓ | 8 | 8 | Flush | 107593c8edc9SAndrew Jeffery 107693c8edc9SAndrew Jeffery### v1 Parameters 107793c8edc9SAndrew Jeffery 107893c8edc9SAndrew Jeffery<table> 107993c8edc9SAndrew Jeffery<tr> 108093c8edc9SAndrew Jeffery<th>Command</th><th>Response</th> 108193c8edc9SAndrew Jeffery</tr> 108293c8edc9SAndrew Jeffery<tr> 108393c8edc9SAndrew Jeffery<td valign="top"> 108493c8edc9SAndrew Jeffery 108593c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 10866a51e5f4SPatrick Williams| ------------ | ------ | ---- | --- | --- | --- | 108793c8edc9SAndrew Jeffery| Flash Offset | Blocks | 2 | 0 | 0 | q | 108893c8edc9SAndrew Jeffery| Length | Bytes | 4 | 2 | 2 | u | 108993c8edc9SAndrew Jeffery 109093c8edc9SAndrew Jeffery</td> 109193c8edc9SAndrew Jeffery<td valign="top"> 109293c8edc9SAndrew Jeffery 109393c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 10946a51e5f4SPatrick Williams| --------- | ---- | ---- | --- | --- | --- | 109593c8edc9SAndrew Jeffery 109693c8edc9SAndrew Jeffery</td> 109793c8edc9SAndrew Jeffery</tr> 109893c8edc9SAndrew Jeffery</table> 109993c8edc9SAndrew Jeffery 110093c8edc9SAndrew Jeffery### v2 Parameters 110193c8edc9SAndrew Jeffery 110293c8edc9SAndrew Jeffery<table> 110393c8edc9SAndrew Jeffery<tr> 110493c8edc9SAndrew Jeffery<th>Command</th><th>Response</th> 110593c8edc9SAndrew Jeffery</tr> 110693c8edc9SAndrew Jeffery<tr> 110793c8edc9SAndrew Jeffery<td valign="top"> 110893c8edc9SAndrew Jeffery 110993c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 11106a51e5f4SPatrick Williams| --------- | ---- | ---- | --- | --- | --- | 111193c8edc9SAndrew Jeffery 111293c8edc9SAndrew Jeffery</td> 111393c8edc9SAndrew Jeffery<td valign="top"> 111493c8edc9SAndrew Jeffery 111593c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 11166a51e5f4SPatrick Williams| --------- | ---- | ---- | --- | --- | --- | 111793c8edc9SAndrew Jeffery 111893c8edc9SAndrew Jeffery</td> 111993c8edc9SAndrew Jeffery</tr> 112093c8edc9SAndrew Jeffery</table> 112193c8edc9SAndrew Jeffery 112293c8edc9SAndrew Jeffery### v3 Parameters 112393c8edc9SAndrew Jeffery 112493c8edc9SAndrew Jeffery<table> 112593c8edc9SAndrew Jeffery<tr> 112693c8edc9SAndrew Jeffery<th>Command</th><th>Response</th> 112793c8edc9SAndrew Jeffery</tr> 112893c8edc9SAndrew Jeffery<tr> 112993c8edc9SAndrew Jeffery<td valign="top"> 113093c8edc9SAndrew Jeffery 113193c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 11326a51e5f4SPatrick Williams| --------- | ---- | ---- | --- | --- | --- | 113393c8edc9SAndrew Jeffery 113493c8edc9SAndrew Jeffery</td> 113593c8edc9SAndrew Jeffery<td valign="top"> 113693c8edc9SAndrew Jeffery 113793c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 11386a51e5f4SPatrick Williams| --------- | ---- | ---- | --- | --- | --- | 113993c8edc9SAndrew Jeffery 114093c8edc9SAndrew Jeffery</td> 114193c8edc9SAndrew Jeffery</tr> 114293c8edc9SAndrew Jeffery</table> 114393c8edc9SAndrew Jeffery 114493c8edc9SAndrew Jeffery### Description 114593c8edc9SAndrew Jeffery 114693c8edc9SAndrew JefferyFlushes any dirty/erased blocks in the active window to the backing storage. 114793c8edc9SAndrew Jeffery 114893c8edc9SAndrew JefferyIn V1 this can also be used to mark parts of the flash dirty and flush in a 11496a51e5f4SPatrick Williamssingle command. In V2 the explicit mark dirty command must be used before a call 11506a51e5f4SPatrick Williamsto flush since there are no longer any arguments. If the offset + length exceeds 11516a51e5f4SPatrick Williamsthe size of the active window then the command must not succeed. 115293c8edc9SAndrew Jeffery 115393c8edc9SAndrew Jeffery## `ACK` Command 115493c8edc9SAndrew Jeffery 115593c8edc9SAndrew Jeffery| v1 | v2 | v3 | M | I | D | 11566a51e5f4SPatrick Williams| --- | --- | --- | --- | --- | --- | 115793c8edc9SAndrew Jeffery| ✓ | ✓ | ✓ | 9 | 9 | Ack | 115893c8edc9SAndrew Jeffery 115993c8edc9SAndrew Jeffery### v1 Parameters 116093c8edc9SAndrew Jeffery 116193c8edc9SAndrew Jeffery<table> 116293c8edc9SAndrew Jeffery<tr> 116393c8edc9SAndrew Jeffery<th>Command</th><th>Response</th> 116493c8edc9SAndrew Jeffery</tr> 116593c8edc9SAndrew Jeffery<tr> 116693c8edc9SAndrew Jeffery<td valign="top"> 116793c8edc9SAndrew Jeffery 116893c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 11696a51e5f4SPatrick Williams| --------- | ----- | ---- | --- | --- | --- | 117093c8edc9SAndrew Jeffery| Ack Mask | Field | 1 | 0 | 0 | y | 117193c8edc9SAndrew Jeffery 117293c8edc9SAndrew Jeffery</td> 117393c8edc9SAndrew Jeffery<td valign="top"> 117493c8edc9SAndrew Jeffery 117593c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 11766a51e5f4SPatrick Williams| --------- | ---- | ---- | --- | --- | --- | 117793c8edc9SAndrew Jeffery 117893c8edc9SAndrew Jeffery</td> 117993c8edc9SAndrew Jeffery</tr> 118093c8edc9SAndrew Jeffery</table> 118193c8edc9SAndrew Jeffery 118293c8edc9SAndrew Jeffery### v2 Parameters 118393c8edc9SAndrew Jeffery 118493c8edc9SAndrew Jeffery<table> 118593c8edc9SAndrew Jeffery<tr> 118693c8edc9SAndrew Jeffery<th>Command</th><th>Response</th> 118793c8edc9SAndrew Jeffery</tr> 118893c8edc9SAndrew Jeffery<tr> 118993c8edc9SAndrew Jeffery<td valign="top"> 119093c8edc9SAndrew Jeffery 119193c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 11926a51e5f4SPatrick Williams| --------- | ----- | ---- | --- | --- | --- | 119393c8edc9SAndrew Jeffery| Ack Mask | Field | 1 | 0 | 0 | y | 119493c8edc9SAndrew Jeffery 119593c8edc9SAndrew Jeffery</td> 119693c8edc9SAndrew Jeffery<td valign="top"> 119793c8edc9SAndrew Jeffery 119893c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 11996a51e5f4SPatrick Williams| --------- | ---- | ---- | --- | --- | --- | 120093c8edc9SAndrew Jeffery 120193c8edc9SAndrew Jeffery</td> 120293c8edc9SAndrew Jeffery</tr> 120393c8edc9SAndrew Jeffery</table> 120493c8edc9SAndrew Jeffery 120593c8edc9SAndrew Jeffery### v3 Parameters 120693c8edc9SAndrew Jeffery 120793c8edc9SAndrew Jeffery<table> 120893c8edc9SAndrew Jeffery<tr> 120993c8edc9SAndrew Jeffery<th>Command</th><th>Response</th> 121093c8edc9SAndrew Jeffery</tr> 121193c8edc9SAndrew Jeffery<tr> 121293c8edc9SAndrew Jeffery<td valign="top"> 121393c8edc9SAndrew Jeffery 121493c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 12156a51e5f4SPatrick Williams| --------- | ----- | ---- | --- | --- | --- | 121693c8edc9SAndrew Jeffery| Ack Mask | Field | 1 | 0 | 0 | y | 121793c8edc9SAndrew Jeffery 121893c8edc9SAndrew Jeffery</td> 121993c8edc9SAndrew Jeffery<td valign="top"> 122093c8edc9SAndrew Jeffery 122193c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 12226a51e5f4SPatrick Williams| --------- | ---- | ---- | --- | --- | --- | 122393c8edc9SAndrew Jeffery 122493c8edc9SAndrew Jeffery</td> 122593c8edc9SAndrew Jeffery</tr> 122693c8edc9SAndrew Jeffery</table> 122793c8edc9SAndrew Jeffery 122893c8edc9SAndrew Jeffery### Description 122993c8edc9SAndrew Jeffery 123093c8edc9SAndrew JefferyThe host should use this command to acknowledge BMC events propagated to the 123193c8edc9SAndrew Jefferyhost. 123293c8edc9SAndrew Jeffery 123393c8edc9SAndrew Jeffery## `ERASE` Command 123493c8edc9SAndrew Jeffery 123593c8edc9SAndrew Jeffery| v1 | v2 | v3 | M | I | D | 12366a51e5f4SPatrick Williams| --- | --- | --- | --- | --- | ----- | 123793c8edc9SAndrew Jeffery| | ✓ | ✓ | 10 | 10 | Erase | 123893c8edc9SAndrew Jeffery 123993c8edc9SAndrew Jeffery### v2 Parameters 124093c8edc9SAndrew Jeffery 124193c8edc9SAndrew Jeffery<table> 124293c8edc9SAndrew Jeffery<tr> 124393c8edc9SAndrew Jeffery<th>Command</th><th>Response</th> 124493c8edc9SAndrew Jeffery</tr> 124593c8edc9SAndrew Jeffery<tr> 124693c8edc9SAndrew Jeffery<td valign="top"> 124793c8edc9SAndrew Jeffery 124893c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 12496a51e5f4SPatrick Williams| ------------- | ------ | ---- | --- | --- | --- | 125093c8edc9SAndrew Jeffery| Window Offset | Blocks | 2 | 0 | 0 | q | 125193c8edc9SAndrew Jeffery| Length | Blocks | 2 | 2 | 2 | q | 125293c8edc9SAndrew Jeffery 125393c8edc9SAndrew Jeffery</td> 125493c8edc9SAndrew Jeffery<td valign="top"> 125593c8edc9SAndrew Jeffery 125693c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 12576a51e5f4SPatrick Williams| --------- | ---- | ---- | --- | --- | --- | 125893c8edc9SAndrew Jeffery 125993c8edc9SAndrew Jeffery</td> 126093c8edc9SAndrew Jeffery</tr> 126193c8edc9SAndrew Jeffery</table> 126293c8edc9SAndrew Jeffery 126393c8edc9SAndrew Jeffery### v3 Parameters 126493c8edc9SAndrew Jeffery 126593c8edc9SAndrew Jeffery<table> 126693c8edc9SAndrew Jeffery<tr> 126793c8edc9SAndrew Jeffery<th>Command</th><th>Response</th> 126893c8edc9SAndrew Jeffery</tr> 126993c8edc9SAndrew Jeffery<tr> 127093c8edc9SAndrew Jeffery<td valign="top"> 127193c8edc9SAndrew Jeffery 127293c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 12736a51e5f4SPatrick Williams| ------------- | ------ | ---- | --- | --- | --- | 127493c8edc9SAndrew Jeffery| Window Offset | Blocks | 2 | 0 | 0 | q | 127593c8edc9SAndrew Jeffery| Length | Blocks | 2 | 2 | 2 | q | 127693c8edc9SAndrew Jeffery 127793c8edc9SAndrew Jeffery</td> 127893c8edc9SAndrew Jeffery<td valign="top"> 127993c8edc9SAndrew Jeffery 128093c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 12816a51e5f4SPatrick Williams| --------- | ---- | ---- | --- | --- | --- | 128293c8edc9SAndrew Jeffery 128393c8edc9SAndrew Jeffery</td> 128493c8edc9SAndrew Jeffery</tr> 128593c8edc9SAndrew Jeffery</table> 128693c8edc9SAndrew Jeffery 128793c8edc9SAndrew Jeffery### Description 128893c8edc9SAndrew Jeffery 128993c8edc9SAndrew JefferyThis command allows the host to erase a large area without the need to 129093c8edc9SAndrew Jefferyindividually write 0xFF repetitively. 129193c8edc9SAndrew Jeffery 12926a51e5f4SPatrick WilliamsOffset is the offset within the active window to start erasing from (zero refers 12936a51e5f4SPatrick Williamsto the first block of the active window) and number is the number of blocks of 12946a51e5f4SPatrick Williamsthe active window to erase starting at offset. If the offset + number exceeds 12956a51e5f4SPatrick Williamsthe size of the active window then the command must not succeed. 129693c8edc9SAndrew Jeffery 129793c8edc9SAndrew Jeffery## `GET_FLASH_NAME` Command 129893c8edc9SAndrew Jeffery 129993c8edc9SAndrew Jeffery| v1 | v2 | v3 | M | I | D | 13006a51e5f4SPatrick Williams| --- | --- | --- | --- | --- | ------------ | 130193c8edc9SAndrew Jeffery| | | ✓ | 11 | 11 | GetFlashName | 130293c8edc9SAndrew Jeffery 130393c8edc9SAndrew Jeffery### v3 Parameters 130493c8edc9SAndrew Jeffery 130593c8edc9SAndrew Jeffery<table> 130693c8edc9SAndrew Jeffery<tr> 130793c8edc9SAndrew Jeffery<th>Command</th><th>Response</th> 130893c8edc9SAndrew Jeffery</tr> 130993c8edc9SAndrew Jeffery<tr> 131093c8edc9SAndrew Jeffery<td valign="top"> 131193c8edc9SAndrew Jeffery 131293c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 13136a51e5f4SPatrick Williams| --------- | ----- | ---- | --- | --- | --- | 131493c8edc9SAndrew Jeffery| Device ID | Index | 1 | 0 | 0 | y | 131593c8edc9SAndrew Jeffery 131693c8edc9SAndrew Jeffery</td> 131793c8edc9SAndrew Jeffery<td valign="top"> 131893c8edc9SAndrew Jeffery 131993c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 13206a51e5f4SPatrick Williams| ----------- | ------ | ---- | --- | --- | --- | 132193c8edc9SAndrew Jeffery| Name length | Bytes | 1 | 0 | 0 | - | 132293c8edc9SAndrew Jeffery| Name | String | 10 | 1 | 1 | s | 132393c8edc9SAndrew Jeffery 132493c8edc9SAndrew Jeffery</td> 132593c8edc9SAndrew Jeffery</tr> 132693c8edc9SAndrew Jeffery</table> 132793c8edc9SAndrew Jeffery 132893c8edc9SAndrew Jeffery### Description 132993c8edc9SAndrew Jeffery 133093c8edc9SAndrew JefferyDescribes a flash with some kind of identifier useful to the host system. 133193c8edc9SAndrew Jeffery 133293c8edc9SAndrew JefferyThe length in the response is the number of response arguments as part of the 133393c8edc9SAndrew Jefferyflash name field which the host should expect to have been populated. 133493c8edc9SAndrew Jeffery 133593c8edc9SAndrew JefferyNote that DBus encodes the string length in its string type, so the explicit 133693c8edc9SAndrew Jefferylength is omitted from the DBus message. 133793c8edc9SAndrew Jeffery 133893c8edc9SAndrew Jeffery## `LOCK` Command 133993c8edc9SAndrew Jeffery 134093c8edc9SAndrew Jeffery| v1 | v2 | v3 | M | I | D | 13416a51e5f4SPatrick Williams| --- | --- | --- | --- | --- | ---- | 134293c8edc9SAndrew Jeffery| | | ✓ | 12 | 12 | Lock | 134393c8edc9SAndrew Jeffery 134493c8edc9SAndrew Jeffery### v3 Parameters 134593c8edc9SAndrew Jeffery 134693c8edc9SAndrew Jeffery<table> 134793c8edc9SAndrew Jeffery<tr> 134893c8edc9SAndrew Jeffery<th>Command</th><th>Response</th> 134993c8edc9SAndrew Jeffery</tr> 135093c8edc9SAndrew Jeffery<tr> 135193c8edc9SAndrew Jeffery<td valign="top"> 135293c8edc9SAndrew Jeffery 135393c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 13546a51e5f4SPatrick Williams| ------------ | ------ | ---- | --- | --- | --- | 135593c8edc9SAndrew Jeffery| Flash Offset | Blocks | 2 | 0 | 0 | q | 135693c8edc9SAndrew Jeffery| Length | Blocks | 2 | 2 | 2 | q | 135793c8edc9SAndrew Jeffery| Device ID | Index | 1 | 4 | 4 | y | 135893c8edc9SAndrew Jeffery 135993c8edc9SAndrew Jeffery</td> 136093c8edc9SAndrew Jeffery<td valign="top"> 136193c8edc9SAndrew Jeffery 136293c8edc9SAndrew Jeffery| Parameter | Unit | Size | M | I | D | 13636a51e5f4SPatrick Williams| --------- | ---- | ---- | --- | --- | --- | 136493c8edc9SAndrew Jeffery 136593c8edc9SAndrew Jeffery</td> 136693c8edc9SAndrew Jeffery</tr> 136793c8edc9SAndrew Jeffery</table> 136893c8edc9SAndrew Jeffery 136993c8edc9SAndrew Jeffery### Description 137093c8edc9SAndrew Jeffery 137193c8edc9SAndrew JefferyLock an area of flash so that the host can't mark it dirty or erased. If the 137293c8edc9SAndrew Jefferyrequested area is within the current window and that area is currently marked 137393c8edc9SAndrew Jefferydirty or erased then this command must fail. 137493c8edc9SAndrew Jeffery 137593c8edc9SAndrew Jeffery# Event Definitions 137693c8edc9SAndrew Jeffery 137793c8edc9SAndrew JefferyThe M, I, and D columns represent the Mailbox, IPMI and DBus transports 137893c8edc9SAndrew Jefferyrespectively. The values in the M, I or D columns represent the events' bit 137993c8edc9SAndrew Jefferyindex in the status byte, or in the case of the DBus transport the name of the 1380fd4fa34dSAndrew Jefferyrelevant property. 138193c8edc9SAndrew Jeffery 1382fd4fa34dSAndrew JefferyFor the DBus interface, properties are used for all event types regardless of 13836a51e5f4SPatrick Williamswhether they should be acknowledged or not as part of the protocol. This ensures 13846a51e5f4SPatrick Williamsthat state changes can be published atomically. 138593c8edc9SAndrew Jeffery 138693c8edc9SAndrew Jeffery## `PROTOCOL_RESET` Event 138793c8edc9SAndrew Jeffery 138893c8edc9SAndrew Jeffery| v1 | v2 | v3 | M | I | D | 13896a51e5f4SPatrick Williams| --- | --- | --- | --- | --- | ------------- | 139093c8edc9SAndrew Jeffery| ✓ | ✓ | ✓ | 0 | 0 | ProtocolReset | 139193c8edc9SAndrew Jeffery 139293c8edc9SAndrew Jeffery### Description 139393c8edc9SAndrew Jeffery 139493c8edc9SAndrew JefferyUsed to inform the host that a protocol reset has occurred, likely due to 139593c8edc9SAndrew Jefferyrestarting the daemon. The host must perform protocol version negotiation again 139693c8edc9SAndrew Jefferyand must assume it has no active window. The host must also assume that any 139793c8edc9SAndrew Jefferyin-flight commands have failed. 139893c8edc9SAndrew Jeffery 139993c8edc9SAndrew Jeffery## `WINDOW_RESET` Event 140093c8edc9SAndrew Jeffery 140193c8edc9SAndrew Jeffery| v1 | v2 | v3 | M | I | D | 14026a51e5f4SPatrick Williams| --- | --- | --- | --- | --- | ----------- | 140393c8edc9SAndrew Jeffery| | ✓ | ✓ | 1 | 1 | WindowReset | 140493c8edc9SAndrew Jeffery 140593c8edc9SAndrew Jeffery### Description 140693c8edc9SAndrew Jeffery 140793c8edc9SAndrew JefferyThe host must assume that its active window has been closed and that it no 140893c8edc9SAndrew Jefferylonger has an active window. The host is not required to perform protocol 14096a51e5f4SPatrick Williamsversion negotiation again. The host must assume that any in-flight commands have 14106a51e5f4SPatrick Williamsfailed. 141193c8edc9SAndrew Jeffery 141293c8edc9SAndrew Jeffery## `FLASH_CONTROL_LOST` Event 141393c8edc9SAndrew Jeffery 141493c8edc9SAndrew Jeffery| v1 | v2 | v3 | M | I | D | 14156a51e5f4SPatrick Williams| --- | --- | --- | --- | --- | ---------------- | 141693c8edc9SAndrew Jeffery| | ✓ | ✓ | 6 | 6 | FlashControlLost | 141793c8edc9SAndrew Jeffery 141893c8edc9SAndrew Jeffery### Description 141993c8edc9SAndrew Jeffery 142093c8edc9SAndrew JefferyThe BMC daemon has been suspended and thus no longer controls access to the 142193c8edc9SAndrew Jefferyflash (most likely because some other process on the BMC required direct access 142293c8edc9SAndrew Jefferyto the flash and has suspended the BMC daemon to preclude concurrent access). 142393c8edc9SAndrew Jeffery 142493c8edc9SAndrew JefferyThe BMC daemon must clear this bit itself when it regains control of the flash 142593c8edc9SAndrew Jeffery(the host isn't able to clear it through an acknowledge command). 142693c8edc9SAndrew Jeffery 142793c8edc9SAndrew JefferyThe host must not assume that the contents of the active window correctly 142893c8edc9SAndrew Jefferyreflect the contents of flash while this bit is set. 142993c8edc9SAndrew Jeffery 143093c8edc9SAndrew Jeffery## `DAEMON_READY` Event 143193c8edc9SAndrew Jeffery 143293c8edc9SAndrew Jeffery| v1 | v2 | v3 | M | I | D | 14336a51e5f4SPatrick Williams| --- | --- | --- | --- | --- | ----------- | 143493c8edc9SAndrew Jeffery| | ✓ | ✓ | 7 | 7 | DaemonReady | 143593c8edc9SAndrew Jeffery 143693c8edc9SAndrew Jeffery### Description 143793c8edc9SAndrew Jeffery 14386a51e5f4SPatrick WilliamsUsed to inform the host that the BMC daemon is ready to accept command requests. 14396a51e5f4SPatrick WilliamsThe host isn't able to clear this bit through an acknowledge command, the BMC 14406a51e5f4SPatrick Williamsdaemon must clear it before it terminates (assuming it didn't terminate 144193c8edc9SAndrew Jefferyunexpectedly). 144293c8edc9SAndrew Jeffery 144393c8edc9SAndrew JefferyThe host should not expect a response while this bit is not set. 144493c8edc9SAndrew Jeffery 14456a51e5f4SPatrick WilliamsNote that this bit being set is not a guarantee that the BMC daemon will respond 14466a51e5f4SPatrick Williamsas it or the BMC may have crashed without clearing it. 1447