soc/intel/pantherlake: Clear crashlog record using watcher

After crash data extraction, the records are cleared and reinitialized
to their default values. This is done using watcher interface instead
of BIOS mailbox commands because of low latency and efficiency.

Ref: LNL FAS 733648
BUG= b:None
TEST= iotools mmio_dump 0x9c199d40 0x10 - PMC
0x000000009c199d40: 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef
iotools mmio_dump 0x9c1d0058 0x10 - CPU
0x000000009c1d0058: 0xcafecafe 0xcafecafe 0xcafecafe 0xcafecafe
Initial 8 bytes of header are zeroes - indicating that both header
and crashlog data buffer are cleared

Change-Id: I8a36e091f61833067caf9e9f94ba79149e699d68
Signed-off-by: Sowmya Aralguppe <sowmya.aralguppe@intel.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/88514
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Subrata Banik <subratabanik@google.com>
Reviewed-by: Kapil Porwal <kapilporwal@google.com>
This commit is contained in:
Sowmya Aralguppe 2025-07-21 18:56:53 +05:30 committed by Matt DeVillier
commit 350c977fef
2 changed files with 7 additions and 0 deletions

View file

@ -18,6 +18,8 @@
#define CRASHLOG_PUNIT_STORAGE_OFF_MASK BIT(24)
#define CRASHLOG_RE_ARM_STATUS_MASK BIT(25)
#define CRASHLOG_CONSUMED_BIOS_MASK BIT(27)
#define CRASHLOG_SET_CLEAR_TRIGGER_MASK BIT(30)
#define CRASHLOG_SET_CONSUMED_MASK BIT(18)
/* Global crashLog info */
static bool m_pmc_crash_log_support;
@ -392,6 +394,10 @@ static uintptr_t get_control_status_interface(void)
int cpu_cl_clear_data(void)
{
/* Clear all crashlog data and CRASHLOG_SET_CONSUMED = 1 -> sets CONSUMED_BIOS bit */
setbits64p(cl_get_cpu_bar_addr() + CRASHLOG_WATCHER_CONTROL_OFFSET,
CRASHLOG_SET_CLEAR_TRIGGER_MASK | CRASHLOG_SET_CONSUMED_MASK);
return 0;
}

View file

@ -14,6 +14,7 @@
#define CRASHLOG_DVSEC_ID 0x04
#define TEL_DVSEC_TBIR_BAR0 0
#define TEL_DVSEC_TBIR_BAR1 1
#define CRASHLOG_WATCHER_CONTROL_OFFSET 0x10
typedef union {
struct {