Received: by 10.223.185.116 with SMTP id b49csp672823wrg; Wed, 21 Feb 2018 05:10:48 -0800 (PST) X-Google-Smtp-Source: AH8x2244D7dE/dHH22IuqSRrcJlaavdu3sTIHHsBzmAKwfxjm+rzAhlDVdnrdmvp4Nz3t//IVsvv X-Received: by 10.101.83.3 with SMTP id m3mr2712550pgq.396.1519218648403; Wed, 21 Feb 2018 05:10:48 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519218648; cv=none; d=google.com; s=arc-20160816; b=DZrv8Xf3e9vtzaGosqyv+UWw0Br6cjv129xM1vvE475Jvw8X2PeQsL3RlmNGNFFo7T RCer4ISswVt/xpVfeY6ykXN9TbfS57/sVBPgs5hVa8+9TXGWvAFg+WMenykN7uzVjBrw uipMTN8OIQ6aWZSfjflr6SB97VjDiv9bJPJDcUisAXSbg9jXnu932njuCUwZubWkRo69 EuwDb8yzcUkX44AVjDg5O/UEMddBQ45H5pTihkJE/GY3Z63xOldXhZz8gcPFn/TCnDud igRsLs5XkOKKXi0DXItDs0ec87ghJv1KLj5jHXjvvQrgU5wtCDuCH7jOthz+mmFmKblL nuag== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=6kVdI4Uxjn5eoVLsc654fr9tVIKQmmSJ9cLL6CQePKs=; b=QRvA8c/vzdQQlkoejQ9l9nEG34zRkVKXoIIbuifLDYRLi1cE5VLJDCj6bYHz85imuK D2A/sinmJLHgzlwF/NXuVQLe2+4TOkaJ6CbmOpeQxwFQqcdH30ZBZ8tdqBTG58lNfdTL ri9R0ULZrEKXKqObSDZjANNI410/UUOcLdr6TGrPYxAgVMny6DHdGiGWOORj/NLkW+Cz zkWvAb+WQ1tadwsSfxS9pJEySg3FXDgmKsyQ4J2A/fLH45SmkDKrWnUk0TNRkF0EvJ0T cCiCXhL+i+MMWaAvyFNmOYjwS6c/jiU64dd1goTK/PCpSZK/eWlWW7eZQeNwreNRJ0Xj Dv+w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=broadcom.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id k91-v6si7679702pld.361.2018.02.21.05.10.34; Wed, 21 Feb 2018 05:10:48 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=broadcom.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933504AbeBUKu4 (ORCPT + 99 others); Wed, 21 Feb 2018 05:50:56 -0500 Received: from rnd-relay.smtp.broadcom.com ([192.19.229.170]:60970 "EHLO rnd-relay.smtp.broadcom.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753740AbeBUKuj (ORCPT ); Wed, 21 Feb 2018 05:50:39 -0500 Received: from mail-irv-17.broadcom.com (mail-irv-17.lvn.broadcom.net [10.75.224.233]) by rnd-relay.smtp.broadcom.com (Postfix) with ESMTP id 713BB30C021; Wed, 21 Feb 2018 02:50:38 -0800 (PST) Received: from bld-bun-01.bun.broadcom.com (bld-bun-01.bun.broadcom.com [10.176.128.83]) by mail-irv-17.broadcom.com (Postfix) with ESMTP id 07DE081EBD; Wed, 21 Feb 2018 02:50:38 -0800 (PST) Received: by bld-bun-01.bun.broadcom.com (Postfix, from userid 25152) id 8A98AB03978; Wed, 21 Feb 2018 11:50:36 +0100 (CET) From: Arend van Spriel To: Kalle Valo , Marcel Holtmann Cc: linux-wireless@vger.kernel.org, linux-bluetooth@vger.kernel.org, linux-kernel@vger.kernel.org, Greg Kroah-Hartman , Arend van Spriel Subject: [PATCH 1/3] brcmfmac: add support for sysfs initiated coredump Date: Wed, 21 Feb 2018 11:50:18 +0100 Message-Id: <1519210220-22437-2-git-send-email-arend.vanspriel@broadcom.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1519210220-22437-1-git-send-email-arend.vanspriel@broadcom.com> References: <1519210220-22437-1-git-send-email-arend.vanspriel@broadcom.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The driver already supports device coredump initiated by firmware event. Since commit 3c47d19ff4dc ("drivers: base: add coredump driver ops") it is also possible to initiate it from user-space through sysfs. This patch adds support for SDIO and PCIe devices. Reviewed-by: Hante Meuleman Reviewed-by: Pieter-Paul Giesberts Reviewed-by: Franky Lin Signed-off-by: Arend van Spriel --- drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 1 + drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h | 2 ++ drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c | 7 +++++++ drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c | 1 + 4 files changed, 11 insertions(+) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c index 0b68240..3220b69 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c @@ -1164,6 +1164,7 @@ static int brcmf_ops_sdio_resume(struct device *dev) #ifdef CONFIG_PM_SLEEP .pm = &brcmf_sdio_pm_ops, #endif /* CONFIG_PM_SLEEP */ + .coredump = brcmf_dev_coredump, }, }; diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h index 0b76a61..77d1f34 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h @@ -249,6 +249,8 @@ int brcmf_bus_get_fwname(struct brcmf_bus *bus, uint chip, uint chiprev, void brcmf_detach(struct device *dev); /* Indication from bus module that dongle should be reset */ void brcmf_dev_reset(struct device *dev); +/* Request from bus module to initiate a coredump */ +int brcmf_dev_coredump(struct device *dev); /* Configure the "global" bus state used by upper layers */ void brcmf_bus_change_state(struct brcmf_bus *bus, enum brcmf_bus_state state); diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c index 930e423..d06ffe0 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c @@ -1110,6 +1110,13 @@ void brcmf_dev_reset(struct device *dev) brcmf_fil_cmd_int_set(drvr->iflist[0], BRCMF_C_TERMINATED, 1); } +int brcmf_dev_coredump(struct device *dev) +{ + struct brcmf_bus *bus_if = dev_get_drvdata(dev); + + return brcmf_debug_create_memdump(bus_if, NULL, 0); +} + void brcmf_detach(struct device *dev) { s32 i; diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c index 8752707..502dd7b 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c @@ -2005,6 +2005,7 @@ static int brcmf_pcie_pm_leave_D3(struct device *dev) #ifdef CONFIG_PM .driver.pm = &brcmf_pciedrvr_pm, #endif + .driver.coredump = brcmf_dev_coredump, }; -- 1.9.1