From 3adff1d33db80114b8b69b147345f09d972ce927 Mon Sep 17 00:00:00 2001 From: Alex Iacobucci Date: Mon, 22 May 2023 15:43:23 +0000 Subject: aoc: dynamically compute ramdump offsets Bug: 283492323 Test: tested on device Change-Id: I1cbbe5aca89a1420841f50362783e001a22fc1d7 Signed-off-by: Alex Iacobucci --- aoc.c | 16 +++++++++++-- aoc_ramdump_regions.h | 63 --------------------------------------------------- 2 files changed, 14 insertions(+), 65 deletions(-) diff --git a/aoc.c b/aoc.c index 235b4ee..c304dc4 100644 --- a/aoc.c +++ b/aoc.c @@ -2554,6 +2554,16 @@ static irqreturn_t watchdog_int_handler(int irq, void *dev) return IRQ_HANDLED; } +static int compute_section_offset(struct aoc_ramdump_header *ramdump_header, int section_index) +{ + int i, crash_info_section_offset = RAMDUMP_SECTION_SRAM_OFFSET; + + for (i = 0; i < section_index; i++) + crash_info_section_offset += ramdump_header->sections[i].size; + + return crash_info_section_offset; +} + static void aoc_watchdog(struct work_struct *work) { struct aoc_prvdata *prvdata = @@ -2578,6 +2588,8 @@ static void aoc_watchdog(struct work_struct *work) int restart_rc; u32 section_flags; bool ap_reset = false; + int crash_info_section_offset = compute_section_offset(ramdump_header, + RAMDUMP_SECTION_CRASH_INFO_INDEX); prvdata->total_restarts++; @@ -2633,7 +2645,7 @@ static void aoc_watchdog(struct work_struct *work) if (!ramdump_header->valid) { const char *crash_reason = (const char *)ramdump_header + - RAMDUMP_SECTION_CRASH_INFO_OFFSET; + crash_info_section_offset; bool crash_reason_valid = (strnlen(crash_reason, sizeof(crash_info)) != 0); @@ -2670,7 +2682,7 @@ static void aoc_watchdog(struct work_struct *work) if (ramdump_header->valid) { const char *crash_reason = (const char *)ramdump_header + - RAMDUMP_SECTION_CRASH_INFO_OFFSET; + crash_info_section_offset; section_flags = ramdump_header->sections[RAMDUMP_SECTION_CRASH_INFO_INDEX].flags; if (section_flags & RAMDUMP_FLAG_VALID) { diff --git a/aoc_ramdump_regions.h b/aoc_ramdump_regions.h index c419f70..b2a8688 100644 --- a/aoc_ramdump_regions.h +++ b/aoc_ramdump_regions.h @@ -100,71 +100,8 @@ struct aoc_ramdump_header { #else #define RAMDUMP_SECTION_SRAM_SIZE 0x800000 #endif -#define RAMDUMP_SECTION_SRAM_NAME "SRAM" -#define RAMDUMP_SECTION_SFR_OFFSET (RAMDUMP_SECTION_SRAM_OFFSET + RAMDUMP_SECTION_SRAM_SIZE) -#define RAMDUMP_SECTION_SFR_SIZE (0x100000) -#define RAMDUMP_SECTION_SFR_NAME "SFRs" - -#define RAMDUMP_SECTION_A32_REGISTER_OFFSET (RAMDUMP_SECTION_SFR_OFFSET + RAMDUMP_SECTION_SFR_SIZE) -#define RAMDUMP_SECTION_A32_REGISTER_SIZE 0x1000 -#define RAMDUMP_SECTION_A32_REGISTER_NAME "A32 registers" - -#define RAMDUMP_SECTION_A32_DCACHE_OFFSET (RAMDUMP_SECTION_A32_REGISTER_OFFSET + RAMDUMP_SECTION_A32_REGISTER_SIZE) -#define RAMDUMP_SECTION_A32_DCACHE_SIZE (16 * 1024 * 2) -#define RAMDUMP_SECTION_A32_DCACHE_NAME "A32 D-cache" - -#define RAMDUMP_SECTION_A32_ICACHE_OFFSET (RAMDUMP_SECTION_A32_DCACHE_OFFSET + RAMDUMP_SECTION_A32_DCACHE_SIZE) -#define RAMDUMP_SECTION_A32_ICACHE_SIZE (16 * 1024 * 2) -#define RAMDUMP_SECTION_A32_ICACHE_NAME "A32 I-cache" - -#define RAMDUMP_SECTION_A32_TLB_OFFSET (RAMDUMP_SECTION_A32_ICACHE_OFFSET + RAMDUMP_SECTION_A32_ICACHE_SIZE) -#define RAMDUMP_SECTION_A32_TLB_SIZE (320 * 2 * 4 * 4) -#define RAMDUMP_SECTION_A32_TLB_NAME "A32 TLB" - -#define RAMDUMP_SECTION_F1_REGISTER_OFFSET (RAMDUMP_SECTION_A32_TLB_OFFSET + RAMDUMP_SECTION_A32_TLB_SIZE) -#define RAMDUMP_SECTION_F1_REGISTER_SIZE 0x1000 -#define RAMDUMP_SECTION_F1_REGISTER_NAME "F1 registers" - -#define RAMDUMP_SECTION_F1_DCACHE_OFFSET (RAMDUMP_SECTION_F1_REGISTER_OFFSET + RAMDUMP_SECTION_F1_REGISTER_SIZE) -#define RAMDUMP_SECTION_F1_DCACHE_SIZE (64 * 1024 * 2) -#define RAMDUMP_SECTION_F1_DCACHE_NAME "F1 D-cache" - -#define RAMDUMP_SECTION_F1_ICACHE_OFFSET (RAMDUMP_SECTION_F1_DCACHE_OFFSET + RAMDUMP_SECTION_F1_DCACHE_SIZE) -#define RAMDUMP_SECTION_F1_ICACHE_SIZE (64 * 1024 * 2) -#define RAMDUMP_SECTION_F1_ICACHE_NAME "F1 I-cache" - -#define RAMDUMP_SECTION_HF0_REGISTER_OFFSET (RAMDUMP_SECTION_F1_ICACHE_OFFSET + RAMDUMP_SECTION_F1_ICACHE_SIZE) -#define RAMDUMP_SECTION_HF0_REGISTER_SIZE 0x1000 -#define RAMDUMP_SECTION_HF0_REGISTER_NAME "HF0 registers" - -#define RAMDUMP_SECTION_HF0_DCACHE_OFFSET (RAMDUMP_SECTION_HF0_REGISTER_OFFSET + RAMDUMP_SECTION_HF0_REGISTER_SIZE) -#define RAMDUMP_SECTION_HF0_DCACHE_SIZE (128 * 1024 * 2) -#define RAMDUMP_SECTION_HF0_DCACHE_NAME "HF0 D-cache" - -#define RAMDUMP_SECTION_HF0_ICACHE_OFFSET (RAMDUMP_SECTION_HF0_DCACHE_OFFSET + RAMDUMP_SECTION_HF0_DCACHE_SIZE) -#define RAMDUMP_SECTION_HF0_ICACHE_SIZE (32 * 1024 * 2) -#define RAMDUMP_SECTION_HF0_ICACHE_NAME "HF0 I-cache" - -#define RAMDUMP_SECTION_HF1_REGISTER_OFFSET (RAMDUMP_SECTION_HF0_ICACHE_OFFSET + RAMDUMP_SECTION_HF0_ICACHE_SIZE) -#define RAMDUMP_SECTION_HF1_REGISTER_SIZE 0x1000 -#define RAMDUMP_SECTION_HF1_REGISTER_NAME "HF1 registers" - -#define RAMDUMP_SECTION_HF1_DCACHE_OFFSET (RAMDUMP_SECTION_HF1_REGISTER_OFFSET + RAMDUMP_SECTION_HF1_REGISTER_SIZE) -#define RAMDUMP_SECTION_HF1_DCACHE_SIZE (128 * 1024 * 2) -#define RAMDUMP_SECTION_HF1_DCACHE_NAME "HF1 D-cache" - -#define RAMDUMP_SECTION_HF1_ICACHE_OFFSET (RAMDUMP_SECTION_HF1_DCACHE_OFFSET + RAMDUMP_SECTION_HF1_DCACHE_SIZE) -#define RAMDUMP_SECTION_HF1_ICACHE_SIZE (32 * 1024 * 2) -#define RAMDUMP_SECTION_HF1_ICACHE_NAME "HF1 I-cache" - -#define RAMDUMP_SECTION_A32_TRACE_OFFSET (RAMDUMP_SECTION_HF1_ICACHE_OFFSET + RAMDUMP_SECTION_HF1_ICACHE_SIZE) -#define RAMDUMP_SECTION_A32_TRACE_SIZE (64 * 1024) -#define RAMDUMP_SECTION_A32_TRACE_NAME "A32 trace" - -#define RAMDUMP_SECTION_CRASH_INFO_OFFSET (RAMDUMP_SECTION_A32_TRACE_OFFSET + RAMDUMP_SECTION_A32_TRACE_SIZE) #define RAMDUMP_SECTION_CRASH_INFO_SIZE 256 -#define RAMDUMP_SECTION_CRASH_INFO_NAME "Crash info" #endif /* RAMDUMP_REGIONS_H_ */ -- cgit v1.2.3