History log of /openbsd-current/sys/arch/i386/isa/icu.s
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 1.36 08-Dec-2022 guenther

_C_LABEL() and _ASM_LABEL() are no longer useful in the "everything
is ELF" world. Eliminate use of them in amd64, arm64, armv7, i386,
macppc, mips64, and sparc64 code.

ok deraadt@ jca@ krw@


Revision tags: OPENBSD_6_4_BASE OPENBSD_6_5_BASE OPENBSD_6_6_BASE OPENBSD_6_7_BASE OPENBSD_6_8_BASE OPENBSD_6_9_BASE OPENBSD_7_0_BASE OPENBSD_7_1_BASE OPENBSD_7_2_BASE
# 1.35 09-Jul-2018 guenther

Delete the VM86 kernel option and i386_vm86(3) API: it's required
a custom kernel for over 20 years.

testing mlarkin@
ok deraadt@ phessler@ jca@ matthieu@


# 1.34 11-Apr-2018 bluhm

More steps for i386 Meltdown fix:

- provide struct cpu_info_full
- prepare K-U sections
- reorganize interrupt, trap, syscall entry to use K-U trampoline
- prepare pmap for entering special mappings, the mappings are not
setup yet

This code will already trigger performance issues. We do more tlb
flushes, but we do not unmap the kernel yet. The latter
will be needed to prevent Meltdown.

from hshoexer@; input guenther@; OK mlarkin@ deraadt@


Revision tags: OPENBSD_5_8_BASE OPENBSD_5_9_BASE OPENBSD_6_0_BASE OPENBSD_6_1_BASE OPENBSD_6_2_BASE OPENBSD_6_3_BASE
# 1.33 16-Jul-2015 guenther

Move grab/release of the kernel_lock for softintrs from the ASM stubs to
softintr_dispatch(). Delete traces of long superseded stats code.

ok beck@ mpi@ uebayasi@


# 1.32 28-Jun-2015 guenther

Split AST handling from trap() into ast() and get rid of T_ASTFLT

testing by krw@, and then many via snapshots


Revision tags: OPENBSD_4_9_BASE OPENBSD_5_0_BASE OPENBSD_5_1_BASE OPENBSD_5_2_BASE OPENBSD_5_3_BASE OPENBSD_5_4_BASE OPENBSD_5_5_BASE OPENBSD_5_6_BASE OPENBSD_5_7_BASE
# 1.31 21-Dec-2010 claudio

Convert netisr to a normal soft interrupt instead of hanving MD code
for it. This makes the netisr a real C function which will help further
development. No noticable performance change on i386 and amd64.
With input from kettenis@ and miod@ additional OKs mikeb@ and henning@


Revision tags: OPENBSD_4_8_BASE
# 1.30 09-May-2010 kettenis

Make i386 use a pointer to the trap frame like everybody else instead of
the weird "pass by reference" that causes problems with gcc4.

ok nicm@, tom@


Revision tags: OPENBSD_4_4_BASE OPENBSD_4_5_BASE OPENBSD_4_6_BASE OPENBSD_4_7_BASE
# 1.29 21-May-2008 kettenis

Switch i386 from pccom to com. Welcomed by many.

ok dlg@, jsing@, deraadt@


# 1.28 07-May-2008 kettenis

Move i386 to __HAVE_GENERIC_SOFT_INTERRUPTS

ok dlg@, tested by dlg@, oga@, jsg@, deraadt@


# 1.27 26-Apr-2008 kettenis

Remove softast; it's no longer used.

ok krw@


# 1.26 25-Apr-2008 kettenis

Make ipending per-cpu. Should fix PR 5788.

ok weingart@


Revision tags: OPENBSD_4_2_BASE OPENBSD_4_3_BASE
# 1.25 25-May-2007 krw

"interupt" -> "interrupt" in various comments. Mostly from Diego Casati.


# 1.24 12-Apr-2007 art

Faster signal delivery on i386/MP.

We need to poke the other CPU so that it processes the AST immediately
and doesn't wait for the next interrupt or syscall.

Since IPIs really shouldn't process ASTs, we need to trigger a soft
interrupt on the destination CPU to process the AST. But since we can't
send soft interrupts to other CPUs, we send an IPI, that triggers a soft
interrupt that in turn processes the AST.

Also, this marks the beginning of moving to slightly better IPI mechanism
of short and optimized IPIs instead of the large and complicated IPI
infrastructure we're using now.

tested by many, ok tholo@


Revision tags: OPENBSD_3_9_BASE OPENBSD_4_0_BASE OPENBSD_4_1_BASE
# 1.23 13-Dec-2005 aaron

