Home | History | Annotate | Download | only in include
History log of /src/sys/arch/i386/include/intr.h
RevisionDateAuthorComments
 1.37  26-Feb-2003  fvdl Redirect some includes to x86/foo.h
 1.36  16-Dec-2002  fvdl Remove leftover declarations used for debugging purposes only.
 1.35  11-Dec-2002  fvdl Since a CPU may spin waiting for another CPU to handle an IPI, an
IPI must be the very first thing to be handled in splx(), if it
had been blocked before. Change things around a bit to guarantee
this.
 1.34  01-Dec-2002  fvdl For softints, there's no intrframe on the stack, so don't try to use it.
Use a seperate lock function (in taking the same lock) instead.
 1.33  27-Nov-2002  fvdl Specify the interrupt frame as the argument to i386_int(un)lock.
 1.32  23-Nov-2002  fvdl Remove "ioapic.h" include, and always include the intr_find_mpmapping
prototype; it's not worth the extra bytes to avoid including this.
 1.31  22-Nov-2002  fvdl Removed unused function. From kristerw.
 1.30  22-Nov-2002  fvdl New interrupt code. The basic idea behind it is to hide the differences
in interrupt controllers in struct pic, and try to keep as much
common code as possible. At the lowest (asm) level, this is done
with CPP macros.

The main structure is now struct intrsource, describing an established
interrupt line, of any kind (soft/hard local apic/legacy apic/IO apic).
For quick masking, there may be a maximum of 32 sources per CPU.
Sources can be assigned to any CPU in the MP case, though currently they
all go to the boot CPU.
 1.29  01-Nov-2002  fvdl Make splsched == splclock, and splserial > splsched. Unfortunately,
we have to retain the 'pick unlocked interrupt handler' hack for
the MP case for now.
 1.28  05-Oct-2002  fvdl Adapt i386_send_ipi prototype. Make spllock < splipi (IPI paths
changed to use __cpu_simple_lock because of LOCKDEBUG conflict).
 1.27  01-Oct-2002  matt ANSI'fy the inline functions.
 1.26  01-Oct-2002  fvdl Merge Bill Sommerfeld's i386 MP branch. This code has some known
caveats, but works quite well in a lot of MP cases, and all
UP cases that I have tested. Parts of this will hopefully be
reworked in the not-too-distant future.
 1.25  12-May-2002  matt Eliminate commons.
 1.24  18-Dec-2001  yamt branches: 1.24.4;
use #define<TAB> style.
pointed by enami.
 1.23  18-Dec-2001  fvdl Prevent gcc from reordering things such that instructions may fall out
of a range which is protected by spl/splx. Originally proposed by
YAMAMOTO Takashi (yamt@netbsd.org) on tech-kern. This change mirrors
the one done by Bill Sommerfeld on the i386 mp branch.
 1.22  16-Jul-2001  thorpej In i386_softintr_lock(), use splserial() rather than splhigh(),
because of splhigh() braindamage on the i386 port.

Fixes port-i386/13038 and port-i386/12985.
 1.21  21-May-2001  perry branches: 1.21.2;
remove needless externs in front of function prototypes
 1.20  30-Apr-2001  lukem remove some lint, including ansifying some inlines
 1.19  14-Apr-2001  thorpej Generic soft interrupt implementation for NetBSD/i386. This could
probably be tuned somewhat, but this is a stop-gap measure to hold
us until Bill Sommerfeld's new interrupt code comes in from the
MP branch.
 1.18  13-Apr-2001  thorpej Remove the use of splimp() from the NetBSD kernel. splnet()
and only splnet() is allowed for the protection of data structures
used by network devices.
 1.17  14-Jan-2001  thorpej branches: 1.17.2;
Make sure everybody has an splvm() and equate it with splimp() (splimp()
is the historical name for this interrupt level, and the historical name
is going to go away in the near future).
 1.16  22-Aug-2000  thorpej Add spllock(). See spl(9) for details.
 1.15  21-Aug-2000  thorpej Make sure we provide splsched() as described in spl(9).
 1.14  08-Jun-2000  cgd make spl-lowering functions return void.
 1.13  04-Jun-2000  mycroft Implement CLKF_INTR(), to count interrupt time separately.
 1.12  05-Aug-1999  thorpej branches: 1.12.2; 1.12.10; 1.12.12;
