Skip site navigation (1)Skip section navigation (2)
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>