6272 Commits

Author SHA1 Message Date
msmith
0094d0b4b9 The IDA driver is 'ida', not 'id' 1999-07-05 09:09:09 +00:00
msmith
af7615d39a Move the initialisation/tuning of nmbclusters from param.c/machdep.c
into uipc_mbuf.c.  This reduces three sets of identical tunable code to
one set, and puts the initialisation with the mbuf code proper.

Make NMBUFs tunable as well.

Move the nmbclusters sysctl here as well.

Move the initialisation of maxsockets from param.c to uipc_socket2.c,
next to its corresponding sysctl.

Use the new tunable macros for the kern.vm.kmem.size tunable (this should have
been in a separate commit, whoops).
1999-07-05 08:52:54 +00:00
green
5813debcd8 Add an extra space to " AMD Features=" to make it line up well. 1999-07-05 02:28:21 +00:00
green
a99452db04 K6-III CPUs are now case:d in the appropriate switch; also, in
print_AMD_info(), L2 internal cache is shown, as are AMD's special CPUID
infos:

CPU: AMD-K6(tm) 3D processor (350.81-MHz 586-class CPU)
  Origin = "AuthenticAMD"  Id = 0x58c  Stepping=12
  Features=0x8021bf<FPU,VME,DE,PSE,TSC,MSR,MCE,CX8,PGE,MMX>
 AMD Features=0x808029bf<FPU,VME,DE,PSE,TSC,MSR,MCE,CX8,SYSCALL,PGE,MMX,3DNow!>

