Stable Archive on lore.kernel.org
 help / color / Atom feed
* [PATCH for-4.19-stable] ath10k: restore QCA9880-AR1A (v1) detection
@ 2019-11-29 20:52 Christian Lamparter
  2019-12-01 17:02 ` Sasha Levin
  0 siblings, 1 reply; 6+ messages in thread
From: Christian Lamparter @ 2019-11-29 20:52 UTC (permalink / raw)
  To: stable

commit f8914a14623a79b73f72b2b1ee4cd9b2cb91b735 upstream
---
From f8914a14623a79b73f72b2b1ee4cd9b2cb91b735 Mon Sep 17 00:00:00 2001
From: Christian Lamparter <chunkeey@gmail.com>
Date: Mon, 25 Mar 2019 13:50:19 +0100
Subject: [PATCH for-4.19-stable] ath10k: restore QCA9880-AR1A (v1) detection
To: linux-wireless@vger.kernel.org,
    ath10k@lists.infradead.org
Cc: Kalle Valo <kvalo@codeaurora.org>

This patch restores the old behavior that read
the chip_id on the QCA988x before resetting the
chip. This needs to be done in this order since
the unsupported QCA988x AR1A chips fall off the
bus when resetted. Otherwise the next MMIO Op
after the reset causes a BUS ERROR and panic.

Cc: stable@vger.kernel.org # 4.19
Fixes: 1a7fecb766c8 ("ath10k: reset chip before reading chip_id in probe")
Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
---
 drivers/net/wireless/ath/ath10k/pci.c | 36 +++++++++++++++++++--------
 1 file changed, 25 insertions(+), 11 deletions(-)

diff --git a/drivers/net/wireless/ath/ath10k/pci.c b/drivers/net/wireless/ath/ath10k/pci.c
--- a/drivers/net/wireless/ath/ath10k/pci.c	2019-09-08 00:07:21.374565470 +0200
+++ b/drivers/net/wireless/ath/ath10k/pci.c	2019-09-08 00:17:15.365912133 +0200
@@ -3483,7 +3483,7 @@ static int ath10k_pci_probe(struct pci_d
 	struct ath10k_pci *ar_pci;
 	enum ath10k_hw_rev hw_rev;
 	u32 chip_id;
-	bool pci_ps;
+	bool pci_ps, is_qca988x = false;
 	int (*pci_soft_reset)(struct ath10k *ar);
 	int (*pci_hard_reset)(struct ath10k *ar);
 	u32 (*targ_cpu_to_ce_addr)(struct ath10k *ar, u32 addr);
@@ -3493,6 +3493,7 @@ static int ath10k_pci_probe(struct pci_d
 	case QCA988X_2_0_DEVICE_ID:
 		hw_rev = ATH10K_HW_QCA988X;
 		pci_ps = false;
+		is_qca988x = true;
 		pci_soft_reset = ath10k_pci_warm_reset;
 		pci_hard_reset = ath10k_pci_qca988x_chip_reset;
 		targ_cpu_to_ce_addr = ath10k_pci_qca988x_targ_cpu_to_ce_addr;
@@ -3612,6 +3613,19 @@ static int ath10k_pci_probe(struct pci_d
 		goto err_deinit_irq;
 	}
 
+	/* Read CHIP_ID before reset to catch QCA9880-AR1A v1 devices that
+	 * fall off the bus during chip_reset. These chips have the same pci
+	 * device id as the QCA9880 BR4A or 2R4E. So that's why the check.
+	 */
+	if (is_qca988x) {
+		chip_id = ath10k_pci_soc_read32(ar, SOC_CHIP_ID_ADDRESS);
+		if (chip_id != 0xffffffff) {
+			if (!ath10k_pci_chip_is_supported(pdev->device,
+							  chip_id))
+				goto err_unsupported;
+		}
+	}
+
 	ret = ath10k_pci_chip_reset(ar);
 	if (ret) {
 		ath10k_err(ar, "failed to reset chip: %d\n", ret);
@@ -3624,11 +3638,8 @@ static int ath10k_pci_probe(struct pci_d
 		goto err_free_irq;
 	}
 
-	if (!ath10k_pci_chip_is_supported(pdev->device, chip_id)) {
-		ath10k_err(ar, "device %04x with chip_id %08x isn't supported\n",
-			   pdev->device, chip_id);
-		goto err_free_irq;
-	}
+	if (!ath10k_pci_chip_is_supported(pdev->device, chip_id))
+		goto err_unsupported;
 
 	ret = ath10k_core_register(ar, chip_id);
 	if (ret) {
@@ -3638,6 +3649,10 @@ static int ath10k_pci_probe(struct pci_d
 
 	return 0;
 
+err_unsupported:
+	ath10k_err(ar, "device %04x with chip_id %08x isn't supported\n",
+		   pdev->device, bus_params.chip_id);
+
 err_free_irq:
 	ath10k_pci_free_irq(ar);
 	ath10k_pci_rx_retry_sync(ar);




^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH for-4.19-stable] ath10k: restore QCA9880-AR1A (v1) detection
  2019-11-29 20:52 [PATCH for-4.19-stable] ath10k: restore QCA9880-AR1A (v1) detection Christian Lamparter
@ 2019-12-01 17:02 ` Sasha Levin
  2019-12-02  9:14   ` Greg KH
  0 siblings, 1 reply; 6+ messages in thread
From: Sasha Levin @ 2019-12-01 17:02 UTC (permalink / raw)
  To: Christian Lamparter; +Cc: stable

On Fri, Nov 29, 2019 at 09:52:14PM +0100, Christian Lamparter wrote:
>commit f8914a14623a79b73f72b2b1ee4cd9b2cb91b735 upstream
>---
>From f8914a14623a79b73f72b2b1ee4cd9b2cb91b735 Mon Sep 17 00:00:00 2001
>From: Christian Lamparter <chunkeey@gmail.com>
>Date: Mon, 25 Mar 2019 13:50:19 +0100
>Subject: [PATCH for-4.19-stable] ath10k: restore QCA9880-AR1A (v1) detection
>To: linux-wireless@vger.kernel.org,
>    ath10k@lists.infradead.org
>Cc: Kalle Valo <kvalo@codeaurora.org>
>
>This patch restores the old behavior that read
>the chip_id on the QCA988x before resetting the
>chip. This needs to be done in this order since
>the unsupported QCA988x AR1A chips fall off the
>bus when resetted. Otherwise the next MMIO Op
>after the reset causes a BUS ERROR and panic.
>
>Cc: stable@vger.kernel.org # 4.19
>Fixes: 1a7fecb766c8 ("ath10k: reset chip before reading chip_id in probe")
>Signed-off-by: Christian Lamparter <chunkeey@gmail.com>

Queued up for all branches, thanks!

-- 
Thanks,
Sasha

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH for-4.19-stable] ath10k: restore QCA9880-AR1A (v1) detection
  2019-12-01 17:02 ` Sasha Levin