Prevent recursive interrupts. Solves kernel stack overflow on i386 under
heavy network interrupt load (I can reproduce with an ARP flood) with an MP
kernel. Patch from NetBSD PR20180.

Has been in snapshots for a bit. Testing by pedro@, jolan@. deraadt@ ok


Revision tags: OPENBSD_3_7_BASE OPENBSD_3_8_BASE
# 1.22 07-Jan-2005 pascoe

Fix profiled kernel builds on i386 by moving splraise/splx code into macros
permitting non-recursive reuse in mcount.

Should be a no-op for normal builds.


Revision tags: OPENBSD_3_6_BASE
# 1.21 13-Jun-2004 niklas

debranch SMP, have fun


Revision tags: OPENBSD_3_5_BASE SMP_SYNC_A SMP_SYNC_B
# 1.20 06-Nov-2003 mickey

move netisr definition into md code to allow arch provide suitable allocation; tested on most archs


Revision tags: OPENBSD_3_4_BASE UBC_SYNC_A
# 1.19 17-Apr-2003 drahn

i386 changes to move to ELF. asm cleanup. Change MAXDSIZ to 512M for 1Gsep.
DARPA funded work.


Revision tags: OPENBSD_3_1_BASE OPENBSD_3_2_BASE OPENBSD_3_3_BASE UBC_BASE UBC_SYNC_B
# 1.18 04-Dec-2001 niklas

branches: 1.18.2;
New try at a level based irq system.


# 1.17 18-Nov-2001 aaron

Revert niklas's broken ICU interrupt handling changes; deraadt@ ok


# 1.16 12-Nov-2001 niklas

Redo the ICU interrupt handling system to better emulate an APIC system.
This is done by representing the current blockings of interrupts with
a priority level instead of an interrupt mask. This makes it possible to
share implementations for spl* functions/macros between both ICU
and APIC (a must when going MP) systems. In this process, assign
soft interrupts their own levels to match the way things will be on
APIC systems where they actually will be real interrupts and not just
bits in a pending mask as they are now.
Heavily inspired by Bill Studenmunds SMP work in NetBSD


# 1.15 08-Nov-2001 mickey

veli tpyo stolen fmor nkilsa


Revision tags: OPENBSD_3_0_BASE
# 1.14 21-Sep-2001 mickey

use _C_LABEL for c labels consistantly throghout the source


Revision tags: OPENBSD_2_9_BASE
# 1.13 08-Nov-2000 art

Use netisr_dispatch.h


Revision tags: OPENBSD_2_7_BASE OPENBSD_2_8_BASE SMP_BASE kame_19991208
# 1.12 08-Dec-1999 itojun

branches: 1.12.2;
bring in KAME IPv6 code, dated 19991208.
replaces NRL IPv6 layer. reuses NRL pcb layer. no IPsec-on-v6 support.
see sys/netinet6/{TODO,IMPLEMENTATION} for more details.

GENERIC configuration should work fine as before. GENERIC.v6 works fine
as well, but you'll need KAME userland tools to play with IPv6 (will be
bringed into soon).


Revision tags: OPENBSD_2_6_BASE
# 1.11 24-May-1999 jason

Only do basic work in the ethernet interrupt context, and queue packets to
be bridged. Do the real work in a scheduled netisr.


Revision tags: OPENBSD_2_5_BASE
# 1.10 07-Jan-1999 deraadt

global decl for *intr() routines, plus add INET6


Revision tags: OPENBSD_2_2_BASE OPENBSD_2_3_BASE OPENBSD_2_4_BASE
# 1.9 23-Jul-1997 denny

Add AppleTalk netisr. Only tested (indeed, only compiled) on mac68k port.
Add options NETATALK to your config to try it out.


Revision tags: OPENBSD_2_0_BASE OPENBSD_2_1_BASE
# 1.8 16-Aug-1996 deraadt

someone send me an i386 assembler book


# 1.7 16-Aug-1996 deraadt

spin processing ast events before going back to userland; my fix


# 1.6 28-Jul-1996 downsj

pccom and com are now mutually exclusive; pccom moves to major 8, the
same as com.

Also various function renaming and such so that multiport drivers should
now be able to link with pccom. pccomvar.h is no longer needed.


# 1.5 07-Jul-1996 downsj

Integrate the i386 specific com driver from Onno van der Linden,
<onno@simplex.nl>, as a seperate driver. This is the OpenBSD com.c, with
his changes integrated and the functions renamed.

This driver should work with pcmcia, but hasn't been tested. It will not
work the multiport boards.

Simply switch 'com' to 'pccom' in your conf and change the major number of
your devices in order to use this.


