Commit Graph

1922 Commits

Author SHA1 Message Date
Bruce Evans
4ebf8117df Partially fix `sysctl machdep.console_device'. The fix will be complete
when syscons stops mapping the console to minor MAXCONS.  There is
usually no corresponding device in /dev, and the correct device has
minor 0.

cons.c:
Initialize cn_tty properly, so that CPU_CONSDEV can work.
Comment about too many variants of the console tty pointer.

machdep.c:
Return device NODEV and not error EFAULT when there is no console device.
1995-06-26 07:39:52 +00:00
Joerg Wunsch
85cd1fc590 The BT scsi driver has recently had a message changed - it could be
clearer.  The "informational message" almost looks like an instruction to
the user to change settings on the card....

It's cosmetic, but...

Submitted by:	peter@haywire.dialix.com
1995-06-25 17:45:05 +00:00
Søren Schmidt
c21dee177f First incarnation of our Linux emulator or rather compatibility code.
This first shot only incorporaties so much functionality that DOOM
can run (the X version), signal handling is VERY weak, so is many
other things. But it meets my milestone number one (you guessed it
- running DOOM).

Uses /compat/linux as prefix for loading shared libs, so it won't
conflict with our own libs.

Kernel must be compiled with "options COMPAT_LINUX" for this to work.
1995-06-25 17:32:43 +00:00
Joerg Wunsch
0f72d204e6 Reset defaults in case of boot() is looping several times (e.g. the
user has entered a bogus kernel name in the first place).

Also fix the broken #ifdef FORCE_COMCONSOLE, it has been disabled by
accident.  (NB: the keyboard probe remains disabled however.)

Few cosmetic fixes (declare functions to be void instead of int),
while i've been at this.

Pointed out by: wosch@cs.tu-berlin.de (Wolfram Schneider), for the init bug
1995-06-25 14:02:57 +00:00
Joerg Wunsch
973d025839 Add a `reset' command to UserConfig. Our documentation does
explicitly advise the users to reset the machine in case they have
done bogus things (to prevent `dset' from merging the changes into
/kernel), and it's also useful for machines with serial consoles that
are physically in another place.
1995-06-25 13:57:55 +00:00
Bruce Evans
33dc7e1b84 Reduce timeout frequency from `hz' to 0 if no ports are open or to 1 if
no ports are active, provided there are no polled ports and no
`LOSESOUTINTS' ports.  Do a little more in the interrupt handler instead.
This is a little less efficient if there are are many active ports but
a little more efficient otherwise.  Polled ports are ones with no irq
specified (as before).  `LOSESOUTINTS' ports are ones with 0x08 set in
their config flags.  Unless this flag is set, it will now take up to one
second to recover from lost output interrupts, if any.  Some 8250s and
16450s lose output interrupts.

Improve output buffering: copy the clist buffer to 2 linear buffers if
necessary and possible instead of to 1.  Handle an arbitrary queue of
buffers in the interrupt handler.  Check for waking up sleepers after
copying characters out of the clist buffer instead of before.

Delay translation of TIOCM_DTR to MCR_DTR etc. so that the top level
routines are more machine independent.

Fix bogus device register in unused code.
1995-06-25 04:51:01 +00:00
Andrey A. Chernov
525cb41eb5 1) Enable boot from root partition which end > cyl 1023, it isn't criminal
2) Produce hard error when Bread attempts to read cyl >1023
Reviewed by: bde
1995-06-23 01:42:42 +00:00
Doug Rabson
975c53c7b0 Add an option to the psm driver to skip the parts of the probe which break
some laptops with PS/2 mice.

Submitted by:	nsayer@quack.kfu.com
1995-06-22 10:56:56 +00:00
David Greenman
108b7c8091 Use ifr_mtu for the mtu value rather than ifr_metric. 1995-06-22 07:03:20 +00:00
David Greenman
381e6190c0 Change interface type...IFT_SLIP -> IFT_PARA. 1995-06-21 10:23:23 +00:00
Atsushi Murai
4112bc7874 1. Supporting fast sync value displayin latest firmware.
2. Use restrict round-robin scheme rather than a  agresive one if
   firmware has a this capability.
1995-06-19 13:02:09 +00:00
Andrey A. Chernov
ae39e7ee16 Next version, many bugs fixed 1995-06-14 19:37:02 +00:00
Bruce Evans
6f5014b462 Convert to ANSI C: change #endif THING to #endif /* THING */.
Fix one such THING in code to match comment.
Sort IO_GSC* into numeric order and update comments about the gaps.
Sort common SCSI addresses into alphabetical order.
Remove bogus comments about com ports having i/o size 4.
Uniformize whitespace.
Uniformize case in hex digits.

