mjacob [Fri, 2 Mar 2001 06:28:55 +0000 (06:28 +0000)]
Switch to using 16 bit handles instead of 32 bit handles.
This is a pretty invasive change, but there are three good
reasons to do this:
1. We'll never have > 16 bits of handle.
2. We can (eventually) enable the RIO (Reduced Interrupt Operation)
bits which return multiple completing 16 bit handles in mailbox
registers.
3. The !)$*)$*~)@$*~)$* Qlogic target mode for parallel SCSI spec
changed such that at_reserved (which was 32 bits) was split into
two pieces- and one of which was a 16 bit handle id that functions
like the at_rxid for Fibre Channel (a tag for the f/w to correlate
CTIOs with a particular command). Since we had to muck with that
and this changed the whole handler architecture, we might as well...
Propagate new at_handle on through int ct_fwhandle. Follow
implications of changing to 16 bit handles.
These above changes at least get Qlogic 1040 cards working in target
mode again. 1080/12160 cards don't work yet.
In isp.c:
Prepare for doing all loop management in outer layers.
jhb [Fri, 2 Mar 2001 06:07:38 +0000 (06:07 +0000)]
Ok, the kernel will panic in kmem_malloc() if the kernel map is full, so
malloc with M_WAITOK can't actually return NULL. I wish I could get two
people to give me the same answer about this when I ask...
mdodd [Fri, 2 Mar 2001 05:33:53 +0000 (05:33 +0000)]
version 1.7 made some changes to correct problems identifed by compiling
with egcs-1.1.1. bus_space_write_multi_2() had an extra operation that
should have been removed.
Remove it.
This fixes the panic when bus_space_write_multi_2() is used.
jhb [Fri, 2 Mar 2001 05:33:03 +0000 (05:33 +0000)]
- Check to see if malloc() returned NULL even with M_WAITOK.
- Add a KASSERT() to ensure an ithread has a backing kernel thread when we
schedule it.
- Don't attempt to preemptively switch to an ithread if p_stat of curproc
is not SRUN.
imp [Fri, 2 Mar 2001 04:30:16 +0000 (04:30 +0000)]
Flesh out this man page a bit more. Add information about
resource_query_unit and improve the descriptions of the parameters
passed to these functions.
Plus a couple minor formatting/markup changes:
o Quote -1 as \-1.
o .Dq hints to match resource_int_value().
obrien [Fri, 2 Mar 2001 02:56:59 +0000 (02:56 +0000)]
Define "FREEBSD_NATIVE" in the freebsd-native header to reduce the amount
of stuff (and thus length of error output) we put on the invocation command
line. Also follow the new FSF/GNU style of giving the symbol a value so it
can be used in `if()' statements in addition to `#if' so seldomly compiled
in code (on some platforms) gets compiled always, to help reduce bit-rot.
obrien [Fri, 2 Mar 2001 02:46:05 +0000 (02:46 +0000)]
Move the obvious bits of mixed ELF and a.out support down into this MD
header to reduce the difference of our sources to the stock GNU/FSF ones.
While the mix binary format support was nice to have in the FreeBSD MI
header as a frame work, it just clutters up too much and makes the FreeBSD
MI header more different from the FSF/GNU stock one than it needs to be.
obrien [Fri, 2 Mar 2001 02:42:42 +0000 (02:42 +0000)]
Push as much as was easy of the mixed ELF & a.out support for the i386
into the i386 MD FreeBSD header. Also comment tweaking, continuation line
style changes, and other minor changes to make this closer to the latest
FSF/GNU 3.0 sources (to reduce my headache when 3.0 is imported).
iedowse [Fri, 2 Mar 2001 00:40:06 +0000 (00:40 +0000)]
There were a few changes missed when this file was converted to
newbus in revision 1.19. As a result, lnc was, I believe, broken
for all PCI cards. The softc fields `lnc_btag' and `lnc_bhandle'
were not initialised, `rap', `rdp' and `bdp' were initialised to
the wrong values, and the size of the DMA ring memory was calculated
incorrectly.
Paul Richards has further cleanups in the pipeline, but this at
least is enough to make the driver usable with VMware.
jlemon [Thu, 1 Mar 2001 21:44:40 +0000 (21:44 +0000)]
Correctly emulate linux_connect. For nonblocking sockets, the behavior
is to return EINPROGRESS, EALREADY, (so_error ONCE), EISCONN. Certain
linux applications rely on the so_error (normally 0) being returned in
order to operate properly.
adrian [Thu, 1 Mar 2001 21:00:17 +0000 (21:00 +0000)]
Reviewed by: jlemon
An initial tidyup of the mount() syscall and VFS mount code.
This code replaces the earlier work done by jlemon in an attempt to
make linux_mount() work.
* the guts of the mount work has been moved into vfs_mount().
* move `type', `path' and `flags' from being userland variables into being
kernel variables in vfs_mount(). `data' remains a pointer into
userspace.
* Attempt to verify the `type' and `path' strings passed to vfs_mount()
aren't too long.
* rework mount() and linux_mount() to take the userland parameters
(besides data, as mentioned) and pass kernel variables to vfs_mount().
(linux_mount() already did this, I've just tidied it up a little more.)
* remove the copyin*() stuff for `path'. `data' still requires copyin*()
since its a pointer into userland.
* set `mount->mnt_statf_mntonname' in vfs_mount() rather than in each
filesystem. This variable is generally initialised with `path', and
each filesystem can override it if they want to.
* NOTE: f_mntonname is intiailised with "/" in the case of a root mount.
gallatin [Thu, 1 Mar 2001 19:21:24 +0000 (19:21 +0000)]
Allocate vm_page_array and vm_page_buckets from the end of the biggest chunk
of memory, rather than from the start.
This fixes problems allocating bouncebuffers on alphas where there is only
1 chunk of memory (unlike PCs where there is generally at least one small
chunk and a large chunk). Having 1 chunk had been fatal, because these
structures take over 13MB on a machine with 1GB of ram. This doesn't leave
much room for other structures and bounce buffers if they're at the front.
dougb [Thu, 1 Mar 2001 13:19:49 +0000 (13:19 +0000)]
Add code to turn on the entropy harvesting sysctl's as early as possible
during the boot process. We're turning it on by default, based on the
actual presence of a configured ethernet card, and/or ppp/tun devices.
Of course, it's easy to disable in rc.conf.
If the -tag list definition didn't have a -width modifier,
the first .It call was supposed to set the width depending
on the first argument type; if it is a macro name, use the
macro's width value; otherwise, use width value of `No'.
The following two lists should produce identical output:
.Bl -tag -width Er -compact
.It Er EINVAL
invalid argument
.El
.Bl -tag -compact
.It Er EINVAL
invalid argument
.El
If the outermost -tag list definition did't have a -width
modifier, the .It elements of inner lists might not work
(producing a list where each successive element `walks' to
the right).
imp [Thu, 1 Mar 2001 05:49:36 +0000 (05:49 +0000)]
MAXPATHLEN already accounts for the trailing NUL, so no need to add one in.
In addition, since we pass readlink MAXPATHLEN - 1, we would have never have
used that extra byte anyway.
deischen [Thu, 1 Mar 2001 05:22:14 +0000 (05:22 +0000)]
Hide the definition of struct __sFILEX and add the needed
lock definitions to it. flockfile state is now allocated
along with the rest of FILE. This eliminates the need for a
separate allocation of flockfile state as well as eliminating
the mutex/lock used to serialize its allocation.
imp [Thu, 1 Mar 2001 04:28:40 +0000 (04:28 +0000)]
Document the resource_*_value and resource_query_string families of
functions. These man pages likely need some markup work, so I've
specifically not added them to the Makefile yet.
mjacob [Thu, 1 Mar 2001 02:21:36 +0000 (02:21 +0000)]
Eliminate the use of the getenv_int stuff we'd been using (with a bitmap
for selecting unit). Instead, use the resource hints mechanism.
One unfortunate situation here is that there is no resource_quad_value
function- which is what I needed for WWN boot time replacement. Worse-
you can't store the hint as just plain
hint.isp.0.nodewwn="0x50000000aaaa0001"
because this gets interpreted as an int- incorrectly because it can't
be converted to an int. I can't even get this as a string. To work
around this particular case for nodewwn && portwwn setting, this
rather grotesque form will be used:
At the same time, if we have no hinted WWN, set the default WWN (which, btw,
gets overridden if the card has valid NVRAM, which is usual) to
0x400000007F000009ull (which translates to NAA == IPv4, 127.0.0.9).
Eliminate more printf's and replace them either with device_printf or
isp_prt calls.
mjacob [Thu, 1 Mar 2001 02:15:58 +0000 (02:15 +0000)]
Go to a default port and default node wwn model. Eliminate isp_name
and isp_unit and just store the device_t, fer gosh sakes.... Include
sys/bus.h for use by isp_pci.c.
iedowse [Wed, 28 Feb 2001 20:54:28 +0000 (20:54 +0000)]
The kernel did not hold a vnode reference associated with the
`rootvnode' pointer, but vfs_syscalls.c's checkdirs() assumed that
it did. This bug reliably caused a panic at reboot time if any
filesystem had been mounted directly over /.
The checkdirs() function is called at mount time to find any process
fd_cdir or fd_rdir pointers referencing the covered mountpoint
vnode. It transfers these to point at the root of the new filesystem.
However, this process was not reversed at unmount time, so processes
with a cwd/root at a mount point would unexpectedly lose their
cwd/root following a mount-unmount cycle at that mountpoint.
This change should fix both of the above issues. Start_init() now
holds an extra vnode reference corresponding to `rootvnode', and
dounmount() releases this reference when the root filesystem is
unmounted just before reboot. Dounmount() now undoes the actions
taken by checkdirs() at mount time; any process cdir/rdir pointers
that reference the root vnode of the unmounted filesystem are
transferred to the now-uncovered vnode.
dwmalone [Wed, 28 Feb 2001 16:00:32 +0000 (16:00 +0000)]
Add missing prefix for nano, I presume this was missing 'cos of the
prefix recusrion bug. Remove units which can be derived using prefixes
and other units.
dwmalone [Wed, 28 Feb 2001 15:57:38 +0000 (15:57 +0000)]
Give units a bit of a cleanup:
1) Fix a bug where the recursion on prefixes where if recusrion failed
then the next attempt started too far along the string.
2) Up some internal limits that we were about to hit off.
3) Change the constness and signedness of some things and complete missing
prototypes.
4) Remove the readerror function 'cos it could print out the wrong
wrong file name. Replace it with more useful error messages.
5) Use sizeof when passing buffers to fgets.
6) Warn about empty prefix definitions.
dillon [Wed, 28 Feb 2001 04:30:27 +0000 (04:30 +0000)]
Linux does not filesystem-sync file-backed writable mmap pages on
a regular basis. Adjust our linux emulation to conform. This will
cause more dirty pages to be left for the pagedaemon to deal with,
but our new low-memory handling code can deal with it. The linux
way appears to be a trend, and we may very well make MAP_NOSYNC the
default for FreeBSD as well (once we have reasonable sequential
write-behind heuristics for random faults).
(will be MFC'd prior to 4.3 freeze)
dillon [Wed, 28 Feb 2001 04:26:43 +0000 (04:26 +0000)]
If we intend to make the page writable without requiring another fault,
make sure that PG_NOSYNC is properly set. Previously we only set it
for a write-fault, but this can occur on a read-fault too.
(will be MFCd prior to 4.3 freeze)
dillon [Wed, 28 Feb 2001 04:13:11 +0000 (04:13 +0000)]
Fix lockup for loopback NFS mounts. The pipelined I/O limitations could be
hit on the client side and prevent the server side from retiring writes.
Pipeline operations turned off for all READs (no big loss since reads are
usually synchronous) and for NFS writes, and left on for the default bwrite().
(MFC expected prior to 4.3 freeze)
jake [Wed, 28 Feb 2001 02:53:44 +0000 (02:53 +0000)]
Sigh. Try to get priorities sorted out. Don't bother trying to
update native priority, it is diffcult to get right and likely
to end up horribly wrong. Use an honestly wrong fixed value
that seems to work; PUSER for user threads, and the interrupt
priority for ithreads. Set it once when the process is created
and forget about it.
gshapiro [Wed, 28 Feb 2001 02:06:46 +0000 (02:06 +0000)]
Fixup some of the commented out examples:
1) blackholes.mail-abuse.org is the same as FEATURE(dnsbl), so specifying
it in the "Other DNS based black hole lists" section leads to confusion of
specifying it twice.
2) Formatting issues. If error diagnostic not enclosed in double quotes,
varius visual artefacts appearse like 1) no space after ; and 2) redundant
space after ? (in CGI request), so I add quotes where needed.
3) FEATURE(dnsbl) directly use error code 550 by default, so I made other
dnsbl variants use the same error code too.
4) Comment relays.* list as "open relays" list, just "other" word is not
explain enough.