Skip to content

Commit

Permalink
cmd: add pstore check
Browse files Browse the repository at this point in the history
  • Loading branch information
frank-w committed Jan 13, 2024
1 parent a9407fb commit 3cd71b9
Showing 1 changed file with 55 additions and 0 deletions.
55 changes: 55 additions & 0 deletions cmd/pstore.c
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,58 @@ static int pstore_set(struct cmd_tbl *cmdtp, int flag, int argc,
return 0;
}

/**
* pstore_check() - Check for pstore records
* @cmdtp: Command data struct pointer
* @flag: Command flag
* @argc: Command-line argument count
* @argv: Array of command-line arguments
*
* Return: 0 if there are records in pstore, 1 otherwise
*/
static int pstore_check(struct cmd_tbl *cmdtp, int flag, int argc,
char * const argv[])
{
phys_addr_t ptr;
char *buffer;
u32 size;
int header_len = 0;
bool compressed;

if (pstore_length == 0) {
printf("Please set PStore configuration\n");
return CMD_RET_USAGE;
}

if (buffer_size == 0)
pstore_init_buffer_size();

buffer = malloc_cache_aligned(buffer_size);

ptr = pstore_addr;
phys_addr_t ptr_end = ptr + pstore_length - pstore_pmsg_size
- pstore_ftrace_size - pstore_console_size;

while (ptr < ptr_end) {
size = pstore_get_buffer(PERSISTENT_RAM_SIG, ptr,
pstore_record_size, buffer);
ptr += pstore_record_size;

if (size == 0)
continue;

header_len = pstore_read_kmsg_hdr(buffer, &compressed);
if (header_len == 0)
continue;

free(buffer);
return 0;
}

free(buffer);
return 1;
}

/**
* pstore_print_buffer() - Print buffer
* @type: buffer type
Expand Down Expand Up @@ -459,6 +511,7 @@ static int pstore_save(struct cmd_tbl *cmdtp, int flag, int argc,

static struct cmd_tbl cmd_pstore_sub[] = {
U_BOOT_CMD_MKENT(set, 8, 0, pstore_set, "", ""),
U_BOOT_CMD_MKENT(check, 1, 0, pstore_check, "", ""),
U_BOOT_CMD_MKENT(display, 3, 0, pstore_display, "", ""),
U_BOOT_CMD_MKENT(save, 4, 0, pstore_save, "", ""),
};
Expand Down Expand Up @@ -566,6 +619,8 @@ U_BOOT_CMD(pstore, 10, 0, do_pstore,
" 'pmsg-size' is the size of the user space logs record.\n"
" 'ecc-size' enables/disables ECC support and specifies ECC buffer size in\n"
" bytes (0 disables it, 1 is a special value, means 16 bytes ECC).\n"
"pstore check\n"
"- Returns true if there are records in pstore.\n"
"pstore display [record-type] [nb]\n"
"- Display existing records in pstore reserved memory. A 'record-type' can\n"
" be given to only display records of this kind. 'record-type' can be one\n"
Expand Down

0 comments on commit 3cd71b9

Please sign in to comment.