From owner-freebsd-current Wed Mar 6 14:43:47 2002 Delivered-To: freebsd-current@freebsd.org Received: from mail12.speakeasy.net (mail12.speakeasy.net [216.254.0.212]) by hub.freebsd.org (Postfix) with ESMTP id 3864D37B405 for ; Wed, 6 Mar 2002 14:43:19 -0800 (PST) Received: (qmail 2591 invoked from network); 6 Mar 2002 22:43:17 -0000 Received: from unknown (HELO server.baldwin.cx) ([216.27.160.63]) (envelope-sender ) by mail12.speakeasy.net (qmail-ldap-1.03) with DES-CBC3-SHA encrypted SMTP for ; 6 Mar 2002 22:43:17 -0000 Received: from laptop.baldwin.cx (john@laptop.baldwin.cx [192.168.0.4]) by server.baldwin.cx (8.11.6/8.11.6) with ESMTP id g26Mhdv03281; Wed, 6 Mar 2002 17:43:39 -0500 (EST) (envelope-from jhb@FreeBSD.org) Message-ID: X-Mailer: XFMail 1.4.0 on FreeBSD X-Priority: 3 (Normal) Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 8bit MIME-Version: 1.0 In-Reply-To: <200203051715.g25HFsk60359@apollo.backplane.com> Date: Wed, 06 Mar 2002 17:43:19 -0500 (EST) From: John Baldwin To: Matthew Dillon Subject: Re: Patch for critical_enter()/critical_exit() & interrupt assem Cc: Bruce Evans , Terry Lambert , Alfred Perlstein , Bosko Milekic , Seigo Tanimura , FreeBSD current users , Julian Elischer Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG On 05-Mar-02 Matthew Dillon wrote: > >:> It makes no sense whatsoever to me to be told not to commit something >:> due to stale code that may not be quite compatible sitting in P4 that >:> you can't make work in any reasonable time frame. You should stop >:> trying to screw over my work and instead look to your own. You have >:> so many balls in the air constructed in a fine mesh that you can't seem >:> to accept a single change to your perfectly meshing subsystems, half >:> of which are going stale in P4. This is greatly restricting your >:> ability to consider deviation. >: >:*sigh* The only reason I'm not spending my cycles tracking down the >:preemption >:bugs so that preemption can go in is that I have decided that at the moment >:there is more gain to be found by doing actual locking work. This means that >:preemption will eventually go in, just Not Right Now. To that extent, I >:don't >:think premature optimizations based on observations of a kernel locked >:entirely >:by Giant that alter the API's preemption will change (and that were >:originally >:introduced when I committed all the bits of the preemption code that I could >:w/o breaking the kernel) should go in. > > Those are your cycles, not mine. Why should I be forced to sit on my > heals > for an unknown period of time (but so far 3 weeks waiting for the ucred > changes and 2 weeks waiting for critical_*()), twiddling my thumbs > wasting > MY cycles just because of your own scheduling issues? > > That's really the crux of this whole situation. I don't think it is > appropriate for you to impose your development methodology on me or > anyone else, and I most especially do not think it is appropriate for > you to arbitrarily hold off the hard work that I have done in order > to fit it into your schedule. > > I have said very clearly what I intend these critical_*() patches to > do. I have said, repeatedly, that I do not believe they would > intefere with your work in any significant manner. You have yet to > explain in any detail why you think they would. I have said, > repeatedly, that I am perfectly willing to work with you later on > when you ARE ready to move forward on your own work. > > That's the crux of the situation, John. I do not believe you have > the right to hold this work off, at least not based on any of the > explanations you have given so far. Have you read the paper I posted to arch? It quite clearly (I thought) explained the role of the critical_* and the cpu_critical_* in the preemption code. It should be rather obvious from that why I don't want the critical_* stuff to change from their current model. I also think that just as it is too early to optimize to light weight ithread switches (sparc64 is going to optimize all kthread switches, not just ithreads by using a more general approach, and we may do that on other arch's as well) it is too early to optimize and add complexity for certain API's when we aren't sure what effect they will really have on the final product. For example, right now Giant blocks almost all of the kernel so we are going to contest it on almost every case. Contesting involves grabbing the sched_lock which can result in executing the critical section implementation more than we will end up doing later. I would rather wait on optimizations until the system is farther along and we can judge what things really need optimization and which ones don't. Optimizations are usually a tradeoff as far as increased complexity vs. performance and I personally at least would like to keep things simple for the time being. However, I would not be opposed to the code if it fit into the design in the document I posted to arch. A couple of notes though based on a quick preliminary glance at the code: - The swi code has been changed to not be limited to a bitfield so that it can support an arbtirary number of swi's. Right now we still support a small number but we may end up with several netisr's for example. We also may move away from scheduling netisr's via swi_sched anyways and using a semaphore or some such instead. Presently your patch goes back to assuming a fixed number of SWI's. - More of a minor niglet that is easy to be fixed: you added MD fields to the MI pcpu bits of struct pcpu. MD fields belong in the PCPU_MD_FIELDS macro in sys/i386/include/pcpu.h. If you intend for the fields to be MI, then that is more of a problem as it assumes too much about interrupts for different platforms. Alpha interrupts will not easily fit into a simple bitmask for example. -- John Baldwin <>< http://www.FreeBSD.org/~jhb/ "Power Users Use the Power to Serve!" - http://www.FreeBSD.org/ To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message