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