# 1.4 30-Jun-1996 chuck

add natm intr.


# 1.3 30-Apr-1996 mickey

add IPX support.
from now IPX fully attached to the system, but only for i386.
other platforms need the same additions.


# 1.2 08-Jan-1996 deraadt

from netbsd:
Deal with GCC's dead code elimination being suboptimal.
Modify splraise() to allow better optimization.
Make cpl, ipending, and astpending volatile.
Make sure interrupts are disabled before jumping to a resume point,
to prevent races.
Make FPU faults use INTRFASTEXIT, and remove INTREXIT.
Build the frame for recursive interrupts manually, and make sure to
disable interrupts to avoid races.
VS: ----------------------------------------------------------------------


# 1.1 18-Oct-1995 deraadt

branches: 1.1.1;
Initial revision


# 1.35 09-Jul-2018 guenther

Delete the VM86 kernel option and i386_vm86(3) API: it's required
a custom kernel for over 20 years.

testing mlarkin@
ok deraadt@ phessler@ jca@ matthieu@


# 1.34 11-Apr-2018 bluhm

More steps for i386 Meltdown fix:

- provide struct cpu_info_full
- prepare K-U sections
- reorganize interrupt, trap, syscall entry to use K-U trampoline
- prepare pmap for entering special mappings, the mappings are not
setup yet

This code will already trigger performance issues. We do more tlb
flushes, but we do not unmap the kernel yet. The latter
will be needed to prevent Meltdown.

from hshoexer@; input guenther@; OK mlarkin@ deraadt@


Revision tags: OPENBSD_5_8_BASE OPENBSD_5_9_BASE OPENBSD_6_0_BASE OPENBSD_6_1_BASE OPENBSD_6_2_BASE OPENBSD_6_3_BASE
# 1.33 16-Jul-2015 guenther

Move grab/release of the kernel_lock for softintrs from the ASM stubs to
softintr_dispatch(). Delete traces of long superseded stats code.

ok beck@ mpi@ uebayasi@


# 1.32 28-Jun-2015 guenther

Split AST handling from trap() into ast() and get rid of T_ASTFLT

testing by krw@, and then many via snapshots


Revision tags: OPENBSD_4_9_BASE OPENBSD_5_0_BASE OPENBSD_5_1_BASE OPENBSD_5_2_BASE OPENBSD_5_3_BASE OPENBSD_5_4_BASE OPENBSD_5_5_BASE OPENBSD_5_6_BASE OPENBSD_5_7_BASE
# 1.31 21-Dec-2010 claudio

Convert netisr to a normal soft interrupt instead of hanving MD code
for it. This makes the netisr a real C function which will help further
development. No noticable performance change on i386 and amd64.
With input from kettenis@ and miod@ additional OKs mikeb@ and henning@


Revision tags: OPENBSD_4_8_BASE
# 1.30 09-May-2010 kettenis

Make i386 use a pointer to the trap frame like everybody else instead of
the weird "pass by reference" that causes problems with gcc4.

ok nicm@, tom@


Revision tags: OPENBSD_4_4_BASE OPENBSD_4_5_BASE OPENBSD_4_6_BASE OPENBSD_4_7_BASE
# 1.29 21-May-2008 kettenis

Switch i386 from pccom to com. Welcomed by many.

ok dlg@, jsing@, deraadt@


# 1.28 07-May-2008 kettenis

Move i386 to __HAVE_GENERIC_SOFT_INTERRUPTS

ok dlg@, tested by dlg@, oga@, jsg@, deraadt@


# 1.27 26-Apr-2008 kettenis

Remove softast; it's no longer used.

ok krw@


# 1.26 25-Apr-2008 kettenis

Make ipending per-cpu. Should fix PR 5788.

ok weingart@


Revision tags: OPENBSD_4_2_BASE OPENBSD_4_3_BASE
# 1.25 25-May-2007 krw

"interupt" -> "interrupt" in various comments. Mostly from Diego Casati.


# 1.24 12-Apr-2007 art

Faster signal delivery on i386/MP.

We need to poke the other CPU so that it processes the AST immediately
and doesn't wait for the next interrupt or syscall.

Since IPIs really shouldn't process ASTs, we need to trigger a soft
interrupt on the destination CPU to process the AST. But since we can't
send soft interrupts to other CPUs, we send an IPI, that triggers a soft
interrupt that in turn processes the AST.

Also, this marks the beginning of moving to slightly better IPI mechanism
of short and optimized IPIs instead of the large and complicated IPI
infrastructure we're using now.

tested by many, ok tholo@


Revision tags: OPENBSD_3_9_BASE OPENBSD_4_0_BASE OPENBSD_4_1_BASE
# 1.23 13-Dec-2005 aaron