This file is very incomplete.  In particular, it doesn't mention any
network cards.  This doesn't matter much for the base addresses, but
it means that the comments about which addresses are free are mostly
bogus.  The i/o sizes are unreliable because of split address ranges
for many devices (VGA, wd).  The i/o sizes are incomplete.  In
particular, there are no sizes for SCSI controllers.  The bt driver
still returns a truth value instead of a size.
1995-06-14 07:38:31 +00:00
Bruce Evans
5dce8a63fc Don't convert \n to \r\n in pccnputc(). This is the responsibility of
cnputc().
1995-06-14 05:16:12 +00:00
Bruce Evans
567cfde170 Replace \n\r by \n in error messages. 1995-06-14 05:06:51 +00:00
Bruce Evans
39a7e2a41a Output \n as \r\n, not as \n\r. 1995-06-14 04:52:39 +00:00
Rodney W. Grimes
d3628763db Merge RELENG_2_0_5 into HEAD 1995-06-11 19:33:05 +00:00
Rodney W. Grimes
9b2e535452 Remove trailing whitespace. 1995-05-30 08:16:23 +00:00
David Greenman
ac8d676972 Fix setdumpdev():
- the major number wasn't checked, so accesses beyond the end of bdevsw[]
  were possible.  Bogus major numbers are easy to get because `sysctl -w'
  doesn't handle dev_t's reasonably - it doesn't convert names to dev_t's
  and it converts the number 1025 to the dev_t 0x35323031.
- Driver d_psize() functions return -1 to indicate error ENXIO or ENODEV
  (the interface is too braindamaged to say which).  -1 was interpreted
  as a size and resulted in the bogus error ENOSPC.
- it was possible to set the dumpdev for devices without a d_psize()
  function.  This is equivalent to setting the dumpdev to NODEV except
  it confuses sysctl.
- change a 512 to DEV_BSIZE.  There is an official macro dtoc() for
  converting "pages" to disk blocks but it is never used in /usr/src/sys.
  There is much confusion between PAGE_SIZE sized pages and NBPG sized
  pages.  Maxmem consists of both.

Not fixed:
- there is nothing to invalidate the dumpdev if the media goes away.
  This reduces the benefits of the early calculation of dumplo.  Bounds
  checking in the dump routines is relied on to reduce the risk of
  damage and little would be lost by relying on the dump routines to
  calculate dumplo.
- no attempt is made to stay away from the start of the device to
  avoid clobbering labels.

Fix wrong && anachronistic comment about the type of bootdev.

Reviewed by:	davidg
Submitted by:	Bruce Evans
1995-05-29 04:08:13 +00:00
Poul-Henning Kamp
13eb702447 Reduce the amount of bss the kzip stuff uses by moving big buffers into
the first Mb of memory.  Makes 4Mb machines more happy.
1995-05-29 01:38:07 +00:00
Rodney W. Grimes
265368d4f1 Submitted by: dufault
LINT talks about about 2.1.  I changed that to 2.0.5,
and clarified why certain devices need "at scbus?".

There is still a crazy "PCVT=210" which shouldn't be there,
but corrected comment as it is needed for 2.0.5.
1995-05-28 13:24:16 +00:00
David Greenman
dd1da8a5af Increased delay after reset to 10ms. Suggested by several people, the last
of which was Scott Mace. This fixes a bug where the card would be missed
sometimes during the device probe.
1995-05-27 04:40:57 +00:00
David Greenman
b8e91dab53 Update swap and dump stuff to match reality:
- option DODUMP no longer exists (remove all references to it).
- directive `swap on' is now a no-op (don't bother documenting it; remove
  comment to match code).
