summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYue Ma <yuem@qca.qualcomm.com>2014-01-10 15:44:48 -0800
committerPrakash Dhavali <pdhavali@qca.qualcomm.com>2014-01-25 21:02:03 -0800
commitdb9457d8db434ad59becb44408878cd025cb3696 (patch)
tree2ca964884a1b50ecde528a0aa5c81780fd645e36
parent873b5245cf881db8765e5b024fb7a79a3dd55159 (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.c17
-rw-r--r--CORE/SERVICES/BMI/ol_fw.h5
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,