Prevent recursive interrupts. Solves kernel stack overflow on i386 under
heavy network interrupt load (I can reproduce with an ARP flood) with an MP
kernel. Patch from NetBSD PR20180.

Has been in snapshots for a bit. Testing by pedro@, jolan@. deraadt@ ok


Revision tags: OPENBSD_3_7_BASE OPENBSD_3_8_BASE
# 1.22 07-Jan-2005 pascoe

Fix profiled kernel builds on i386 by moving splraise/splx code into macros
permitting non-recursive reuse in mcount.

Should be a no-op for normal builds.


Revision tags: OPENBSD_3_6_BASE
# 1.21 13-Jun-2004 niklas

debranch SMP, have fun


Revision tags: OPENBSD_3_5_BASE SMP_SYNC_A SMP_SYNC_B
# 1.20 06-Nov-2003 mickey

move netisr definition into md code to allow arch provide suitable allocation; tested on most archs


Revision tags: OPENBSD_3_4_BASE UBC_SYNC_A
# 1.19 17-Apr-2003 drahn

i386 changes to move to ELF. asm cleanup. Change MAXDSIZ to 512M for 1Gsep.
DARPA funded work.


Revision tags: OPENBSD_3_1_BASE OPENBSD_3_2_BASE OPENBSD_3_3_BASE UBC_BASE UBC_SYNC_B
# 1.18 04-Dec-2001 niklas

branches: 1.18.2;
New try at a level based irq system.


# 1.17 18-Nov-2001 aaron

Revert niklas's broken ICU interrupt handling changes; deraadt@ ok


# 1.16 12-Nov-2001 niklas

Redo the ICU interrupt handling system to better emulate an APIC system.
This is done by representing the current blockings of interrupts with
a priority level instead of an interrupt mask. This makes it possible to
share implementations for spl* functions/macros between both ICU
and APIC (a must when going MP) systems. In this process, assign
soft interrupts their own levels to match the way things will be on
APIC systems where they actually will be real interrupts and not just
bits in a pending mask as they are now.
Heavily inspired by Bill Studenmunds SMP work in NetBSD


# 1.15 08-Nov-2001 mickey

veli tpyo stolen fmor nkilsa


Revision tags: OPENBSD_3_0_BASE
# 1.14 21-Sep-2001 mickey

use _C_LABEL for c labels consistantly throghout the source


Revision tags: OPENBSD_2_9_BASE
# 1.13 08-Nov-2000 art

Use netisr_dispatch.h


Revision tags: OPENBSD_2_7_BASE OPENBSD_2_8_BASE SMP_BASE kame_19991208
# 1.12 08-Dec-1999 itojun

branches: 1.12.2;
bring in KAME IPv6 code, dated 19991208.
replaces NRL IPv6 layer. reuses NRL pcb layer. no IPsec-on-v6 support.
see sys/netinet6/{TODO,IMPLEMENTATION} for more details.

GENERIC configuration should work fine as before. GENERIC.v6 works fine
as well, but you'll need KAME userland tools to play with IPv6 (will be
bringed into soon).


Revision tags: OPENBSD_2_6_BASE
# 1.11 24-May-1999 jason

Only do basic work in the ethernet interrupt context, and queue packets to
be bridged. Do the real work in a scheduled netisr.


Revision tags: OPENBSD_2_5_BASE
# 1.10 07-Jan-1999 deraadt

global decl for *intr() routines, plus add INET6


Revision tags: OPENBSD_2_2_BASE OPENBSD_2_3_BASE OPENBSD_2_4_BASE
# 1.9 23-Jul-1997 denny

Add AppleTalk netisr. Only tested (indeed, only compiled) on mac68k port.
Add options NETATALK to your config to try it out.


Revision tags: OPENBSD_2_0_BASE OPENBSD_2_1_BASE
# 1.8 16-Aug-1996 deraadt

someone send me an i386 assembler book


# 1.7 16-Aug-1996 deraadt

spin processing ast events before going back to userland; my fix


# 1.6 28-Jul-1996 downsj

pccom and com are now mutually exclusive; pccom moves to major 8, the
same as com.

Also various function renaming and such so that multiport drivers should
now be able to link with pccom. pccomvar.h is no longer needed.


# 1.5 07-Jul-1996 downsj

Integrate the i386 specific com driver from Onno van der Linden,
<onno@simplex.nl>, as a seperate driver. This is the OpenBSD com.c, with
his changes integrated and the functions renamed.

This driver should work with pcmcia, but hasn't been tested. It will not
work the multiport boards.

