and fixing some major bugs.
- Add support for the v5 firmware interface, used by the DAC1164P
(tested) and AcceleRAID 352 (untested but should work). We now cover
all of the Mylex family's protocols except for v2 (used by EISA and
Alpha-compatible cards).
- Fix an accounting bug which resulted in endless 'poll still busy'
messages. In situations of high controller load the count of poll
commands could be incremented without actually successfully launching
a command. This totally removes the accounting for status poll
commnads; it was its own worst enemy.
- Add some simple reentry prevention locks to processing of the waiting
and completed command queues to prevent races which could result in
I/O being done or completed twice (both are fatal). This highlights
a need for simple locking primitives in both the UP and SMP kernels.
- Streamline the handling of command completion to reduce the amount of
redundant work being done. Remove the code which tests for commands
that have gone missing in action; nobody has ever seen one of these
and it wouldn't have worked properly anyhow.
- Handle disconnection of drives from the controller in the detach,
not shutdown method. This avoids problems flushing the cache in
a panic when a drive is mounted.
- Don't call bus_generic_detach when disconnecting drives; it doesn't
actually do anything useful.
- Increment the log message index regardless of whether we actually
retrieved one or not. If we run into a message that we can't fetch,
we don't want to spin endlessly complaining about the fact.
- Don't assume that interrupts will work when we're flushing the
controller. We may think they are enabled, but in eg. a panic
situation the controller may not be able to deliver an interrupt.
using make instead of custom scripts) and two floppies instead of
one. The resultant floppy can do everything that the individual
floppies (dial, net, install, isp, router) could do, modulo some bit
rot that has occurred since PicoBSD last compiled. It also includes
all the programs on the fixit floppy, which could thus also die.
/bin currently contains the following files:
-sh dump ln ns sps
[ ed login ping stty
badsect ex ls ps swapon
cat expr mkdir pwd sync
chgrp fdisk mknod pwd_mkdb sysctl
chmod find more rdump syslogd
chown fsck mount reboot tar
chroot ftp mount_cd9660 restore telnet
clri getty mount_msdos rlogin telnetd
cp grep mount_nfs rm test
date gunzip mount_std rmdir traceroute
dd gzip msg route umount
dev_mkdb hostname mt routed vi
df ifconfig mv rrestore view
dhclient inetd natd rsh vm
dhclient-script init netstat sed w
disklabel kget newfs sh zcat
dmesg kill nfs sleep
Structure is in place for using the same build for the other
directories, but I'm no longer sure we need this. The current first
floppy will run fine by itself, but the size of a compressed kernel
has increased by nearly 50% since 3.2, and there's not much space for
anything useful on the remainder of the floppy. The current method
creates a larger mfs and can read as many floppies as the user can
stand. The footprint appears to be round 14 MB.
using make instead of custom scripts) and two floppies instead of
one. The resultant floppy can do everything that the individual
floppies (dial, net, install, isp, router) could do, modulo some bit
rot that has occurred since PicoBSD last compiled. It also includes
all the programs on the fixit floppy, which could thus also die.
/bin currently contains the following files:
-sh dump ln ns sps
[ ed login ping stty
badsect ex ls ps swapon
cat expr mkdir pwd sync
chgrp fdisk mknod pwd_mkdb sysctl
chmod find more rdump syslogd
chown fsck mount reboot tar
chroot ftp mount_cd9660 restore telnet
clri getty mount_msdos rlogin telnetd
cp grep mount_nfs rm test
date gunzip mount_std rmdir traceroute
dd gzip msg route umount
dev_mkdb hostname mt routed vi
df ifconfig mv rrestore view
dhclient inetd natd rsh vm
dhclient-script init netstat sed w
disklabel kget newfs sh zcat
dmesg kill nfs sleep
Structure is in place for using the same build for the other
directories, but I'm no longer sure we need this. The current first
floppy will run fine by itself, but the size of a compressed kernel
has increased by nearly 50% since 3.2, and there's not much space for
anything useful on the remainder of the floppy. The current method
creates a larger mfs and can read as many floppies as the user can
stand. The footprint appears to be round 14 MB.
Work-sponsored-by: Sitara Networks Inc.
attaching to the device via chip*, use the newbus nomatch method to report
the device. This leaves them unattached so that a driver can be easily
loaded to grab them later.
o be more careful about clearing addresses (this isn't a kludge)
o For AF_INET interfaces, call SIOCDIFFADDR to remove last(?) bit
of cruft.
Special cases for AF_INET shouldn't be here, but I didn't see a good
generic way of doing this. If I missed something, please let me know.
This gross hack makes pccard ejection stable for ethernet cards.
Submitted by: Atushi Onoe-san
The commit message for rev 1.7 was incorrect with respect to the %e
and %l specifiers, which _can_ be fixed by correcting excessive
whitespace-gobbling.
The commit message for rev 1.16 was incorrect with respect to the %e
and %l specifiers, which _can_ be fixed by correcting excessive
whitespace-gobbling.
o Build tools before doing anything in or with the object tree.
o Tools don't use the object tree any more, but have there object
tree located in the temp. world.
o Use the proper make env. for cleaning and building the object tree.
o Don't create kernel include subdirectories in the temp. world. These
are removed later on and replaced by symlinks.
o Change the layout of the object tree:
The temp. world now is /usr/obj/${MACHINE_ARCH}${.CURDIR}/${BUILD_ARCH}.
/usr/obj can be set/changed by using MAKEOBJDIRPREFIX, and {.CURDIR}
obviously depends on where the source tree is located. MACHINE_ARCH
is the arch. for which the world is to be build and BUILD_ARCH is the
arch. on which we are building.
The object tree now is /usr/obj/${MACHINE_ARCH}${.CURDIR}.
This allows concurrent cross-builds and allows the object tree to be
shared on different archs., each doing the same cross-build. This of
course assumes that the output on Alpha (for example) is the same as
the output of an Alpha cross-build on i386 (for example).
The use of NOCLEAN is is still dangerous, but should be usable in many
more situations than before. It should now be possible to safely
restart an interrupted build with NOCLEAN without side-effects. Because
the tools don't share the object tree with the normal (cross-build), no
tools have to be rebuild.
These drivers were cloned from the ed and ep drivers back in 1994
when PCMCIA cards were a very new thing and we had no other support
for such devices. They treated the PCIC (the chip which controls the
PCCARD slot) as part of their device and generally hacked their way
to success. They have significantly bit-rotted relative to their
ancestor drivers (ed & ep) and they were a dead-end on the evolution
path to proper PCCARD support in FreeBSD.
They have been terminally broken since August 18 where mdodd forgot
them and nobody seems to have missed them enough to fix them since.
I found no outstanding PRs against these drivers.
o fix return type of sio_pccard_detach
o don't free softc in deatch, since that is done by newbus
o disconnect interrupt we used to have. Add cookie to com so that we can
tear down the interrupt on unload
o Set gone earlier, but likely doesn't matter
This makes sio pccards work again. Cards that are active when ejects may
not work (but they might, softc goes away quickly).
These changes are unreviewed by bde. I'll make any style changes he wants.
o Expose ed_stop and call it early to shutdown the hardware.
o When releasing the interrupt, pass the cookie for the irq, not
a pointer to the cookie (this is the base problem).
o Release other resources used, just like the ep driver
the activate method to the setup_intr, and turn it off to
teardown_intr.
This makes the ed driver not enter its interrupt routine during the
probe. Apparently, an interrupt happens when you disable the
interrupts. There are other problems with ed still.
ralta. These keys combine shift/ctrl/alt function and the AltLock
function. When these keys pressed together with another key, they act
just like the ordinary shift/ctrl/alt keys. When these keys are
pressed and released alone, Alt lock state is toggled.
PR: kern/12475
keymap and pressed, the system panic will be forced.
This feature must be specifically enabled by a new sysctl variable:
machdep.enable_panic_key. Its default value is 0. The panic key
won't do anything unless this variable is set to non-zero.
To use the panic key, add a keyword 'panic' to a key in your
keymap file. The following example assigns the panic function
to SysReq (Alt-PrintScreen) key (keycode 84).
083 del '.' '.' '.' '.' '.' boot boot N
084 panic nop nop nop panic nop nop nop O
085 nop nop nop nop nop nop nop nop O
PR: kern/13721
The way is now open to schg and sappnd key files and directories in
our tree. There are recommendations in bin/15229.
PR: bin/15229
Reviewed by: imp, brian
possible for ro->ro_rt to be non-NULL even though the RTF_UP flag
is cleared. (Example: a routing daemon or the "route" command
deletes a cloned route in active use by a TCP connection.) In that
case, the code was clobbering a reference to the routing table
entry without decrementing the entry's reference count.
The splnet() call probably isn't needed, but I haven't been able
to prove that yet. It isn't significant from a performance standpoint
since it is executed very rarely.
Reviewed by: wollman and others in the freebsd-current mailing list