peter [Thu, 15 Oct 1998 17:12:12 +0000 (17:12 +0000)]
- bzero() after malloc(). This is especially obvious when kern_malloc is
compiled with DIAGNOSTIC.
- Don't break from the preload module processing loop prematurely.
peter [Thu, 15 Oct 1998 17:09:19 +0000 (17:09 +0000)]
Fix sysinit_add().
- Don't include multiple copies of the previous sysinit in the new one.
- Leave space for and explicitly null terminate the new list.
bde [Thu, 15 Oct 1998 14:15:09 +0000 (14:15 +0000)]
Fixed breakage of gdbreplay's and gdbserver's BINDIR in previous commit.
They may belong in /usr/libexec/{aout,elf}, but objformat doesn't
support that.
jkoshy [Thu, 15 Oct 1998 13:00:34 +0000 (13:00 +0000)]
Fix a serious bug in make(1)'s handling of archive libraries.
This case did not need to be tested when RANLIBMAG was defined
(as when in an `aout' environment) because Arch_StatMember() treated
the two cases of the library not being present and a member of
the library not being present the same way, forcing a rebuild
of the library. Since in the ELF environment we don't look inside
archive libraries we now need to check if the archive library is
present in order to determine its `out-of-date'-ness.
(I hope I've been able to meet the Oct 15th freeze).
Reported-by: Steve Price (and a few others whom I've forgotten, sorry)
peter [Thu, 15 Oct 1998 00:19:08 +0000 (00:19 +0000)]
Add objformat links for gdb and (while we're at it) c++filt.
This means we can (assuming an a.out gdb is present) debug a.out kernels
and crashdumps with gdb -aout.
ken [Wed, 14 Oct 1998 22:51:51 +0000 (22:51 +0000)]
Narrow the quirk entry for the Seagate Elite 9 a bit to just cover drives
with 71* firmware revisions. Scott Mace <smace@intt.ORG> reports that
drives with 00* firmware revisions do tagged queueing just fine.
ken [Wed, 14 Oct 1998 21:17:39 +0000 (21:17 +0000)]
Disable tagged queueing for the Seagate Elite 9GB drives. They tend to get
hung up when you send tags to them too quickly. (CAM is able to recover
from the problem, but this just avoids it altogether.)
Reviewed by: gibbs
Reported by: Bret Ford <bford@uop.cs.uop.edu>
and: Martin Renters <martin@tdc.on.ca>
ken [Wed, 14 Oct 1998 20:44:05 +0000 (20:44 +0000)]
Disable the 'devstat_end_transaction' busy count printf until after 3.0
release goes out the door. We know there's a bug in the devstat
implementation in the wd driver, but bde and msmith haven't been able to
fix it yet.
So, disable the printf to avoid confusing/worrying people.
mjacob [Wed, 14 Oct 1998 16:55:00 +0000 (16:55 +0000)]
Andrew Gallatin reported some internal queue overflows with MAXISPREQUEST
at 256. So- to be safe, let's roll back to 64 while we do some more
investigating.
jdp [Wed, 14 Oct 1998 16:16:50 +0000 (16:16 +0000)]
Check the executable's header to make sure it is a valid executable.
If it is ELF, print a diagnostic saying that it is not supported yet
by this program. This is a stop-gap anti-bug-report measure because
it looks like there won't be time to implement gcore's ELF support
before 3.0 is released.
peter [Wed, 14 Oct 1998 09:53:25 +0000 (09:53 +0000)]
Initial attempt to update the Alpha loader and kernel to use the machine
independent elf loader and have access to kld modules. Jordan and I were
not sure how to create boot floppies, and the things we tried just made
SRM laugh in our faces - but it was upset at boot1 which was not touched
by these changes. Essentially this has been untested. :-(
What this does is to steal the last three slots from the nine spare longs
in the bootinfo_v1 struct to pass the module base pointer through.
The startup code now to set up and fills in the module and environment
structures, hopefully close enough to the i386 layout to be able to use
the same kernel code. We now pass though the updated end of the kernel
space used, rather than _end. (like the i386).
If this does not work, it needs to be beaten into shape pronto. Otherwise
it should be backed out before 3.0.
peter [Wed, 14 Oct 1998 08:31:27 +0000 (08:31 +0000)]
Revert part of previous commit. vaddr_t doesn't exist on FreeBSD. This
didn't affect the x86 kernel due to #ifdefs. It broke FreeBSD/Alpha
kernel compiles though.
peter [Wed, 14 Oct 1998 07:08:16 +0000 (07:08 +0000)]
Try and get the sys/* and machine/* includes via relative paths. This
saves having to do a 'make includes' after touching any header file for
the boot code.
ken [Wed, 14 Oct 1998 06:20:36 +0000 (06:20 +0000)]
Add man pages for many of the functions in the CAM library. This covers
most of the open/close routines, and the buffer/cdb parsing routines
derived from the old scsi(3) library.
The cam_cdbparse(3) man page borrows from the old scsi(3) man page, so the
copyright and history section reflect that.
The many scsi_* functions and other functions that are pulled in from the
kernel aren't documented yet, but will be eventually.
peter [Wed, 14 Oct 1998 05:07:23 +0000 (05:07 +0000)]
Align to sizeof(long) rather than sizeof(int32_t). It needs to be
long because this code is shared with the alpha. I hope the alpha can
read 32 bit ints at 32 bit alignment (vs. 64 bit alignment).
peter [Wed, 14 Oct 1998 04:04:22 +0000 (04:04 +0000)]
Support encapsulating ELF linker sets for KLD modules via gensetdefs.
Support name based dependencies at build time. This is a hack.
These only affect KLD modules.
peter [Wed, 14 Oct 1998 03:41:01 +0000 (03:41 +0000)]
gensetdefs is a standalone version of the tool that we use to wrap a
struct linker_set around the contents of ELF linker sets. This tool
also generates setdef0.c and setdef1.c for the alpha and i386 rather than
having these duplicated all over the tree too.
jkh [Wed, 14 Oct 1998 00:42:02 +0000 (00:42 +0000)]
DB_ELF_SYMBOLS doesn't appear to do anything yet, or if it does it's
not been added to the appropriate options file. Comment it out to
prevent config(8) warnings.
ken [Tue, 13 Oct 1998 22:02:38 +0000 (22:02 +0000)]
When we send a stop unit command to a device, send it as an ordered tag so
that any transactions in front of the stop command get flushed to disk
first. This will have no effect on devices that have tagged queueing
turned off, or don't support tagged queueing.
ken [Tue, 13 Oct 1998 21:41:32 +0000 (21:41 +0000)]
Fix a bug in the error recovery code. It was possible to have more than
one error recovery action oustanding for a given peripheral.
This is bad for several reasons. The first problem is that the error
recovery actions would likely be to fix the same problem. (e.g., we
queue 5 CCBs to a disk, and the first one comes back with 0x04,0x02. We
start error recovery, and the second one comes back with the same status.
Then the third one comes back, and so on. Each one causes the drive to get
nailed with a start unit, when we really only need one.)
The other problem is that we only have space to store one CCB while we're
doing error recovery. The subsequent error recovery actions that got
started were over-writing the CCBs from previous error recovery actions,
but we still tried to call the done routine N times for N error recovery
actions. Each call to dadone() was done with the same CCB, though. So on
the second one, we got a "biodone: buffer not busy" panic, since the buffer
in question had already been through biodone().
In any case, this fixes things so that any any given time, there's only one
error recovery action outstanding for any given peripheral driver.
Reviewed by: gibbs
Reported by: Philippe Regnauld <regnauld@deepo.prosa.dk>
[ Philippe wins the "bug finder of the week" award ]
ken [Tue, 13 Oct 1998 21:29:04 +0000 (21:29 +0000)]
Fix a bug in the scan lun code that showed up when we did the following
sequence of things:
- spin up a disk
- send an async event to refresh the inquiry data
- run through xpt_scan_lun() to re-probe the device
- eventually finish the probe, but panic in xpt_done() because the
periph pointer wasn't set.
Reviewed by: gibbs
Reported by: Philippe Regnauld <regnauld@deepo.prosa.dk>
bde [Tue, 13 Oct 1998 15:45:43 +0000 (15:45 +0000)]
Fixed bloatage of `struct inode'. We used 5 "spare" fields for ext2fs,
but when i_effnlink was added to support soft updates, there was only
room for 4 spares. The number of spares was not reduced, so the inode
size became 260 (on i386's), or 512 after rounding up by malloc().
Use one spare field in `struct dinode' instead of the 5th spare field
in the inode and reduced to 4 spares in the inode so that the size is
256 again.
Changed the types of the spares in the inode from int to u_int32_t
so that the inode size has more chance of being <= 256 under other
arches, and downdated ext2fs to match (it was broken to use ints
before rev.1.1).
des [Tue, 13 Oct 1998 15:14:37 +0000 (15:14 +0000)]
One vfork() changed to fork(); one execl() changed to execv(). The
latter isn't actually called as far as I can see since FreeBSD uses
termcap and not terminfo.
peter [Tue, 13 Oct 1998 09:27:00 +0000 (09:27 +0000)]
Load the full symbol tables if they are present. This means that ddb
and tracebacks have access to local symbols. This is particularly
important for the Alpha.
peter [Tue, 13 Oct 1998 09:05:58 +0000 (09:05 +0000)]
Update from NetBSD if_de.c 1.72 to 1.80. This is mostly bugfixes, and
looks like it will have most effect on decoding device capabilities and
configuration.