Simply switch 'com' to 'pccom' in your conf and change the major number of
your devices in order to use this.


# 1.4 30-Jun-1996 chuck

add natm intr.


# 1.3 30-Apr-1996 mickey

add IPX support.
from now IPX fully attached to the system, but only for i386.
other platforms need the same additions.


# 1.2 08-Jan-1996 deraadt

from netbsd:
Deal with GCC's dead code elimination being suboptimal.
Modify splraise() to allow better optimization.
Make cpl, ipending, and astpending volatile.
Make sure interrupts are disabled before jumping to a resume point,
to prevent races.
Make FPU faults use INTRFASTEXIT, and remove INTREXIT.
Build the frame for recursive interrupts manually, and make sure to
disable interrupts to avoid races.
VS: ----------------------------------------------------------------------


# 1.1 18-Oct-1995 deraadt

branches: 1.1.1;
Initial revision


# 1.34 11-Apr-2018 bluhm

More steps for i386 Meltdown fix:

- provide struct cpu_info_full
- prepare K-U sections
- reorganize interrupt, trap, syscall entry to use K-U trampoline
- prepare pmap for entering special mappings, the mappings are not
setup yet

This code will already trigger performance issues. We do more tlb
flushes, but we do not unmap the kernel yet. The latter
will be needed to prevent Meltdown.

from hshoexer@; input guenther@; OK mlarkin@ deraadt@


Revision tags: OPENBSD_5_8_BASE OPENBSD_5_9_BASE OPENBSD_6_0_BASE OPENBSD_6_1_BASE OPENBSD_6_2_BASE OPENBSD_6_3_BASE
# 1.33 16-Jul-2015 guenther

Move grab/release of the kernel_lock for softintrs from the ASM stubs to
softintr_dispatch(). Delete traces of long superseded stats code.

ok beck@ mpi@ uebayasi@


# 1.32 28-Jun-2015 guenther

Split AST handling from trap() into ast() and get rid of T_ASTFLT

testing by krw@, and then many via snapshots


Revision tags: OPENBSD_4_9_BASE OPENBSD_5_0_BASE OPENBSD_5_1_BASE OPENBSD_5_2_BASE OPENBSD_5_3_BASE OPENBSD_5_4_BASE OPENBSD_5_5_BASE OPENBSD_5_6_BASE OPENBSD_5_7_BASE
# 1.31 21-Dec-2010 claudio

Convert netisr to a normal soft interrupt instead of hanving MD code
for it. This makes the netisr a real C function which will help further
development. No noticable performance change on i386 and amd64.
With input from kettenis@ and miod@ additional OKs mikeb@ and henning@


Revision tags: OPENBSD_4_8_BASE
# 1.30 09-May-2010 kettenis

Make i386 use a pointer to the trap frame like everybody else instead of
the weird "pass by reference" that causes problems with gcc4.

ok nicm@, tom@


Revision tags: OPENBSD_4_4_BASE OPENBSD_4_5_BASE OPENBSD_4_6_BASE OPENBSD_4_7_BASE
# 1.29 21-May-2008 kettenis

Switch i386 from pccom to com. Welcomed by many.

ok dlg@, jsing@, deraadt@


# 1.28 07-May-2008 kettenis

Move i386 to __HAVE_GENERIC_SOFT_INTERRUPTS

ok dlg@, tested by dlg@, oga@, jsg@, deraadt@


# 1.27 26-Apr-2008 kettenis

Remove softast; it's no longer used.

ok krw@


# 1.26 25-Apr-2008 kettenis

Make ipending per-cpu. Should fix PR 5788.

ok weingart@


Revision tags: OPENBSD_4_2_BASE OPENBSD_4_3_BASE
# 1.25 25-May-2007 krw

"interupt" -> "interrupt" in various comments. Mostly from Diego Casati.


# 1.24 12-Apr-2007 art

Faster signal delivery on i386/MP.

We need to poke the other CPU so that it processes the AST immediately
and doesn't wait for the next interrupt or syscall.

Since IPIs really shouldn't process ASTs, we need to trigger a soft
interrupt on the destination CPU to process the AST. But since we can't
send soft interrupts to other CPUs, we send an IPI, that triggers a soft
interrupt that in turn processes the AST.

Also, this marks the beginning of moving to slightly better IPI mechanism
of short and optimized IPIs instead of the large and complicated IPI
infrastructure we're using now.

tested by many, ok tholo@


Revision tags: OPENBSD_3_9_BASE OPENBSD_4_0_BASE OPENBSD_4_1_BASE
# 1.23 13-Dec-2005 aaron