- directive `dumps on' still works (restore code to match comment; deprecate
  it in comment).

Reviewed by:	Poul-Henning Kamp, and me
Submitted by:	Bruce Evans
1995-05-27 04:32:12 +00:00
David Greenman
b64b660cd3 Made "NMBCLUSTERS" calculation dynamic and fixed bogus use of "NMBCLUSTERS"
in machdep.c (it should use the global nmbclusters). Moved the calculation
of nmbclusters into conf/param.c (same place where nmbclusters has always
been assigned), and made the calculation include an extra amount based
on "maxusers". NMBCLUSTERS can still be overrided in the kernel config
file as always, but this change will make that generally unnecessary. This
fixes the "bug" reports from people who have misconfigured kernels seeing
the network hang when the mbuf cluster pool runs out.

Reviewed by:	John Dyson
1995-05-25 07:41:28 +00:00
David Greenman
3e47ca0577 Enclosed is a patch for if_ze.c which will allow it to operate with
the National Semiconductor InfoMover PCMCIA cards also. In tests on a
NE4100 on Jordan's laptop here, the ze driver works fine with that
card.

Reviewed by:	Jordan Hubbard, Rod Grimes, and me
Submitted by:	Gary Palmer
1995-05-24 20:33:42 +00:00
Søren Schmidt
ad828abe4b Fixed problem with "char" cursor..
Submitted by:	ache
1995-05-21 18:30:05 +00:00
Poul-Henning Kamp
75e21a4e1e Now I could finally test this change: bad144 is now relative to the
partition.
1995-05-21 03:27:13 +00:00
Poul-Henning Kamp
4977228d33 Make the "information" slice printfs if(bootverbose).
Fix the message about Ontrack.
1995-05-18 22:45:35 +00:00
David Greenman
5eb46edfb0 Added "BROKEN_KEYBOARD_RESET" option to disable using the keyboard reset
in cpu_reset(). Some MBs don't deal with this properly.

Submitted by:	Rod Grimes
1995-05-18 09:17:07 +00:00
David Greenman
4039006ad7 Changed read_csr and write_csr to static so that they don't clash
with another driver.

Reviewed by:	Paul Richards
Submitted by:	Brian Litzinger
1995-05-17 13:15:35 +00:00
Bruce Evans
ec0896af08 Reviewed by: phk
serial_putchar() always hung if it was called and the serial port existed,
so booting with -h hung when the above bug was fixed.  Previously, setting
-h did nothing but -h was sometimes the default due to the stack garbage
bug.
1995-05-17 07:39:43 +00:00
Bruce Evans
4061e47297 Reviewed by: phk
Submitted by:	DI. Christian Gusenbauer <cg@scotty.edvz.uni-linz.ac.at>

The `howto' arg to boot() was not supplied, so it was stack garbage (actually
the return address in the boot program).  I didn't use the submitted fix.
1995-05-17 07:37:53 +00:00
David Greenman
57cb71573d Fixes to the aic7xxx sequencer code and device driver from Justin Gibbs:
1) If a target initiated a sync negotiation with us and happened to chose a
value above 15, the old code inadvertantly truncated it with an "& 0x0f".
If the periferal picked something really bad like 0x32, you'd end up with
an offset of 2 which would hang the drive since it didn't expect to ever
get something so low.  We now do a MIN(maxoffset, given_offset).

2) In the case of Wide cards, we were turning on sync transfers after a
sucessfull wide negotiation.  Now we leave the offset alone in the per
target scratch space (which implies asyncronous transfers since we initialize
it that way) until a syncronous negotation occurs.

3) We were advertizing a max offset of 15 instead of 8 for wide devices.

4) If the upper level SCSI code sent down a "SCSI_RESET", it would hang the
system because we would end up sending a null command to the sequencer.  Now
we handle SCSI_RESET correctly by having the sequencer interrupt us when it
is about to fill the message buffer so that we can fill it in ourselves.
The sequencer will also "simulate" a command complete for these "message only"
SCBs so that the kernel driver can finish up properly.  The cdplay utility
will send a "SCSI_REST" to the cdplayer if you use the reset command.

5) The code that handles SCSIINTs was broken in that if more than one type
of error was true at once, we'd do outbs without the card being paused.
The else clause after the busfree case was also an accident waiting to
happen.  I've now turned this into an if, else if, else type of thing, since
in most cases when we handle one type of error, it should be okay to ignore
the rest (ie if we have a SELTO, who cares if there was a parity error on
the transaction?), but the section should really be rewritten after 2.0.5.
This fix was the least obtrusive way to patch the problem.

6) Only tag either SDTR or WDTR negotiation on an SCB.  The real problem is
that I don't account for the case when an SCB that is tagged to do a particular
type of negotiation completes or SELTOs (selection timeout) without the
negotiation taking place, so the accounting of sdtrpending and wdtrpending
gets screwed up.  In the wide case, if we tag it to do both wdtr and sdtr,
it only performs wdtr (since wdtr must occur first and we spread out the
negotiation over two commands) so we always have sdtrpending set for that
target and we never do a real SDTR.  I fill properly fix the accounting
after 2.0.5 goes out the door, but this works (as confirmed by Dan) on
wide targets.

Other stuff that is also included:

1) Don't do a bzero when recycling SCBs.  The only thing that must explicitly
be set to zero is the scb control byte which is done in ahc_get_scb.  We also
need to set the SG_list_pointer and SG_list_count to 0 for commands that do
not transfer data.

2) Mask the interrupt type printout for the aic7870 case.  The bit we were
using to determine interrupt type is only valid for the aic7770.


Submitted by:	Justin Gibbs
1995-05-17 07:06:02 +00:00
David Greenman
60f6659f70 Changes to support the "new" bad144. Adds a "BADSCAN" ioctl and support.
Reviewed by:	Bruce Evans
Submitted by:	Poul-Henning Kamp
1995-05-16 07:52:17 +00:00
David Greenman
30fd0561cd Added apersand constraint to make sure that the source and destination
registers aren't combined.

