login
Login
/
Register
Search
Forums
News
Blogs
Features
Site
Home
»
Mailing list archives
»
linux-kernel
»
2007
»
September
»
28
Re: MSI interrupts and disable_irq
view
thread
!MAILaRCHIVE_VOTE_RePLACE
Previous message: [
thread
] [
date
] [
author
]
Next message: [
thread
] [
date
] [
author
]
[view in full thread]
From:
Stephen Hemminger <shemminger@...>
To: <linux-kernel@...>
Cc: <netdev@...>
Subject:
Re: MSI interrupts and disable_irq
Date: Friday, September 28, 2007 - 11:08 pm
On Fri, 28 Sep 2007 22:47:16 -0400 Jeff Garzik <jgarzik@pobox.com> wrote:
quoted text
> Ayaz Abdulla wrote: > > I am trying to track down a forcedeth driver issue described by bug 9047 > > in bugzilla (2.6.23-rc7-git1 forcedeth w/ MCP55 oops under heavy load). > > I added a patch to synchronize the timer handlers so that one handler > > doesn't accidently enable the IRQ while another timer handler is running > > (see attachment 'Add timer lock' in bug report) and for other processing > > protection. > > > > However, the system still had an Oops. So I added a lock around the > > nv_rx_process_optimized() and the Oops has not happened (see attachment > > 'New patch for locking' in bug report). This would imply a > > synchronization issue. However, the only callers of that function are > > the IRQ handler and the timer handlers (in non-NAPI case). The timer > > handlers use disable_irq so that the IRQ handler does not contend with > > them. It looks as if disable_irq is not working properly. > > > > This issue repros only with MSI interrupt and not legacy INTx > > interrupts. Any ideas? > > (added linux-kernel to CC, since I think it's more of a general kernel > issue) > > To be brutally frank, I always thought this disable_irq() mess was a > hack both ugly and fragile. This disable_irq() work that appeared in a > couple net drivers was correct at the time, so I didn't feel I had the > justification to reject it, but it still gave me a bad feeling. > > I think the scenario you outline is an illustration of the approach's > fragility: disable_irq() is a heavy hammer that originated with INTx, > and it relies on a chip-specific disable method (kernel/irq/manage.c) > that practically guarantees behavior will vary across MSI/INTx/etc. > > Practices like forcedeth's unique locking work for a time, but it should > be a warning sign any time you stray from the normal spin_lock_irqsave() > method of synchronization. > > Based on your report, it is certainly possible that there is a problem > with MSI's desc->chip->disable() method... but I would actually > recommend working around the problem by making the forcedeth locking > more standardized by removing all those disable_irq() hacks. > > Using spinlocks like other net drivers (note: avoid NETIF_F_LLTX > drivers) has a high probability of both fixing your current problem, and > giving forcedeth a more stable foundation for the long term. In my > humble opinion :) >
I'll try and clean it up if the author doesn't get to it first. -- Stephen Hemminger <shemminger@linux-foundation.org> -
unsubscribe notice
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to
majordomo@vger.kernel.org
More majordomo info at
http://vger.kernel.org/majordomo-info.html
Please read the FAQ at
http://www.tux.org/lkml/
Previous message: [
thread
] [
date
] [
author
]
Next message: [
thread
] [
date
] [
author
]
Messages in current thread:
Re: MSI interrupts and disable_irq
, Jeff Garzik
, (Fri Sep 28, 10:47 pm)
Re: MSI interrupts and disable_irq
, Manfred Spraul
, (Sat Oct 13, 5:30 am)
Re: MSI interrupts and disable_irq
, Jeff Garzik
, (Mon Oct 15, 6:17 pm)
Re: MSI interrupts and disable_irq
, Yinghai Lu
, (Tue Oct 16, 1:23 pm)
Re: MSI interrupts and disable_irq
, Jeff Garzik
, (Tue Oct 16, 1:39 pm)
Re: MSI interrupts and disable_irq
, Yinghai Lu
, (Tue Oct 16, 2:01 pm)
Re: MSI interrupts and disable_irq
, Manfred Spraul
, (Wed Oct 17, 3:43 pm)
Re: MSI interrupts and disable_irq
, Yinghai Lu
, (Tue Oct 16, 1:59 pm)
Re: MSI interrupts and disable_irq
, Jeff Garzik
, (Tue Oct 16, 3:44 pm)
Re: MSI interrupts and disable_irq
, Yinghai Lu
, (Sun Oct 14, 1:59 am)
Re: MSI interrupts and disable_irq
, Manfred Spraul
, (Sun Oct 14, 3:15 am)
Re: MSI interrupts and disable_irq
, Benjamin Herrenschmidt
, (Sun Oct 14, 5:47 pm)
Re: MSI interrupts and disable_irq
, Yinghai Lu
, (Sun Oct 14, 7:15 pm)
Re: MSI interrupts and disable_irq
, Benjamin Herrenschmidt
, (Sun Oct 14, 7:36 pm)
Re: MSI interrupts and disable_irq
, Yinghai Lu
, (Sun Oct 14, 3:55 pm)
Re: MSI interrupts and disable_irq
, Yinghai Lu
, (Sat Oct 6, 1:43 pm)
Re: MSI interrupts and disable_irq
, Jeff Garzik
, (Sat Oct 6, 1:59 pm)
Re: MSI interrupts and disable_irq
, Manfred Spraul
, (Sun Oct 7, 12:54 pm)
Re: MSI interrupts and disable_irq
, Stephen Hemminger
, (Fri Sep 28, 11:08 pm)
Re: MSI interrupts and disable_irq
, Eric W. Biederman
, (Fri Oct 5, 6:12 pm)
Re: MSI interrupts and disable_irq
, Yinghai Lu
, (Sat Oct 6, 2:23 am)
Navigation
Create content
Mailing list archives
Recent posts
Popular discussions
linux-kernel
:
Amit K. Arora
[RFC] Heads up on sys_fallocate()
Greg KH
[GIT PATCH] driver core patches against 2.6.24
Linus Torvalds
Linux 2.6.25-rc4
Greg KH
Linux 2.6.25.10
git
:
linux-netdev
:
Gerrit Renker
[PATCH 15/37] dccp: Set per-connection CCIDs via socket options
David Miller
Re: [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock().
David Miller
[GIT]: Networking
Ilpo Järvinen
Re: Strange Application bug, race in MSG_PEEK complaints (was: Bug#513695: fetchma...
openbsd-misc
:
Colocation donated by:
Who's online
There are currently
2 users
and
568 guests
online.
Online users
strcmp
avantiwineref
Syndicate