@ 2019-12-02  9:14   ` Greg KH
  2019-12-02  9:15     ` Greg KH
  0 siblings, 1 reply; 6+ messages in thread
From: Greg KH @ 2019-12-02  9:14 UTC (permalink / raw)
  To: Sasha Levin; +Cc: Christian Lamparter, stable

On Sun, Dec 01, 2019 at 12:02:45PM -0500, Sasha Levin wrote:
> On Fri, Nov 29, 2019 at 09:52:14PM +0100, Christian Lamparter wrote:
> > commit f8914a14623a79b73f72b2b1ee4cd9b2cb91b735 upstream
> > ---
> > > From f8914a14623a79b73f72b2b1ee4cd9b2cb91b735 Mon Sep 17 00:00:00 2001
> > From: Christian Lamparter <chunkeey@gmail.com>
> > Date: Mon, 25 Mar 2019 13:50:19 +0100
> > Subject: [PATCH for-4.19-stable] ath10k: restore QCA9880-AR1A (v1) detection
> > To: linux-wireless@vger.kernel.org,
> >    ath10k@lists.infradead.org
> > Cc: Kalle Valo <kvalo@codeaurora.org>
> > 
> > This patch restores the old behavior that read
> > the chip_id on the QCA988x before resetting the
> > chip. This needs to be done in this order since
> > the unsupported QCA988x AR1A chips fall off the
> > bus when resetted. Otherwise the next MMIO Op
> > after the reset causes a BUS ERROR and panic.
> > 
> > Cc: stable@vger.kernel.org # 4.19
> > Fixes: 1a7fecb766c8 ("ath10k: reset chip before reading chip_id in probe")
> > Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
> 
> Queued up for all branches, thanks!

