1*** Settings ***
2Documentation       This suite tests checkstop operations through BMC using
3...                 pdbg utility.
4
5Resource            ../../lib/openbmc_ffdc.robot
6Resource            ../../lib/openbmc_ffdc_methods.robot
7Resource            ../../lib/openbmc_ffdc_utils.robot
8Resource            ../../openpower/ras/ras_utils.robot
9Variables           ../../lib/ras/variables.py
10Variables           ../../data/variables.py
11
12Library             DateTime
13Library             OperatingSystem
14Library             random
15Library             Collections
16
17Suite Setup         RAS Suite Setup
18Test Setup          RAS Test Setup
19Test Teardown       FFDC On Test Case Fail
20Suite Teardown      RAS Suite Cleanup
21
22Test Tags          BMC_RAS
23
24*** Variables ***
25${stack_mode}       normal
26
27
28*** Test Cases ***
29
30# Memory Controller Async (MCACALIFIR) related error injection.
31
32Verify Pdbg Recoverable Callout Handling For MCA With Threshold 1
33    [Documentation]  Verify recoverable callout handling for MCACALIFIR
34    ...              with threshold 1 using pdbg tool.
35    [Tags]  Verify_Pdbg_Recoverable_Callout_Handling_For_MCA_With_Threshold_1
36
37    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  MCACALIFIR_RECV1
38    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}mcacalfir_th1
39    Inject Recoverable Error With Threshold Limit
40    ...  BMC  ${value[0]}  ${value[1]}  1  ${value[2]}  ${err_log_path}
41
42Verify Pdbg Recoverable Callout Handling For MCA With Threshold 32
43    [Documentation]  Verify recoverable callout handling for MCACALIFIR
44    ...              with threshold 32 using pdbg tool.
45    [Tags]  Verify_Pdbg_Recoverable_Callout_Handling_For_MCA_With_Threshold_32
46
47    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  MCACALIFIR_RECV32
48    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}mcacalfir_th32
49    Inject Recoverable Error With Threshold Limit
50    ...  BMC  ${value[0]}  ${value[1]}  32  ${value[2]}  ${err_log_path}
51
52Verify Pdbg Unrecoverable Callout Handling For MCA
53    [Documentation]  Verify unrecoverable callout handling for MCACALIFIR
54    ...              with pdbg tool.
55    [Tags]  Verify_Pdbg_Unrecoverable_Callout_Handling_For_MCA
56
57    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  MCACALIFIR_UE
58    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}mcacalfir
59    Inject Unrecoverable Error  BMC
60    ...  ${value[0]}  ${value[1]}  1  ${value[2]}  ${err_log_path}
61
62#  Memory controller Interface (MCIFIR) related error injection.
63
64Verify Pdbg Recoverable Callout Handling For MCI With Threshold 1
65    [Documentation]  Verify recoverable callout handling for MCI
66    ...              with threshold 1 using pdbg tool.
67    [Tags]  Verify_Pdbg_Recoverable_Callout_Handling_For_MCI_With_Threshold_1
68
69    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  MCI_RECV1
70    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}mcifir_th1
71    Inject Recoverable Error With Threshold Limit
72    ...  BMC  ${value[0]}  ${value[1]}  1  ${value[2]}  ${err_log_path}
73
74Verify Pdbg Unrecoverable Callout Handling For MCI
75    [Documentation]  Verify unrecoverable callout handling for mci
76    ...              with pdbg tool.
77    [Tags]  Verify_Pdbg_Unrecoverable_Callout_Handling_For_MCI
78
79    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  MCI_UE
80    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}mcifir
81    Inject Unrecoverable Error  BMC
82    ...  ${value[0]}  ${value[1]}  1  ${value[2]}  ${err_log_path}
83
84
85# CAPP accelerator (CXAFIR) related error injection.
86
87Verify Pdbg Recoverable Callout Handling For CXA With Threshold 5
88    [Documentation]  Verify recoverable callout handling for CXA
89    ...              with threshold 5 using pdbg tool.
90    [Tags]  Verify_Pdbg_Recoverable_Callout_Handling_For_CXA_With_Threshold_5
91
92    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  CXA_RECV5
93    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}cxafir_th5
94    Inject Recoverable Error With Threshold Limit
95    ...  BMC  ${value[0]}  ${value[1]}  5  ${value[2]}  ${err_log_path}
96
97Verify Pdbg Recoverable Callout Handling For CXA With Threshold 32
98    [Documentation]  Verify recoverable callout handling for CXA
99    ...              with threshold 32 using pdbg tool.
100    [Tags]  Verify_Pdbg_Recoverable_Callout_Handling_For_CXA_With_Threshold_32
101
102    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  CXA_RECV32
103    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}cxafir_th32
104    Inject Recoverable Error With Threshold Limit
105    ...  BMC  ${value[0]}  ${value[1]}  32  ${value[2]}  ${err_log_path}
106
107Verify Pdbg Unrecoverable Callout Handling For CXA
108    [Documentation]  Verify unrecoverable callout handling for CXAFIR
109    ...              with pdbg tool.
110    [Tags]  Verify_Pdbg_Unrecoverable_Callout_Handling_For_CXA
111
112    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  CXA_UE
113    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}cxafir_ue
114    Inject Unrecoverable Error  BMC
115    ...  ${value[0]}  ${value[1]}  1  ${value[2]}  ${err_log_path}
116
117#  Optical BUS (OBUSFIR) related error injection.
118
119Verify Pdbg Recoverable Callout Handling For OBUS With Threshold 32
120    [Documentation]  Verify recoverable callout handling for OBUS
121    ...              with threshold 32 using pdbg tool.
122    [Tags]  Verify_Pdbg_Recoverable_Callout_Handling_For_OBUS_With_Threshold_32
123
124    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  OBUS_RECV32
125    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}obusfir_th32
126    Inject Recoverable Error With Threshold Limit
127    ...  BMC  ${value[0]}  ${value[1]}  32  ${value[2]}  ${err_log_path}
128
129# NVIDIA graphics processing units (NPU0FIR) related error injection.
130
131Verify Pdbg Recoverable Callout Handling For NPU0 With Threshold 32
132    [Documentation]  Verify recoverable callout handling for NPU0
133    ...              with threshold 32 using pdbg tool.
134    [Tags]  Verify_Pdbg_Recoverable_Callout_Handling_For_NPU0_With_Threshold_32
135
136    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  NPU0_RECV32
137    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}npu0fir_th32
138    Inject Recoverable Error With Threshold Limit
139    ...  BMC  ${value[0]}  ${value[1]}  32  ${value[2]}  ${err_log_path}
140
141#  NEST accelerator DMA Engine (NXDMAENGFIR) related error injection.
142
143Verify Pdbg Recoverable Callout Handling For NXDMAENG With Threshold 1
144    [Documentation]  Verify recoverable callout handling for NXDMAENG
145    ...              with threshold 1 using pdbg tool.
146    [Tags]  Verify_Pdbg_Recoverable_Callout_Handling_For_NXDMAENG_With_Threshold_1
147
148    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  NX_RECV1
149    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}nxfir_th1
150    Inject Recoverable Error With Threshold Limit
151    ...  BMC  ${value[0]}  ${value[1]}  1  ${value[2]}  ${err_log_path}
152
153
154Verify Pdbg Recoverable Callout Handling For NXDMAENG With Threshold 32
155    [Documentation]  Verify recoverable callout handling for NXDMAENG
156    ...              with threshold 32 using pdbg tool.
157    [Tags]  Verify_Pdbg_Recoverable_Callout_Handling_For_NXDMAENG_With_Threshold_32
158
159    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  NX_RECV32
160    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}nxfir_th32
161    Inject Recoverable Error With Threshold Limit
162    ...  BMC  ${value[0]}  ${value[1]}  32  ${value[2]}  ${err_log_path}
163
164
165#  L2FIR related error injection.
166
167Verify Pdbg Recoverable Callout Handling For L2FIR With Threshold 1
168    [Documentation]  Verify recoverable callout handling for L2FIR
169    ...              with threshold 1 using pdbg tool.
170    [Tags]  Verify_Pdbg_Recoverable_Callout_Handling_For_L2FIR_With_Threshold_1
171
172    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  L2FIR_RECV1
173    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EX
174    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}l2fir_th1
175    Inject Recoverable Error With Threshold Limit
176    ...  BMC  ${translated_fir}  ${value[1]}  1  ${value[2]}  ${err_log_path}
177
178Verify Pdbg Recoverable Callout Handling For L2FIR With Threshold 32
179    [Documentation]  Verify recoverable callout handling for L2FIR
180    ...              with threshold 32 using pdbg tool.
181    [Tags]  Verify_Pdbg_Recoverable_Callout_Handling_For_L2FIR_With_Threshold_32
182
183    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  L2FIR_RECV32
184    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EX
185    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}l2fir_th32
186    Inject Recoverable Error With Threshold Limit
187    ...  BMC  ${translated_fir}  ${value[1]}  32  ${value[2]}  ${err_log_path}
188
189Verify Pdbg Unrecoverable Callout Handling For L2FIR
190    [Documentation]  Verify unrecoverable callout handling for L2FIR
191    ...              with pdbg tool.
192    [Tags]  Verify_Pdbg_Unrecoverable_Callout_Handling_For_L2FIR
193
194    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  L2FIR_UE
195    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EX
196    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}l2fir_ue
197    Inject Unrecoverable Error  BMC
198    ...  ${translated_fir}  ${value[1]}  1  ${value[2]}  ${err_log_path}
199
200#  L3FIR related error injection.
201
202Verify Pdbg Recoverable Callout Handling For L3FIR With Threshold 1
203    [Documentation]  Verify recoverable callout handling for L3FIR
204    ...              with threshold 1 using pdbg tool.
205    [Tags]  Verify_Pdbg_Recoverable_Callout_Handling_For_L3FIR_With_Threshold_1
206
207    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  L3FIR_RECV1
208    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EX
209    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}l3fir_th1
210    Inject Recoverable Error With Threshold Limit
211    ...  BMC  ${translated_fir}  ${value[1]}  1  ${value[2]}  ${err_log_path}
212
213Verify Pdbg Recoverable Callout Handling For L3FIR With Threshold 32
214    [Documentation]  Verify recoverable callout handling for L3FIR
215    ...              with threshold 32 using pdbg tool.
216    [Tags]  Verify_Pdbg_Recoverable_Callout_Handling_For_L3FIR_With_Threshold_32
217
218    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  L3FIR_RECV32
219    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EX
220    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}l3fir_th32
221    Inject Recoverable Error With Threshold Limit
222    ...  BMC  ${translated_fir}  ${value[1]}  32  ${value[2]}  ${err_log_path}
223
224Verify Pdbg Unrecoverable Callout Handling For L3FIR
225    [Documentation]  Verify unrecoverable callout handling for L3FIR
226    ...              with pdbg tool.
227    [Tags]  Verify_Pdbg_Unrecoverable_Callout_Handling_For_L3FIR
228
229    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  L3FIR_UE
230    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EX
231    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}l3fir_ue
232    Inject Unrecoverable Error  BMC
233    ...  ${translated_fir}  ${value[1]}  1  ${value[2]}  ${err_log_path}
234
235# On chip controller (OCCFIR) related error injection.
236
237Verify Pdbg Recoverable Callout Handling For OCC With Threshold 1
238    [Documentation]  Verify recoverable callout handling for OCCFIR
239    ...              with threshold 1 using pdbg tool.
240    [Tags]  Verify_Pdbg_Recoverable_Callout_Handling_For_OCC_With_Threshold_1
241
242    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  OCCFIR_RECV1
243    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}occfir_th1
244    Inject Recoverable Error With Threshold Limit
245    ...  BMC  ${value[0]}  ${value[1]}  1  ${value[2]}  ${err_log_path}
246
247# Core management engine (CMEFIR) related error injection.
248
249Verify Pdbg Recoverable Callout Handling For CMEFIR With Threshold 1
250    [Documentation]  Verify recoverable callout handling for CMEFIR
251    ...              with threshold 1 using pdbg tool.
252    [Tags]  Verify_Pdbg_Recoverable_Callout_Handling_For_CMEFIR_With_Threshold_1
253
254    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  CMEFIR_RECV1
255    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EX
256    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}cmefir_th1
257    Inject Recoverable Error With Threshold Limit
258    ...  BMC  ${translated_fir}  ${value[1]}  1  ${value[2]}  ${err_log_path}
259
260# Nest control vunit (NCUFIR) related error injection.
261
262Verify Pdbg Recoverable Callout Handling For NCUFIR With Threshold 1
263    [Documentation]  Verify recoverable callout handling for NCUFIR
264    ...              with threshold 1 using pdbg tool.
265    [Tags]  Verify_Pdbg_Recoverable_Callout_Handling_For_NCUFIR_With_Threshold_1
266
267    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  NCUFIR_RECV1
268    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EX
269    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}ncufir_th1
270    Inject Recoverable Error With Threshold Limit
271    ...  BMC  ${translated_fir}  ${value[1]}  1  ${value[2]}  ${err_log_path}
272
273Verify Pdbg Unrecoverable Callout Handling For NCUFIR
274    [Documentation]  Verify unrecoverable callout handling for NCUFIR
275    ...              with pdbg tool.
276    [Tags]  Verify_Pdbg_Unrecoverable_Callout_Handling_For_NCUFIR
277
278    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  NCUFIR_UE
279    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EX
280    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}ncufir_ue
281    Inject Unrecoverable Error  BMC
282    ...  ${translated_fir}  ${value[1]}  1  ${value[2]}  ${err_log_path}
283
284# Core FIR related error injection.
285
286Verify Pdbg Recoverable Callout Handling For CoreFIR With Threshold 5
287    [Documentation]  Verify recoverable callout handling for CoreFIR
288    ...              with threshold 5 using pdbg tool.
289    [Tags]  Verify_Pdbg_Recoverable_Callout_Handling_For_CoreFIR_With_Threshold_5
290
291    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  COREFIR_RECV5
292    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EX
293    Disable CPU States Through HOST
294    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}corefir_th5
295    Inject Recoverable Error With Threshold Limit
296    ...  BMC  ${value[0]}  ${value[1]}  5  ${value[2]}  ${err_log_path}
297
298Verify Pdbg Recoverable Callout Handling For CoreFIR With Threshold 1
299    [Documentation]  Verify recoverable callout handling for CoreFIR
300    ...              with threshold 1 using pdbg tool.
301    [Tags]  Verify_Pdbg_Recoverable_Callout_Handling_For_CoreFIR_With_Threshold_1
302
303    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  COREFIR_RECV1
304    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EX
305    Disable CPU States Through HOST
306    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}corefir_th1
307    Inject Recoverable Error With Threshold Limit
308    ...  BMC  ${value[0]}  ${value[1]}  1  ${value[2]}  ${err_log_path}
309
310Verify Pdbg Unrecoverable Callout Handling For CoreFIR
311    [Documentation]  Verify unrecoverable callout handling for CoreFIR
312    ...              with pdbg tool.
313    [Tags]  Verify_Pdbg_Unrecoverable_Callout_Handling_For_CoreFIR
314
315    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  COREFIR_UE
316    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EX
317    Disable CPU States Through HOST
318    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}corefir_ue
319    Inject Unrecoverable Error  BMC
320    ...  ${value[0]}  ${value[1]}  1  ${value[2]}  ${err_log_path}
321
322Verify Pdbg Recoverable Callout Handling For EQFIR With Threshold 32
323    [Documentation]  Verify recoverable callout handling for L3FIR
324    ...              with threshold 32 using pdbg tool.
325    [Tags]  Verify_Pdbg_Recoverable_Callout_Handling_For_EQFIR_With_Threshold_32
326
327    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  EQFIR_RECV32
328    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EQ
329    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}eqfir_th32
330    Inject Recoverable Error With Threshold Limit
331    ...  BMC  ${translated_fir}  ${value[1]}  32  ${value[2]}  ${err_log_path}
332