freebsd-dev/sys
Bruce Evans b73057227b Optimized RTC accesses by avoiding null writes to the index register
and by only delaying when an RTC register is written to.  The delay
after writing to the data register is now not just a workaround.

This reduces the number of ISA accesses in the usual case from 4 to
1.  The usual case is 2 rtcin()'s for each RTC interrupt.  The index
register is almost always RTC_INTR for this.  The 3 extra ISA accesses
were 1 for writing the index and 2 for delays.  Some delays are needed
in theory, but in practice they now just slow down slow accesses some
more since almost eveyone including us does them wrong so modern systems
enforce sufficient delays in hardware.  I used to have the delays ifdefed
out, but with the index register optimization the delays are rarely
executed so the old magic ones can be kept or even implemented non-
magically without significant cost.

Optimizing RTC interrupt handling is more interesting than it used to
be because RTC interrupts are currently needed to fix the more efficient
apic timer interrupts on some systems.  apic_timer_hz is normally 2000
so the RTC interrupt rate needs to be 2048 to keep the apic timer
firing on such systems.  Without these changes, each RTC interrupt
normally took 10 ISA accesses (2 PIC accesses and 2 sets of 4 RTC
accesses).  Each ISA access takes 1-1.5uS so 10 of then at 2048 Hz
takes 2-3% of a CPU.  Now 4 of them take 0.8-1.2% of a CPU.
2006-12-03 03:49:28 +00:00
..
amd64 Optimized RTC accesses by avoiding null writes to the index register 2006-12-03 03:49:28 +00:00
arm Provide stream operations. 2006-12-02 13:37:29 +00:00
boot Note that not all architectures use sendfile(2) buffers; 2006-11-29 05:53:25 +00:00
bsm Merge OpenBSM 1.0 alpha 12 import changes into src/sys/bsm. New events 2006-09-25 12:22:07 +00:00
cam o Style: remove a w/space before a comma. 2006-11-26 17:18:31 +00:00
coda change vop_lock handling to allowing tracking of callers' file and line for 2006-11-13 05:51:22 +00:00
compat MFP4 (108673, 110519, 110874): 2006-12-02 14:56:25 +00:00
conf fls was missing 2006-11-30 06:17:54 +00:00
contrib Sweep kernel replacing suser(9) calls with priv(9) calls, assigning 2006-11-06 13:42:10 +00:00
crypto Initialize T1 to silent gcc warning. 2006-10-22 02:19:33 +00:00
ddb Fix the output format of MI ddb watches in 'show watch' on 64-bit 2006-11-17 16:41:56 +00:00
dev Forced commit: previous revision just correctly reflected that 2006-12-03 00:29:51 +00:00
fs Add missing includes for <sys/buf.h> and <sys/bio.h>. 2006-12-02 22:30:30 +00:00
gdb Convert to new console api 2006-05-26 13:54:27 +00:00
geom Softc may be NULL in g_journal_orphan(), so don't be surprised. 2006-12-02 09:10:29 +00:00
gnu Previously, the mount_ext2fs binary listed the acceptable mount 2006-11-18 18:22:11 +00:00
i4b Sweep kernel replacing suser(9) calls with priv(9) calls, assigning 2006-11-06 13:42:10 +00:00
i386 Optimized RTC accesses by avoiding null writes to the index register 2006-12-03 03:49:28 +00:00
ia64 Since printf also has at least one critical section, we need to 2006-11-18 23:15:25 +00:00
isa Optimized RTC accesses by avoiding null writes to the index register 2006-12-03 03:49:28 +00:00
isofs/cd9660 Sweep kernel replacing suser(9) calls with priv(9) calls, assigning 2006-11-06 13:42:10 +00:00
kern Introduce userspace condition variable, since we have already POSIX 2006-12-03 01:49:22 +00:00
libkern Add strstr() function to the libkern. 2006-08-12 15:28:39 +00:00
modules Add the linux module to the amd64 build, all symbols can now be resolved. 2006-12-02 13:58:13 +00:00
net Remove obfuscating OpenBSD/NetBSD/BSDI/FreeBSD 2.x/FreeBSD 5.x ifdefs 2006-12-01 22:45:43 +00:00
net80211 Fix packing on the country band descriptor. No real change since this 2006-12-01 18:40:51 +00:00
netatalk Sweep kernel replacing suser(9) calls with priv(9) calls, assigning 2006-11-06 13:42:10 +00:00
netatm Sweep kernel replacing suser(9) calls with priv(9) calls, assigning 2006-11-06 13:42:10 +00:00
netgraph Remove m_megapullup from ng_nat and put it under libalias. 2006-12-01 16:27:11 +00:00
netinet Make sure that carp_header is 36 bytes long 2006-12-01 18:37:41 +00:00
netinet6 - In nd6_rtrequest(), when caching an rtentry, don't forget 2006-11-25 20:38:56 +00:00
netipsec Add priv.h include required to build FAST_IPSEC, which is not present in 2006-11-07 08:58:06 +00:00
netipx Sweep kernel replacing suser(9) calls with priv(9) calls, assigning 2006-11-06 13:42:10 +00:00
netkey With exception of the if_name() macro, all definitions in net_osdep.h 2006-08-04 21:27:40 +00:00
netnatm Change semantics of socket close and detach. Add a new protocol switch 2006-07-21 17:11:15 +00:00
netncp Sweep kernel replacing suser(9) calls with priv(9) calls, assigning 2006-11-06 13:42:10 +00:00
netsmb Sweep kernel replacing suser(9) calls with priv(9) calls, assigning 2006-11-06 13:42:10 +00:00
nfs NFSv4 client: 2006-11-28 19:33:28 +00:00
nfs4client NFSv4 client: 2006-11-28 19:33:28 +00:00
nfsclient In nfs_nget(), we must initialize the fh in the nfsnode before inserting the 2006-11-29 02:21:40 +00:00
nfsserver Push Giant a bit further off the NFS server in a number of straight 2006-11-24 11:53:16 +00:00
opencrypto When DIAGNOSTIC is defined, verify if we don't free crypto requests from 2006-06-06 15:04:52 +00:00
pc98 MFi386: revisions from 1.641 to 1.643. 2006-11-20 12:32:04 +00:00
pccard
pci if_watchdog -> rl_watchdog 2006-12-01 21:52:07 +00:00
powerpc Don't use vm_page_flag_set() if installing bootstrap page-table entries 2006-11-30 08:13:06 +00:00
rpc
security Merge posix4/* into normal kernel hierarchy. 2006-11-11 16:26:58 +00:00
sparc64 Turn console printf buffering into a kernel option and only on 2006-11-30 04:17:05 +00:00
sun4v Turn console printf buffering into a kernel option and only on 2006-11-30 04:17:05 +00:00
sys Introduce userspace condition variable, since we have already POSIX 2006-12-03 01:49:22 +00:00
tools Check for errors when registering and unregistering firmware modules. This 2006-06-16 21:06:03 +00:00
ufs change vop_lock handling to allowing tracking of callers' file and line for 2006-11-13 05:51:22 +00:00
vm The clean_map has been made local to vm_init.c long ago. 2006-11-20 16:23:34 +00:00
Makefile o Add cam to a list of cscope dirs. 2006-11-26 18:27:16 +00:00