Commit Graph

7945 Commits

Author SHA1 Message Date
peter
c0b8239aff move intrhand2_t from isa_device.h to machine/types.h - it's used far more
than in the isa dependent code.
create intrmask_t in machine/types.h  (replaces "intrmask" typedef from
sys/interrupt.h)

Reviewed by: bde
1997-05-31 09:07:36 +00:00
peter
83a98bc0a2 Store the macro values for SWI_TTY_MASK and SWI_NET_MASK in variables to
that lkm's can use them for fiddling the masks without being dependent on
which mode the kernel is compiled in (SMP or UP).  This is particularly
for ppp_tty.c which has some domain crossing between the net and tty
subsystems.  The values are not used in the spl code, they are for
reference only (ie: the compiled code uses immediate values rather than
an indirect 32 bit address and 32 bit data fetch).
1997-05-31 09:03:52 +00:00
peter
72b61693b5 The SWI_NET_MASK and SWI_TTY_MASK handlers are now back adjacent to the
top of the hardware interrupt handlers.  Apparently this is slightly
faster with the bit scanning instruction that looks these up - this set of
changes reverts the original change.

Reviewed by: bde
1997-05-31 08:59:51 +00:00
peter
ea8d17534e Bruce's original implementation of the splxxx() routines, but as C code
rather than inlines.  These are compiled with -fomit-frame-pointer and
work out pretty close to the original routines, but it might be a fraction
slower.  The reason for doing this is to prevent the SWI_* and HWI_* values
from being compiled into drivers and lkms etc which is one of the things
that prevents the same lkm from being used on both SMP and UP kernels.

This gives us a lot more scope for experimenting with the splxxx
implementaton for SMP parallelism etc.

Reviewed by: bde
1997-05-31 08:57:05 +00:00
peter
10d300a786 Bruce's original definitions for the spl/ipl code when running on the old
PIC's.

Reviewed by: bde
1997-05-31 08:50:34 +00:00
peter
f4cc25da4c Definitions for the spl/ipl code when running on an IO APIC.
Obtained from: fsmp  (part of what Steve added for IO APIC support)
Reviewed by:   bde
1997-05-31 08:49:08 +00:00
kato
ad1b2dcc5c - Use 6x86MX' instead of M2'. Cyrix officially use `6x86MX' for the
CPU code-named `M2'.

- Use the result of cpuid instruction instead of DIR to identify
  6x86MX cpu.  DIR0 and DIR1 are not documented in the data sheet, and
  cpuid instruction is enabled at reset time.

- Add a function, init_6x86MX() to initialize 6x86MX cpu.  It supports
  CPU_SUSP_HLT and CPU_IORT options.  It always sets NC1 (640K - 1M is
  not cached.), and enables L1 cache in write-back mode.

- Fix typo in the comment in identblue().
1997-05-31 08:45:24 +00:00
fsmp
5e2a5c5971 Modified code in direction of supporting MULTIPLE_IOAPICS.
- moved read_io_apic_maskc24() from isa/mpapic.h, disabled it, currently unused.
 - cleaned up various panic() calls.
1997-05-31 03:29:57 +00:00
fsmp
01f80ab36a Modified code in direction of supporting MULTIPLE_IOAPICS.
- removed set_io_apic_mask() & clr_io_apic(_mask)
 - moved read_io_apic_maskc24() to i386/mpapic.c, disabled it, currently unused.
1997-05-31 03:29:06 +00:00
stark
a3186f5a8d Submitted by: Rich Murphey (ages ago) and Gene Stark
Hopefully I've done the proper magic to merge changes between 1.17 and
1.17.2.1 into the main trunk.  Description of those changes follows:

Brought in changes sent to me in late 1995 by Rich Murphey.
I cleaned up a few things and am currently running these under
2.2-970205-GAMMA.

The changes deal with software debouncing apparently necessary on
todays faster hardware, and also some problems with the use of the -Select
line for the TW-523 sync.  This driver allows use of +PaperEnd as an
alternative.
1997-05-31 02:39:32 +00:00
dfr
654c037a9c The previous fix didn't work properly for small block size filesystems,
which caused very slow file access for cd9660 and some ext2fs filesystems.

