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.txt 7Resource ../../lib/state_manager.robot 8Resource ../../lib/openbmc_ffdc_methods.robot 9Resource ../../lib/boot_utils.robot 10Variables ../../lib/ras/variables.py 11Variables ../../data/variables.py 12Resource ../../lib/dump_utils.robot 13 14Library DateTime 15Library OperatingSystem 16Library random 17Library Collections 18 19Suite Setup RAS Suite Setup 20Test Setup RAS Test Setup 21Test Teardown FFDC On Test Case Fail 22Suite Teardown RAS Suite Cleanup 23 24Force Tags Host_RAS 25*** Variables *** 26${stack_mode} normal 27 28*** Test Cases *** 29# Memory channel (MCACALIFIR) related error injection. 30 31Verify Recoverable Callout Handling For MCA With Threshold 1 32 [Documentation] Verify recoverable callout handling for MCACALIFIR with 33 ... threshold 1. 34 [Tags] Verify_Recoverable_Callout_Handling_For_MCA_With_Threshold_1 35 36 ${value}= Get From Dictionary ${ERROR_INJECT_DICT} MCACALIFIR_RECV1 37 ${err_log_path}= Catenate ${RAS_LOG_DIR_PATH}mcacalfir_th1 38 Inject Recoverable Error With Threshold Limit Through Host 39 ... ${value[0]} ${value[1]} 1 ${value[2]} ${err_log_path} 40 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 Through Host 50 ... ${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} MCS_RECV1 69 ${err_log_path}= Catenate ${RAS_LOG_DIR_PATH}mcifir_th1 70 Inject Recoverable Error With Threshold Limit Through Host 71 ... ${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} MCS_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 Through Host 92 ... ${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 Through Host 102 ... ${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# OBUSFIR related error injection. 114 115Verify Recoverable Callout Handling For OBUS With Threshold 32 116 [Documentation] Verify recoverable callout handling for OBUS with 117 ... threshold 32. 118 [Tags] Verify_Recoverable_Callout_Handling_For_OBUS_With_Threshold_32 119 120 ${value}= Get From Dictionary ${ERROR_INJECT_DICT} OBUS_RECV32 121 ${err_log_path}= Catenate ${RAS_LOG_DIR_PATH}obusfir_th32 122 Inject Recoverable Error With Threshold Limit Through Host 123 ... ${value[0]} ${value[1]} 32 ${value[2]} ${err_log_path} 124 125# Nvidia graphics processing units (NPU0FIR) related error injection. 126 127Verify Recoverable Callout Handling For NPU0 With Threshold 32 128 [Documentation] Verify recoverable callout handling for NPU0 with 129 ... threshold 32. 130 [Tags] Verify_Recoverable_Callout_Handling_For_NPU0_With_Threshold_32 131 132 ${value}= Get From Dictionary ${ERROR_INJECT_DICT} NPU0_RECV32 133 ${err_log_path}= Catenate ${RAS_LOG_DIR_PATH}npu0fir_th32 134 Inject Recoverable Error With Threshold Limit Through Host 135 ... ${value[0]} ${value[1]} 32 ${value[2]} ${err_log_path} 136 137# Nest accelerator NXDMAENGFIR related error injection. 138 139Verify Recoverable Callout Handling For NXDMAENG With Threshold 1 140 [Documentation] Verify recoverable callout handling for NXDMAENG with 141 ... threshold 1. 142 [Tags] Verify_Recoverable_Callout_Handling_For_NXDMAENG_With_Threshold_1 143 144 ${value}= Get From Dictionary ${ERROR_INJECT_DICT} NX_RECV1 145 ${err_log_path}= Catenate ${RAS_LOG_DIR_PATH}nxfir_th1 146 Inject Recoverable Error With Threshold Limit Through Host 147 ... ${value[0]} ${value[1]} 1 ${value[2]} ${err_log_path} 148 149 150Verify Recoverable Callout Handling For NXDMAENG With Threshold 32 151 [Documentation] Verify recoverable callout handling for NXDMAENG with 152 ... threshold 32. 153 [Tags] Verify_Recoverable_Callout_Handling_For_NXDMAENG_With_Threshold_32 154 155 ${value}= Get From Dictionary ${ERROR_INJECT_DICT} NX_RECV32 156 ${err_log_path}= Catenate ${RAS_LOG_DIR_PATH}nxfir_th32 157 Inject Recoverable Error With Threshold Limit Through Host 158 ... ${value[0]} ${value[1]} 32 ${value[2]} ${err_log_path} 159 160Verify Unrecoverable Callout Handling For NXDMAENG 161 [Documentation] Verify unrecoverable callout handling for NXDMAENG. 162 [Tags] Verify_Unrecoverable_Callout_Handling_For_NXDMAENG 163 164 ${value}= Get From Dictionary ${ERROR_INJECT_DICT} NX_UE 165 ${err_log_path}= Catenate ${RAS_LOG_DIR_PATH}nxfir_ue 166 Inject Unrecoverable Error Through Host 167 ... ${value[0]} ${value[1]} 1 ${value[2]} ${err_log_path} 168 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 Through Host 181 ... ${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 Through Host 192 ... ${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# L3FIR related error injection. 205 206Verify Recoverable Callout Handling For L3FIR With Threshold 1 207 [Documentation] Verify recoverable callout handling for L3FIR with 208 ... threshold 1. 209 [Tags] Verify_Recoverable_Callout_Handling_For_L3FIR_With_Threshold_1 210 211 ${value}= Get From Dictionary ${ERROR_INJECT_DICT} L3FIR_RECV1 212 ${translated_fir}= Fetch FIR Address Translation Value ${value[0]} EX 213 ${err_log_path}= Catenate ${RAS_LOG_DIR_PATH}l3fir_th1 214 Inject Recoverable Error With Threshold Limit Through Host 215 ... ${translated_fir} ${value[1]} 1 ${value[2]} ${err_log_path} 216 217Verify Recoverable Callout Handling For L3FIR With Threshold 32 218 [Documentation] Verify recoverable callout handling for L3FIR with 219 ... threshold 32. 220 [Tags] Verify_Recoverable_Callout_Handling_For_L3FIR_With_Threshold_32 221 222 ${value}= Get From Dictionary ${ERROR_INJECT_DICT} L3FIR_RECV32 223 ${translated_fir}= Fetch FIR Address Translation Value ${value[0]} EX 224 ${err_log_path}= Catenate ${RAS_LOG_DIR_PATH}l3fir_th32 225 Inject Recoverable Error With Threshold Limit Through Host 226 ... ${translated_fir} ${value[1]} 32 ${value[2]} ${err_log_path} 227 228Verify Unrecoverable Callout Handling For L3FIR 229 [Documentation] Verify unrecoverable callout handling for L3FIR. 230 [Tags] Verify_Unrecoverable_Callout_Handling_For_L3FIR 231 232 ${value}= Get From Dictionary ${ERROR_INJECT_DICT} L3FIR_UE 233 ${translated_fir}= Fetch FIR Address Translation Value ${value[0]} EX 234 ${err_log_path}= Catenate ${RAS_LOG_DIR_PATH}l3fir_ue 235 Inject Unrecoverable Error Through Host 236 ... ${translated_fir} ${value[1]} 1 ${value[2]} ${err_log_path} 237 238# On chip controller (OCCFIR) related error injection. 239 240Verify Recoverable Callout Handling For OCC With Threshold 1 241 [Documentation] Verify recoverable callout handling for OCCFIR with 242 ... threshold 1. 243 [Tags] Verify_Recoverable_Callout_Handling_For_OCC_With_Threshold_1 244 245 ${value}= Get From Dictionary ${ERROR_INJECT_DICT} OCCFIR_RECV1 246 ${err_log_path}= Catenate ${RAS_LOG_DIR_PATH}occfir_th1 247 Inject Recoverable Error With Threshold Limit Through Host 248 ... ${value[0]} ${value[1]} 1 ${value[2]} ${err_log_path} 249 250# Core management engine (CMEFIR) related error injection. 251 252Verify Recoverable Callout Handling For CMEFIR With Threshold 1 253 [Documentation] Verify recoverable callout handling for CMEFIR with 254 ... threshold 1. 255 [Tags] Verify_Recoverable_Callout_Handling_For_CMEFIR_With_Threshold_1 256 257 ${value}= Get From Dictionary ${ERROR_INJECT_DICT} CMEFIR_RECV1 258 ${translated_fir}= Fetch FIR Address Translation Value ${value[0]} EX 259 ${err_log_path}= Catenate ${RAS_LOG_DIR_PATH}cmefir_th1 260 Inject Recoverable Error With Threshold Limit Through Host 261 ... ${translated_fir} ${value[1]} 1 ${value[2]} ${err_log_path} 262 263# Nest control vunit (NCUFIR) related error injection. 264 265Verify Recoverable Callout Handling For NCUFIR With Threshold 1 266 [Documentation] Verify recoverable callout handling for NCUFIR with 267 ... threshold 1. 268 [Tags] Verify_Recoverable_Callout_Handling_For_NCUFIR_With_Threshold_1 269 270 ${value}= Get From Dictionary ${ERROR_INJECT_DICT} NCUFIR_RECV1 271 ${translated_fir}= Fetch FIR Address Translation Value ${value[0]} EX 272 ${err_log_path}= Catenate ${RAS_LOG_DIR_PATH}ncufir_th1 273 Inject Recoverable Error With Threshold Limit Through Host 274 ... ${translated_fir} ${value[1]} 1 ${value[2]} ${err_log_path} 275 276Verify Unrecoverable Callout Handling For NCUFIR 277 [Documentation] Verify unrecoverable callout handling for NCUFIR. 278 [Tags] Verify_Unrecoverable_Callout_Handling_For_NCUFIR 279 280 ${value}= Get From Dictionary ${ERROR_INJECT_DICT} NCUFIR_UE 281 ${translated_fir}= Fetch FIR Address Translation Value ${value[0]} EX 282 ${err_log_path}= Catenate ${RAS_LOG_DIR_PATH}ncufir_ue 283 Inject Unrecoverable Error Through Host 284 ... ${translated_fir} ${value[1]} 1 ${value[2]} ${err_log_path} 285 286# Core FIR related error injection. 287 288Verify Recoverable Callout Handling For CoreFIR With Threshold 5 289 [Documentation] Verify recoverable callout handling for CoreFIR with 290 ... threshold 5. 291 [Tags] Verify_Recoverable_Callout_Handling_For_CoreFIR_With_Threshold_5 292 293 ${value}= Get From Dictionary ${ERROR_INJECT_DICT} COREFIR_RECV5 294 ${translated_fir}= Fetch FIR Address Translation Value ${value[0]} EX 295 Disable CPU States Through HOST 296 ${err_log_path}= Catenate ${RAS_LOG_DIR_PATH}corefir_th5 297 Inject Recoverable Error With Threshold Limit Through Host 298 ... ${value[0]} ${value[1]} 5 ${value[2]} ${err_log_path} 299 300Verify Recoverable Callout Handling For CoreFIR With Threshold 1 301 [Documentation] Verify recoverable callout handling for CoreFIR with 302 ... threshold 1. 303 [Tags] Verify_Recoverable_Callout_CoreFIR_Handling_For_With_Threshold_1 304 305 ${value}= Get From Dictionary ${ERROR_INJECT_DICT} COREFIR_RECV1 306 ${translated_fir}= Fetch FIR Address Translation Value ${value[0]} EX 307 Disable CPU States Through HOST 308 ${err_log_path}= Catenate ${RAS_LOG_DIR_PATH}corefir_th1 309 Inject Recoverable Error With Threshold Limit Through Host 310 ... ${value[0]} ${value[1]} 1 ${value[2]} ${err_log_path} 311 312Verify Unrecoverable Callout Handling For CoreFIR 313 [Documentation] Verify unrecoverable callout handling for CoreFIR. 314 [Tags] Verify_Unrecoverable_Callout_Handling_For_CoreFIR 315 316 ${value}= Get From Dictionary ${ERROR_INJECT_DICT} COREFIR_UE 317 ${translated_fir}= Fetch FIR Address Translation Value ${value[0]} EX 318 Disable CPU States Through HOST 319 ${err_log_path}= Catenate ${RAS_LOG_DIR_PATH}corefir_ue 320 Inject Unrecoverable Error Through Host 321 ... ${value[0]} ${value[1]} 1 ${value[2]} ${err_log_path} 322 323Verify Recoverable Callout Handling For EQFIR With Threshold 32 324 [Documentation] Verify recoverable callout handling for L3FIR with 325 ... threshold 32. 326 [Tags] Verify_Recoverable_Callout_Handling_For_EQFIR_With_Threshold_32 327 328 ${value}= Get From Dictionary ${ERROR_INJECT_DICT} EQFIR_RECV32 329 ${translated_fir}= Fetch FIR Address Translation Value ${value[0]} EQ 330 ${err_log_path}= Catenate ${RAS_LOG_DIR_PATH}eqfir_th32 331 Inject Recoverable Error With Threshold Limit Through Host 332 ... ${translated_fir} ${value[1]} 32 ${value[2]} ${err_log_path} 333 334 335*** Keywords *** 336 337Verify And Clear Gard Records On HOST 338 [Documentation] Verify And Clear gard records on HOST. 339 340 ${output}= Gard Operations On OS list 341 Should Not Contain ${output} No GARD 342 Gard Operations On OS clear all 343 344Verify Error Log Entry 345 [Documentation] Verify error log entry & signature description. 346 [Arguments] ${signature_desc} ${log_prefix} 347 # Description of argument(s): 348 # signature_desc Error log signature description. 349 # log_prefix Log path prefix. 350 351 ${resp}= OpenBMC Get Request ${BMC_LOGGING_ENTRY}/list 352 Should Not Be Equal As Strings ${resp.status_code} ${HTTP_NOT_FOUND} 353 354 Collect eSEL Log ${log_prefix} 355 ${error_log_file_path}= Catenate ${log_prefix}esel.txt 356 ${rc} ${output} = Run and Return RC and Output 357 ... grep -i ${signature_desc} ${error_log_file_path} 358 Should Be Equal ${rc} ${0} 359 Should Not Be Empty ${output} 360 361Inject Recoverable Error With Threshold Limit Through Host 362 [Documentation] Inject and verify recoverable error on processor through 363 ... host. 364 ... Test sequence: 365 ... 1. Enable Auto Reboot Setting 366 ... 2. Inject Error on processor/centaur 367 ... 3. Check If HOST is running. 368 ... 4. Verify error log entry & signature description. 369 ... 4. Verify & clear gard records. 370 [Arguments] ${fir} ${chip_address} ${threshold_limit} 371 ... ${signature_desc} ${log_prefix} 372 # Description of argument(s): 373 # fir FIR (Fault isolation register) value (e.g. 2011400). 374 # chip_address Chip address (e.g 2000000000000000). 375 # threshold_limit Threshold limit (e.g 1, 5, 32). 376 # signature_desc Error log signature description. 377 # log_prefix Log path prefix. 378 379 Set Auto Reboot 1 380 Inject Error Through HOST ${fir} ${chip_address} ${threshold_limit} 381 ... ${master_proc_chip} 382 383 Is Host Running 384 ${output}= Gard Operations On OS list 385 Should Contain ${output} No GARD 386 Verify Error Log Entry ${signature_desc} ${log_prefix} 387 388 389Inject Unrecoverable Error Through Host 390 [Documentation] Inject and verify recoverable error on processor through 391 ... host. 392 ... Test sequence: 393 ... 1. Enable Auto Reboot Setting 394 ... 2. Inject Error on processor/centaur 395 ... 3. Check If HOST is rebooted. 396 ... 4. Verify & clear gard records. 397 ... 5. Verify error log entry & signature description. 398 ... 6. Verify & clear dump entry. 399 [Arguments] ${fir} ${chip_address} ${threshold_limit} 400 ... ${signature_desc} ${log_prefix} 401 # Description of argument(s): 402 # fir FIR (Fault isolation register) value (e.g. 2011400). 403 # chip_address Chip address (e.g 2000000000000000). 404 # threshold_limit Threshold limit (e.g 1, 5, 32). 405 # signature_desc Error Log signature description. 406 # (e.g 'mcs(n0p0c0) (MCFIR[0]) mc internal recoverable') 407 # log_prefix Log path prefix. 408 409 Set Auto Reboot 1 410 Inject Error Through HOST ${fir} ${chip_address} ${threshold_limit} 411 ... ${master_proc_chip} 412 Wait Until Keyword Succeeds 500 sec 20 sec Is Host Rebooted 413 Wait for OS 414 Verify And Clear Gard Records On HOST 415 Verify Error Log Entry ${signature_desc} ${log_prefix} 416 ${resp}= OpenBMC Get Request ${DUMP_ENTRY_URI}/list 417 Should Not Be Equal As Strings ${resp.status_code} ${HTTP_NOT_FOUND} 418 Delete All BMC Dump 419 420Fetch FIR Address Translation Value 421 [Documentation] Fetch FIR address translation value through HOST. 422 [Arguments] ${fir} ${target_type} 423 # Description of argument(s): 424 # fir FIR (Fault isolation register) value (e.g. 2011400). 425 # core_id Core ID (e.g. 9). 426 # target_type Target type (e.g. 'EX', 'EQ', 'C'). 427 428 Login To OS Host 429 Copy Address Translation Utils To HOST OS 430 431 # Fetch processor chip IDs. 432 ${proc_chip_id}= Get ProcChipId From OS Processor ${master_proc_chip} 433 # Example output: 434 # 00000000 435 436 ${core_ids}= Get Core IDs From OS ${proc_chip_id[-1]} 437 # Example output: 438 #./probe_cpus.sh | grep 'CHIP ID: 0' | cut -c21-22 439 # ['14', '15', '16', '17'] 440 441 # Ignoring master core ID. 442 ${output}= Get Slice From List ${core_ids} 1 443 # Feth random non-master core ID. 444 ${core_ids_sub_list}= Evaluate random.sample(${core_ids}, 1) random 445 ${core_id}= Get From List ${core_ids_sub_list} 0 446 ${translated_fir_addr}= FIR Address Translation Through HOST 447 ... ${fir} ${core_id} ${target_type} 448 449 [Return] ${translated_fir_addr} 450 451RAS Test SetUp 452 [Documentation] Validates input parameters. 453 454 Should Not Be Empty 455 ... ${OS_HOST} msg=You must provide DNS name/IP of the OS host. 456 Should Not Be Empty 457 ... ${OS_USERNAME} msg=You must provide OS host user name. 458 Should Not Be Empty 459 ... ${OS_PASSWORD} msg=You must provide OS host user password. 460 461 # Boot to OS. 462 REST Power On quiet=${1} 463 # Adding delay after host bring up. 464 Sleep 60s 465 466RAS Suite Setup 467 [Documentation] Create RAS log directory to store all RAS test logs. 468 469 ${RAS_LOG_DIR_PATH}= Catenate ${EXECDIR}/RAS_logs/ 470 Set Suite Variable ${RAS_LOG_DIR_PATH} 471 Set Suite Variable ${master_proc_chip} False 472 473 Create Directory ${RAS_LOG_DIR_PATH} 474 OperatingSystem.Directory Should Exist ${RAS_LOG_DIR_PATH} 475 Empty Directory ${RAS_LOG_DIR_PATH} 476 477 Should Not Be Empty ${ESEL_BIN_PATH} 478 Set Environment Variable PATH %{PATH}:${ESEL_BIN_PATH} 479 480 # Boot to Os. 481 REST Power On quiet=${1} 482 483 # Check Opal-PRD service enabled on host. 484 ${opal_prd_state}= Is Opal-PRD Service Enabled 485 Run Keyword If '${opal_prd_state}' == 'disabled' 486 ... Enable Opal-PRD Service On HOST 487 488RAS Suite Cleanup 489 [Documentation] Perform RAS suite cleanup and verify that host 490 ... boots after test suite run. 491 492 # Boot to OS. 493 REST Power On quiet=${1} 494 Delete Error Logs 495 Gard Operations On OS clear all 496