[Skiboot] [PATCH] prd: Enable error logging via firmware_request interface
Daniel M Crowell
dcrowell at us.ibm.com
Tue Sep 12 04:14:44 AEST 2017
Roland - Where did we land on the constant? Is it 4 or 5? (latest gerrit
has 5)
+ PRD_FW_MSG_TYPE_ERROR_LOG = 4,
The rest seems fine.
--
Dan Crowell
Senior Software Engineer - Power Systems Enablement Firmware
IBM Rochester: t/l 553-2987
dcrowell at us.ibm.com
From: Vasant Hegde <hegdevasant at linux.vnet.ibm.com>
To: skiboot at lists.ozlabs.org
Cc: Vasant Hegde <hegdevasant at linux.vnet.ibm.com>, Jeremy Kerr
<jk at ozlabs.org>, Daniel M Crowell/Rochester/IBM at IBMUS
Date: 09/11/2017 08:34 AM
Subject: [PATCH] prd: Enable error logging via firmware_request
interface
In P9 HBRT sends error logs to FSP via firmware_request interface.
This patch adds support to parse error log and send it to FSP.
CC: Jeremy Kerr <jk at ozlabs.org>
CC: Daniel M Crowell <dcrowell at us.ibm.com>
Signed-off-by: Vasant Hegde <hegdevasant at linux.vnet.ibm.com>
---
core/hostservices.c | 2 +-
hw/prd.c | 13 +++++++++++++
include/hostservices.h | 1 +
include/prd-fw-msg.h | 13 +++++++++++++
4 files changed, 28 insertions(+), 1 deletion(-)
diff --git a/core/hostservices.c b/core/hostservices.c
index d1f6fda..dd8cae2 100644
--- a/core/hostservices.c
+++ b/core/hostservices.c
@@ -329,7 +329,7 @@ static void hservice_start_elog_send(void)
goto again;
}
-static int hservice_send_error_log(uint32_t plid, uint32_t dsize, void
*data)
+int hservice_send_error_log(uint32_t plid, uint32_t dsize, void *data)
{
struct hbrt_elog_ent *ent;
void *abuf;
diff --git a/hw/prd.c b/hw/prd.c
index d076c19..4db92eb 100644
--- a/hw/prd.c
+++ b/hw/prd.c
@@ -23,6 +23,7 @@
#include <fsp.h>
#include <mem_region.h>
#include <prd-fw-msg.h>
+#include <hostservices.h>
enum events {
EVENT_ATTN = 1 << 0,
@@ -375,6 +376,18 @@ static int prd_msg_handle_firmware_req(struct
opal_prd_msg *msg)
prd_msg->hdr.size =
cpu_to_be16(sizeof(*prd_msg));
rc = 0;
break;
+ case PRD_FW_MSG_TYPE_ERROR_LOG:
+ rc =
hservice_send_error_log(fw_req->errorlog.plid,
+ fw_req->errorlog.size,
+ fw_req->errorlog.data);
+ /* Return generic response to HBRT */
+ fw_resp->type =
cpu_to_be64(PRD_FW_MSG_TYPE_RESP_GENERIC);
+ fw_resp->generic_resp.status =
cpu_to_be64(rc);
+ prd_msg->fw_resp.len =
cpu_to_be64(PRD_FW_MSG_BASE_SIZE +
+ sizeof(fw_resp->generic_resp));
+ prd_msg->hdr.size =
cpu_to_be16(sizeof(*prd_msg));
+ rc = 0;
+ break;
default:
rc = -ENOSYS;
}
diff --git a/include/hostservices.h b/include/hostservices.h
index d6bb3e3..62ef04b 100644
--- a/include/hostservices.h
+++ b/include/hostservices.h
@@ -38,5 +38,6 @@ void host_services_occ_base_setup(void);
int find_master_and_slave_occ(uint64_t **master, uint64_t **slave,
int *nr_masters,
int *nr_slaves);
+int hservice_send_error_log(uint32_t plid, uint32_t dsize, void *data);
#endif /* __HOSTSERVICES_H */
diff --git a/include/prd-fw-msg.h b/include/prd-fw-msg.h
index c00405d..950deb5 100644
--- a/include/prd-fw-msg.h
+++ b/include/prd-fw-msg.h
@@ -26,10 +26,23 @@
enum {
PRD_FW_MSG_TYPE_REQ_NOP = 0,
PRD_FW_MSG_TYPE_RESP_NOP = 1,
+ PRD_FW_MSG_TYPE_RESP_GENERIC = 2,
+ PRD_FW_MSG_TYPE_REQ_HCODE_UPDATE = 3,
+ PRD_FW_MSG_TYPE_ERROR_LOG = 4,
};
struct prd_fw_msg {
__be64 type;
+ union {
+ struct {
+ __be64 status;
+ } generic_resp;
+ struct {
+ __be32 plid;
+ __be32 size;
+ char data[];
+ } __packed errorlog;
+ };
};
#define PRD_FW_MSG_BASE_SIZE sizeof(__be64)
--
2.9.3
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ozlabs.org/pipermail/skiboot/attachments/20170911/f57f873f/attachment.html>
More information about the Skiboot
mailing list