blob: aeda08b771c666cdfe60a280c79cc39762e23df7 [file] [log] [blame]
Sridevi Ramesh0c8c4ce2017-02-11 01:28:36 -06001*** Settings ***
2Documentation This module is for OS checkstop opertions.
3Resource ../../lib/rest_client.robot
4Resource ../../lib/utils.robot
George Keishing87567432017-10-24 03:48:13 -05005Variables ../../lib/ras/variables.py
6Library ../../lib/bmc_ssh_utils.py
Sridevi Ramesh0c8c4ce2017-02-11 01:28:36 -06007Library OperatingSystem
Sridevi Ramesh70978ed2017-11-22 23:56:50 -06008Library ../../lib/gen_print.py
9Library ../../lib/gen_robot_print.py
Sridevi Ramesh0c8c4ce2017-02-11 01:28:36 -060010
11*** Keywords ***
12
13Getscom Operations On OS
Sridevi Rameshea36b412017-03-09 04:08:02 -060014 [Documentation] Executes getscom command on OS with the given
15 ... input command.
Sridevi Ramesh0c8c4ce2017-02-11 01:28:36 -060016 [Arguments] ${input_cmd}
Sridevi Rameshea36b412017-03-09 04:08:02 -060017 # Description of arguments:
18 # input_cmd -l|--list-chips
Sridevi Ramesh0c8c4ce2017-02-11 01:28:36 -060019 # -c|--chip <chip-id> <addr>
20
Sridevi Ramesh0d88ab32017-09-21 11:07:28 -050021 ${output} ${stderr} ${rc}= OS Execute Command getscom ${input_cmd}
Sridevi Ramesh0c8c4ce2017-02-11 01:28:36 -060022 [Return] ${output}
23
24Gard Operations On OS
Sridevi Rameshea36b412017-03-09 04:08:02 -060025 [Documentation] Executes opal-gard command on OS with the given
26 ... input command.
Sridevi Ramesh0c8c4ce2017-02-11 01:28:36 -060027 [Arguments] ${input_cmd}
Sridevi Rameshea36b412017-03-09 04:08:02 -060028 # Description of arguments:
29 # input_cmd list/clear all/show <gard_record_id>
Sridevi Ramesh0c8c4ce2017-02-11 01:28:36 -060030
Sridevi Ramesh0d88ab32017-09-21 11:07:28 -050031 ${output} ${stderr} ${rc}= OS Execute Command opal-gard ${input_cmd}
Sridevi Ramesh0c8c4ce2017-02-11 01:28:36 -060032 [Return] ${output}
33
Sridevi Ramesh0d88ab32017-09-21 11:07:28 -050034Putscom Operations On OS
Sridevi Rameshea36b412017-03-09 04:08:02 -060035 [Documentation] Executes putscom command on OS with the given
36 ... input arguments.
Sridevi Ramesh0d88ab32017-09-21 11:07:28 -050037 [Arguments] ${proc_chip_id} ${fru} ${address}
Sridevi Rameshea36b412017-03-09 04:08:02 -060038 # Description of arguments:
Sridevi Ramesh0d88ab32017-09-21 11:07:28 -050039 # proc_chip_id Processor ID (e.g '0', '8').
Sridevi Rameshea36b412017-03-09 04:08:02 -060040 # fru FRU value (e.g. 2011400).
Sridevi Ramesh0d88ab32017-09-21 11:07:28 -050041 # address Chip address (e.g 4000000000000000).
Sridevi Ramesh0c8c4ce2017-02-11 01:28:36 -060042
Sridevi Ramesh0d88ab32017-09-21 11:07:28 -050043 ${cmd}= Catenate putscom -c 0x${proc_chip_id} 0x${fru} 0x${address}
Sridevi Ramesh0c8c4ce2017-02-11 01:28:36 -060044 Start Command ${cmd}
Sridevi Rameshea36b412017-03-09 04:08:02 -060045
Sridevi Ramesh0d88ab32017-09-21 11:07:28 -050046Get ProcChipId From OS
47 [Documentation] Get processor chip ID values based on the input.
Sridevi Rameshcf4507c2017-10-26 04:13:50 -050048 [Arguments] ${chip_type} ${master_proc_chip}
Sridevi Rameshea36b412017-03-09 04:08:02 -060049 # Description of arguments:
Sridevi Rameshcf4507c2017-10-26 04:13:50 -050050 # chip_type The chip type (Processor/Centaur).
51 # master_proc_chip Processor chip type ('True' or 'False').
Sridevi Rameshea36b412017-03-09 04:08:02 -060052
53 ${cmd}= Catenate -l | grep -i ${chip_type} | cut -c1-8
Sridevi Ramesh0d88ab32017-09-21 11:07:28 -050054 ${proc_chip_id}= Getscom Operations On OS ${cmd}
55 # Example output:
Sridevi Rameshcf4507c2017-10-26 04:13:50 -050056 # getscom -l | grep processor | cut -c1-8
57 # 00000008 - False
58 # 00000000 - True
59
60 ${proc_ids}= Split String ${proc_chip_id}
61 ${proc_id}= Run Keyword If '${master_proc_chip}' == 'True'
62 \ ... Get From List ${proc_ids} 1
63 \ ... ELSE Get From List ${proc_ids} 0
64
65 # Example output:
Sridevi Ramesh0d88ab32017-09-21 11:07:28 -050066 # 00000008
Sridevi Rameshcf4507c2017-10-26 04:13:50 -050067 [Return] ${proc_id}
Sridevi Ramesh0d88ab32017-09-21 11:07:28 -050068
69Get Core IDs From OS
70 [Documentation] Get Core IDs corresponding to the input processor chip ID.
71 [Arguments] ${proc_chip_id}
72 # Description of argument(s):
73 # proc_chip_id Processor ID (e.g '0', '8').
74
75 ${cmd}= Catenate set -o pipefail ; ${probe_cpu_file_path}
76 ... | grep -i 'CHIP ID: ${proc_chip_id}' | cut -c21-22
77 ${output} ${stderr} ${rc}= OS Execute Command ${cmd}
Sridevi Ramesh0d88ab32017-09-21 11:07:28 -050078 ${core_ids}= Split String ${output}
79 # Example output:
80 # ['2', '3', '4', '5', '6']
81 [Return] ${core_ids}
82
83FIR Address Translation Through HOST
84 [Documentation] Do FIR address translation through host for given FIR,
85 ... core value & target type.
86 [Arguments] ${fir} ${core_id} ${target_type}
87 # Description of argument(s):
88 # fir FIR (Fault isolation register) value (e.g. 2011400).
89 # core_id Core ID (e.g. 9).
90 # target_type Target type (e.g. 'EQ', 'EX', 'C').
91
92 ${cmd}= Catenate set -o pipefail ; ${addr_translation_file_path} ${fir}
93 ... ${core_id} | grep -i ${target_type}
94 ${output} ${stderr} ${rc}= OS Execute Command ${cmd}
Sridevi Ramesh0d88ab32017-09-21 11:07:28 -050095 ${translated_addr}= Split String ${output} :${SPACE}0x
96 # Example output:
97 # 0x10010c00
98 [Return] ${translated_addr[1]}
George Keishinge7dc4472017-10-30 08:58:37 -050099
George Keishinge7dc4472017-10-30 08:58:37 -0500100Inject Error Through HOST
101 [Documentation] Inject checkstop on processor through HOST.
102 ... Test sequence:
103 ... 1. Boot To HOST
104 ... 2. Clear any existing gard records
105 ... 3. Inject Error on processor/centaur
106 [Arguments] ${fir} ${chip_address} ${threshold_limit}
Sridevi Rameshcf4507c2017-10-26 04:13:50 -0500107 ... ${master_proc_chip}=True
George Keishinge7dc4472017-10-30 08:58:37 -0500108 # Description of argument(s):
109 # fir FIR (Fault isolation register) value (e.g. 2011400).
110 # chip_address chip address (e.g 2000000000000000).
111 # threshold_limit Threshold limit (e.g 1, 5, 32).
Sridevi Rameshcf4507c2017-10-26 04:13:50 -0500112 # master_proc_chip Processor chip type (True' or 'False').
George Keishinge7dc4472017-10-30 08:58:37 -0500113
114 Delete Error Logs
115 Login To OS Host
116 Gard Operations On OS clear all
117
118 # Fetch processor chip IDs.
Sridevi Rameshcf4507c2017-10-26 04:13:50 -0500119 ${proc_chip_id}= Get ProcChipId From OS Processor ${master_proc_chip}
George Keishinge7dc4472017-10-30 08:58:37 -0500120
121 ${threshold_limit}= Convert To Integer ${threshold_limit}
122 :FOR ${i} IN RANGE ${threshold_limit}
Sridevi Rameshcf4507c2017-10-26 04:13:50 -0500123 \ Run Keyword Putscom Operations On OS ${proc_chip_id} ${fir}
124 ... ${chip_address}
George Keishinge7dc4472017-10-30 08:58:37 -0500125 # Adding delay after each error injection.
126 \ Sleep 10s
127 # Adding delay to get error log after error injection.
128 Sleep 120s
129
George Keishinge7dc4472017-10-30 08:58:37 -0500130Code Update Unrecoverable Error Inject
131 [Documentation] Inject UE MCACALFIR checkstop on processor through
132 ... host during PNOR code update.
133
134 Inject Error Through HOST 05010800 4000000000000000 1
Sridevi Ramesh70978ed2017-11-22 23:56:50 -0600135
136Disable CPU States Through HOST
137 [Documentation] Disable CPU states through host.
138
Sridevi Rameshebe84e02018-03-13 06:52:48 -0500139 # Fetch number of states present for cpu0.
140 ${cmd}= Catenate ls /sys/devices/system/cpu/cpu0/cpuidle|grep state|wc -l
Sridevi Ramesh70978ed2017-11-22 23:56:50 -0600141 ${output} ${stderr} ${rc}= OS Execute Command ${cmd}
Sridevi Rameshebe84e02018-03-13 06:52:48 -0500142 ${no_of_states}= Convert To Integer ${output}
143
144 # Disable state for all cpus.
145 :FOR ${i} IN RANGE ${no_of_states}
146 \ ${cmd}= Catenate SEPARATOR= for file_path in /sys/devices/system/cpu/
147 ... cpu*/cpuidle/state${i}/disable; do echo 1 > $file_path; done
148 \ ${output} ${stderr} ${rc}= Run Keyword OS Execute Command ${cmd}