All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hector Martin <marcan@marcan.st>
To: Kalle Valo <kvalo@codeaurora.org>,
	"David S. Miller" <davem@davemloft.net>,
	Jakub Kicinski <kuba@kernel.org>,
	Rob Herring <robh+dt@kernel.org>,
	"Rafael J. Wysocki" <rafael@kernel.org>,
	Len Brown <lenb@kernel.org>, Arend van Spriel <aspriel@gmail.com>,
	Franky Lin <franky.lin@broadcom.com>,
	Hante Meuleman <hante.meuleman@broadcom.com>,
	Chi-hsien Lin <chi-hsien.lin@infineon.com>,
	Wright Feng <wright.feng@infineon.com>,
	Dmitry Osipenko <digetx@gmail.com>
Cc: "Hector Martin" <marcan@marcan.st>,
	"Sven Peter" <sven@svenpeter.dev>,
	"Alyssa Rosenzweig" <alyssa@rosenzweig.io>,
	"Mark Kettenis" <kettenis@openbsd.org>,
	"Rafał Miłecki" <zajec5@gmail.com>,
	"Pieter-Paul Giesberts" <pieter-paul.giesberts@broadcom.com>,
	"Linus Walleij" <linus.walleij@linaro.org>,
	"Hans de Goede" <hdegoede@redhat.com>,
	"John W. Linville" <linville@tuxdriver.com>,
	"brian m. carlson" <sandals@crustytoothpaste.net>,
	"Andy Shevchenko" <andy.shevchenko@gmail.com>,
	linux-wireless@vger.kernel.org, netdev@vger.kernel.org,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-acpi@vger.kernel.org, brcm80211-dev-list.pdl@broadcom.com,
	SHA-cyfmac-dev-list@infineon.com,
	"Arend van Spriel" <arend.vanspriel@broadcom.com>
Subject: [PATCH v3 6/9] brcmfmac: pcie: Fix crashes due to early IRQs
Date: Mon, 17 Jan 2022 23:29:16 +0900	[thread overview]
Message-ID: <20220117142919.207370-7-marcan@marcan.st> (raw)
In-Reply-To: <20220117142919.207370-1-marcan@marcan.st>

The driver was enabling IRQs before the message processing was
initialized. This could cause IRQs to come in too early and crash the
driver. Instead, move the IRQ enable and hostready to a bus preinit
function, at which point everything is properly initialized.

Fixes: 9e37f045d5e7 ("brcmfmac: Adding PCIe bus layer support.")
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com>
Signed-off-by: Hector Martin <marcan@marcan.st>
---
 .../wireless/broadcom/brcm80211/brcmfmac/pcie.c  | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
index c25f48db1f60..3ff4997e1c97 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
@@ -1315,6 +1315,18 @@ static void brcmf_pcie_down(struct device *dev)
 {
 }
 
