@@ -73,6 +73,11 @@ struct errorlog *opal_elog_create(struct opal_err_info *e_info, uint32_t tag)
return buf;
}
+void log_mark_serviceable(struct errorlog *buf)
+{
+ buf->service_req = true;
+}
+
/* Add a new user data section to an existing error log */
void log_add_section(struct errorlog *buf, uint32_t tag)
{
@@ -160,6 +160,9 @@ static void create_user_header_section(struct errorlog *elog_data,
else
usrhdr->action_flags = cpu_to_be16(ERRL_ACTION_NONE);
+ if (elog_data->service_req)
+ usrhdr->action_flags |= ERRL_ACTION_SERVICE;
+
*pel_offset += USER_HEADER_SECTION_SIZE;
}
@@ -124,6 +124,7 @@ struct errorlog {
uint32_t plid;
uint32_t log_size;
uint64_t elog_timeout;
+ bool service_req;
char user_data_dump[OPAL_LOG_MAX_DUMP];
struct list_node link;
@@ -350,6 +351,7 @@ void log_append_data(struct errorlog *buf, unsigned char *data, uint16_t size);
void log_append_msg(struct errorlog *buf,
const char *fmt, ...) __attribute__ ((format (printf, 2, 3)));
void log_commit(struct errorlog *elog);
+void log_mark_serviceable(struct errorlog *buf);
/* Called by the backend after an error has been logged by the
* backend. If the error could not be logged successfully success is
@@ -38,6 +38,7 @@
/* Error log reporting action */
#define ERRL_ACTION_REPORT 0x2000
+#define ERRL_ACTION_SERVICE 0x8000
#define ERRL_ACTION_NONE 0x0000
enum elogSectionId {