diff options
author | Alex Iacobucci <alexiacobucci@google.com> | 2023-05-22 15:43:23 +0000 |
---|---|---|
committer | Alex Iacobucci <alexiacobucci@google.com> | 2023-05-22 15:50:17 +0000 |
commit | 3adff1d33db80114b8b69b147345f09d972ce927 (patch) | |
tree | 94b03f370fc9229882a4624f30edefb44a1424df | |
parent | c526ebdb5ad73c2cc10d3908b09f4319384af6cd (diff) | |
download | aoc-3adff1d33db80114b8b69b147345f09d972ce927.tar.gz |
aoc: dynamically compute ramdump offsets
Bug: 283492323
Test: tested on device
Change-Id: I1cbbe5aca89a1420841f50362783e001a22fc1d7
Signed-off-by: Alex Iacobucci <alexiacobucci@google.com>
-rw-r--r-- | aoc.c | 16 | ||||
-rw-r--r-- | aoc_ramdump_regions.h | 63 |
2 files changed, 14 insertions, 65 deletions
@@ -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_ */ |