Skip to content

Commit 843f567

Browse files
wc: mb: Replace platform add sel function with common function(Follow #474) (#517)
Summary: - Replace add_sel_evt_record() with common_add_sel_evt_record(). Dependency: #474 Pull Request resolved: #517 Test Plan: - Build Code: PASS Reviewed By: garnermic Differential Revision: D38989051 Pulled By: GoldenBug fbshipit-source-id: dae72716952a7899033301fbf37bc6ac81a10b3e
1 parent c6d4919 commit 843f567

File tree

3 files changed

+41
-107
lines changed

3 files changed

+41
-107
lines changed

meta-facebook/wc-mb/src/ipmi/include/plat_ipmi.h

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,4 @@
44
#include <stdbool.h>
55
#include <stdint.h>
66

7-
typedef struct addsel_msg_t {
8-
uint8_t sensor_type;
9-
uint8_t sensor_number;
10-
uint8_t event_type;
11-
uint8_t event_data1;
12-
uint8_t event_data2;
13-
uint8_t event_data3;
14-
} addsel_msg_t;
15-
16-
bool add_sel_evt_record(addsel_msg_t *sel_msg);
17-
187
#endif

meta-facebook/wc-mb/src/ipmi/plat_ipmi.c

Lines changed: 0 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -7,68 +7,3 @@
77
#include "libutil.h"
88
#include "ipmi.h"
99
#include "plat_ipmb.h"
10-
#include "hal_gpio.h"
11-
12-
bool add_sel_evt_record(addsel_msg_t *sel_msg)
13-
{
14-
ipmb_error status;
15-
ipmi_msg *msg;
16-
uint8_t system_event_record = 0x02; // IPMI spec definition
17-
uint8_t evt_msg_version = 0x04; // IPMI spec definition
18-
static uint16_t record_id = 0x1;
19-
20-
if (sel_msg == NULL) {
21-
printf("sel_msg was passed in as NULL\n");
22-
return false;
23-
}
24-
25-
// According to IPMI spec, record id 0h and FFFFh is reserved for special usage
26-
if ((record_id == 0) || (record_id == 0xFFFF)) {
27-
record_id = 0x1;
28-
}
29-
30-
msg = (ipmi_msg *)malloc(sizeof(ipmi_msg));
31-
if (msg == NULL) {
32-
printf("add_sel_evt_record malloc fail\n");
33-
return false;
34-
}
35-
memset(msg, 0, sizeof(ipmi_msg));
36-
37-
msg->data_len = 16;
38-
msg->InF_source = SELF;
39-
msg->InF_target = BMC_IPMB;
40-
msg->netfn = NETFN_STORAGE_REQ;
41-
msg->cmd = CMD_STORAGE_ADD_SEL;
42-
43-
msg->data[0] = (record_id & 0xFF); // record id byte 0, lsb
44-
msg->data[1] = ((record_id >> 8) & 0xFF); // record id byte 1
45-
msg->data[2] = system_event_record; // record type
46-
msg->data[3] = 0x00; // timestamp, bmc would fill up for bic
47-
msg->data[4] = 0x00; // timestamp, bmc would fill up for bic
48-
msg->data[5] = 0x00; // timestamp, bmc would fill up for bic
49-
msg->data[6] = 0x00; // timestamp, bmc would fill up for bic
50-
msg->data[7] = (SELF_I2C_ADDRESS << 1); // generator id
51-
msg->data[8] = 0x00; // generator id
52-
msg->data[9] = evt_msg_version; // event message format version
53-
msg->data[10] = sel_msg->sensor_type; // sensor type, TBD
54-
msg->data[11] = sel_msg->sensor_number; // sensor number
55-
msg->data[12] = sel_msg->event_type; // event dir/event type
56-
msg->data[13] = sel_msg->event_data1; // sensor data 1
57-
msg->data[14] = sel_msg->event_data2; // sensor data 2
58-
msg->data[15] = sel_msg->event_data3; // sensor data 3
59-
record_id++;
60-
61-
status = ipmb_read(msg, IPMB_inf_index_map[msg->InF_target]);
62-
SAFE_FREE(msg);
63-
64-
switch (status) {
65-
case IPMB_ERROR_FAILURE:
66-
printf("Fail to post msg to txqueue for addsel\n");
67-
return false;
68-
case IPMB_ERROR_GET_MESSAGE_QUEUE:
69-
printf("No response from bmc for addsel\n");
70-
return false;
71-
default:
72-
return true;
73-
}
74-
}

meta-facebook/wc-mb/src/platform/plat_isr.c

Lines changed: 41 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -42,15 +42,16 @@ void send_gpio_interrupt(uint8_t gpio_num)
4242

4343
static void SLP3_handler()
4444
{
45-
addsel_msg_t sel_msg;
45+
common_addsel_msg_t sel_msg;
4646
if ((gpio_get(FM_SLPS3_PLD_N) == GPIO_HIGH) && (gpio_get(PWRGD_SYS_PWROK) == GPIO_LOW)) {
47+
sel_msg.InF_target = BMC_IPMB;
4748
sel_msg.sensor_type = IPMI_OEM_SENSOR_TYPE_SYS_STA;
4849
sel_msg.event_type = IPMI_EVENT_TYPE_SENSOR_SPECIFIC;
4950
sel_msg.sensor_number = SENSOR_NUM_SYSTEM_STATUS;
5051
sel_msg.event_data1 = IPMI_OEM_EVENT_OFFSET_SYS_VRWATCHDOG;
5152
sel_msg.event_data2 = 0xFF;
5253
sel_msg.event_data3 = 0xFF;
53-
if (!add_sel_evt_record(&sel_msg)) {
54+
if (!common_add_sel_evt_record(&sel_msg)) {
5455
printf("VR watchdog timeout addsel fail\n");
5556
}
5657
}
@@ -103,14 +104,15 @@ void ISR_DC_ON()
103104

104105
if ((gpio_get(FM_SLPS3_PLD_N) == GPIO_HIGH) &&
105106
(gpio_get(RST_RSMRST_BMC_N) == GPIO_HIGH)) {
106-
addsel_msg_t sel_msg;
107+
common_addsel_msg_t sel_msg;
108+
sel_msg.InF_target = BMC_IPMB;
107109
sel_msg.sensor_type = IPMI_OEM_SENSOR_TYPE_OEM_C3;
108110
sel_msg.event_type = IPMI_EVENT_TYPE_SENSOR_SPECIFIC;
109111
sel_msg.sensor_number = SENSOR_NUM_POWER_ERROR;
110112
sel_msg.event_data1 = IPMI_OEM_EVENT_OFFSET_SYS_PWROK_FAIL;
111113
sel_msg.event_data2 = 0xFF;
112114
sel_msg.event_data3 = 0xFF;
113-
if (!add_sel_evt_record(&sel_msg)) {
115+
if (!common_add_sel_evt_record(&sel_msg)) {
114116
printf("System PWROK failure addsel fail\n");
115117
}
116118
}
@@ -126,18 +128,18 @@ static void PROC_FAIL_handler(struct k_work *work)
126128
{
127129
/* if have not received kcs and post code, add FRB3 event log. */
128130
if ((get_kcs_ok() == false) && (get_postcode_ok() == false)) {
129-
addsel_msg_t sel_msg;
131+
common_addsel_msg_t sel_msg;
130132
bool ret = false;
131133

132-
memset(&sel_msg, 0, sizeof(addsel_msg_t));
133-
134+
memset(&sel_msg, 0, sizeof(common_addsel_msg_t));
135+
sel_msg.InF_target = BMC_IPMB;
134136
sel_msg.sensor_type = IPMI_SENSOR_TYPE_PROCESSOR;
135137
sel_msg.sensor_number = SENSOR_NUM_PROC_FAIL;
136138
sel_msg.event_type = IPMI_EVENT_TYPE_SENSOR_SPECIFIC;
137139
sel_msg.event_data1 = IPMI_EVENT_OFFSET_PROCESSOR_FRB3;
138140
sel_msg.event_data2 = 0xFF;
139141
sel_msg.event_data3 = 0xFF;
140-
ret = add_sel_evt_record(&sel_msg);
142+
ret = common_add_sel_evt_record(&sel_msg);
141143
if (!ret) {
142144
printf("Fail to assert FRE3 event log.\n");
143145
}
@@ -170,11 +172,11 @@ void ISR_PWRGD_CPU()
170172
static void CAT_ERR_handler(struct k_work *work)
171173
{
172174
if ((gpio_get(RST_PLTRST_BIC_N) == GPIO_HIGH) || (gpio_get(PWRGD_SYS_PWROK) == GPIO_HIGH)) {
173-
addsel_msg_t sel_msg;
175+
common_addsel_msg_t sel_msg;
174176
bool ret = false;
175177

176-
memset(&sel_msg, 0, sizeof(addsel_msg_t));
177-
178+
memset(&sel_msg, 0, sizeof(common_addsel_msg_t));
179+
sel_msg.InF_target = BMC_IPMB;
178180
sel_msg.sensor_type = IPMI_SENSOR_TYPE_PROCESSOR;
179181
sel_msg.sensor_number = SENSOR_NUM_CATERR;
180182
sel_msg.event_type = IPMI_EVENT_TYPE_SENSOR_SPECIFIC;
@@ -186,7 +188,7 @@ static void CAT_ERR_handler(struct k_work *work)
186188
}
187189
sel_msg.event_data2 = 0xFF;
188190
sel_msg.event_data3 = 0xFF;
189-
ret = add_sel_evt_record(&sel_msg);
191+
ret = common_add_sel_evt_record(&sel_msg);
190192
if (!ret) {
191193
printf("Fail to assert CatErr event log.\n");
192194
}
@@ -218,27 +220,28 @@ void ISR_DBP_PRSNT()
218220

219221
void ISR_FM_THROTTLE()
220222
{
221-
addsel_msg_t sel_msg;
223+
common_addsel_msg_t sel_msg;
222224
if (gpio_get(PWRGD_CPU_LVC3) == GPIO_HIGH) {
223225
if (gpio_get(FM_THROTTLE_R_N) == GPIO_HIGH) {
224226
sel_msg.event_type = IPMI_OEM_EVENT_TYPE_DEASSART;
225227
} else {
226228
sel_msg.event_type = IPMI_EVENT_TYPE_SENSOR_SPECIFIC;
227229
}
230+
sel_msg.InF_target = BMC_IPMB;
228231
sel_msg.sensor_type = IPMI_OEM_SENSOR_TYPE_SYS_STA;
229232
sel_msg.sensor_number = SENSOR_NUM_SYSTEM_STATUS;
230233
sel_msg.event_data1 = IPMI_OEM_EVENT_OFFSET_SYS_FMTHROTTLE;
231234
sel_msg.event_data2 = 0xFF;
232235
sel_msg.event_data3 = 0xFF;
233-
if (!add_sel_evt_record(&sel_msg)) {
236+
if (!common_add_sel_evt_record(&sel_msg)) {
234237
printf("FM Throttle addsel fail\n");
235238
}
236239
}
237240
}
238241

239242
void ISR_HSC_THROTTLE()
240243
{
241-
addsel_msg_t sel_msg;
244+
common_addsel_msg_t sel_msg;
242245
static bool is_hsc_throttle_assert = false; // Flag for filt out fake alert
243246
if (gpio_get(RST_RSMRST_BMC_N) == GPIO_HIGH) {
244247
if ((gpio_get(PWRGD_SYS_PWROK) == GPIO_LOW) &&
@@ -256,13 +259,13 @@ void ISR_HSC_THROTTLE()
256259
} else { // Fake alert
257260
return;
258261
}
259-
262+
sel_msg.InF_target = BMC_IPMB;
260263
sel_msg.sensor_type = IPMI_OEM_SENSOR_TYPE_SYS_STA;
261264
sel_msg.sensor_number = SENSOR_NUM_SYSTEM_STATUS;
262265
sel_msg.event_data1 = IPMI_OEM_EVENT_OFFSET_SYS_PMBUSALERT;
263266
sel_msg.event_data2 = 0xFF;
264267
sel_msg.event_data3 = 0xFF;
265-
if (!add_sel_evt_record(&sel_msg)) {
268+
if (!common_add_sel_evt_record(&sel_msg)) {
266269
printf("HSC Throttle addsel fail\n");
267270
}
268271
}
@@ -276,20 +279,21 @@ void ISR_MB_THROTTLE()
276279

277280
void ISR_SOC_THMALTRIP()
278281
{
279-
addsel_msg_t sel_msg;
282+
common_addsel_msg_t sel_msg;
280283
if (gpio_get(RST_PLTRST_PLD_N) == GPIO_HIGH) {
281284
if (gpio_get(H_CPU_MEMTRIP_LVC3_N) ==
282285
GPIO_HIGH) { // Reference pin for memory thermal trip event
283286
sel_msg.event_data1 = IPMI_OEM_EVENT_OFFSET_SYS_THERMAL_TRIP;
284287
} else {
285288
sel_msg.event_data1 = IPMI_OEM_EVENT_OFFSET_SYS_MEMORY_THERMALTRIP;
286289
}
290+
sel_msg.InF_target = BMC_IPMB;
287291
sel_msg.event_type = IPMI_EVENT_TYPE_SENSOR_SPECIFIC;
288292
sel_msg.sensor_type = IPMI_OEM_SENSOR_TYPE_SYS_STA;
289293
sel_msg.sensor_number = SENSOR_NUM_SYSTEM_STATUS;
290294
sel_msg.event_data2 = 0xFF;
291295
sel_msg.event_data3 = 0xFF;
292-
if (!add_sel_evt_record(&sel_msg)) {
296+
if (!common_add_sel_evt_record(&sel_msg)) {
293297
if (sel_msg.event_data1 == IPMI_OEM_EVENT_OFFSET_SYS_THERMAL_TRIP) {
294298
printf("SOC Thermal trip addsel fail\n");
295299
} else {
@@ -301,27 +305,28 @@ void ISR_SOC_THMALTRIP()
301305

302306
void ISR_SYS_THROTTLE()
303307
{
304-
addsel_msg_t sel_msg;
308+
common_addsel_msg_t sel_msg;
305309
if ((gpio_get(RST_PLTRST_PLD_N) == GPIO_HIGH) && (gpio_get(PWRGD_SYS_PWROK) == GPIO_HIGH)) {
306310
if (gpio_get(FM_CPU_BIC_PROCHOT_LVT3_N) == GPIO_HIGH) {
307311
sel_msg.event_type = IPMI_OEM_EVENT_TYPE_DEASSART;
308312
} else {
309313
sel_msg.event_type = IPMI_EVENT_TYPE_SENSOR_SPECIFIC;
310314
}
315+
sel_msg.InF_target = BMC_IPMB;
311316
sel_msg.sensor_type = IPMI_OEM_SENSOR_TYPE_SYS_STA;
312317
sel_msg.sensor_number = SENSOR_NUM_SYSTEM_STATUS;
313318
sel_msg.event_data1 = IPMI_OEM_EVENT_OFFSET_SYS_THROTTLE;
314319
sel_msg.event_data2 = 0xFF;
315320
sel_msg.event_data3 = 0xFF;
316-
if (!add_sel_evt_record(&sel_msg)) {
321+
if (!common_add_sel_evt_record(&sel_msg)) {
317322
printf("System Throttle addsel fail\n");
318323
}
319324
}
320325
}
321326

322327
void ISR_PCH_THMALTRIP()
323328
{
324-
addsel_msg_t sel_msg;
329+
common_addsel_msg_t sel_msg;
325330
static bool is_pch_assert = 0;
326331
if (gpio_get(FM_PCHHOT_N) == GPIO_LOW) {
327332
if ((gpio_get(RST_PLTRST_PLD_N) == GPIO_HIGH) && (get_post_status() == true) &&
@@ -335,12 +340,13 @@ void ISR_PCH_THMALTRIP()
335340
} else {
336341
return;
337342
}
343+
sel_msg.InF_target = BMC_IPMB;
338344
sel_msg.sensor_type = IPMI_OEM_SENSOR_TYPE_SYS_STA;
339345
sel_msg.sensor_number = SENSOR_NUM_SYSTEM_STATUS;
340346
sel_msg.event_data1 = IPMI_OEM_EVENT_OFFSET_SYS_PCHHOT;
341347
sel_msg.event_data2 = 0xFF;
342348
sel_msg.event_data3 = 0xFF;
343-
if (!add_sel_evt_record(&sel_msg)) {
349+
if (!common_add_sel_evt_record(&sel_msg)) {
344350
printf("PCH Thermal trip addsel fail\n");
345351
}
346352
}
@@ -352,55 +358,58 @@ void ISR_HSC_OC()
352358

353359
void ISR_CPU_MEMHOT()
354360
{
355-
addsel_msg_t sel_msg;
361+
common_addsel_msg_t sel_msg;
356362
if ((gpio_get(RST_PLTRST_PLD_N) == GPIO_HIGH) && (gpio_get(PWRGD_SYS_PWROK) == GPIO_HIGH)) {
357363
if (gpio_get(H_CPU0_MEMHOT_OUT_LVC3_N) == GPIO_HIGH) {
358364
sel_msg.event_type = IPMI_OEM_EVENT_TYPE_DEASSART;
359365
} else {
360366
sel_msg.event_type = IPMI_EVENT_TYPE_SENSOR_SPECIFIC;
361367
}
368+
sel_msg.InF_target = BMC_IPMB;
362369
sel_msg.sensor_type = IPMI_OEM_SENSOR_TYPE_CPU_DIMM_HOT;
363370
sel_msg.sensor_number = SENSOR_NUM_CPUDIMM_HOT;
364371
sel_msg.event_data1 = IPMI_OEM_EVENT_OFFSET_DIMM_HOT;
365372
sel_msg.event_data2 = 0xFF;
366373
sel_msg.event_data3 = 0xFF;
367-
if (!add_sel_evt_record(&sel_msg)) {
374+
if (!common_add_sel_evt_record(&sel_msg)) {
368375
printf("CPU MEM HOT addsel fail\n");
369376
}
370377
}
371378
}
372379

373380
void ISR_CPUVR_HOT()
374381
{
375-
addsel_msg_t sel_msg;
382+
common_addsel_msg_t sel_msg;
376383
if ((gpio_get(RST_PLTRST_PLD_N) == GPIO_HIGH) && (gpio_get(PWRGD_SYS_PWROK) == GPIO_HIGH)) {
377384
if (gpio_get(IRQ_CPU0_VRHOT_N) == GPIO_HIGH) {
378385
sel_msg.event_type = IPMI_OEM_EVENT_TYPE_DEASSART;
379386
} else {
380387
sel_msg.event_type = IPMI_EVENT_TYPE_SENSOR_SPECIFIC;
381388
}
389+
sel_msg.InF_target = BMC_IPMB;
382390
sel_msg.sensor_type = IPMI_OEM_SENSOR_TYPE_CPU_DIMM_VR_HOT;
383391
sel_msg.sensor_number = SENSOR_NUM_VR_HOT;
384392
sel_msg.event_data1 = IPMI_OEM_EVENT_OFFSET_CPU_VR_HOT;
385393
sel_msg.event_data2 = 0xFF;
386394
sel_msg.event_data3 = 0xFF;
387-
if (!add_sel_evt_record(&sel_msg)) {
395+
if (!common_add_sel_evt_record(&sel_msg)) {
388396
printf("CPU VR HOT addsel fail\n");
389397
}
390398
}
391399
}
392400

393401
void ISR_PCH_PWRGD()
394402
{
395-
addsel_msg_t sel_msg;
403+
common_addsel_msg_t sel_msg;
396404
if (gpio_get(FM_SLPS3_PLD_N) == GPIO_HIGH) {
405+
sel_msg.InF_target = BMC_IPMB;
397406
sel_msg.sensor_type = IPMI_OEM_SENSOR_TYPE_OEM_C3;
398407
sel_msg.event_type = IPMI_EVENT_TYPE_SENSOR_SPECIFIC;
399408
sel_msg.sensor_number = SENSOR_NUM_POWER_ERROR;
400409
sel_msg.event_data1 = IPMI_OEM_EVENT_OFFSET_PCH_PWROK_FAIL;
401410
sel_msg.event_data2 = 0xFF;
402411
sel_msg.event_data3 = 0xFF;
403-
if (!add_sel_evt_record(&sel_msg)) {
412+
if (!common_add_sel_evt_record(&sel_msg)) {
404413
printf("PCH PWROK failure addsel fail\n");
405414
}
406415
}
@@ -409,14 +418,15 @@ void ISR_PCH_PWRGD()
409418
void ISR_RMCA()
410419
{
411420
if ((gpio_get(RST_PLTRST_BIC_N) == GPIO_HIGH) || (gpio_get(PWRGD_CPU_LVC3) == GPIO_HIGH)) {
412-
addsel_msg_t sel_msg;
421+
common_addsel_msg_t sel_msg;
422+
sel_msg.InF_target = BMC_IPMB;
413423
sel_msg.sensor_type = IPMI_SENSOR_TYPE_PROCESSOR;
414424
sel_msg.event_type = IPMI_EVENT_TYPE_SENSOR_SPECIFIC;
415425
sel_msg.sensor_number = SENSOR_NUM_RMCA;
416426
sel_msg.event_data1 = IPMI_OEM_EVENT_OFFSET_MEM_RMCA;
417427
sel_msg.event_data2 = 0xFF;
418428
sel_msg.event_data3 = 0xFF;
419-
if (!add_sel_evt_record(&sel_msg)) {
429+
if (!common_add_sel_evt_record(&sel_msg)) {
420430
printf("RMCA addsel fail\n");
421431
}
422432
}

0 commit comments

Comments
 (0)