All of lore.kernel.org
 help / color / mirror / Atom feed
* ath10k driver crashes whenever firmware crashes on ARM SoC
@ 2014-01-28 17:18 Avery Pennarun
  2014-01-28 18:20 ` Ben Greear
                   ` (2 more replies)
  0 siblings, 3 replies; 32+ messages in thread
From: Avery Pennarun @ 2014-01-28 17:18 UTC (permalink / raw)
  To: ath10k

Hi all,

When the ath10k firmware crashes on my device (let's not worry about
why the firmware crashes right now; one problem at a time), my host
CPU (ARMv7 based) can't recover.  I get some variant of this error:

[  780.116977] Unhandled fault: imprecise external abort (0x1406) at 0x2ac3706c
[  780.124336] Internal error: : 1406 [#1] SMP

I've narrowed this down to this code in ath10k/pci.c, ath10k_pci_device_reset:

        /* Put Target, including PCIe, into RESET. */
        val = ath10k_pci_reg_read32(ar, SOC_GLOBAL_RESET_ADDRESS);
        val |= 1;
        ath10k_pci_reg_write32(ar, SOC_GLOBAL_RESET_ADDRESS, val);
        for (i = 0; i < ATH_PCI_RESET_WAIT_MAX; i++) {
                if (ath10k_pci_reg_read32(ar, RTC_STATE_ADDRESS) &
                                          RTC_STATE_COLD_RESET_MASK)
                        break;
                msleep(1);
       }

Specifically, the pci_reg_read32().  I can insert as much time as I
want between the write32 and the read32; it always performs the read,
then crashes with the PC pointing a few instructions later, inside the
msleep(), with the imprecise external abort.  I think this means the
PCI read operation has encountered a PCI target abort, which suggests
that the SOC_GLOBAL_RESET_ADDRESS line has not successfully reset the
device.  From what I understand, on x86 processors PCI target aborts
are not fatal, so you might not notice this problem on those
platforms, but it's bad on ARM.

I'm using the ath10k driver from linux-next 20140117, but I had the
same problem with 3.13-rc2 so I don't think this has changed.

Are other people seeing this?  Is there something I can try to resolve it?

Thanks,

Avery

_______________________________________________
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k

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

end of thread, other threads:[~2014-03-14  6:27 UTC | newest]

Thread overview: 32+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-01-28 17:18 ath10k driver crashes whenever firmware crashes on ARM SoC Avery Pennarun
2014-01-28 18:20 ` Ben Greear
2014-01-28 18:34   ` Avery Pennarun
2014-01-28 19:01     ` Ben Greear
2014-01-28 19:11       ` Avery Pennarun
2014-01-28 20:10     ` Janusz Dziedzic
2014-01-28 20:51       ` Avery Pennarun
2014-01-29 16:44     ` Kalle Valo
     [not found] ` <CAJ-VmokorbJ2iU4rGNYdRj+A22NR9cV-5h-tDN0pD2FCurZDpA@mail.gmail.com>
2014-01-28 20:55   ` Avery Pennarun
2014-01-29 16:41 ` Kalle Valo
2014-01-29 18:44   ` Adrian Chadd
2014-01-30  2:41     ` Avery Pennarun
2014-02-09  8:00       ` Avery Pennarun
2014-02-27 15:48         ` Missing memory barriers Kalle Valo
2014-02-28  6:10           ` Avery Pennarun
2014-03-06 13:34             ` Kalle Valo
2014-03-11  7:33         ` ath10k driver crashes whenever firmware crashes on ARM SoC Kalle Valo
2014-03-11  7:40           ` Avery Pennarun
2014-03-11  7:52             ` Adrian Chadd
2014-03-11  7:59               ` Avery Pennarun
2014-03-11  8:13               ` Kalle Valo
2014-03-11  8:37                 ` Michal Kazior
2014-03-11  8:10             ` Kalle Valo
2014-03-11 19:01           ` Ben Greear
2014-03-12  8:22             ` Kalle Valo
2014-03-12 16:01               ` Ben Greear
2014-03-12 23:28                 ` Avery Pennarun
2014-03-13  5:09                   ` Kalle Valo
2014-03-13 17:34                     ` Adrian Chadd
2014-03-13 17:39                       ` Kalle Valo
2014-03-13 17:42                       ` Ben Greear
2014-03-14  6:26                         ` Kalle Valo

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.