Prevent recursive interrupts. Solves kernel stack overflow on i386 under
heavy network interrupt load (I can reproduce with an ARP flood) with an MP
kernel. Patch from NetBSD PR20180.

Has been in snapshots for a bit. Testing by pedro@, jolan@. deraadt@ ok


Revision tags: OPENBSD_3_7_BASE OPENBSD_3_8_BASE
# 1.22 07-Jan-2005 pascoe

Fix profiled kernel builds on i386 by moving splraise/splx code into macros
permitting non-recursive reuse in mcount.

Should be a no-op for normal builds.


Revision tags: OPENBSD_3_6_BASE
# 1.21 13-Jun-2004 niklas

debranch SMP, have fun


Revision tags: OPENBSD_3_5_BASE SMP_SYNC_A SMP_SYNC_B
# 1.20 06-Nov-2003 mickey

move netisr definition into md code to allow arch provide suitable allocation; tested on most archs


Revision tags: OPENBSD_3_4_BASE UBC_SYNC_A
# 1.19 17-Apr-2003 drahn

i386 changes to move to ELF. asm cleanup. Change MAXDSIZ to 512M for 1Gsep.
DARPA funded work.


Revision tags: OPENBSD_3_1_BASE OPENBSD_3_2_BASE OPENBSD_3_3_BASE UBC_BASE UBC_SYNC_B
# 1.18 04-Dec-2001 niklas

branches: 1.18.2;
New try at a level based irq system.


# 1.17 18-Nov-2001 aaron

Revert niklas's broken ICU interrupt handling changes; deraadt@ ok


# 1.16 12-Nov-2001 niklas

Redo the ICU interrupt handling system to better emulate an APIC system.
This is done by representing the current blockings of interrupts with
a priority level instead of an interrupt mask. This makes it possible to
share implementations for spl* functions/macros between both ICU
and APIC (a must when going MP) systems. In this process, assign
soft interrupts their own levels to match the way things will be on
APIC systems where they actually will be real interrupts and not just
bits in a pending mask as they are now.
Heavily inspired by Bill Studenmunds SMP work in NetBSD


# 1.15 08-Nov-2001 mickey

veli tpyo stolen fmor nkilsa


Revision tags: OPENBSD_3_0_BASE
# 1.14 21-Sep-2001 mickey

use _C_LABEL for c labels consistantly throghout the source


Revision tags: OPENBSD_2_9_BASE
# 1.13 08-Nov-2000 art

Use netisr_dispatch.h


Revision tags: OPENBSD_2_7_BASE OPENBSD_2_8_BASE SMP_BASE kame_19991208
# 1.12 08-Dec-1999 itojun

branches: 1.12.2;
bring in KAME IPv6 code, dated 19991208.
replaces NRL IPv6 layer. reuses NRL pcb layer. no IPsec-on-v6 support.
see sys/netinet6/{TODO,IMPLEMENTATION} for more details.

GENERIC configuration should work fine as before. GENERIC.v6 works fine
as well, but you'll need KAME userland tools to play with IPv6 (will be
bringed into soon).


Revision tags: OPENBSD_2_6_BASE
# 1.11 24-May-1999 jason

Only do basic work in the ethernet interrupt context, and queue packets to
be bridged. Do the real work in a scheduled netisr.


Revision tags: OPENBSD_2_5_BASE
# 1.10 07-Jan-1999 deraadt

global decl for *intr() routines, plus add INET6


Revision tags: OPENBSD_2_2_BASE OPENBSD_2_3_BASE OPENBSD_2_4_BASE
# 1.9 23-Jul-1997 denny

Add AppleTalk netisr. Only tested (indeed, only compiled) on mac68k port.
Add options NETATALK to your config to try it out.


Revision tags: OPENBSD_2_0_BASE OPENBSD_2_1_BASE
# 1.8 16-Aug-1996 deraadt

someone send me an i386 assembler book


# 1.7 16-Aug-1996 deraadt

spin processing ast events before going back to userland; my fix


# 1.6 28-Jul-1996 downsj

pccom and com are now mutually exclusive; pccom moves to major 8, the
same as com.

Also various function renaming and such so that multiport drivers should
now be able to link with pccom. pccomvar.h is no longer needed.


# 1.5 07-Jul-1996 downsj

Integrate the i386 specific com driver from Onno van der Linden,
<onno@simplex.nl>, as a seperate driver. This is the OpenBSD com.c, with
his changes integrated and the functions renamed.

This driver should work with pcmcia, but hasn't been tested. It will not
work the multiport boards.

Simply switch 'com' to 'pccom' in your conf and change the major number of
your devices in order to use this.


# 1.4 30-Jun-1996 chuck

add natm intr.


# 1.3 30-Apr-1996 mickey