Change the semantics of splsoftclock() to be like other spl*() functions,
that is priority is rasied. Add a new spllowersoftclock() to provide the
atomic drop-to-softclock semantics that the old splsoftclock() provided,
and update calls accordingly.

This fixes a problem with using the "rnd" pseudo-device from within
interrupt context to extract random data (e.g. from within the softnet
interrupt) where doing so would incorrectly unblock interrupts (causing
all sorts of lossage).

XXX 4 platforms do not have priority-raising capability: newsmips, sparc,
XXX sparc64, and VAX. This platforms still have this bug until their
XXX spl*() functions are fixed.
 1.11  26-Jan-1999  christos Fix this properly, using gcc assembly syntax (thanks ws!)
 1.10  26-Jan-1999  christos ifdef __ELF__ the softintr inline since we cannot use _C_LABEL to produce
a name. XXX: Is there a better way?
 1.9  15-Aug-1998  mycroft Assign my copyrights to TNF.
 1.8  18-Jul-1998  is Switching dev/ic/lpt.c to use spllpt() instead of spltty(). It doesn't use
tty structures, and on some machines (namely the DraCo internal lpt, and some
multi-i/o boards for Amigas and DraCos), tying spltty to the pretty high printer
interupt level would hurt serial performance.

On all affected ports but Amiga, spllpt() has been defined in machine/intr.h
to be spltty(), thus preserving old behaviour. Portmasters are encouraged to
change is, if they feel something else is better (e.g., one of its own were
possible).
 1.7  21-Mar-1997  mycroft Add IPL_AUDIO.
 1.6  28-Feb-1997  mycroft Import interrupt priority changes from com patches:
* Make it a strict hierarchy. (It was close anyway).
* Add `serial' and rename `softtty' to `softserial'.
* Make soft interrupts a bit less special-case.
 1.5  13-May-1996  mycroft branches: 1.5.8;
Make imask[] larger, to match other changes.
 1.4  13-May-1996  mycroft Add multiple-inclusion protection.
 1.3  13-May-1996  mycroft Move spl*() and soft interrupt definitions into intr.h. For now, include it
from psl.h. XXX Will change after release.
 1.2  12-May-1996  mycroft Implement IPL_HIGH.
 1.1  12-May-1996  mycroft Move IPL_* and IST_* constants into intr.h.
 1.5.8.1  12-Mar-1997  is Merge in Changes from The Trunk.
 1.12.12.1  22-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.12.10.21  25-Jun-2002  fvdl Add a spinlock around softintr queue management. Use a lock prefix to
protect manipulation of the 'ipending' variable. Fixes 'softclock
stops being called' AKA 'processes entering nanosleep do not return'
problem.
 1.12.10.20  18-May-2002  sommerfeld Catch up with -current. (commons elimination, changes to MI pci framework)
 1.12.10.19  29-Dec-2001  sommerfeld Set up per-cpu GDT.
Use %fs for per-cpu data access.
 1.12.10.18  29-Dec-2001  sommerfeld Yet another mergeup.

New work:
- Frank van der Linden's tlb shootdown fix.
Mainline functionality merged:
- IrDA
- Kernel RCSID's
- Transmeta CPU support
- ACPI
- XMM register access through procfs
 1.12.10.17  18-Dec-2001  sommerfeld Recent versions of gcc may reorder instructions around inline
functions, breaking the semantics of splraise() and spllower(); to
counteract this, insert a "barrier" (empty asm) as a sequence point.

Reportedly fixes a stability problems on AMD dual-processor systems.

the code-gen barrier primitive will likely move to <sys/cdefs.h> once
we figure out what to call it; in the mean time define it locally.
 1.12.10.16  19-Jul-2001  sommerfeld catch up with -current
 1.12.10.15  26-May-2001  sommerfeld Implement MP-synchronzed microtime(), based on Jason Thorpe's port of
Dave Mills's cycle-counter-based microtime.

XXX We need to figure out how to deal with processors where the cycle
counter speed varies. We don't have a whole lot of alternatives; we
could only use this on multiprocessors, which are less likely to
throttle the clock to save power.