Reviewed by:	bde
1997-05-30 22:25:35 +00:00
se
854d44183b Add code to correctly probe all buses on the Intel XXPRESS motherboard.
Add a few Intel PCI chip-set names (VX) and fix Orion entries.
1997-05-30 21:01:47 +00:00
se
e0cae756d1 Remove use of intrec*, use void* instead.
Disable test entries for wired PCI devices on bus 1.
1997-05-30 20:58:04 +00:00
kato
da76705884 Synchronize with sys/i386/isa/isa.c revision up to 1.87. 1997-05-30 10:05:56 +00:00
kato
9cb73532ad Synchronize with sys/i386/i386/microtime.s revision 1.23. 1997-05-30 10:00:58 +00:00
kato
f4a833edc3 Synchronize with sys/i386/i386/trap.c revision 1.96. 1997-05-30 09:59:11 +00:00
kato
37507fd982 Synchronize with sys/i386/isa/clock.c and sio.c revisions 1.85 and
1.168, respectively.
1997-05-30 09:57:09 +00:00
tegge
ddd2ab1026 Don't remove the controlling tty from the session if the vnode is being
cleaned. This should help for PR kern/3581.
1997-05-29 13:29:13 +00:00
fsmp
587ca3db0a Code such as apic_base[APIC_ID] converted to lapic__id
Changes to pmap.c for lapic_t lapic && ioapic_t ioapic pointers,
currently equal to apic_base && io_apic_base, will stand alone with the
private page mapping.
1997-05-29 05:58:41 +00:00
fsmp
1d5eea67e2 apic.h now has structure definitions for both the local APIC and io APIC.
apic.h has defines like:
#define lapic__id       lapic->id

Once private pages and "known virtual addr" mapping of the APICs is
ready all 'lapic__XXX' will be changed to 'lapic.XXX', and the defines
will be removed.

Changes to smp.h for lapic_t lapic && ioapic_t ioapic pointers,
currently equal to apic_base && io_apic_base, will stand alone with the
private page mapping.
1997-05-29 05:57:43 +00:00
fsmp
9872779de2 Added code to manage the local and io APICs as structures. 1997-05-29 05:56:12 +00:00
peter
76a3a648cb remove no longer needed opt_smp.h includes 1997-05-29 05:11:11 +00:00
peter
4dd6bbc1f4 minor style police (recent divergence from KNF code) 1997-05-29 05:07:10 +00:00
peter
85a1abc657 remove opt_smp.h and fix the reason it was needed. 1997-05-29 05:04:30 +00:00
peter
37a0f54086 No longer need opt_smp.h here 1997-05-29 05:00:35 +00:00
peter
ee55041d22 remove opt_smp.h from this well-included file, minor style police 1997-05-29 04:58:04 +00:00
peter
d1a736837d remove opt_smp.h, minor style police 1997-05-29 04:55:39 +00:00
peter
007e29a189 Don't need "opt_smp.h" on these files 1997-05-29 04:52:04 +00:00
peter
9f6afc2b7f Don't refer to NCPU in extern decl for SMPruntime[] 1997-05-29 04:50:23 +00:00
peter
94e94a5dbf forward declare struct timeval so that pcibus.c doesn't get a warning.
(it doesn't #include <sys/time.h> since it doesn't need it)
1997-05-29 04:46:07 +00:00
peter
6f94abef97 Update the #include "opt_smpxxx.h" includes - opt_smp.h isn't needed
very much in the generic parts of the kernel now.
1997-05-29 02:57:22 +00:00
se
cb12eb9f1d Fix problem reported by PHK: Panic in pcic probe because of NULL pointer
dereference (head->next in intr_disconnect).
1997-05-28 22:11:00 +00:00
jmz
da224a2363 The correct way to combine 2 4bit values into a 8bit one is (a<<4) | b, not
(a<<8) || b.
The conical hat please!
1997-05-28 21:25:49 +00:00
se
9764a899d5 Add one more compatibility define to make the Adaptec driver compile
with option AHC_ALLOW_MEMIO again ....
1997-05-28 20:37:19 +00:00
fsmp
d68cba57cf Add declaration of mp_probe().
This is now called directly from machdep.c.
1997-05-28 18:44:11 +00:00
se
19f6360161 Define command register enable bits, which are required for a consitency
test added to pci_compat.c
1997-05-28 11:15:18 +00:00
se
364b813321 Add consistency check to the functions that map port or memory ranges:
Return failure, if the enable bit corresponding to the map type has not
been set in the command register. This feature was requested by Justin
Gibbs, who pointed out that some early PCI to PCI bridges do not correctly
support memory windows (I assume because of the risk of deadlocks that
have been taken care of in the PCI 2.2 spec) and that some BIOS clears
the memory address decode enable bit in the command register of the PCI
device, if it finds them behind such a bridge.
1997-05-28 10:10:02 +00:00
se
81eaba2daa Two minor changes to the code that builds the pci map array:
1) Stop at the first map register that contains a zero value.
2) When testing for the map size work up from low values, since
   this works around a bug in some BusLogic SCSI card, which has
   the 16 upper port base address bits hardwired to zero.

