lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Date:   Wed, 30 Nov 2016 13:32:49 +0000
From:   Bharat Kumar Gogada <bharat.kumar.gogada@...inx.com>
To:     "linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
        "linux-pci@...r.kernel.org" <linux-pci@...r.kernel.org>
CC:     Bjorn Helgaas <helgaas@...nel.org>,
        Marc Zyngier <marc.zyngier@....com>,
        "arnd@...db.de" <arnd@...db.de>,
        "manoha@....qualcomm.com" <manoha@....qualcomm.com>
Subject: CPU stall with TP-Link wifi PCIe card

Hi, 

We are testing TP-link wifi PCIe card(TL-WDN4800) on our soc (pcie-xilinx-nwl.c). This card is using 
legacy interrupts and it doesn't support MSI.

When we do scan on wifi interface(using "iw dev wlan0 scan") cpu is getting stalled 
making whole system hang.

After debugging found that IRQ is being disabled after getting 1 or 2 interrupts 
immediately after we run the scan command.

But interrupts are being received to root port continuously but not being serviced by EP due to following 
condition, due to continuous interrupts cpu is getting stalled. 

In handle_simple_irq:

if (unlikely(!desc->action || irqd_irq_disabled(&desc->irq_data))) {
                desc->istate |= IRQS_PENDING;
                goto out_unlock;
  }    

The irqd_irq_disabled(&desc->irq_data) is returning 1 after 1 or 2 interrupts after we scan.

Can any one tell why irq is going into disabled state ?

What might be the source that's making it go into disabled state ?

Thanks & Regards,
Bharat


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