Lines Matching refs:dump

12 MODULE_PARM_DESC(coredump_memdump, "Optional ability to dump firmware memory");
144 mt7915_coredump_fw_state(struct mt7915_dev *dev, struct mt7915_coredump *dump,
157 strscpy(dump->fw_state, "normal", sizeof(dump->fw_state));
159 strscpy(dump->fw_state, "assert", sizeof(dump->fw_state));
161 strscpy(dump->fw_state, "exception", sizeof(dump->fw_state));
167 mt7915_coredump_fw_trace(struct mt7915_dev *dev, struct mt7915_coredump *dump,
173 dump->last_msg_id = mt76_rr(dev, MT_FW_LAST_MSG_ID);
178 dump->eint_info_idx = n;
183 dump->irq_info_idx = n;
188 dump->sched_info_idx = n;
198 strscpy(dump->trace_sched, "(sched_info) id, time",
199 sizeof(dump->trace_sched));
201 for (y = dump->sched_info_idx, i = 0; i < n; i++, y++) {
202 mt7915_memcpy_fromio(dev, dump->sched, base + 0xc + y * 12,
203 sizeof(dump->sched));
212 strscpy(dump->trace_irq, "(irq_info) id, time",
213 sizeof(dump->trace_irq));
215 for (y = dump->irq_info_idx, i = 0; i < n; i++, y++) {
216 mt7915_memcpy_fromio(dev, dump->irq, base + 0x4 + y * 16,
217 sizeof(dump->irq));
224 mt7915_coredump_fw_stack(struct mt7915_dev *dev, struct mt7915_coredump *dump,
236 dump->call_stack[i] = mt76_rr(dev, 0x89050204 + idx * 4);
245 mt7915_coredump_fw_task(struct mt7915_dev *dev, struct mt7915_coredump *dump)
249 strscpy(dump->task_qid, "(task queue id) read, write",
250 sizeof(dump->task_qid));
252 dump->taskq[0].read = mt76_rr(dev, MT_FW_TASK_QID1);
253 dump->taskq[0].write = mt76_rr(dev, MT_FW_TASK_QID1 - 4);
254 dump->taskq[1].read = mt76_rr(dev, MT_FW_TASK_QID2);
255 dump->taskq[1].write = mt76_rr(dev, MT_FW_TASK_QID2 - 4);
257 strscpy(dump->task_info, "(task stack) start, end, size",
258 sizeof(dump->task_info));
260 dump->taski[0].start = mt76_rr(dev, MT_FW_TASK_START);
261 dump->taski[0].end = mt76_rr(dev, MT_FW_TASK_END);
262 dump->taski[0].size = mt76_rr(dev, MT_FW_TASK_SIZE);
263 dump->taski[1].start = mt76_rr(dev, MT_FW_TASK_START + offs);
264 dump->taski[1].end = mt76_rr(dev, MT_FW_TASK_END + offs);
265 dump->taski[1].size = mt76_rr(dev, MT_FW_TASK_SIZE + offs);
269 mt7915_coredump_fw_context(struct mt7915_dev *dev, struct mt7915_coredump *dump)
277 strscpy(dump->fw_context, "(context) interrupt",
278 sizeof(dump->fw_context));
283 dump->context.idx = idx;
284 dump->context.handler = mt76_rr(dev, MT_FW_CIRQ_LISR);
290 strscpy(dump->fw_context, "(context) idle",
291 sizeof(dump->fw_context));
293 strscpy(dump->fw_context, "(context) task",
294 sizeof(dump->fw_context));
296 dump->context.idx = idx;
297 dump->context.handler = id;
305 struct mt7915_coredump *dump;
307 size_t len, sofar = 0, hdr_len = sizeof(*dump);
327 dump = (struct mt7915_coredump *)(buf);
328 dump->len = len;
331 strscpy(dump->magic, "mt76-crash-dump", sizeof(dump->magic));
332 strscpy(dump->kernel, init_utsname()->release, sizeof(dump->kernel));
333 strscpy(dump->fw_ver, dev->mt76.hw->wiphy->fw_version,
334 sizeof(dump->fw_ver));
336 guid_copy(&dump->guid, &crash_data->guid);
337 dump->tv_sec = crash_data->timestamp.tv_sec;
338 dump->tv_nsec = crash_data->timestamp.tv_nsec;
339 dump->device_id = mt76_chip(&dev->mt76);
341 mt7915_coredump_fw_state(dev, dump, &exception);
342 mt7915_coredump_fw_trace(dev, dump, exception);
343 mt7915_coredump_fw_task(dev, dump);
344 mt7915_coredump_fw_context(dev, dump);
345 mt7915_coredump_fw_stack(dev, dump, exception);
356 return dump;
361 struct mt7915_coredump *dump;
363 dump = mt7915_coredump_build(dev);
364 if (!dump) {
365 dev_warn(dev->mt76.dev, "no crash dump data found\n");
369 dev_coredumpv(dev->mt76.dev, dump, dump->len, GFP_KERNEL);