add IPX support.
from now IPX fully attached to the system, but only for i386.
other platforms need the same additions.


# 1.2 08-Jan-1996 deraadt

from netbsd:
Deal with GCC's dead code elimination being suboptimal.
Modify splraise() to allow better optimization.
Make cpl, ipending, and astpending volatile.
Make sure interrupts are disabled before jumping to a resume point,
to prevent races.
Make FPU faults use INTRFASTEXIT, and remove INTREXIT.
Build the frame for recursive interrupts manually, and make sure to
disable interrupts to avoid races.
VS: ----------------------------------------------------------------------


# 1.1 18-Oct-1995 deraadt

branches: 1.1.1;
Initial revision


Revision tags: OPENBSD_5_8_BASE OPENBSD_5_9_BASE OPENBSD_6_0_BASE OPENBSD_6_1_BASE OPENBSD_6_2_BASE
# 1.33 16-Jul-2015 guenther

Move grab/release of the kernel_lock for softintrs from the ASM stubs to
softintr_dispatch(). Delete traces of long superseded stats code.

ok beck@ mpi@ uebayasi@


# 1.32 28-Jun-2015 guenther

Split AST handling from trap() into ast() and get rid of T_ASTFLT

testing by krw@, and then many via snapshots


Revision tags: OPENBSD_4_9_BASE OPENBSD_5_0_BASE OPENBSD_5_1_BASE OPENBSD_5_2_BASE OPENBSD_5_3_BASE OPENBSD_5_4_BASE OPENBSD_5_5_BASE OPENBSD_5_6_BASE OPENBSD_5_7_BASE
# 1.31 21-Dec-2010 claudio

Convert netisr to a normal soft interrupt instead of hanving MD code
for it. This makes the netisr a real C function which will help further
development. No noticable performance change on i386 and amd64.
With input from kettenis@ and miod@ additional OKs mikeb@ and henning@


Revision tags: OPENBSD_4_8_BASE
# 1.30 09-May-2010 kettenis

Make i386 use a pointer to the trap frame like everybody else instead of
the weird "pass by reference" that causes problems with gcc4.

ok nicm@, tom@


Revision tags: OPENBSD_4_4_BASE OPENBSD_4_5_BASE OPENBSD_4_6_BASE OPENBSD_4_7_BASE
# 1.29 21-May-2008 kettenis

Switch i386 from pccom to com. Welcomed by many.

ok dlg@, jsing@, deraadt@


# 1.28 07-May-2008 kettenis

Move i386 to __HAVE_GENERIC_SOFT_INTERRUPTS

ok dlg@, tested by dlg@, oga@, jsg@, deraadt@


# 1.27 26-Apr-2008 kettenis

Remove softast; it's no longer used.

ok krw@


# 1.26 25-Apr-2008 kettenis

Make ipending per-cpu. Should fix PR 5788.

ok weingart@


Revision tags: OPENBSD_4_2_BASE OPENBSD_4_3_BASE
# 1.25 25-May-2007 krw

"interupt" -> "interrupt" in various comments. Mostly from Diego Casati.


# 1.24 12-Apr-2007 art

Faster signal delivery on i386/MP.

We need to poke the other CPU so that it processes the AST immediately
and doesn't wait for the next interrupt or syscall.

Since IPIs really shouldn't process ASTs, we need to trigger a soft
interrupt on the destination CPU to process the AST. But since we can't
send soft interrupts to other CPUs, we send an IPI, that triggers a soft
interrupt that in turn processes the AST.

Also, this marks the beginning of moving to slightly better IPI mechanism
of short and optimized IPIs instead of the large and complicated IPI
infrastructure we're using now.

tested by many, ok tholo@


Revision tags: OPENBSD_3_9_BASE OPENBSD_4_0_BASE OPENBSD_4_1_BASE
# 1.23 13-Dec-2005 aaron

Prevent recursive interrupts. Solves kernel stack overflow on i386 under
heavy network interrupt load (I can reproduce with an ARP flood) with an MP
kernel. Patch from NetBSD PR20180.

Has been in snapshots for a bit. Testing by pedro@, jolan@. deraadt@ ok


Revision tags: OPENBSD_3_7_BASE OPENBSD_3_8_BASE
# 1.22 07-Jan-2005 pascoe

Fix profiled kernel builds on i386 by moving splraise/splx code into macros
permitting non-recursive reuse in mcount.

Should be a no-op for normal builds.


Revision tags: OPENBSD_3_6_BASE
# 1.21 13-Jun-2004 niklas

debranch SMP, have fun


Revision tags: OPENBSD_3_5_BASE SMP_SYNC_A SMP_SYNC_B
# 1.20 06-Nov-2003 mickey