The config register dump printed in the bootverbose case has
been slightly rearranged.
1997-05-28 10:01:03 +00:00
kato
07d5bdb4cf Synchronize with following files:
>  Revision  Changes    Path
>  1.65      +3 -3      src/sys/i386/boot/biosboot/boot.c
>  1.18      +1 -5      src/sys/i386/boot/biosboot/boot.h
>  1.26      +7 -6      src/sys/i386/boot/biosboot/disk.c
>  1.22      +4 -2      src/sys/i386/boot/biosboot/io.c
>  1.20      +12 -9     src/sys/i386/boot/biosboot/sys.c
1997-05-28 09:23:00 +00:00
kato
006dee4f27 Synchronize with sys/i386/isa/wd.c revision 1.130. 1997-05-28 09:19:35 +00:00
kato
e8929e7abf Synchronize with sys/i386/isa/isa.c revision 1.85. 1997-05-28 09:18:23 +00:00
kato
2450f614ec Synchronize with sys/i386/i386/machdep.c revision up to 1.245. 1997-05-28 09:16:19 +00:00
kato
071f6fe0fc Synchronize with sys/i386/isa/clock.c revision 1.84. 1997-05-28 09:04:26 +00:00
wpaul
db46899f5a Resolve conflicts. 1997-05-28 04:45:15 +00:00
alex
e9395b7e9a Define NPRIMES in terms of the number of elements in 'primes' (as opposed
to hardcoding it).
1997-05-28 00:47:27 +00:00
fsmp
072ad65a29 Nuke the printing of the unredirect message unless bootverbose. 1997-05-27 19:28:10 +00:00
fsmp
22acbff456 Minor cleanup of APIC_IO code.
Submitted by:	Stefan Esser <se@freebsd.org>
1997-05-27 19:24:36 +00:00
se
cb4e9a7a1b Fix problem introduced in the CMD640 workaround which could lead
to a NULL pointer dereference.

PR:		kern/3696
Submitted by:	Joel.Faedi@esial.u-nancy.fr
1997-05-27 18:28:08 +00:00
bde
d46797c1ba Staticize. 1997-05-27 16:26:39 +00:00
yokota
41dc0592de scprobe() referred to the psm_softc structure even after it was
freed ;-<