PR:		kern/12512
Submitted by:	Louis A. Mamakos <louie@TransSys.COM>
1999-07-05 02:27:32 +00:00
phk
2a99fba980 Remove cmaj and bmaj args from DEV_DRIVER_MODULE. 1999-07-04 14:58:56 +00:00
wpaul
288aade398 Patch the WaveLAN/IEEE driver to detect and reject oversized received
frames (or just insane received packet lengths generated due to errors
reading from the NIC's internal buffers). Anything too large to fit
safely into an mbuf cluster buffer is discarded and an error logged.

I have not observed this problem with my own cards, but on user has
reported it and adding the sanity test seems reasonable in any case.

Problem noted and patch provided by: Per Andersson <per@cdg.chalmers.se>
1999-07-04 14:40:22 +00:00
jlemon
3bc10ab779 Some cleanup and rearrangement. hw.physmem is now an absolute quantity;
we will never use more memory than this value (if specified), but will always
check memory for validity up to this amount.

Get rid of the speculative_mprobe option; the memory amount can now be
specified by hw.physmem.
1999-07-04 02:26:23 +00:00
mckusick
9d4f0d78fa The buffer queue mechanism has been reformulated. Instead of having
QUEUE_AGE, QUEUE_LRU, and QUEUE_EMPTY we instead have QUEUE_CLEAN,
QUEUE_DIRTY, QUEUE_EMPTY, and QUEUE_EMPTYKVA.  With this patch clean
and dirty buffers have been separated.  Empty buffers with KVM
assignments have been separated from truely empty buffers.  getnewbuf()
has been rewritten and now operates in a 100% optimal fashion.  That is,
it is able to find precisely the right kind of buffer it needs to
allocate a new buffer, defragment KVM, or to free-up an existing buffer
when the buffer cache is full (which is a steady-state situation for
the buffer cache).

Buffer flushing has been reorganized.  Previously buffers were flushed
in the context of whatever process hit the conditions forcing buffer
flushing to occur.  This resulted in processes blocking on conditions
unrelated to what they were doing.  This also resulted in inappropriate
VFS stacking chains due to multiple processes getting stuck trying to
flush dirty buffers or due to a single process getting into a situation
where it might attempt to flush buffers recursively - a situation that
was only partially fixed in prior commits.  We have added a new daemon
called the buf_daemon which is responsible for flushing dirty buffers
when the number of dirty buffers exceeds the vfs.hidirtybuffers limit.
This daemon attempts to dynamically adjust the rate at which dirty buffers
are flushed such that getnewbuf() calls (almost) never block.

The number of nbufs and amount of buffer space is now scaled past the
8MB limit that was previously imposed for systems with over 64MB of
memory, and the vfs.{lo,hi}dirtybuffers limits have been relaxed
somewhat.  The number of physical buffers has been increased with the
intention that we will manage physical I/O differently in the future.

reassignbuf previously attempted to keep the dirtyblkhd list sorted which
could result in non-deterministic operation under certain conditions,
such as when a large number of dirty buffers are being managed.  This
algorithm has been changed.  reassignbuf now keeps buffers locally sorted
if it can do so cheaply, and otherwise gives up and adds buffers to
the head of the dirtyblkhd list.  The new algorithm is deterministic but
not perfect.  The new algorithm greatly reduces problems that previously
occured when write_behind was turned off in the system.

The P_FLSINPROG proc->p_flag bit has been replaced by the more descriptive
P_BUFEXHAUST bit.  This bit allows processes working with filesystem
buffers to use available emergency reserves.  Normal processes do not set
this bit and are not allowed to dig into emergency reserves.  The purpose
of this bit is to avoid low-memory deadlocks.

A small race condition was fixed in getpbuf() in vm/vm_pager.c.

Submitted by:	Matthew Dillon <dillon@apollo.backplane.com>
Reviewed by:	Kirk McKusick <mckusick@mckusick.com>
1999-07-04 00:25:38 +00:00
jdp
52fde42501 Update comment for new location of soft-updates sources. 1999-07-03 21:31:00 +00:00
peter
28a5174c43 printf int/dev_t (pointer) warning 1999-07-03 21:03:56 +00:00
peter
0c747eafde Delete stray static prototype. 1999-07-03 21:02:09 +00:00
imp
7afdd102ca Improve compatibility with other systems by changing the default
behavior slightly.

If machine/bus.h is included, but neither bus_memio.h nor bus_pio.h
are included, then behave as if both were included.

This won't change existing drivers, all of which include one or more
of bus_{p,mem}io.h, but will allow drivers from other systems to come
over with fewer changes.  I freely admit that this might not be
optimal for some drivers, but those drivers can be optimized for
FreeBSD after the initial bringup happens.

Without the change, there is a bug that preclude drivers from
compiling with strange warning/errors.

I've been running this here for a while now w/o ill effects.

Reviewed by: gibbs
Not objected to by: bde, arch@ list.
1999-07-03 20:14:08 +00:00
peter
060339e52c Delete the 'device-driver' suffix. It's been meaningless for a long time.
On the VAX, it used to be used for special compilation to avoid the
optimizer which would mess with memory mapped devices etc.  These days
we use 'volatile'.
1999-07-03 19:19:34 +00:00
peter
93cec9300e Only have the pci component compiled if pci is specified at config.
Remove #if NPCI > 0 as a result.
1999-07-03 18:34:04 +00:00
peter
0a72bd402e Move bt_isa.c to the cpu-independent isa section. 1999-07-03 18:26:25 +00:00
peter
05cb15a7d4 Fix warnings in last commit (dev_t is not an int, and not even int
compatable in arg lists on the Alpha)
1999-07-03 17:40:31 +00:00
phk
b44eacea56 Be more informative and try to ask the user in some instances if we can't
figure out the root device.
1999-07-03 08:24:00 +00:00
alc
29ea153b13 An SMP-specific change: Add the lock prefix to RMW operations
on ipending.
1999-07-03 06:33:48 +00:00
msmith
070bfcfed0 Lightly overhaul the memory sizing code again.
- The kernel environment variable 'hw.physmem' can be used to set the
   amount of physical memory space, based at 0, that FreeBSD will use.
   Any memory detected over this limit is ignored.  Documentation for
   this is available under 'help set tunables' in the loader.

 - In the case where system memory size can't be accurately determined,
   hw.physmem is used as a best-guess memory size, but speculative
   probing will be used to determine actual memory size if any of the
   guesses or hints are 16M or more.

 - If RB_VERBOSE, we list the memory regions as we test them.

 - The compile-time option MAXMEM supplies a default value for
   'hw.physmem'.
1999-07-02 20:33:32 +00:00
mjacob
231fb1813c Correct some ugly formatting. Remember to initialize the alignment tag.
Honor and pass a callers request to contigalloc if they had a non-zero
alignment constraint.
1999-07-02 05:12:11 +00:00
peter
1418b951f8 Sync with GENERIC.. (Gee, this is a useful file..) 1999-07-02 04:36:48 +00:00
peter
785f1bce08 Zap totally the npx0 memory size override. It only worked if statically
specified in the kernel config file - but setting options MAXMEM works
exactly the same.  Userconfig overrides of this have not worked for
ages.

Also, change the getenv for the loader override to hw.physmem based on a
prior suggestion from Mike Smith.  I think he still wants to change this
some, but this shouldn't get in his way.  This is a forced setting of
the memory size, not a "cap".  We probably should have a plain 'maxmem'
variable as well which does do a cap, without loosing the bios memory
configuration data.
1999-07-02 04:33:05 +00:00
jkh
1473f599fc Working kernel tags!
Submitted by:	Craig Leres <leres@ee.lbl.gov>
PR:		2806
1999-07-02 04:00:01 +00:00
jkh
df3583f21b 127 fire Firewire driver <ikob@koganei.wide.ad.jp> 1999-07-02 02:49:24 +00:00
jkh
e1bfba0565 Remove the now-bogus comment about using iosiz with npx0 for memory
sizing - environment does this properly  now.  Thanks, Peter!
1999-07-01 18:39:23 +00:00
peter
67438f2286 Look up the kernel environment for MAXMEM as a final override for the
memory size.  If somebody wants to change the name, fine - I used this
since it's consistant with the config variable it replaces.
This is intended to replace the npx0 msize hack (which no longer works).
1999-07-01 18:33:22 +00:00
peter
65a02b75ea Move kern_envp and preload initialization a little earlier so that we
can do a getenv_int() inside the memory sizing routines to override the
memory limit.
1999-07-01 18:27:15 +00:00
peter
f2e5b74638 Fix some warnings, unused functions etc. 1999-07-01 15:05:11 +00:00
peter
6cb5fe6c6b Slight reorganization of kernel thread/process creation. Instead of using
SYSINIT_KT() etc (which is a static, compile-time procedure), use a
NetBSD-style kthread_create() interface.  kproc_start is still available
as a SYSINIT() hook.  This allowed simplification of chunks of the
sysinit code in the process.  This kthread_create() is our old kproc_start
internals, with the SYSINIT_KT fork hooks grafted in and tweaked to work
the same as the NetBSD one.

One thing I'd like to do shortly is get rid of nfsiod as a user initiated
process.  It makes sense for the nfs client code to create them on the
fly as needed up to a user settable limit.  This means that nfsiod
doesn't need to be in /sbin and is always "available".  This is a fair bit
easier to do outside of the SYSINIT_KT() framework.
1999-07-01 13:21:46 +00:00
alc
fb44239c8b An SMP-specific change: Remove unnecessary lock acquires and releases
surrounding critical sections that consist of (1) a single read or
(2) a single locked RMW operation.

(Thanks to thomma@slip.net (Tamiji Homma) for helping to test
these changes.)
1999-06-30 03:39:29 +00:00
peter
b047a365bb sscape_mss is supposed to work.. 1999-06-29 21:53:59 +00:00
peter
80be21c07f Drop old-scsi drivers (was commented out) od0 and (not commented) sctarg0 1999-06-29 21:52:07 +00:00
mph
fb5bf6fe15 Correct spelling of NMBCLUSTERS in a comment.
Submitted by:	Peter Radcliffe <pir@pir.net>
1999-06-29 19:06:16 +00:00
peter
d4b259f874 With asbestos suit on, make the options indenting a little more consistant
so that it doesn't screw up the alignment when commenting out an entry.
Also dequote two entries that do not need it.
1999-06-29 18:58:27 +00:00
peter
73e721b175 Put on my asbestos suit and attempt to tidy up and add some simple docs
or notes to make it much more obvious what things are for people who
have not committed LINT to memory yet.
1999-06-29 18:55:53 +00:00
yokota
0676b04846 idev->id_irq is an interrupt MASK, not an interrupt number.
Thus, we need to convert the mask to the number (by ffs()) when
writing back this value to the resource in save_resource().
1999-06-29 17:37:44 +00:00
yokota
7fb3641907 Keyboard allocation/deallocation fix.
- Do not try to allocate a keyboard in pccnprobe() when probing the vt
  driver for the kernel console.  Rather, allocate a keyboard when
  initializing the vt driver in pccninit().
- Release the keyboard in pccnterm().
- Don't try to read from the keyboard, if it is not present.
1999-06-29 17:36:20 +00:00
peter
893e0d6d36 (mostly) fix ordering. 1999-06-29 16:14:20 +00:00
luoqi
4ee0d623ca Save common_tssd before it's loaded and the busy bit set.
Submitted by:	bde
1999-06-28 15:34:54 +00:00
peter
debb5dbb90 Fix page fault in visual userconfig's save code. (I only use normal
userconfig, my original tweaks to visual mode were not well tested)

