• Abinaya Kalaiselvan's avatar
    ath10k: fix module load regression with iram-recovery feature · 6f8c8bf4
    Abinaya Kalaiselvan authored
    Commit 9af7c32c ("ath10k: add target IRAM recovery feature support")
    introduced a new firmware feature flag ATH10K_FW_FEATURE_IRAM_RECOVERY. But
    this caused ath10k_pci module load to fail if ATH10K_FW_CRASH_DUMP_RAM_DATA bit
    was not enabled in the ath10k coredump_mask module parameter:
    
    [ 2209.328190] ath10k_pci 0000:02:00.0: qca9984/qca9994 hw1.0 target 0x01000000 chip_id 0x00000000 sub 168c:cafe
    [ 2209.434414] ath10k_pci 0000:02:00.0: kconfig debug 1 debugfs 1 tracing 1 dfs 1 testmode 1
    [ 2209.547191] ath10k_pci 0000:02:00.0: firmware ver 10.4-3.9.0.2-00099 api 5 features no-p2p,mfp,peer-flow-ctrl,btcoex-param,allows-mesh-bcast,no-ps,peer-fixed-rate,iram-recovery crc32 cbade90a
    [ 2210.896485] ath10k_pci 0000:02:00.0: board_file api 1 bmi_id 0:1 crc32 a040efc2
    [ 2213.603339] ath10k_pci 0000:02:00.0: failed to copy target iram contents: -12
    [ 2213.839027] ath10k_pci 0000:02:00.0: could not init core (-12)
    [ 2213.933910] ath10k_pci 0000:02:00.0: could not probe fw (-12)
    
    And by default coredump_mask does not have ATH10K_FW_CRASH_DUMP_RAM_DATA
    enabled so anyone using a firmware with iram-recovery feature would fail. To my
    knowledge only QCA9984 firmwares starting from release 10.4-3.9.0.2-00099
    enabled the feature.
    
    The reason for regression was that ath10k_core_copy_target_iram() used
    ath10k_coredump_get_mem_layout() to get the memory layout, but when
    ATH10K_FW_CRASH_DUMP_RAM_DATA was disabled it would get just NULL and bail out
    with an error.
    
    While looking at all this I noticed another bug: if CONFIG_DEV_COREDUMP is
    disabled but the firmware has iram-recovery enabled the module load fails with
    similar error messages. I fixed that by returning 0 from
    ath10k_core_copy_target_iram() when _ath10k_coredump_get_mem_layout() returns
    NULL.
    
    Tested-on: QCA9984 hw2.0 PCI 10.4-3.9.0.2-00139
    
    Fixes: 9af7c32c ("ath10k: add target IRAM recovery feature support")
    Signed-off-by: default avatarAbinaya Kalaiselvan <akalaise@codeaurora.org>
    Signed-off-by: default avatarJouni Malinen <jouni@codeaurora.org>
    Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/20211020075054.23061-1-kvalo@codeaurora.org
    6f8c8bf4
core.c 92.1 KB