diff options
| author | Yue Ma <yuem@qca.qualcomm.com> | 2014-01-10 15:44:48 -0800 |
|---|---|---|
| committer | Prakash Dhavali <pdhavali@qca.qualcomm.com> | 2014-01-25 21:02:03 -0800 |
| commit | db9457d8db434ad59becb44408878cd025cb3696 (patch) | |
| tree | 2ca964884a1b50ecde528a0aa5c81780fd645e36 | |
| parent | 873b5245cf881db8765e5b024fb7a79a3dd55159 (diff) | |
qcacld: Add AXI address to target failure RAM dump region.
AXI region should also be dumped when target failure happens. Also add
delay when copy the RAM dump to avoid watchdog bark.
Change-Id: I6607ab5527d4be8362cbc1042477c728d16391d4
CRs-Fixed: 592262
| -rw-r--r-- | CORE/SERVICES/BMI/ol_fw.c | 17 | ||||
| -rw-r--r-- | CORE/SERVICES/BMI/ol_fw.h | 5 |
2 files changed, 18 insertions, 4 deletions
diff --git a/CORE/SERVICES/BMI/ol_fw.c b/CORE/SERVICES/BMI/ol_fw.c index d3baacee8310..8c752e1f5228 100644 --- a/CORE/SERVICES/BMI/ol_fw.c +++ b/CORE/SERVICES/BMI/ol_fw.c @@ -524,10 +524,10 @@ static void ramdump_work_handler(struct work_struct *ramdump) } ol_target_coredump(ramdump_scn, ramdump_base, TOTAL_DUMP_SIZE); - iounmap(ramdump_base); + iounmap(ramdump_base); printk("%s: RAM dump collecting completed!\n", __func__); - msleep(500); + msleep(250); out: /* Notify SSR framework the target has crashed. */ @@ -939,6 +939,8 @@ int ol_diag_read(struct ol_softc *scn, u_int8_t *buffer, if (remainder < PCIE_READ_LIMIT) readSize = remainder; } + + msleep(5); } } else { result = HIFDiagReadMem(scn->hif_hdl, pos, @@ -982,9 +984,13 @@ void ol_target_coredump(void *inst, void *memoryBlock, u_int32_t blockLength) * SECTION = IRAM * START = 0x00980000 * LENGTH = 0x00038000 + * + * SECTION = AXI + * START = 0x000a0000 + * LENGTH = 0x00018000 */ - while ((sectionCount < 2) && (amountRead < blockLength)) { + while ((sectionCount < 3) && (amountRead < blockLength)) { switch (sectionCount) { case 0: /* DRAM SECTION */ @@ -996,6 +1002,11 @@ void ol_target_coredump(void *inst, void *memoryBlock, u_int32_t blockLength) pos = IRAM_LOCATION; readLen = IRAM_SIZE; break; + case 2: + /* AXI SECTION */ + pos = AXI_LOCATION; + readLen = AXI_SIZE; + break; } if ((blockLength - amountRead) >= readLen) { diff --git a/CORE/SERVICES/BMI/ol_fw.h b/CORE/SERVICES/BMI/ol_fw.h index 8d25b9704596..18abf68cdb91 100644 --- a/CORE/SERVICES/BMI/ol_fw.h +++ b/CORE/SERVICES/BMI/ol_fw.h @@ -59,7 +59,10 @@ #define IRAM_LOCATION 0x00980000 #define IRAM_SIZE 0x00038000 -#define TOTAL_DUMP_SIZE REGISTER_SIZE + DRAM_SIZE + IRAM_SIZE +#define AXI_LOCATION 0x000a0000 +#define AXI_SIZE 0x00018000 + +#define TOTAL_DUMP_SIZE 0x00200000 #define PCIE_READ_LIMIT 0x00005000 void ol_target_coredump(void *instance, void* memoryBlock, |