The local apic timer runs at a fixed frequency, but it's
count-down-to-zero, not the count-up-forever type of timer which the
Mills code expects.

This also does not solve the problem of microtime on 486-based
multiprocessors..
 1.12.10.14  23-May-2001  sommerfeld Merge branch with tonight's current.
boots multiuser.
 1.12.10.13  30-Apr-2001  sommerfeld Do softints purely in software.

Using the local apic for softints is slow; exactly why isn't clear,
but ripping out the code and using pure-software softints speeds up
ping -f packet rates by more than 5%.
 1.12.10.12  30-Apr-2001  sommerfeld Catch up on some files missed the last time 'round
 1.12.10.11  30-Apr-2001  sommerfeld Merge sommerfeld_i386mp_1 branch with -current as of today.
GENERIC.MP kernel boots and runs multiuser on my ABIT BP6
 1.12.10.10  14-Jan-2001  thorpej Add splvm().
 1.12.10.9  31-Dec-2000  thorpej Fill in the guts of i386_broadcast_ipi() and implement
i386_multicast_ipi().

Reviewed by Bill Sommerfeld.
 1.12.10.8  23-Sep-2000  sommerfeld Preliminary support for cloning MTRR values between CPU's at boot time.
XXX no API to *set* MTRR values yet.
 1.12.10.7  25-Aug-2000  sommerfeld Get this to at least build again in the !MULTIPROCESSOR case..
 1.12.10.6  25-Aug-2000  sommerfeld The need_resched() function now takes a (cpu_info *) parameter.
Get asts out of <machine/intr.h>
Untangle astpending and want_resched variables somewhat.
 1.12.10.5  18-Aug-2000  sommerfeld Add splipi(), IPL_IPI, and rearrange IPI's a bit.
Also, add SPL_ASSERT_ATMOST
 1.12.10.4  12-Aug-2000  sommerfeld Add spllock() (temporary) and splsched()
 1.12.10.3  26-Jun-2000  sommerfeld Start making npx.c MP-safe; Interface to npx now specifies the process
and/or cpu to act on. Implement an IPI for MP lazy FP save.
Tested and working when only one CPU is running; untested in the MP
case since we can't run user processes on multiple CPU's yet.

Along for the ride:
- Change i386_send_ipi to take a "struct cpu_info *" rather than a cpu number.
- Turn off the "give me the brain" test IPI's.
 1.12.10.2  25-Jun-2000  sommerfeld Merge up to just-post-1.5 -current
 1.12.10.1  20-Feb-2000  sommerfeld MP: MP-safe and APIC-friendly spl*/splx() implementation.

Keep spl state as a level, rather than interrupt mask, since on
multiple APIC systems there may be more interrupt lines than can fit
in a single 32-bit word.

Interrupt levels are now compatible with the APIC priority scheme
(high order 4 bits of the IDT vector number).
 1.12.2.3  21-Apr-2001  bouyer Sync with HEAD
 1.12.2.2  18-Jan-2001  bouyer Sync with head (for UBC+NFS fixes, mostly).
 1.12.2.1  20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.17.2.9  19-Dec-2002  thorpej Sync with HEAD.
 1.17.2.8  11-Dec-2002  thorpej Sync with HEAD.
 1.17.2.7  11-Dec-2002  thorpej Sync with HEAD.
 1.17.2.6  11-Nov-2002  nathanw Catch up to -current
 1.17.2.5  18-Oct-2002  nathanw Catch up to -current.
 1.17.2.4  20-Jun-2002  nathanw Catch up to -current.
 1.17.2.3  08-Jan-2002  nathanw Catch up to -current.
 1.17.2.2  24-Aug-2001  nathanw Catch up with -current.
 1.17.2.1  21-Jun-2001  nathanw Catch up to -current.
 1.21.2.4  10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.21.2.3  23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.21.2.2  10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.21.2.1  03-Aug-2001  lukem update to -current
 1.24.4.2  17-Mar-2002  thorpej IPL_IMP -> IPL_VM
 1.24.4.1  17-Mar-2002  thorpej Add splraiseipl() for use by kern_mutex.c

RSS XML Feed