|
@@ -68,9 +68,25 @@ void pstore_set_kmsg_bytes(int bytes)
|
|
|
/* Tag each group of saved records with a sequence number */
|
|
|
static int oopscount;
|
|
|
|
|
|
-static char *reason_str[] = {
|
|
|
- "Oops", "Panic", "Kexec", "Restart", "Halt", "Poweroff", "Emergency"
|
|
|
-};
|
|
|
+static const char *get_reason_str(enum kmsg_dump_reason reason)
|
|
|
+{
|
|
|
+ switch (reason) {
|
|
|
+ case KMSG_DUMP_PANIC:
|
|
|
+ return "Panic";
|
|
|
+ case KMSG_DUMP_OOPS:
|
|
|
+ return "Oops";
|
|
|
+ case KMSG_DUMP_EMERG:
|
|
|
+ return "Emergency";
|
|
|
+ case KMSG_DUMP_RESTART:
|
|
|
+ return "Restart";
|
|
|
+ case KMSG_DUMP_HALT:
|
|
|
+ return "Halt";
|
|
|
+ case KMSG_DUMP_POWEROFF:
|
|
|
+ return "Poweroff";
|
|
|
+ default:
|
|
|
+ return "Unknown";
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
/*
|
|
|
* callback from kmsg_dump. (s2,l2) has the most recently
|
|
@@ -85,17 +101,15 @@ static void pstore_dump(struct kmsg_dumper *dumper,
|
|
|
unsigned long s1_start, s2_start;
|
|
|
unsigned long l1_cpy, l2_cpy;
|
|
|
unsigned long size, total = 0;
|
|
|
- char *dst, *why;
|
|
|
+ char *dst;
|
|
|
+ const char *why;
|
|
|
u64 id;
|
|
|
int hsize, ret;
|
|
|
unsigned int part = 1;
|
|
|
unsigned long flags = 0;
|
|
|
int is_locked = 0;
|
|
|
|
|
|
- if (reason < ARRAY_SIZE(reason_str))
|
|
|
- why = reason_str[reason];
|
|
|
- else
|
|
|
- why = "Unknown";
|
|
|
+ why = get_reason_str(reason);
|
|
|
|
|
|
if (in_nmi()) {
|
|
|
is_locked = spin_trylock(&psinfo->buf_lock);
|