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