soc/intel/common/crashlog: Check for invalid record

Do not copy the crashlog record if the record is 0xdeadbeef

Bug=None
TEST=Able to build. With Meteor Lake SOC related patch, able to
capture and decode crashlog.

Change-Id: I0edbf6902685a882876d525e63c5b602c1590ea1
Signed-off-by: Pratikkumar Prajapati <pratikkumar.v.prajapati@intel.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/75527
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Subrata Banik <subratabanik@google.com>
This commit is contained in:
Pratikkumar Prajapati 2023-05-30 11:28:21 -07:00 committed by Felix Held
parent d4330e7dfb
commit 5f3b6545f4
2 changed files with 10 additions and 0 deletions

View File

@ -271,6 +271,14 @@ bool cl_copy_data_from_sram(u32 src_bar,
u32 src_addr = src_bar + offset; u32 src_addr = src_bar + offset;
u32 data = read32((u32 *)src_addr); u32 data = read32((u32 *)src_addr);
/* First 32bits of the record must not be 0xdeadbeef */
if (data == INVALID_CRASHLOG_RECORD) {
printk(BIOS_DEBUG, "Invalid data 0x%x at offset 0x%x from addr 0x%x\n",
data, offset, src_bar);
return false;
}
/* PMC: copy if 1st DWORD in buffer is not zero and its 31st bit is not set */ /* PMC: copy if 1st DWORD in buffer is not zero and its 31st bit is not set */
if (pmc_sram && !(data && !(data & BIT(31)))) { if (pmc_sram && !(data && !(data & BIT(31)))) {
printk(BIOS_DEBUG, "Invalid data 0x%x at offset 0x%x from addr 0x%x" printk(BIOS_DEBUG, "Invalid data 0x%x at offset 0x%x from addr 0x%x"

View File

@ -23,6 +23,8 @@
#define CRASHLOG_SIZE_DEBUG_PURPOSE 0x640 #define CRASHLOG_SIZE_DEBUG_PURPOSE 0x640
#define INVALID_CRASHLOG_RECORD 0xdeadbeef
/* PMC crashlog discovery structs */ /* PMC crashlog discovery structs */
typedef union { typedef union {
struct { struct {