xref: /openbmc/openpower-hw-diags/analyzer/ras-data/ras-data-definition.md (revision 5d63cefcada92a8588ab55fb2a741c898cb19a8b)
190d12524SZane Shelley# RAS Data File definition
290d12524SZane Shelley
390d12524SZane ShelleyWhen hardware reports an error, the analyzer will call the isolator which will
490d12524SZane Shelleyreturn a list of active attentions in the hardware, referred to as `signatures`.
590d12524SZane ShelleyThe analyzer will then filter and sort the list to find the root cause
690d12524SZane Shelleysignature. The RAS Data files are used to define, in a data driven fashion, the
790d12524SZane Shelleyappropriate RAS actions that should be taken for the root cause signature.
890d12524SZane Shelley
990d12524SZane ShelleyThe RAS Data will be defined in the JSON data format. Each file will contain a
1090d12524SZane Shelleysingle JSON object (with nested values) which will define the RAS actions for a
1190d12524SZane Shelleysingle chip model and EC level.
1290d12524SZane Shelley
1390d12524SZane Shelley## 1) `model_ec` keyword (required)
1490d12524SZane Shelley
1590d12524SZane ShelleyThe value of this keyword is a `string` representing a 32-bit hexidecimal number
1690d12524SZane Shelleyin the format `[0-9A-Fa-f]{8}`. This value is used to determine the chip model
1790d12524SZane Shelleyand EC level in which this data is defined.
1890d12524SZane Shelley
1990d12524SZane Shelley## 2) `version` keyword (required)
2090d12524SZane Shelley
2190d12524SZane ShelleyA new version number should be used for each new RAS data file format so that
2290d12524SZane Shelleyuser applications will know how to properly parse the files. The value of this
2390d12524SZane Shelleykeyword is a positive integer. Initially, format version is `1`.
2490d12524SZane Shelley
2590d12524SZane Shelley## 3) `units` keyword
2690d12524SZane Shelley
2790d12524SZane ShelleyThe value of this keyword is a JSON object representing all of the guardable
2890d12524SZane Shelleyunit targets on this chip. Each element of this object will have the format:
2990d12524SZane Shelley
3090d12524SZane Shelley```
3190d12524SZane Shelley"<unit_name>" : "<relative_devtree_path>"
3290d12524SZane Shelley```
3390d12524SZane Shelley
3490d12524SZane ShelleyWhere `<unit_name>` is simply an alphanumeric label for the unit and
3590d12524SZane Shelley`<relative_devtree_path>` is a string representing the devtree path of the unit
3690d12524SZane Shelleyrelative to the chip defined by the file. When necessary, the user application
3790d12524SZane Shelleyshould be able to concatenate the devtree path of the chip and the relative
3890d12524SZane Shelleydevtree path of the unit to get the full devtree path of the unit.
3990d12524SZane Shelley
4090d12524SZane Shelley## 4) `buses` keyword
4190d12524SZane Shelley
4290d12524SZane ShelleyThe value of this keyword is a JSON object representing all of the buses
4390d12524SZane Shelleyconnected to this chip. Each element of this object will have the format:
4490d12524SZane Shelley
4590d12524SZane Shelley```
4690d12524SZane Shelley"<bus_name>" : { <bus_details> }
4790d12524SZane Shelley```
4890d12524SZane Shelley
4990d12524SZane ShelleyWhere `<bus_name>` is simply an alphanumeric label for the bus and
5090d12524SZane Shelley`<bus_details>` is a JSON object containing details of the bus connection.
5190d12524SZane Shelley
5290d12524SZane Shelley### 4.1) `<bus_details>` object
5390d12524SZane Shelley
5490d12524SZane ShelleyThis describes how the bus is connected to this chip. Note that the `unit`
5590d12524SZane Shelleykeyword is optional and the chip is used as the endpoint connection instead.
5690d12524SZane ShelleyThis is usually intended to be used when the chip is the child and we need to
5790d12524SZane Shelleyfind the connected `parent` chip/unit.
5890d12524SZane Shelley
5990d12524SZane Shelley| Keyword | Description                                                        |
6090d12524SZane Shelley|---------|--------------------------------------------------------------------|
61*5d63cefcSZane Shelley| type    | The bus connection type. Values (string): `SMP_BUS` and `OMI_BUS`  |
6290d12524SZane Shelley| unit    | Optional. The `<unit_name>` of the bus endpoint on this chip.      |
6390d12524SZane Shelley
6490d12524SZane Shelley## 5) `actions` keyword (required)
6590d12524SZane Shelley
6690d12524SZane ShelleyThe value of this keyword is a JSON object representing all of the defined
6790d12524SZane Shelleyactions available for the file. Each element of this object contains an array of
6890d12524SZane ShelleyRAS actions, to be performed in order, with the format:
6990d12524SZane Shelley
7090d12524SZane Shelley```
7190d12524SZane Shelley"<action_name>" : [ { <action_element> }, ... ]
7290d12524SZane Shelley```
7390d12524SZane Shelley
7490d12524SZane ShelleyWhere `<action_name>` is simply an alphanumeric label for a set of actions.
7590d12524SZane ShelleyThis will be the keyword referenced by the `signatures` or by a special
7690d12524SZane Shelley`<action_element>` for nested actions (see below).
7790d12524SZane Shelley
7890d12524SZane Shelley### 5.1) `<action_element>` object
7990d12524SZane Shelley
8090d12524SZane ShelleyAll `<action_element>` are JSON objects and they all require the `type` keyword,
8190d12524SZane Shelleywhich is used to determine the action type. The remaining required keywords are
8290d12524SZane Shelleydependent on the action type.
8390d12524SZane Shelley
8490d12524SZane ShelleyActions with a `priority` keyword can only use the following values (string):
8590d12524SZane Shelley
8690d12524SZane Shelley| Priority | Description                                                       |
8790d12524SZane Shelley|----------|-------------------------------------------------------------------|
8890d12524SZane Shelley| `HIGH`   | Serivce is mandatory.                                             |
8990d12524SZane Shelley| `MED`    | Service one at a time, in order, until issue is resolved.         |
9090d12524SZane Shelley| `MED_A`  | Same as `MED` except all in group A replaced at the same time.    |
9190d12524SZane Shelley| `MED_B`  | Same as `MED` except all in group B replaced at the same time.    |
9290d12524SZane Shelley| `MED_C`  | Same as `MED` except all in group C replaced at the same time.    |
9390d12524SZane Shelley| `LOW`    | Same as `MED*`, but only if higher priority service does not work.|
9490d12524SZane Shelley
9590d12524SZane ShelleyActions with a `guard` keyword can only use the following values (boolean):
9690d12524SZane Shelley
9790d12524SZane Shelley| Guard | Description                                                          |
9890d12524SZane Shelley|-------|----------------------------------------------------------------------|
9990d12524SZane Shelley| true  | Request guard on associated part.                                    |
10090d12524SZane Shelley| false | No guard request.                                                    |
10190d12524SZane Shelley
10290d12524SZane Shelley#### 5.1.1) action type `action`
10390d12524SZane Shelley
10490d12524SZane ShelleyThis is a special action type that allows using an action that has already been
10590d12524SZane Shelleydefined (nested actions).
10690d12524SZane Shelley
10790d12524SZane Shelley| Keyword | Description                                                        |
10890d12524SZane Shelley|---------|--------------------------------------------------------------------|
10990d12524SZane Shelley| type    | value (string): `action`                                           |
11090d12524SZane Shelley| name    | The `<action_name>` of a previously predefined action.             |
11190d12524SZane Shelley
11290d12524SZane Shelley#### 5.1.2) action type `callout_self`
11390d12524SZane Shelley
11490d12524SZane ShelleyThis will request to callout the chip defined by this file.
11590d12524SZane Shelley
11690d12524SZane Shelley| Keyword  | Description                                                       |
11790d12524SZane Shelley|----------|-------------------------------------------------------------------|
11890d12524SZane Shelley| type     | value (string): `callout_self`                                    |
11990d12524SZane Shelley| priority | See `priority` table above.                                       |
12090d12524SZane Shelley| guard    | See `guard` table above.                                          |
12190d12524SZane Shelley
12290d12524SZane Shelley#### 5.1.3) action type `callout_unit`
12390d12524SZane Shelley
12490d12524SZane ShelleyThis will request to callout a unit of the chip defined by this file.
12590d12524SZane Shelley
12690d12524SZane Shelley| Keyword  | Description                                                       |
12790d12524SZane Shelley|----------|-------------------------------------------------------------------|
12890d12524SZane Shelley| type     | value (string): `callout_unit`                                    |
12990d12524SZane Shelley| name     | The `<unit_name>` as defined by the `units` keyword.              |
13090d12524SZane Shelley| priority | See `priority` table above.                                       |
13190d12524SZane Shelley| guard    | See `guard` table above.                                          |
13290d12524SZane Shelley
13390d12524SZane Shelley#### 5.1.4) action type `callout_connected`
13490d12524SZane Shelley
13590d12524SZane ShelleyThis will request to callout a connected chip/unit on the other side of a bus.
13690d12524SZane Shelley
13790d12524SZane Shelley| Keyword  | Description                                                       |
13890d12524SZane Shelley|----------|-------------------------------------------------------------------|
13990d12524SZane Shelley| type     | value (string): `callout_connected`                               |
14090d12524SZane Shelley| name     | The `<bus_name>` as defined by the `buses` keyword.               |
14190d12524SZane Shelley| priority | See `priority` table above.                                       |
14290d12524SZane Shelley| guard    | See `guard` table above.                                          |
14390d12524SZane Shelley
14490d12524SZane Shelley#### 5.1.5) action type `callout_bus`
14590d12524SZane Shelley
14690d12524SZane ShelleyThis will request to callout all parts associated with a bus (RX/TX endpoints
14790d12524SZane Shelleyand everything else in between the endpoints). Bus callouts have very specific
14890d12524SZane Shelleypriority:
14990d12524SZane Shelley
15090d12524SZane Shelley- If an SMP cable exists, callout the cable with priority `HIGH`.
15190d12524SZane Shelley- Callout both RX and TX endpoints with priority `MED_A`.
15290d12524SZane Shelley- Callout everything else in between with priority `LOW`.
15390d12524SZane Shelley
15490d12524SZane ShelleyIn some special cases, the callout priority of the endpoints may differ from the
15590d12524SZane Shelleydefault `MED_A`. In which case, the optional priority properties can be used.
15690d12524SZane Shelley
15790d12524SZane Shelley| Keyword     | Description                                                    |
15890d12524SZane Shelley|-------------|----------------------------------------------------------------|
15990d12524SZane Shelley| type        | value (string): `callout_bus`                                  |
16090d12524SZane Shelley| name        | The `<bus_name>` as defined by the `buses` keyword.            |
16190d12524SZane Shelley| rx_priority | Optional priority of the receiving side endpoint               |
16290d12524SZane Shelley| tx_priority | Optional priority of the transfer side endpoint                |
16390d12524SZane Shelley| guard       | See `guard` table above.                                       |
16490d12524SZane Shelley
16590d12524SZane Shelley#### 5.1.6) action type `callout_clock`
16690d12524SZane Shelley
16790d12524SZane ShelleyThis will request to callout a clock associated with this chip.
16890d12524SZane Shelley
16990d12524SZane Shelley| Keyword  | Description                                                       |
17090d12524SZane Shelley|----------|-------------------------------------------------------------------|
17190d12524SZane Shelley| type     | value (string): `callout_clock`                                   |
17284721d90SZane Shelley| name     | See `clock type` table below.                                     |
17390d12524SZane Shelley| priority | See `priority` table above.                                       |
17490d12524SZane Shelley| guard    | See `guard` table above.                                          |
17590d12524SZane Shelley
17684721d90SZane ShelleySupported clock types:
17784721d90SZane Shelley
17884721d90SZane Shelley| Clock Type      | Description                                                |
17984721d90SZane Shelley|-----------------|------------------------------------------------------------|
18084721d90SZane Shelley| OSC_REF_CLOCK_0 | Oscillator reference clock 0                               |
18184721d90SZane Shelley| OSC_REF_CLOCK_1 | Oscillator reference clock 1                               |
18284721d90SZane Shelley
18390d12524SZane Shelley#### 5.1.7) action type `callout_procedure`
18490d12524SZane Shelley
18590d12524SZane ShelleyThis will request to callout a service procedure.
18690d12524SZane Shelley
18790d12524SZane Shelley| Keyword  | Description                                                       |
18890d12524SZane Shelley|----------|-------------------------------------------------------------------|
18990d12524SZane Shelley| type     | value (string): `callout_procedure`                               |
19084721d90SZane Shelley| name     | See `procedures` table below.                                     |
19190d12524SZane Shelley| priority | See `priority` table above.                                       |
19290d12524SZane Shelley
19390d12524SZane ShelleySupported procedures:
19490d12524SZane Shelley
19590d12524SZane Shelley| Procedure | Description                                                      |
19690d12524SZane Shelley|-----------|------------------------------------------------------------------|
19790d12524SZane Shelley| LEVEL2    | Request Level 2 support                                          |
19890d12524SZane Shelley
19990d12524SZane Shelley#### 5.1.8) action type `callout_part`
20090d12524SZane Shelley
20190d12524SZane ShelleyThis will request special part callouts that cannot be managed by the other
20290d12524SZane Shelleycallout actions (e.g. the PNOR).
20390d12524SZane Shelley
20490d12524SZane Shelley| Keyword  | Description                                                       |
20590d12524SZane Shelley|----------|-------------------------------------------------------------------|
20690d12524SZane Shelley| type     | value (string): `callout_part`                                    |
20784721d90SZane Shelley| name     | See `parts` table below.                                          |
20890d12524SZane Shelley| priority | See `priority` table above.                                       |
20990d12524SZane Shelley
21090d12524SZane ShelleySupported parts:
21190d12524SZane Shelley
21290d12524SZane Shelley| Part     | Description                                                       |
21390d12524SZane Shelley|----------|-------------------------------------------------------------------|
21490d12524SZane Shelley
21590d12524SZane Shelley#### 5.1.9) action type `plugin`
21690d12524SZane Shelley
21790d12524SZane ShelleySome RAS actions require additional support that cannot be defined easily in
21890d12524SZane Shelleythese data files. User application can defined plugins to perform these
21990d12524SZane Shelleyadditional tasks. Use of this keyword should be avoided if possible. Remember,
22090d12524SZane Shelleythe goal is to make the user applications as data driven as possible to avoid
22190d12524SZane Shelleyplatform specific code.
22290d12524SZane Shelley
22390d12524SZane Shelley| Keyword  | Description                                                       |
22490d12524SZane Shelley|----------|-------------------------------------------------------------------|
22590d12524SZane Shelley| type     | value (string): `plugin`                                          |
22690d12524SZane Shelley| name     | A string representing the plugin name.                            |
22790d12524SZane Shelley
22890d12524SZane Shelley### 5.2) `actions` example
22990d12524SZane Shelley
23090d12524SZane Shelley```json
23190d12524SZane Shelley    "actions" : {
23290d12524SZane Shelley        "self_L" : [
23390d12524SZane Shelley            {
23490d12524SZane Shelley                "type"     : "callout_self",
23590d12524SZane Shelley                "priority" : "LOW",
23690d12524SZane Shelley                "guard"    : false
23790d12524SZane Shelley            },
23890d12524SZane Shelley        ],
23990d12524SZane Shelley        "level2_M_self_L" : [
24090d12524SZane Shelley            {
24190d12524SZane Shelley                "type"     : "callout_procedure",
24290d12524SZane Shelley                "name"     : "LEVEL2",
24390d12524SZane Shelley                "priority" : "MED"
24490d12524SZane Shelley            },
24590d12524SZane Shelley            {
24690d12524SZane Shelley                "type" : "action",
24790d12524SZane Shelley                "name" : "self_L"
24890d12524SZane Shelley            }
24990d12524SZane Shelley        ]
25090d12524SZane Shelley    }
25190d12524SZane Shelley```
25290d12524SZane Shelley
25390d12524SZane Shelley## 6) `signatures` keyword (required)
25490d12524SZane Shelley
25590d12524SZane ShelleyThe value of this keyword is a JSON object representing all of the signatures
25690d12524SZane Shelleyfrom this chip requiring RAS actions. Each element of this object will have the
25790d12524SZane Shelleyformat:
25890d12524SZane Shelley
25990d12524SZane Shelley```
26090d12524SZane Shelley"<sig_id>" : { "<sig_bit>" : { "<sig_inst>" : "<action_name>", ... }, ... }
26190d12524SZane Shelley```
26290d12524SZane Shelley
26390d12524SZane ShelleyWhere `<sig_id>` (16-bit), `<sig_bit>` (8-bit), and `<sig_inst>` (8-bit) are
26490d12524SZane Shelleylower case hexadecimal values with NO preceeding '0x'. See the details of these
26590d12524SZane Shelleyfields in the isolator's `Signature` object. The `<action_name>` is a label
26690d12524SZane Shelleydefined in by the `actions` keyword above.
267