move netisr definition into md code to allow arch provide suitable allocation; tested on most archs


Revision tags: OPENBSD_3_4_BASE UBC_SYNC_A
# 1.19 17-Apr-2003 drahn

i386 changes to move to ELF. asm cleanup. Change MAXDSIZ to 512M for 1Gsep.
DARPA funded work.


Revision tags: OPENBSD_3_1_BASE OPENBSD_3_2_BASE OPENBSD_3_3_BASE UBC_BASE UBC_SYNC_B
# 1.18 04-Dec-2001 niklas

branches: 1.18.2;
New try at a level based irq system.


# 1.17 18-Nov-2001 aaron

Revert niklas's broken ICU interrupt handling changes; deraadt@ ok


# 1.16 12-Nov-2001 niklas

Redo the ICU interrupt handling system to better emulate an APIC system.
This is done by representing the current blockings of interrupts with
a priority level instead of an interrupt mask. This makes it possible to
share implementations for spl* functions/macros between both ICU
and APIC (a must when going MP) systems. In this process, assign
soft interrupts their own levels to match the way things will be on
APIC systems where they actually will be real interrupts and not just
bits in a pending mask as they are now.
Heavily inspired by Bill Studenmunds SMP work in NetBSD


# 1.15 08-Nov-2001 mickey

veli tpyo stolen fmor nkilsa


Revision tags: OPENBSD_3_0_BASE
# 1.14 21-Sep-2001 mickey

use _C_LABEL for c labels consistantly throghout the source


Revision tags: OPENBSD_2_9_BASE
# 1.13 08-Nov-2000 art

Use netisr_dispatch.h


Revision tags: OPENBSD_2_7_BASE OPENBSD_2_8_BASE SMP_BASE kame_19991208
# 1.12 08-Dec-1999 itojun

branches: 1.12.2;
bring in KAME IPv6 code, dated 19991208.
replaces NRL IPv6 layer. reuses NRL pcb layer. no IPsec-on-v6 support.
see sys/netinet6/{TODO,IMPLEMENTATION} for more details.

GENERIC configuration should work fine as before. GENERIC.v6 works fine
as well, but you'll need KAME userland tools to play with IPv6 (will be
bringed into soon).


Revision tags: OPENBSD_2_6_BASE
# 1.11 24-May-1999 jason

Only do basic work in the ethernet interrupt context, and queue packets to
be bridged. Do the real work in a scheduled netisr.


Revision tags: OPENBSD_2_5_BASE
# 1.10 07-Jan-1999 deraadt

global decl for *intr() routines, plus add INET6


Revision tags: OPENBSD_2_2_BASE OPENBSD_2_3_BASE OPENBSD_2_4_BASE
# 1.9 23-Jul-1997 denny

Add AppleTalk netisr. Only tested (indeed, only compiled) on mac68k port.
Add options NETATALK to your config to try it out.


Revision tags: OPENBSD_2_0_BASE OPENBSD_2_1_BASE
# 1.8 16-Aug-1996 deraadt

someone send me an i386 assembler book


# 1.7 16-Aug-1996 deraadt

spin processing ast events before going back to userland; my fix


# 1.6 28-Jul-1996 downsj

pccom and com are now mutually exclusive; pccom moves to major 8, the
same as com.

Also various function renaming and such so that multiport drivers should
now be able to link with pccom. pccomvar.h is no longer needed.


# 1.5 07-Jul-1996 downsj

Integrate the i386 specific com driver from Onno van der Linden,
<onno@simplex.nl>, as a seperate driver. This is the OpenBSD com.c, with
his changes integrated and the functions renamed.

This driver should work with pcmcia, but hasn't been tested. It will not
work the multiport boards.

Simply switch 'com' to 'pccom' in your conf and change the major number of
your devices in order to use this.


# 1.4 30-Jun-1996 chuck

add natm intr.


# 1.3 30-Apr-1996 mickey

add IPX support.
from now IPX fully attached to the system, but only for i386.
other platforms need the same additions.


# 1.2 08-Jan-1996 deraadt

from netbsd:
Deal with GCC's dead code elimination being suboptimal.
Modify splraise() to allow better optimization.
Make cpl, ipending, and astpending volatile.
Make sure interrupts are disabled before jumping to a resume point,
to prevent races.
Make FPU faults use INTRFASTEXIT, and remove INTREXIT.
Build the frame for recursive interrupts manually, and make sure to
disable interrupts to avoid races.
VS: ----------------------------------------------------------------------


# 1.1 18-Oct-1995 deraadt

branches: 1.1.1;
Initial revision