This broke the 4.4 build :(

I'll drop it from there.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH for-4.19-stable] ath10k: restore QCA9880-AR1A (v1) detection
  2019-12-02  9:14   ` Greg KH
@ 2019-12-02  9:15     ` Greg KH
  2019-12-02  9:17       ` Greg KH
  0 siblings, 1 reply; 6+ messages in thread
From: Greg KH @ 2019-12-02  9:15 UTC (permalink / raw)
  To: Sasha Levin; +Cc: Christian Lamparter, stable

On Mon, Dec 02, 2019 at 10:14:31AM +0100, Greg KH wrote:
> On Sun, Dec 01, 2019 at 12:02:45PM -0500, Sasha Levin wrote:
> > On Fri, Nov 29, 2019 at 09:52:14PM +0100, Christian Lamparter wrote:
> > > commit f8914a14623a79b73f72b2b1ee4cd9b2cb91b735 upstream
> > > ---
> > > > From f8914a14623a79b73f72b2b1ee4cd9b2cb91b735 Mon Sep 17 00:00:00 2001
> > > From: Christian Lamparter <chunkeey@gmail.com>
> > > Date: Mon, 25 Mar 2019 13:50:19 +0100
> > > Subject: [PATCH for-4.19-stable] ath10k: restore QCA9880-AR1A (v1) detection
> > > To: linux-wireless@vger.kernel.org,
> > >    ath10k@lists.infradead.org
> > > Cc: Kalle Valo <kvalo@codeaurora.org>
> > > 
> > > This patch restores the old behavior that read
> > > the chip_id on the QCA988x before resetting the
> > > chip. This needs to be done in this order since
> > > the unsupported QCA988x AR1A chips fall off the
> > > bus when resetted. Otherwise the next MMIO Op
> > > after the reset causes a BUS ERROR and panic.
> > > 
> > > Cc: stable@vger.kernel.org # 4.19
> > > Fixes: 1a7fecb766c8 ("ath10k: reset chip before reading chip_id in probe")
> > > Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
> > 
> > Queued up for all branches, thanks!
> 
> This broke the 4.4 build :(

And it broke the 4.9 build :(

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH for-4.19-stable] ath10k: restore QCA9880-AR1A (v1) detection
  2019-12-02  9:15     ` Greg KH
@ 2019-12-02  9:17       ` Greg KH
  2019-12-02  9:18         ` Greg KH
  0 siblings, 1 reply; 6+ messages in thread
From: Greg KH @ 2019-12-02  9:17 UTC (permalink / raw)
  To: Sasha Levin; +Cc: Christian Lamparter, stable

On Mon, Dec 02, 2019 at 10:15:29AM +0100, Greg KH wrote:
> On Mon, Dec 02, 2019 at 10:14:31AM +0100, Greg KH wrote:
> > On Sun, Dec 01, 2019 at 12:02:45PM -0500, Sasha Levin wrote:
> > > On Fri, Nov 29, 2019 at 09:52:14PM +0100, Christian Lamparter wrote:
> > > > commit f8914a14623a79b73f72b2b1ee4cd9b2cb91b735 upstream
> > > > ---
> > > > > From f8914a14623a79b73f72b2b1ee4cd9b2cb91b735 Mon Sep 17 00:00:00 2001
> > > > From: Christian Lamparter <chunkeey@gmail.com>
> > > > Date: Mon, 25 Mar 2019 13:50:19 +0100
> > > > Subject: [PATCH for-4.19-stable] ath10k: restore QCA9880-AR1A (v1) detection
> > > > To: linux-wireless@vger.kernel.org,
> > > >    ath10k@lists.infradead.org
> > > > Cc: Kalle Valo <kvalo@codeaurora.org>
> > > > 
> > > > This patch restores the old behavior that read
> > > > the chip_id on the QCA988x before resetting the
> > > > chip. This needs to be done in this order since
> > > > the unsupported QCA988x AR1A chips fall off the
> > > > bus when resetted. Otherwise the next MMIO Op
> > > > after the reset causes a BUS ERROR and panic.
> > > > 
> > > > Cc: stable@vger.kernel.org # 4.19
> > > > Fixes: 1a7fecb766c8 ("ath10k: reset chip before reading chip_id in probe")
> > > > Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
> > > 
> > > Queued up for all branches, thanks!
> > 
> > This broke the 4.4 build :(
> 
> And it broke the 4.9 build :(

And 4.14.y :(

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH for-4.19-stable] ath10k: restore QCA9880-AR1A (v1) detection
  2019-12-02  9:17       ` Greg KH
@ 2019-12-02  9:18         ` Greg KH
  0 siblings, 0 replies; 6+ messages in thread
From: Greg KH @ 2019-12-02  9:18 UTC (permalink / raw)
  To: Sasha Levin; +Cc: Christian Lamparter, stable

On Mon, Dec 02, 2019 at 10:17:00AM +0100, Greg KH wrote:
> On Mon, Dec 02, 2019 at 10:15:29AM +0100, Greg KH wrote:
> > On Mon, Dec 02, 2019 at 10:14:31AM +0100, Greg KH wrote:
> > > On Sun, Dec 01, 2019 at 12:02:45PM -0500, Sasha Levin wrote:
> > > > On Fri, Nov 29, 2019 at 09:52:14PM +0100, Christian Lamparter wrote:
> > > > > commit f8914a14623a79b73f72b2b1ee4cd9b2cb91b735 upstream
> > > > > ---
> > > > > > From f8914a14623a79b73f72b2b1ee4cd9b2cb91b735 Mon Sep 17 00:00:00 2001
> > > > > From: Christian Lamparter <chunkeey@gmail.com>
> > > > > Date: Mon, 25 Mar 2019 13:50:19 +0100
> > > > > Subject: [PATCH for-4.19-stable] ath10k: restore QCA9880-AR1A (v1) detection
> > > > > To: linux-wireless@vger.kernel.org,
> > > > >    ath10k@lists.infradead.org
> > > > > Cc: Kalle Valo <kvalo@codeaurora.org>
> > > > > 
> > > > > This patch restores the old behavior that read
> > > > > the chip_id on the QCA988x before resetting the
> > > > > chip. This needs to be done in this order since
> > > > > the unsupported QCA988x AR1A chips fall off the
> > > > > bus when resetted. Otherwise the next MMIO Op
> > > > > after the reset causes a BUS ERROR and panic.
> > > > > 
> > > > > Cc: stable@vger.kernel.org # 4.19
> > > > > Fixes: 1a7fecb766c8 ("ath10k: reset chip before reading chip_id in probe")
> > > > > Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
> > > > 
> > > > Queued up for all branches, thanks!
> > > 
> > > This broke the 4.4 build :(
> > 
> > And it broke the 4.9 build :(
> 
> And 4.14.y :(

And it broke the 4.19.y build!  Ugh, Christian, did you test build this?

confused,

greg k-h

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, back to index

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-11-29 20:52 [PATCH for-4.19-stable] ath10k: restore QCA9880-AR1A (v1) detection Christian Lamparter
2019-12-01 17:02 ` Sasha Levin
2019-12-02  9:14   ` Greg KH
2019-12-02  9:15     ` Greg KH
2019-12-02  9:17       ` Greg KH
2019-12-02  9:18         ` Greg KH

Stable Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/stable/0 stable/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 stable stable/ https://lore.kernel.org/stable \
		stable@vger.kernel.org
	public-inbox-index stable

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.stable


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git