Lines Matching +full:multi +full:- +full:bmc

1 # Multi-host Postcode Support
7 Created: 2020-07-02
11 The current implementation in the phosphor-host-postd supports only single host
14 As the open BMC architecture is evolving, the single host support becomes
15 contingent and needs multiple-host post code access to be implemented.
19 The below component diagram shows the design for single-host postcode and
20 history at high-level overview. The single-host design is updated slightly from
22 D-Bus objects).
24 Diagram Legend: |Label|Signifies| |-----|---------| |`I:` |D-Bus interface|
25 |`S:` |D-Bus service name (well-known bus name)| |`R:` |Repository name| |`U:`
29 +-----------+
30 +------+ | 7 segment |
32 +--+---+ +-----^-----+
34 +-------------------------+--------------------+--------+
35 | BMC | | |
36 | +--v----+ +-----+-----+ |
37 | | H:LPC +---------> H:(S)GPIO | |
38 | +--+----+ +-----------+ |
40 | +-----------------------v--------------+ |
46 | | I:xyz.openbmc_project.State.Boot.Raw >----+ |
47 | +--------------------------------------+ | |
49 | +-------------------------------------------v---+ |
52 | | +-------------------------------------------+ | |
55 | | | I:xyz.openbmc_project.State.Boot.PostCode >----+ |
56 | | +-------------------------------------------+ | | |
57 | +-----------------------------------------------+ | |
59 | +--------------------------------+ | |
60 | | Other consumers of POST codes: <------------+ |
62 | +--------------------------------+ |
63 +-------------------------------------------------------+
68 this new datapath would not have built-in support in ASPEED hardware, additional
69 logic is also needed drive the 7-segment display.
73 - Read postcode from all servers.
74 - Display the host postcode to the 7 segment display based on host position
76 - Provide a command interface for user to see any server(multi-host) current
78 - Provide a command interface for user to see any server(multi-host) postcode
80 - Support for hot-plug-able host.
85 port-80 post code from multiple-host. The existing single host LPC snooping
87 also supports host discovery including the hot-plug-able host connected in the
92 - phosphor-host-postd.
93 - phosphor-post-code-manager.
94 - platform specific OEM handler (fb-ipmi-oem).
95 - bmcweb (redfish logging service).
102 +---------------------------------------------------+
103 | BMC |
105 | +-----------------------+ +----------------+ | +----+-------------+
106 | | A:ipmid | | IPMB Bridge <--+--IPMB-+-|BIC | |
108 | | +-------------------+ | +--------+-------+ | | +------------------+
110 | | | (R:fb-ipmi-oem) <-+-------------+ | | .
111 | | --------------------+ | +----------------+ | | .
112 | +-+---------------------+ | Host selection | | | +------------------+
113 | | | monitoring <---+--+ +-|BIC | |
114 | | +---------+------+ | | | | HostN |
115 | | | | | +------------------+
116 | | +---------------------------------v------+ | |
117 | | | R:phosphor-host-postd (1 process) | | | +---------------+
118 | | | Per-host POST code object: | | +-GPIO-| Button/switch |
120 | +-> I:xyz.openbmc_project.State.Boot.Raw >-+ | +---------------+
121 | +---------------------------------+------+ | |
122 | | | | +-------------------+
123 | +--------+-+----GPIO-> 7-segment display |
124 | | | +-------------------+
125 | | +------+
127 | +----------------------------------------------v---+ |
128 | | R:phosphor-post-code-manager (N processes) | |
129 | | Per-host POST code history service: | |
130 | | +----------------------------------------------+ | |
133 | | | I:xyz.openbmc_project.State.Boot.PostCode >-+-+ |
134 | | +----------------------------------------------+ | | |
136 | +--------------------------------------------------+ | |
138 | +--------------------------------+ | |
139 | | Other consumers of POST codes: <--------------+ |
141 | +--------------------------------+ |
143 +----------------------------------------------------------+
148 - BMC power-on the host.
149 - Host starts sending the postcode IPMI message continuously to the BMC.
150 - The ipmbbridged (phosphor-ipmi-ipmb) passes along the message to IPMI daemon.
151 - The ipmid (phosphor-ipmi-host) appends host information with postcode and
152 writes value to appropriate D-Bus object hosted by phosphor-host-postd.
153 - phosphor-host-postd displays postcode in the seven segment display based on
154 host position reads through D-bus interface.
155 - phosphor-post-code-manager receives new POST codes via D-Bus signal and stores
158 ## Platform Specific OEM Handler (fb-ipmi-oem)
161 [phosphor-ipmi-host](https://github.com/openbmc/phosphor-host-ipmid) and gets
163 [phosphor-ipmi-ipmb](https://github.com/openbmc/ipmbbridge).
165 - Register IPMI OEM postcode callback handler.
166 - Extract postcode from IPMI message (phosphor-ipmi-host/phosphor-ipmi-ipmb).
167 - Sets `Value` property on appropriate D-Bus `Raw` object hosted by
168 `phosphor-host-postd`. Other programs (e.g. `phosphor-post-code-manager`) can
171 ## phosphor-host-postd
173 This implementation involves the following changes in the phosphor-host-postd.
175 - `phosphor-host-postd` handles property set events for the `Value` property on
177 - phosphor-host-postd reads the host selection from the dbus property.
178 - Display the latest postcode of the selected host read through D-Bus on a
179 7-segment display.
181 **D-Bus interface**
183 The following D-Bus names need to be created for the multi-host post-code.
185 Service name -- xyz.openbmc_project.State.Boot.Raw
187 Obj path name -- /xyz/openbmc_project/State/Boot/RawX(1,2..N)
189 Interface name -- xyz.openbmc_project.State.Boot.Raw
191 ## phosphor-post-code-manager
193 The phosphor-post-code-manager is a multi service design for multi-host. The
194 single host postcode handling D-bus naming conventions will be updated to comply
197 - Create D-Bus service names for single-host and multi-host system accordingly.
199 multi-host.
200 - phosphor-post-code-manager subscribes to changes on the `Raw<N>` object hosted
201 by `phosphor-host-postd`.
202 - Store/retrieve post-code from directory (/var/lib/phosphor-post-code-manager/
203 hostX(1,2,3..N)) based on event received from phosphor-host-postd.
205 **D-Bus interface**
207 The following D-Bus names needs to be created for multi-host post-code.
209 Service name -- xyz.openbmc_project.State.Boot.PostCodeX(1,2..N)
211 Obj path name -- /xyz/openbmc_project/State/Boot/PostCodeX(1,2..N)
213 Interface name -- xyz.openbmc_project.State.Boot.PostCode
217 The postcode history needs to be handled for the multi-host through redfish
222 **phosphor-post-code-manager single process approach**
224 This implementation consider single service to handle multi-host postcode. In
225 this approach, all D-Bus handling will taken care by the single process.
227 Single service is different than existing x86-power-control and obmc-console
228 where multi-service approach is used.
230 Multi-service approach is more scalable to handle multi-host than the single