Re: e1000_netpoll() , BUG: sleeping function called from invalid context

From: Gabriel C
Date: Thu Mar 02 2017 - 09:51:50 EST




On 02.03.2017 01:04, Gabriel C wrote:


Does the patch below fix it?

I'll test you patch in a bit and let you know.


It seem to work.

But to be really sure I let the box running with this setup over night.


Also with 4.10.1 + your patch all seems fine..

The box is up 13 hours now and I cannot trigger the BUG()..


8<--------------

--- a/drivers/net/ethernet/intel/e1000e/netdev.c
+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
@@ -6716,19 +6716,19 @@ static irqreturn_t e1000_intr_msix(int _

vector = 0;
msix_irq = adapter->msix_entries[vector].vector;
- disable_irq(msix_irq);
+ disable_hardirq(msix_irq);
e1000_intr_msix_rx(msix_irq, netdev);
enable_irq(msix_irq);

vector++;
msix_irq = adapter->msix_entries[vector].vector;
- disable_irq(msix_irq);
+ disable_hardirq(msix_irq);
e1000_intr_msix_tx(msix_irq, netdev);
enable_irq(msix_irq);

vector++;
msix_irq = adapter->msix_entries[vector].vector;
- disable_irq(msix_irq);
+ disable_hardirq(msix_irq);
e1000_msix_other(msix_irq, netdev);
enable_irq(msix_irq);
}