Kalle Valo <kvalo@xxxxxxxxxxxxxxxx> writes: > From: Alan Liu <alanliu@xxxxxxxxxxxxxxxx> > > Add memory dump to the firmware crash data file which is provided to user space > via devcoredump interface. This makes it easier for firmware engineers to debug > firmware crashes. > > Due to increased memory consumption the memory dump is disabled by default. To > enable it make sure that bit 3 is set in coredump_mask module parameter: > > modprobe ath10k_core coredump_mask=0xffffffff > > When RAMDUMP is enabled a buffer for the dump is allocated with vmalloc during > device probe. The actual memory layout is different in hardware versions and > the layouts are defined in coredump.c. The memory is split to regions and, to > get even finegrained control of what to copy, the region can split to smaller > sections as not all registers are readable (which could cause the whole system > to stall). > > Signed-off-by: Alan Liu <alanliu@xxxxxxxxxxxxxxxx> > [kvalo@xxxxxxxxxxxxxxxx: refactoring and cleanup] > Signed-off-by: Kalle Valo <kvalo@xxxxxxxxxxxxxxxx> [...] > + /* To get IRAM dump, the host driver needs to switch target > + * ram config from DRAM to IRAM. > + */ > + if (current_region->type == ATH10K_MEM_REGION_TYPE_IRAM1 || > + current_region->type == ATH10K_MEM_REGION_TYPE_IRAM2) { > + shift = current_region->start >> 20; > + > + ret = ath10k_pci_set_ram_config(ar, shift); > + if (!ret) { > + ath10k_warn(ar, "failed to switch ram config to IRAM for section %s: %d\n", > + current_region->name, ret); A colleague noticed that there's a bug here, it should be "if (ret)". I'll fix that in the next version. -- Kalle Valo