diff --git a/src/soc/intel/common/block/crashlog/crashlog.c b/src/soc/intel/common/block/crashlog/crashlog.c index 4412cbb174..e3d85cde22 100644 --- a/src/soc/intel/common/block/crashlog/crashlog.c +++ b/src/soc/intel/common/block/crashlog/crashlog.c @@ -154,6 +154,16 @@ int __weak cpu_cl_clear_data(void) return cpu_cl_mailbox_cmd(CPU_CRASHLOG_CMD_CLEAR, 0); } +void __weak cpu_cl_rearm(void) +{ + /* empty implementation */ +} + +void __weak cpu_cl_cleanup(void) +{ + /* empty implementation */ +} + int pmc_cl_gen_descriptor_table(u32 desc_table_addr, pmc_crashlog_desc_table_t *descriptor_table) { @@ -466,6 +476,10 @@ void cl_get_cpu_sram_data(void) /* clear telemetry SRAM region */ cpu_cl_clear_data(); + /* perform any SOC specific cleanup */ + cpu_cl_cleanup(); + /* rearm crashlog */ + cpu_cl_rearm(); } void collect_pmc_and_cpu_crashlog_from_srams(void) diff --git a/src/soc/intel/common/block/include/intelblocks/crashlog.h b/src/soc/intel/common/block/include/intelblocks/crashlog.h index 23d4861557..e63a8cb506 100644 --- a/src/soc/intel/common/block/include/intelblocks/crashlog.h +++ b/src/soc/intel/common/block/include/intelblocks/crashlog.h @@ -138,7 +138,6 @@ typedef union { u64 data; } __packed cpu_crashlog_header_t; - /* Structures for CPU CrashLog mailbox interface */ typedef union { struct { @@ -192,6 +191,8 @@ u32 cl_gen_cpu_bar_addr(void); int cpu_cl_poll_mailbox_ready(u32 cl_mailbox_addr); int cpu_cl_mailbox_cmd(u8 cmd, u8 param); int cpu_cl_clear_data(void); +void cpu_cl_rearm(void); +void cpu_cl_cleanup(void); int pmc_cl_gen_descriptor_table(u32 desc_table_addr, pmc_crashlog_desc_table_t *descriptor_table); bool pmc_cl_discovery(void);