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