Submitted by:	Peter Holm <peter@holm.cc>
1999-06-28 12:07:36 +00:00
peter
88bef0081c Use the same -UKERNEL strategy as the alpha to avoid the inlines etc. 1999-06-28 09:21:41 +00:00
peter
7f6f706641 Don't #include i386/isa/isa_dma.h - it's in isa/isavar.h now. This
driver is probably not far from being MI now anyway.
1999-06-28 09:19:58 +00:00
peter
64f5069512 Tweak include ordering so sys/systm.h is before sys/buf.h to keep buf.h's
inlines happy.
1999-06-28 09:12:46 +00:00
phk
50faed161f Hmm, might as well make all of BEFORE_DEPEND first in case make depend
wasn't run.
1999-06-28 07:19:51 +00:00
phk
771a9642c3 Also make pci_if.h early if make depend wasn't run. 1999-06-28 07:10:55 +00:00
phk
2e0584f725 Make bus_if.h and device_if.h as early as possible if make depend hasn't
been run.
1999-06-28 07:06:21 +00:00
alc
f03495d396 An SMP-specific change: Remove an unnecessary lock acquire and release
from every system call.  (Storing a 32-bit constant is inherently
atomic.)

Reviewed by:	Matthew Dillon <dillon@apollo.backplane.com>
1999-06-27 21:31:43 +00:00
mjacob
63f64fbefe add description of Qlogic ISP FC Full Duplex option 1999-06-27 19:35:23 +00:00
peter
468a830ab3 Shut up gcc. 1999-06-27 09:08:48 +00:00
peter
99ec5c753f Quieten some warnings as a result of changes in ls_items[] constness over
time.
1999-06-26 12:19:03 +00:00