From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753508AbdCAWjX (ORCPT ); Wed, 1 Mar 2017 17:39:23 -0500 Received: from Galois.linutronix.de ([146.0.238.70]:41534 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752261AbdCAWjP (ORCPT ); Wed, 1 Mar 2017 17:39:15 -0500 Date: Wed, 1 Mar 2017 23:38:07 +0100 (CET) From: Thomas Gleixner To: Gabriel C cc: Cong Wang , lkml , "David S. Miller" , "Peter Zijlstra (Intel)" Subject: Re: e1000_netpoll() , BUG: sleeping function called from invalid context In-Reply-To: <396fbe61-daec-ff59-c9d3-f569ae55129f@gmail.com> Message-ID: References: <0f5cc059-3db3-f0ae-77a5-0a0c872e4874@gmail.com> <56df0620-6042-50bb-a929-2e8043369554@gmail.com> <396fbe61-daec-ff59-c9d3-f569ae55129f@gmail.com> User-Agent: Alpine 2.20 (DEB 67 2015-01-07) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, 1 Mar 2017, Gabriel C wrote: > On 01.03.2017 18:13, Thomas Gleixner wrote: > > On Sat, 18 Feb 2017, Gabriel C wrote: > > > That got changed in commit 3111912971251 which got into Linus tree during > > > the 4.10 merge window. So it is in 4.10-rc8. > > > > > > Confused. > > > > I'm still confused. Gabriel, can you please try to reproduce with 4.10 > > final? > > > > Sure , do you want plain 4.10.0 or 4.10.1 ? > > Btw is possible to rename e1000_netpoll() from e1000e driver > to e1000e_netpoll() so we know what driver is in use ? Grr. yes. That would be definitely helpful. I was staring into the wrong one of course. > My card uses the e1000e driver.. Does the patch below fix it? Thanks, tglx 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); }