mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* RE: CPU stall with TP-Link wifi PCIe card
@ 2016-12-01  0:48 Bharat Kumar Gogada
  2016-12-01  9:41 ` Thomas Gleixner
  0 siblings, 1 reply; 4+ messages in thread
From: Bharat Kumar Gogada @ 2016-12-01  0:48 UTC (permalink / raw)
  To: linux-kernel, linux-pci
  Cc: Bjorn Helgaas, Marc Zyngier, arnd, qnguyen, jiang.liu, tglx,
	sudeep.holla

After further debugging found that irq_enable is not being invoked by kernel in kernel/irq/chip.c after the few interrupts when we do wlan scan.

In ARM64, when an interrupt arises who invokes irq_disable(struct irq_desc *desc)/irq_enable(struct irq_desc *desc)
functions. 

>From my debugging for successful interrupt handling irq_disable->handler->irq_enabling is happening,
irrespective of IRQD_IRQ_DISABLED state, is it correct ?

Regards,
Bharat

> 
> Just to add, im using 4.6 kernel version. And the card is working on ARM, X86
> machine.
> 
> > 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
> >

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

* RE: CPU stall with TP-Link wifi PCIe card
  2016-12-01  0:48 CPU stall with TP-Link wifi PCIe card Bharat Kumar Gogada
@ 2016-12-01  9:41 ` Thomas Gleixner
  0 siblings, 0 replies; 4+ messages in thread
From: Thomas Gleixner @ 2016-12-01  9:41 UTC (permalink / raw)
  To: Bharat Kumar Gogada
  Cc: linux-kernel, linux-pci, Bjorn Helgaas, Marc Zyngier, arnd,
	qnguyen, jiang.liu, sudeep.holla

On Thu, 1 Dec 2016, Bharat Kumar Gogada wrote:

> After further debugging found that irq_enable is not being invoked by
> kernel in kernel/irq/chip.c after the few interrupts when we do wlan
> scan.
>
> In ARM64, when an interrupt arises who invokes irq_disable(struct
> irq_desc *desc)/irq_enable(struct irq_desc *desc) functions.

What invokes irq_disable()/irq_enable()? In which function is this
happening? There are exactly three places in the interrupt core which
invoke irq_disable():

__disable_irq(), which is invoked from disable_irq() and
		 disable_irq_nosync() and suspend_device_irq()
       
irq_pm_check_wakeup(), whis suspend/wakeup related

note_interrupt(), which disables interrupt when the handler refuses to
		  handle them.

There is nothing in the core code which invokes irq_disable/enable() pairs
in any interrupt handling code path and I have no idea how ARM64 would do
that.

> From my debugging for successful interrupt handling
> irq_disable->handler->irq_enabling is happening, irrespective of
> IRQD_IRQ_DISABLED state, is it correct ?

To be honest, I have not the faintest clue what you are trying to
explain/ask.

> > Just to add, im using 4.6 kernel version. And the card is working on ARM, X86
> > machine.
> > 
> > > 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.

That card information is useless. Which driver is handling the card?

You are neither telling which interrupt controller is used for this legacy
interrupt.

> > > 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.

So the interrupt is disabled, but it's not masked in hardware.

> > > Can any one tell why irq is going into disabled state ?
> > >
> > > What might be the source that's making it go into disabled state ?

Simply a call to disable_irq() or disable_irq_nosync().

If you can come up with some coherent information about the problem instead
of weird theories and useless conclusions then we might be able to help.

Thanks,

	tglx

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

* RE: CPU stall with TP-Link wifi PCIe card
@ 2016-11-30 16:50 Bharat Kumar Gogada
  0 siblings, 0 replies; 4+ messages in thread
From: Bharat Kumar Gogada @ 2016-11-30 16:50 UTC (permalink / raw)
  To: linux-kernel, linux-pci; +Cc: Bjorn Helgaas, Marc Zyngier, arnd, manoha

Just to add, im using 4.6 kernel version. And the card is working on ARM, X86 machine.

> 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
> 

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

* CPU stall with TP-Link wifi PCIe card
@ 2016-11-30 13:32 Bharat Kumar Gogada
  0 siblings, 0 replies; 4+ messages in thread
From: Bharat Kumar Gogada @ 2016-11-30 13:32 UTC (permalink / raw)
  To: linux-kernel, linux-pci; +Cc: Bjorn Helgaas, Marc Zyngier, arnd, manoha

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

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

end of thread, other threads:[~2016-12-01  9:45 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-12-01  0:48 CPU stall with TP-Link wifi PCIe card Bharat Kumar Gogada
2016-12-01  9:41 ` Thomas Gleixner
  -- strict thread matches above, loose matches on Subject: below --
2016-11-30 16:50 Bharat Kumar Gogada
2016-11-30 13:32 Bharat Kumar Gogada

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®