From 22924002dc3e9bd0394fed159a530358d9f6dde8 Mon Sep 17 00:00:00 2001
From: Kevin Cernekee <cernekee@chromium.org>
Date: Tue, 27 Oct 2015 14:31:34 -0700
Subject: [PATCH] CHROMIUM: net: wireless: bcmdhd: WARN_ON_ONCE for SD bus
 errors

We want these to be noticed by crash_reporter to assess the severity
of SD errors and to observe trends, so print a warning message the first
time we see one:

    ------------[ cut here ]------------
    WARNING: CPU: 0 PID: 125 at /mnt/host/source/src/third_party/kernel/v3.18/drivers/net/wireless/bcmdhd/bcmsdh_sdmmc.c:1112 sdioh_buffer_tofrom_bus+0x130/0x204()
    CPU: 0 PID: 125 Comm: dhd_dpc Tainted: G     U         3.18.0 #179
    Hardware name: Google Tegra210 Smaug Rev 1,3+ (DT)
    Call trace:
    [<ffffffc000207484>] dump_backtrace+0x0/0x10c
    [<ffffffc0002075a0>] show_stack+0x10/0x1c
    [<ffffffc000abbe04>] dump_stack+0x74/0xb8
    [<ffffffc00021df38>] warn_slowpath_common+0x84/0xb0
    [<ffffffc00021e054>] warn_slowpath_null+0x14/0x20
    [<ffffffc00071c724>] sdioh_buffer_tofrom_bus+0x12c/0x204
    [<ffffffc00071d850>] sdioh_request_buffer+0x1b8/0x2b0
    [<ffffffc00071b8b4>] bcmsdh_recv_buf+0xdc/0x11c
    [<ffffffc00072910c>] dhd_bcmsdh_recv_buf.constprop.21+0x68/0x88
    [<ffffffc00072beb8>] dhdsdio_readframes+0xa7c/0x1424
    [<ffffffc00072f5d8>] dhd_bus_dpc+0x7e8/0xdb0
    [<ffffffc0006db47c>] dhd_dpc_thread+0xe4/0x128
    [<ffffffc000239bc4>] kthread+0xdc/0xe8
    ---[ end trace 047fb573e2381da4 ]---
    sdioh_buffer_tofrom_bus: RX FAILED ffffffc0b9e5c820, addr=0x08000, pkt_len=128, ERR=-5

BUG=chrome-os-partner:46070
TEST=manual error injection

Change-Id: Ia3324a8974a231db045f817e6783dd39ab7da270
Signed-off-by: Kevin Cernekee <cernekee@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/309295
Reviewed-by: Andrew Bresticker <abrestic@chromium.org>
---
 drivers/net/wireless/bcmdhd/bcmsdh_sdmmc.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/wireless/bcmdhd/bcmsdh_sdmmc.c b/drivers/net/wireless/bcmdhd/bcmsdh_sdmmc.c
index 4acc68d33670bd..50db29a3f21fc3 100644
--- a/drivers/net/wireless/bcmdhd/bcmsdh_sdmmc.c
+++ b/drivers/net/wireless/bcmdhd/bcmsdh_sdmmc.c
@@ -1101,6 +1101,7 @@ sdioh_buffer_tofrom_bus(sdioh_info_t *sd, uint fix_inc, uint write, uint func,
 
 	sdio_release_host(sd->func[func]);
 
+	WARN_ON_ONCE(err_ret);
 	if (err_ret)
 		sd_err(("%s: %s FAILED %p, addr=0x%05x, pkt_len=%d, ERR=%d\n", __FUNCTION__,
 		       (write) ? "TX" : "RX", buf, addr, len, err_ret));