+static int brcmf_pcie_preinit(struct device *dev)
+{
+	struct brcmf_bus *bus_if = dev_get_drvdata(dev);
+	struct brcmf_pciedev *buspub = bus_if->bus_priv.pcie;
+
+	brcmf_dbg(PCIE, "Enter\n");
+
+	brcmf_pcie_intr_enable(buspub->devinfo);
+	brcmf_pcie_hostready(buspub->devinfo);
+
+	return 0;
+}
 
 static int brcmf_pcie_tx(struct device *dev, struct sk_buff *skb)
 {
@@ -1423,6 +1435,7 @@ static int brcmf_pcie_reset(struct device *dev)
 }
 
 static const struct brcmf_bus_ops brcmf_pcie_bus_ops = {
+	.preinit = brcmf_pcie_preinit,
 	.txdata = brcmf_pcie_tx,
 	.stop = brcmf_pcie_down,
 	.txctl = brcmf_pcie_tx_ctlpkt,
@@ -1795,9 +1808,6 @@ static void brcmf_pcie_setup(struct device *dev, int ret,
 
 	init_waitqueue_head(&devinfo->mbdata_resp_wait);
 
-	brcmf_pcie_intr_enable(devinfo);
-	brcmf_pcie_hostready(devinfo);
-
 	ret = brcmf_attach(&devinfo->pdev->dev);
 	if (ret)
 		goto fail;
-- 
2.33.0


  parent reply	other threads:[~2022-01-17 14:31 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-17 14:29 [PATCH v3 0/9] misc brcmfmac fixes (M1/T2 series spin-off) Hector Martin
2022-01-17 14:29 ` [PATCH v3 1/9] brcmfmac: pcie: Release firmwares in the brcmf_pcie_setup error path Hector Martin
2022-01-19 12:34   ` Arend van Spriel
2022-01-19 17:49   ` Andy Shevchenko
2022-01-19 21:22     ` Dmitry Osipenko
2022-01-19 21:31       ` Andy Shevchenko
2022-01-20 13:15         ` Dmitry Osipenko
2022-01-20  8:22     ` Arend van Spriel
2022-01-17 14:29 ` [PATCH v3 2/9] brcmfmac: firmware: Allocate space for default boardrev in nvram Hector Martin
2022-01-19 12:34   ` Arend van Spriel
2022-01-19 21:35   ` Andy Shevchenko
2022-01-20  6:08     ` Hector Martin
2022-01-17 14:29 ` [PATCH v3 3/9] brcmfmac: firmware: Do not crash on a NULL board_type Hector Martin
2022-01-19 12:34   ` Arend van Spriel
2022-01-19 21:45   ` Andy Shevchenko
2022-01-20  6:13     ` Hector Martin
2022-01-19 22:02   ` Dmitry Osipenko
2022-01-20  8:29     ` Arend van Spriel
2022-01-20 13:23       ` Dmitry Osipenko
2022-01-20 13:24         ` Dmitry Osipenko
2022-01-20 13:37           ` Arend van Spriel
2022-01-17 14:29 ` [PATCH v3 4/9] brcmfmac: pcie: Declare missing firmware files in pcie.c Hector Martin
2022-01-17 14:29 ` [PATCH v3 5/9] brcmfmac: pcie: Replace brcmf_pcie_copy_mem_todev with memcpy_toio Hector Martin
2022-01-19 12:34   ` Arend van Spriel
2022-01-20 10:17   ` Andy Shevchenko
2022-01-17 14:29 ` Hector Martin [this message]
2022-01-17 14:29 ` [PATCH v3 7/9] brcmfmac: of: Use devm_kstrdup for board_type & check for errors Hector Martin
2022-01-19 12:35   ` Arend van Spriel
2022-01-20 10:52   ` Andy Shevchenko
2022-01-17 14:29 ` [PATCH v3 8/9] brcmfmac: fwil: Constify iovar name arguments Hector Martin
2022-01-19 12:35   ` Arend van Spriel
2022-01-20 10:55   ` Andy Shevchenko
2022-01-17 14:29 ` [PATCH v3 9/9] brcmfmac: pcie: Read the console on init and shutdown Hector Martin
2022-01-19 12:35   ` Arend van Spriel
2022-01-18 10:43 ` [PATCH v3 0/9] misc brcmfmac fixes (M1/T2 series spin-off) Andy Shevchenko
2022-01-18 15:32   ` Hector Martin
2022-01-18 17:01     ` Andy Shevchenko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220117142919.207370-7-marcan@marcan.st \
    --to=marcan@marcan.st \
    --cc=SHA-cyfmac-dev-list@infineon.com \
    --cc=alyssa@rosenzweig.io \
    --cc=andy.shevchenko@gmail.com \
    --cc=arend.vanspriel@broadcom.com \
    --cc=aspriel@gmail.com \
    --cc=brcm80211-dev-list.pdl@broadcom.com \
    --cc=chi-hsien.lin@infineon.com \
    --cc=davem@davemloft.net \
    --cc=devicetree@vger.kernel.org \
    --cc=digetx@gmail.com \
    --cc=franky.lin@broadcom.com \
    --cc=hante.meuleman@broadcom.com \
    --cc=hdegoede@redhat.com \
    --cc=kettenis@openbsd.org \
    --cc=kuba@kernel.org \
    --cc=kvalo@codeaurora.org \
    --cc=lenb@kernel.org \
    --cc=linus.walleij@linaro.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=linville@tuxdriver.com \
    --cc=netdev@vger.kernel.org \
    --cc=pieter-paul.giesberts@broadcom.com \
    --cc=rafael@kernel.org \
    --cc=robh+dt@kernel.org \
    --cc=sandals@crustytoothpaste.net \
    --cc=sven@svenpeter.dev \
    --cc=wright.feng@infineon.com \
    --cc=zajec5@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.