Date: Fri, 26 Dec 2008 16:38:26 -0800 From: Alfred Perlstein <alfred@freebsd.org> To: "M. Warner Losh" <imp@bsdimp.com> Cc: svn-src-head@FreeBSD.org, scottl@samsco.org, src-committers@FreeBSD.org, mav@FreeBSD.org, svn-src-all@FreeBSD.org Subject: Re: svn commit: r186182 - head/sys/dev/ata Message-ID: <20081227003826.GV18389@elvis.mu.org> In-Reply-To: <20081216.120412.1346820326.imp@bsdimp.com> References: <4947D474.9040802@samsco.org> <20081216.101038.1172765453.imp@bsdimp.com> <4947F363.4010909@samsco.org> <20081216.120412.1346820326.imp@bsdimp.com>
next in thread | previous in thread | raw e-mail | index | archive | help
* M. Warner Losh <imp@bsdimp.com> [081216 11:06] wrote: > In message: <4947F363.4010909@samsco.org> > Scott Long <scottl@samsco.org> writes: > : M. Warner Losh wrote: > : > In message: <4947D474.9040802@samsco.org> > : > Scott Long <scottl@samsco.org> writes: > : > : Alexander Motin wrote: > : > : > Author: mav > : > : > Date: Tue Dec 16 16:04:40 2008 > : > : > New Revision: 186182 > : > : > URL: http://svn.freebsd.org/changeset/base/186182 > : > : > > : > : > Log: > : > : > Call ata_legacy() only once on attach and save it's result. Scanning PCI > : > : > configuration registers (which are not going to change) on every interrupt > : > : > looks expensive, especially when interrupt is shared. Profiling shows me 3% > : > : > of time spent by atapci0 on pure network load due to IRQ sharing with em0. > : > : > > : > : > : > : Nice change. PCI Config registers are exceptionally slow to access on > : > : most systems. > : > > : > And we've been recommending to people for years that they avoid config > : > space access in interrupt handlers. Maybe it is time for something > : > that checks and prints a warning? > : > > : > : With the move to memory-mapped pci config registers, there was an > : intention to allow low-end devices to put their registers into config > : space. I think I recall some legacy ultra-low end devices that also > : put a few required registers into config space. So while it's not ideal > : to access it from an interrupt handler, I can't think of why it should > : be expressly forbidden. > > True. I wasn't planning on banning it, just warning about it so we > could be purposeful in our use of it. Likely unworkable though... Easy enough to stash a "once" varible in the generic device struct and warn when returning from an isr when INVARIANTS or something is turned on. Then you'd only get one warning per device once it happens. -- - Alfred Perlstein
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20081227003826.GV18389>