brcmfmac: trigger memory dump upon firmware halt signal
authorFranky Lin <franky.lin@broadcom.com>
Wed, 16 May 2018 12:12:02 +0000 (14:12 +0200)
committerKalle Valo <kvalo@codeaurora.org>
Wed, 23 May 2018 15:51:57 +0000 (18:51 +0300)
PCIe dongle firmware signals a halt/trap through mailbox interrupt.
Trigger a memory dump upon receiving such signal could help to provide
useful information for issue debug.

Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com>
Signed-off-by: Franky Lin <franky.lin@broadcom.com>
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c

index 5baa8372371da0cb13a2443706a8a0eea948670d..45928b5b8d97c3217d8f0d13206c51e64f448a1c 100644 (file)
@@ -182,6 +182,7 @@ static const struct brcmf_firmware_mapping brcmf_pcie_fwnames[] = {
 #define BRCMF_D2H_DEV_D3_ACK                   0x00000001
 #define BRCMF_D2H_DEV_DS_ENTER_REQ             0x00000002
 #define BRCMF_D2H_DEV_DS_EXIT_NOTE             0x00000004
+#define BRCMF_D2H_DEV_FWHALT                   0x10000000
 
 #define BRCMF_H2D_HOST_D3_INFORM               0x00000001
 #define BRCMF_H2D_HOST_DS_ACK                  0x00000002
@@ -717,6 +718,10 @@ static void brcmf_pcie_handle_mb_data(struct brcmf_pciedev_info *devinfo)
                devinfo->mbdata_completed = true;
                wake_up(&devinfo->mbdata_resp_wait);
        }
+       if (dtoh_mb_data & BRCMF_D2H_DEV_FWHALT) {
+               brcmf_dbg(PCIE, "D2H_MB_DATA: FW HALT\n");
+               brcmf_dev_coredump(&devinfo->pdev->dev);
+       }
 }