[Skiboot] [PATCH] prd: Enable error logging via firmware_request interface

Roland Veloz rveloz at us.ibm.com
Wed Sep 13 01:33:05 AEST 2017


Sorry for the confusion.  I have two outstanding firmware request changes
out.  Since the ELOG came later, I made it 5.

This is what will be the final numbers:

 HBRT_FW_MSG_HBRT_FSP = 4,
 HBRT_FW_MSG_TYPE_ERROR_LOG = 5,

Roland



From:	Daniel M Crowell/Rochester/IBM
To:	Vasant Hegde <hegdevasant at linux.vnet.ibm.com>, Roland
            Veloz/Austin/Contr/IBM at IBMUS
Cc:	Jeremy Kerr <jk at ozlabs.org>, skiboot at lists.ozlabs.org
Date:	09/11/2017 01:14 PM
Subject:	Re: [PATCH] prd: Enable error logging via firmware_request
            interface


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/20170912/9e9ef07e/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: graycol.gif
Type: image/gif
Size: 105 bytes
Desc: not available
URL: <http://lists.ozlabs.org/pipermail/skiboot/attachments/20170912/9e9ef07e/attachment.gif>


More information about the Skiboot mailing list