[coreboot-gerrit] Change in coreboot[master]: drivers/elog/elog.c: Create extended error event

Richard Spiegel (Code Review) gerrit at coreboot.org
Mon Aug 20 22:54:12 CEST 2018


Richard Spiegel has uploaded this change for review. ( https://review.coreboot.org/28246


Change subject: drivers/elog/elog.c: Create extended error event
......................................................................

drivers/elog/elog.c: Create extended error event

For debug reasons, sometimes you not only want to log an error event, but
also some extra information that would help debugging. Create an extended
error reporting event with a dword complement, and define error events for
failing to enter S3 due to pending wake event (one for pm1 and one for gpe0).

BUG=b:111100312
TEST=Add a fake error event, build and boot grunt, see the event in
eventlog.txt.

Change-Id: I3e8df0953db09197d6d8145b0fc1e583379deaa5
Signed-off-by: Richard Spiegel <richard.spiegel at silverbackltd.com>
---
M src/drivers/elog/elog.c
M src/include/elog.h
2 files changed, 28 insertions(+), 1 deletion(-)



  git pull ssh://review.coreboot.org:29418/coreboot refs/changes/46/28246/1

diff --git a/src/drivers/elog/elog.c b/src/drivers/elog/elog.c
index 6fc4053..124b659 100644
--- a/src/drivers/elog/elog.c
+++ b/src/drivers/elog/elog.c
@@ -933,6 +933,17 @@
 	return elog_add_event_raw(ELOG_TYPE_WAKE_SOURCE, &wake, sizeof(wake));
 }
 
+int elog_add_error(u8 type, u32 complement)
+{
+	struct elog_event_extended_error error = {
+		.error_type = type,
+		.error_complement = complement
+	};
+	return elog_add_event_raw(ELOG_TYPE_EXTENDED_ERROR,
+				  &error,
+				  sizeof(error));
+}
+
 /* Make sure elog_init() runs at least once to log System Boot event. */
 static void elog_bs_init(void *unused) { elog_init(); }
 BOOT_STATE_INIT_ENTRY(BS_POST_DEVICE, BS_ON_ENTRY, elog_bs_init, NULL);
diff --git a/src/include/elog.h b/src/include/elog.h
index 0776c36..3b4461b 100644
--- a/src/include/elog.h
+++ b/src/include/elog.h
@@ -115,7 +115,11 @@
 
 /* Sleep/Wake */
 #define ELOG_TYPE_ACPI_ENTER              0x9d
-/* Deep Sx wake variant is provided below - 0xad */
+/*
+ * Deep Sx wake variant is provided below - 0xad
+ * Sleep/wake errors log provided below - 0xb1 - 0x01/0x02
+ */
+
 #define ELOG_TYPE_ACPI_WAKE               0x9e
 #define ELOG_TYPE_WAKE_SOURCE             0x9f
 #define  ELOG_WAKE_SOURCE_PCIE             0x00
@@ -219,6 +223,16 @@
 #define ELOG_TYPE_S0IX_ENTER              0xaf
 #define ELOG_TYPE_S0IX_EXIT               0xb0
 
+/* Extended errors */
+#define ELOG_TYPE_EXTENDED_ERROR	  0xb1
+#define  ELOG_SLEEP_PENDING_PM1_WAKE	   0x01
+#define  ELOG_SLEEP_PENDING_GPE0_WAKE	   0x02
+
+struct elog_event_extended_error {
+	u8 error_type;
+	u32 error_complement;
+} __packed;
+
 #if IS_ENABLED(CONFIG_ELOG)
 /* Eventlog backing storage must be initialized before calling elog_init(). */
 extern int elog_init(void);
@@ -231,6 +245,7 @@
 extern int elog_add_event_dword(u8 event_type, u32 data);
 extern int elog_add_event_wake(u8 source, u32 instance);
 extern int elog_smbios_write_type15(unsigned long *current, int handle);
+extern int elog_add_error(u8 type, u32 complement);
 #else
 /* Stubs to help avoid littering sources with #if CONFIG_ELOG */
 static inline int elog_init(void) { return -1; }
@@ -246,6 +261,7 @@
 						int handle) {
 	return 0;
 }
+static inline int elog_add_error(u8 type, u32 complement) { return 0; }
 #endif
 
 extern u32 gsmi_exec(u8 command, u32 *param);

-- 
To view, visit https://review.coreboot.org/28246
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings

Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I3e8df0953db09197d6d8145b0fc1e583379deaa5
Gerrit-Change-Number: 28246
Gerrit-PatchSet: 1
Gerrit-Owner: Richard Spiegel <richard.spiegel at silverbackltd.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.coreboot.org/pipermail/coreboot-gerrit/attachments/20180820/0c52a05d/attachment.html>


More information about the coreboot-gerrit mailing list