Date: Sun, 21 Sep 1997 18:08:06 -0600 From: "Justin T. Gibbs" <gibbs@plutotech.com> To: current@FreeBSD.org Subject: Re: cvs commit: src/sys/conf files src/sys/dev/vx if_vx.c if_vxreg.h src/sys/i386/apm apm.c src/sys/i386/conf GENERIC files.i386 src/sys/i386/eisa 3c5x9.c aha1742.c aic7770.c bt74x.c eisaconf.c eisaconf.h if_fea.c if_vx_eisa.c src/sys/i386/i386 autoconf.c ... Message-ID: <199709220008.SAA29412@pluto.plutotech.com> In-Reply-To: Your message of "Sun, 21 Sep 1997 15:10:56 PDT." <199709212210.PAA13470@freefall.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
This is just a "heads up" on the changes I just committed to current. Most of these are related to the CAM SCSI framework I've been working on, and getting them into the tree will facilitate those who want to test the CAM snapshots that I will start providing late next week. If you have any problems with these changes, please let me know, and I'll try to address and problems as quickly as possible. The changes include: 1) Interrupt driven config hook mechanism. This basically allows a kernel component to get called back once interrupts are available and to postpone full system startup until the hook is removed. The CAM system uses this so that all sub-device probing can occur in an interrupt driven fashion which greatly speeds up system boot time. Other device drivers may want to take advantage of this mechanism as it can often eliminate the need to busy loop during autoconfiguration. 2) New callout interface. This gives O(1) insertion and removal of callouts and an O(hash chain length) amount of work to be performed in softclock. As there is a change in the client interface to untimeout, I've updated all clients in the kernel (at least those in LINT) and tested all that I have hardware for. On my CCD array tests, this change really paid off. With CAM it's very easy to keep the controllers saturated with commands. On the Adaptecs, this translates into 255 callouts active per channel and constantly taking the O(n) hit on insertion and removal was painful. The networking code is another area that may want to make heavier use of callouts now that it is efficient to do so. If you are maintaining a driver outside of the tree, or need to update a driver I missed, see the timeout.9 man page for details on how the new interface works. For those who want to read more about the new implementation, here's a pointer to the original paper: http://www.cs.berkeley.edu/~amc/research/timer/ 3) Changes in driver buffer queuing to deal with ordered transactions. These changes modify the data structure of buf_queue_head and provide new inline functions for adding and removing entries from it. bufq_disksort replaces tqdisksort and takes advantage of some additional state in the buf_queue_head data structure to improve performance. The reason for this change is to finally allow for async ordered writes of meta-data in FreeBSD. This will happen as soon as the CAM SCSI code goes into the tree as the current SCSI code still does not honor the B_ORDERED buffer flag for tagged queuing devices. All clients of buf_queue_head have been updated. 4) The CAM software interrupt code. These changes add splcam, and splsoftcam. The changes to the interrupt code have been tested under SMP and now that they are in the tree, I don't have to update my changes every time Steve sneezes. 8-) The changes wont affect a system that doesn't have CAM code in it, but will make using CAM patches easier. 5) Changes to support EISA shared interrupts. Stefan did the brunt of the work here with his kern_intr.c code, I've just updated the EISA code to make use of it. -- Justin T. Gibbs =========================================== FreeBSD: Turning PCs into workstations ===========================================
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199709220008.SAA29412>