Reviewed by:	Bruce Evans and David Greenman
Submitted by:	John Dyson
1995-05-14 22:25:11 +00:00
David Greenman
14c77d8a98 After carefully reading three reference documents, and analyzing
the 802.3 frames generated by the DC21040 (which does automatic padding
of less-than-minimum frames) and the frames generated by the 'ed'
driver, I've found that there is indeed a bug in the size of "ETHER_MIN_LEN"
as reported by several people, John Hay being the most recent. The driver
was actually setting the length to 6+6+2+50 (64 bytes), which when adding
in the CRC (which is automatically appended to the frame and not included
in the length), the minimum frame is 4 bytes larger than it is supposed to
be. All of this is confirmed by tcpdump showing 50 bytes of data for
minimum frames from the 'ed' cards and 46 bytes from 'de' cards. This
analysis has also revealed that there is garbage in the un-filled in
portion at the end of the minimum frames from the 'ed' driver; I don't
plan to fix this.
1995-05-14 11:01:20 +00:00
David Greenman
a401ebbe32 Changed swap partition handling/allocation so that it doesn't
require specific partitions be mentioned in the kernel config
file ("swap on foo" is now obsolete).

From Poul-Henning:

The visible effect is this:

As default, unless
        options "NSWAPDEV=23"
is in your config, you will have four swap-devices.
You can swapon(2) any block device you feel like, it doesn't have
to be in the kernel config.

There is a performance/resource win available by getting the NSWAPDEV right
(but only if you have just one swap-device ??), but using that as default
would be too restrictive.

The invisible effect is that:

Swap-handling disappears from the $arch part of the kernel.
It gets a lot simpler (-145 lines) and cleaner.

Reviewed by:	John Dyson, David Greenman
Submitted by:	Poul-Henning Kamp, with minor changes by me.
1995-05-14 03:00:10 +00:00
Jordan K. Hubbard
c25cfd0b0d "1 easy fix in 10 excrutiating steps"
A phone call from Manfred quickly pointed up the fact that I got the conflict
check backwards.  NOW we implement the conflict checking correctly!  Wheesh!
1995-05-13 00:09:38 +00:00
David Greenman
404abd2138 Only use card's soft-configured irq if no irq was specified in the kernel
config file. This should fix a number of complaints regarding the auto
detection behavior.
1995-05-12 22:39:40 +00:00
Garrett Wollman
5bb4f73817 The death of `options NODUMP'. Now the dump area can be dynamically
configured (and unconfigured) on the fly.  A sysctl(3) MIB variable is
provided to inspect and modify the dump device setting.
1995-05-12 19:17:31 +00:00
Bill Paul
dbda9e5ed2 - Add an entry to allow swapping on a vn device (if one is configured).
- Do the right thing when booting in NFS diskless mode, which is nothing.
  Make the default unconfigured entries for swdevt[0] and dumplo something
  that swapconf() will ignore and not choke on (the swap setup is done
  in nfs_vfsops.c when booting diskless).
1995-05-12 16:11:07 +00:00
Andrey A. Chernov
d0930614cc Add 'rc' line 1995-05-12 15:17:55 +00:00
Andrey A. Chernov
dc02f1c279 RISCom/8 driver 1995-05-12 15:09:29 +00:00
Garrett Wollman
1d86aba60b Make `make links' work by leaving swapkernel.c off out of the links processing
(it is never generic).
1995-05-11 19:48:45 +00:00
Rodney W. Grimes
b2b795f07c Fix -Wformat warnings from LINT kernel. 1995-05-11 19:26:53 +00:00
Poul-Henning Kamp
303fd456bf Use spc, not spt, DUH! Thanks Bruce!
Submitted by:	bde
1995-05-11 16:19:50 +00:00
Bruce Evans
d81fba0cda Add variable `idelayed' and macros setdelayed() and schedsofttty()
to access it.  setdelayed() actually ORs the bits in `idelayed' into
`ipending' and clears `idelayed'.

Call setdelayed() every (normal) clock tick to convert delayed
interrupts into pending ones.

Drivers can set bits in `idelayed' at any time to schedule an interrupt
at the next clock tick.  This is more efficient than calling timeout().
Currently only software interrupts can be scheduled.
1995-05-11 07:44:40 +00:00
Jordan K. Hubbard
c77a009363 Move conflicts flag to the end. 1995-05-11 07:41:52 +00:00
Bruce Evans
0ee893eb32 Add loadandclear(). It atomically loads a value from memory, clears the
value in memory and returns the original value.
1995-05-11 07:24:35 +00:00
Jordan K. Hubbard
da8d0268df Pass me the pointed chapeau - this typo somehow got through my testing. 1995-05-11 05:20:43 +00:00