PR:		kern/3694
1997-05-27 11:55:41 +00:00
charnier
93d61f4b17 prevent `struct proc' from being declared inside parameter list.
PR:	kern/3548
1997-05-27 06:17:22 +00:00
fsmp
b5037ea036 Add support for APIC_IO to pci IRQ configuration.
The support for APIC_IO was lost in the new set of pci modules.  This patch
restores the ability to build SMP/APIC_IO kernels.
1997-05-27 04:09:01 +00:00
se
b80cb4d64d Yet another fix for configuration mechanism 1 register accesses:
Adjust the data port address by adding the two low order bits of
the register number. The address port takes only a word address
(i.e. ignores the two low order bits written to it).
1997-05-26 21:52:41 +00:00
se
d3b40e61a7 Fix previous fix: The enable bit is bit 31 (0x8000000) and not bit 15. 1997-05-26 21:25:24 +00:00
se
d4c4dc86bf Set enable bit when writing the configuration address in configuration
mode 1. Omission of this bit makes all config register accesses fail in
on recent chip sets ...

(The problem was reported and debug output provided by: Steve Passe)
1997-05-26 21:11:05 +00:00
fsmp
2d9259ea49 Fix breakage from my last commit where mp_start() was missing from UP builds. 1997-05-26 18:40:45 +00:00
fsmp
38b80d424b Changed inclusion of isa/icu.s to isa/ipl.s.
This is part of the breakup of UP/SMP specific INTerrupt code.
1997-05-26 18:00:34 +00:00
fsmp
be6c5ef7bc Split vector.s into UP and SMP specific files:
- vector.s		<- stub called by i386/exception.s
 - icu_vector.s		<- UP
 - apic_vector.s	<- SMP

Split icu.s into UP and SMP specific files:
 - ipl.s		<- stub called by i386/exception.s (formerly icu.s)
 - icu_ipl.s		<- UP
 - apic_ipl.s		<- SMP

This was done in preparation for massive changes to the SMP INTerrupt
mechanisms.  More fine tuning, such as merging ipl.s into exception.s,
may be appropriate.
1997-05-26 17:58:27 +00:00
se
7571227e55 This file has been made obsolete by the new PCI code. 1997-05-26 15:15:59 +00:00
se
cfea775806 Completely replace the PCI bus driver code to make it better reflect
reality. There will be a new call interface, but for now the file
pci_compat.c (which is to be deleted, after all drivers are converted)
provides an emulation of the old PCI bus driver functions. The only
change that might be visible to drivers is, that the type pcici_t
(which had been meant to be just a handle, whose exact definition
should not be relied on), has been converted into a pcicfgregs* .

The Tekram AMD SCSI driver bogusly relied on the definition of pcici_t
and has been converted to just call the PCI drivers functions to access
configuration space register, instead of inventing its own ...

This code is by no means complete, but assumed to be fully operational,
and brings the official code base more in line with my development code.

A new generic device descriptor data type has to be agreed on. The PCI
code will then use that data type to provide new functionality:

1) userconfig support
2) "wired" PCI devices
3) conflicts checking against ISA/EISA
4) maps will depend on the command register enable bits
5) PCI to Anything bridges can be defined as devices,
   and are probed like any "standard" PCI device.

The following features are currently missing, but will be added back,
soon:

1) unknown device probe message
2) suppression of "mirrored" devices caused by ancient, broken chip-sets

This code relies on generic shared interrupt support just commited to
kern_intr.c (plus the modifications of isa.c and isa_device.h).
1997-05-26 15:08:43 +00:00
se
eba9732c97 Add kern/kern_intr.c as a standard kernel component. This file contains
the new interrupt registration code, which is meant to be architecture
indeppendent.
1997-05-26 14:46:23 +00:00
se
d1289ee199 Add support for shared interrupts to the kernel. This code is meant
be (eventually) architecture independent. It provides an emulation
of the ISA interrupt registration function register_intr(), but that
function does no longer manipulated the interrupt controller and
interrupt descriptor table, but calls the architecture dependent
function setup_icu() for that purpose.

After the ISA/EISA bus code has been modified to directly call the new
interrupt registartion functions (intr_create() and intr_connect()),
the emulation of register_intr() should be dropped.

The C level interrupt handler function should take a (void*) argument,
and the function pointer type (inthand2_t) should defined in some  other
place than isa_device.h.

This commit is a pre-requisite for the removal of the PCI specific shared
interrupt code.

Reviewed by:    dfr,bde
1997-05-26 14:42:24 +00:00
se
a201b8ac68 Add support for shared interrupts to the kernel. This code is meant
be (eventually) architecture independent. It provides an emulation
of the ISA interrupt registration function register_intr(), but that
function does no longer manipulated the interrupt controller and
interrupt descriptor table, but calls the architecture dependent
function setup_icu() for that purpose.

After theISA/EISA bus code has been modified to directly call the new
interrupt registartion functions (intr_create() and intr_connect()),
the emulation of register_intr() should be dropped.

The C level interrupt handler function should take a (void*) argument,
and the function pointer type (inthand2_t) should defined in some  other
place than isa_device.h.

This commit is a pre-requisite for the removal of the PCI specific shared
interrupt code.

Reviewed by:	dfr,bde
1997-05-26 14:37:43 +00:00
fsmp
386d11add8 Added a test called 'LATE_START'.
This is now the default, it delays most of the MP startup to the function
machdep.c:cpu_startup().  It should be possible to move the 2 functions
found there (mp_start() & mp_announce()) even further down the path once
we know exactly where that should be...

Help from: Peter Wemm <peter@spinner.dialix.com.au>
1997-05-26 09:23:30 +00:00
peter
482f79be9f Uninitialised inp variable in div_bind().
Submitted by: Åge Røbekk <aagero@aage.priv.no>
1997-05-26 03:33:48 +00:00
yokota
f9425918d6 Corrected accidental breakage in the last commit.
Pointed out by: Steve Passe, smp@csn.net
1997-05-26 01:02:41 +00:00
fsmp
36bde2a165 Removed global hwisrs, replacing it with vec (formerly static to icu.s). 1997-05-25 16:58:03 +00:00
fsmp
4dce84d0e9 Made the array vec[] a global.
This allows the APIC code to reorder the vectors at runtime.
1997-05-25 16:55:26 +00:00
obrien
56fc405bf0 Fixed up ssigala@globalnet.it's "Jumping Daemon" screen saver for < v3.0. 1997-05-25 16:06:29 +00:00
darrenr
f083853503 Add lines for new files in ipfilter 1997-05-25 15:56:18 +00:00
darrenr
af71e3182a This commit was generated by cvs2svn to compensate for changes in r26124,
which included commits to RCS files with non-trunk default branches.
1997-05-25 15:50:46 +00:00
darrenr
31b14cdfce Import version 3.2alpha7 1997-05-25 15:50:46 +00:00
darrenr
a93925894f Import version 3.2alpha7 1997-05-25 15:50:46 +00:00
joerg
24604b1673 Add an entry for the Epson scanners since some of them repsond to more
than one LUN:

Submitted by:	simokawa@sat.t.u-tokyo.ac.jp (Hidetoshi Shimokawa)
1997-05-25 14:20:28 +00:00
peter
8f5a38010f uncomment wl again now that it compiles... 1997-05-25 07:18:22 +00:00
peter
45638e74d2 Make the multicast code compile under -current. This has not been reviewed
or tested yet.  Mike may want to make some adjustments.
1997-05-25 07:17:02 +00:00
peter
f0f8900890 Connect the ipdivert div_usrreqs struct to the ip proto switch table 1997-05-25 06:09:23 +00:00
peter
4623237221 Fix warnings (from LINT). Missing static prototype, missing vm includes
for vnode_pager_setsize().
1997-05-25 04:57:11 +00:00
peter
e803ad6c09 Fix some warnings (missing prototypes, wrong "generic" args etc)
umapfs uses one of nullfs's functions...
1997-05-25 04:50:02 +00:00
peter
47e5187c67 Fix(?) two volatile cast warnings. The buffer is volatile within the
function so as to avoid compiler side effects, but functions calling it
shouldn't be affected (gcc shouldn't cache memory scope past a function
call)
1997-05-25 04:13:27 +00:00
peter
ed2cb31ed0 match the #include opt_ file with options.i386 (it has opt_wavelan.h) 1997-05-25 04:04:20 +00:00
fsmp
7175017e0f Broke up parse_mp_table() into 2 passes:
- The 1st (preparse_mp_table()) counts the number of cpus, busses, etc. and
   records the LOCAL and IO APIC addresses.
 - The 2nd pass (parse_mp_table()) does the actual parsing of info and recording
   into the incore MP table.

This will allow us to defer the 2nd pass untill malloc() & private pages
are available (but thats for another day!).
1997-05-25 02:49:03 +00:00
fsmp
7f26f14e98 Minor cleanup.
Comment about expanded use of NAPICIDS.
Change default NINTR from 64 to 48.
1997-05-25 02:43:42 +00:00
fsmp
81f7ff2872 Delay mp_start() till after the msgbuf is mapped. We really want to delay
it till even later but tss setup prevents that right now...
1997-05-24 18:59:02 +00:00
fsmp
1befbb8296 Now that panic() is properly printing messages for early SMP panics all
the 'printf("..."); panic("\n")' sections are returned to 'panic("...")'.
1997-05-24 18:48:53 +00:00
fsmp
eee5a4f496 Move the printing of "cpu#%d" to AFTER the general panic argument string.
When a panic occurs early in the SMP boot process 'cpunumber()' hangs,
causing the panic string to be lost.  Now the system appears to hang
in 'breakpoint()', but at least the user sees the panic string before the
hang.
1997-05-24 18:35:44 +00:00
peter
16ff422327 Attempt to convert the ip_divert code to use the new-style protocol request
switch.  I needed 'LINT' to compile for other reasons so I kinda got the
blood on my hands.  Note: I don't know how to test this, I don't know if
it works correctly.
1997-05-24 17:23:11 +00:00
peter
9b1a826657 The wavelan driver doesn't even compile! 1997-05-24 12:23:44 +00:00
yokota
9319ecd97b Flip the daemon at the edge of the screen.
Submitted by:	Sandro Sigala, Chris Shenton
1997-05-24 01:44:39 +00:00
julian
38bb137783 submitted by: archie@whistle.com
Don't search for interface addresses matching interface "NULL"
it's likely to cause a page fault..
this can be triggered by the ipfw code rejecting a locally generated
packet (e.g. you decide to make some network unreachable by local users)
1997-05-23 22:33:16 +00:00
joerg
b70226eca1 Fix a couple of log()'s that came out with the wrong (default)
log level, as opposed to LOG_DEBUG.
1997-05-23 20:40:15 +00:00
sos
1dab91ea8d Fix support for the Hitachi CDR7730 IDE cdrom drive.
Patch from pr1730.
Tested on our IDE cdrom drive farm...
1997-05-23 16:22:04 +00:00
kato
6fdede24b9 Synchronize with sys/i386/i386/machdep.c revision 1.242. 1997-05-23 10:17:05 +00:00
kato
b7e54e530c Synchronize with sys/i386/conf/Makefile.i386 revision 1.97. 1997-05-23 10:12:10 +00:00
kato
29ff6d4741 Synchronize with sys/i386/conf/files.i386 and options.i386 revisions
1.161 and 1.45, respectively.
1997-05-23 10:11:04 +00:00
charnier
f5b1ff3b2b typo (Cyirx -> Cyrix). 1997-05-23 06:22:47 +00:00
brian
06bdbfe539 Create the alias library. This is currently only used by
ppp (or will be shortly).  Natd can now be updated to use
this library rather than carrying its own version of the code.

Submitted by:	Charles Mott <cmott@srv.net>
1997-05-23 04:41:31 +00:00
fsmp
5a1c8ae0ba Convert all:
panic( "xxxxx\n" );

to:
 printf( "xxxxx\n" );
 panic( "\n" );

For some as yet undetermined reason the argument to panic() is often NOT
printed, and the system sometimes hangs before reaching the panic printout.
So we hopefully at least print some useful info before the hang, as oppossed to
leaving the user clueless as to what has happened.
1997-05-22 22:35:42 +00:00
joerg
6c60e80883 Introduce a third queue per interface, serving only PPP control
protocol packets.  This queue is the only one being enabled until
network phase has been reached.
1997-05-22 22:15:39 +00:00
fsmp
79ff4a8f8f Make the default for NINTR really large (ie 64).
We just ran across one with 38+ entries.
1997-05-22 22:04:45 +00:00