<p>Richard Spiegel has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/28246">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">drivers/elog/elog.c: Create extended error event<br><br>For debug reasons, sometimes you not only want to log an error event, but<br>also some extra information that would help debugging. Create an extended<br>error reporting event with a dword complement, and define error events for<br>failing to enter S3 due to pending wake event (one for pm1 and one for gpe0).<br><br>BUG=b:111100312<br>TEST=Add a fake error event, build and boot grunt, see the event in<br>eventlog.txt.<br><br>Change-Id: I3e8df0953db09197d6d8145b0fc1e583379deaa5<br>Signed-off-by: Richard Spiegel <richard.spiegel@silverbackltd.com><br>---<br>M src/drivers/elog/elog.c<br>M src/include/elog.h<br>2 files changed, 28 insertions(+), 1 deletion(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/coreboot refs/changes/46/28246/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/drivers/elog/elog.c b/src/drivers/elog/elog.c</span><br><span>index 6fc4053..124b659 100644</span><br><span>--- a/src/drivers/elog/elog.c</span><br><span>+++ b/src/drivers/elog/elog.c</span><br><span>@@ -933,6 +933,17 @@</span><br><span>         return elog_add_event_raw(ELOG_TYPE_WAKE_SOURCE, &wake, sizeof(wake));</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+int elog_add_error(u8 type, u32 complement)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+   struct elog_event_extended_error error = {</span><br><span style="color: hsl(120, 100%, 40%);">+            .error_type = type,</span><br><span style="color: hsl(120, 100%, 40%);">+           .error_complement = complement</span><br><span style="color: hsl(120, 100%, 40%);">+        };</span><br><span style="color: hsl(120, 100%, 40%);">+    return elog_add_event_raw(ELOG_TYPE_EXTENDED_ERROR,</span><br><span style="color: hsl(120, 100%, 40%);">+                             &error,</span><br><span style="color: hsl(120, 100%, 40%);">+                           sizeof(error));</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* Make sure elog_init() runs at least once to log System Boot event. */</span><br><span> static void elog_bs_init(void *unused) { elog_init(); }</span><br><span> BOOT_STATE_INIT_ENTRY(BS_POST_DEVICE, BS_ON_ENTRY, elog_bs_init, NULL);</span><br><span>diff --git a/src/include/elog.h b/src/include/elog.h</span><br><span>index 0776c36..3b4461b 100644</span><br><span>--- a/src/include/elog.h</span><br><span>+++ b/src/include/elog.h</span><br><span>@@ -115,7 +115,11 @@</span><br><span> </span><br><span> /* Sleep/Wake */</span><br><span> #define ELOG_TYPE_ACPI_ENTER              0x9d</span><br><span style="color: hsl(0, 100%, 40%);">-/* Deep Sx wake variant is provided below - 0xad */</span><br><span style="color: hsl(120, 100%, 40%);">+/*</span><br><span style="color: hsl(120, 100%, 40%);">+ * Deep Sx wake variant is provided below - 0xad</span><br><span style="color: hsl(120, 100%, 40%);">+ * Sleep/wake errors log provided below - 0xb1 - 0x01/0x02</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> #define ELOG_TYPE_ACPI_WAKE               0x9e</span><br><span> #define ELOG_TYPE_WAKE_SOURCE             0x9f</span><br><span> #define  ELOG_WAKE_SOURCE_PCIE             0x00</span><br><span>@@ -219,6 +223,16 @@</span><br><span> #define ELOG_TYPE_S0IX_ENTER              0xaf</span><br><span> #define ELOG_TYPE_S0IX_EXIT               0xb0</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* Extended errors */</span><br><span style="color: hsl(120, 100%, 40%);">+#define ELOG_TYPE_EXTENDED_ERROR         0xb1</span><br><span style="color: hsl(120, 100%, 40%);">+#define  ELOG_SLEEP_PENDING_PM1_WAKE       0x01</span><br><span style="color: hsl(120, 100%, 40%);">+#define  ELOG_SLEEP_PENDING_GPE0_WAKE     0x02</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+struct elog_event_extended_error {</span><br><span style="color: hsl(120, 100%, 40%);">+ u8 error_type;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 error_complement;</span><br><span style="color: hsl(120, 100%, 40%);">+} __packed;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> #if IS_ENABLED(CONFIG_ELOG)</span><br><span> /* Eventlog backing storage must be initialized before calling elog_init(). */</span><br><span> extern int elog_init(void);</span><br><span>@@ -231,6 +245,7 @@</span><br><span> extern int elog_add_event_dword(u8 event_type, u32 data);</span><br><span> extern int elog_add_event_wake(u8 source, u32 instance);</span><br><span> extern int elog_smbios_write_type15(unsigned long *current, int handle);</span><br><span style="color: hsl(120, 100%, 40%);">+extern int elog_add_error(u8 type, u32 complement);</span><br><span> #else</span><br><span> /* Stubs to help avoid littering sources with #if CONFIG_ELOG */</span><br><span> static inline int elog_init(void) { return -1; }</span><br><span>@@ -246,6 +261,7 @@</span><br><span>                                          int handle) {</span><br><span>        return 0;</span><br><span> }</span><br><span style="color: hsl(120, 100%, 40%);">+static inline int elog_add_error(u8 type, u32 complement) { return 0; }</span><br><span> #endif</span><br><span> </span><br><span> extern u32 gsmi_exec(u8 command, u32 *param);</span><br><span></span><br></pre><p>To view, visit <a href="https://review.coreboot.org/28246">change 28246</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://review.coreboot.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://review.coreboot.org/28246"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: coreboot </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I3e8df0953db09197d6d8145b0fc1e583379deaa5 </div>
<div style="display:none"> Gerrit-Change-Number: 28246 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Richard Spiegel <richard.spiegel@silverbackltd.com> </div>