Home | History | Annotate | Download | only in include
History log of /src/sys/arch/x86/include/intrdefs.h
RevisionDateAuthorComments
 1.26  07-Sep-2022  knakahara NetBSD/x86: Raise the number of interrupt sources per CPU from 32 to 56.

There has been no objection for three years.
https://mail-index.netbsd.org/port-amd64/2019/09/22/msg003012.html
Implemented by nonaka@n.o, updated by me.
 1.25  18-Mar-2021  nonaka LIR_HV priority should be lower than softint.
 1.24  25-Apr-2020  bouyer branches: 1.24.2;
Merge the bouyer-xenpvh branch, bringing in Xen PV drivers support under HVM
guests in GENERIC.
Xen support can be disabled at runtime with
boot -c
disable hypervisor
 1.23  23-Nov-2019  ad branches: 1.23.6;
cpu_need_resched():

- Remove all code that should be MI, leaving the bare minimum under arch/.
- Make the required actions very explicit.
- Pass in LWP pointer for convenience.
- When a trap is required on another CPU, have the IPI set it locally.
- Expunge cpu_did_resched().
 1.22  15-Feb-2019  nonaka Added Microsoft Hyper-V support. It ported from OpenBSD and FreeBSD.

graphical console is not work on Gen.2 VM yet. To use the serial console,
enter "consdev com,0x3f8,115200" on efiboot.
 1.21  11-Feb-2019  cherry We reorganise definitions for XEN source support as follows:

XEN - common sources required for baseline XEN support.
XENPV - sources required for support of XEN in PV mode.
XENPVHVM - sources required for support for XEN in HVM mode.
XENPVH - sources required for support for XEN in PVH mode.
 1.20  19-May-2014  rmind branches: 1.20.20; 1.20.28;
Implement MI IPI interface with cross-call support.
 1.19  01-Dec-2013  christos branches: 1.19.2;
revert fpu/pcu changes until we figure out what's wrong; they cause random
freezes
 1.18  23-Oct-2013  drochner Use the MI "pcu" framework for bookkeeping of npx/fpu states on x86.
This reduces the amount of MD code enormously, and makes it easier
to implement support for newer CPU features which require more fpu
state, or for fpu usage by the kernel.
For access to FPU state across CPUs, an xcall kthread is used now
rather than a dedicated IPI.
No user visible changes intended.
 1.17  06-Nov-2011  cherry branches: 1.17.10;
[merging from cherry-xenmp] Make the xen MMU op queue locking api private. Implement per-cpu queues.
 1.16  22-Jun-2010  rmind branches: 1.16.6; 1.16.8;
Implement high priority (XC_HIGHPRI) xcall(9) mechanism - a facility
to execute functions from software interrupt context, at SOFTINT_CLOCK.
Functions must be lightweight. Will be used for passive serialization.

OK ad@.
 1.15  05-Oct-2009  rmind branches: 1.15.2; 1.15.4;
Remove X86_IPI_WRITE_MSR (and msr_ipifuncs.c), replace all uses in drivers
with xc_broadcast(). AMD K8 PowerNow driver tested by <jakllsch>, thanks!

Closes PR/37665.
 1.14  11-Nov-2008  ad branches: 1.14.4;
PR port-amd64/38293 panic: fp_save ipi didn't

Kill the FP flush IPI and always save. The synchronization here isn't strong
and we could easily pull the chain on an innocent LWP's FP state.

Another fix to follow.
 1.13  28-Apr-2008  ad branches: 1.13.6; 1.13.8; 1.13.10;
Add support for kernel preeemption to the i386 and amd64 ports. Notes:

- I have seen one isolated panic in the x86 pmap, but otherwise i386
seems stable with preemption enabled.

- amd64 is missing the FPU handling changes and it's not yet safe to
enable it there.

- The usual level for kern.sched.kpreempt_pri will be 128 once enabled
by default. For testing, setting it to 0 helps to shake out bugs.
 1.12  18-Dec-2007  joerg branches: 1.12.6; 1.12.8; 1.12.10;
Add new IPI for saving CPU state explicitly, share high-level part of
ACPI wakeup code and teach it how to start the APs again. As a side
effect the CPU_START interface allows choosing between different
bootstrap codes more easily now.
 1.11  03-Dec-2007  ad branches: 1.11.2; 1.11.6;
Interrupt handling changes, in discussion since February:

- Reduce available SPL levels for hardware devices to none, vm, sched, high.
- Acquire kernel_lock only for interrupts at IPL_VM.
- Implement threaded soft interrupts.
 1.10  17-Oct-2007  garbled branches: 1.10.2;
Merge the ppcoea-renovation branch to HEAD.

This branch was a major cleanup and rototill of many of the various OEA
cpu based PPC ports that focused on sharing as much code as possible
between the various ports to eliminate near-identical copies of files in
every tree. Additionally there is a new PIC system that unifies the
interface to interrupt code for all different OEA ppc arches. The work
for this branch was done by a variety of people, too long to list here.

TODO:
bebox still needs work to complete the transition to -renovation.
ofppc still needs a bunch of work, which I will be looking at.
ev64260 still needs to be renovated
amigappc was not attempted.

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.
 1.9  29-Aug-2007  ad Merge most x86 changes from the vmlocking branch, except the threaded soft
interrupt stuff. This is mostly comprised of changes to the pmap modules to
work on multiprocessor systems without kernel_lock, and changes to speed up
tlb shootdowns.
 1.8  21-Mar-2007  xtraeme branches: 1.8.4; 1.8.8; 1.8.12; 1.8.14;
Remove the MSR read IPI handler from X86_IPI_NAMES and use the
correct number in X86_NIPI.
 1.7  21-Mar-2007  xtraeme Remove the MSR read IPI handler, there won't be any driver that will
use it, and we can see if the values are ok in the CPUs in the write
operation.

Suggested by YAMAMOTO Takashi.
 1.6  20-Mar-2007  xtraeme MSR read and write IPI handlers for x86. A MSR will be read or written
in all CPUs available in the system. This adds another member
to struct cpu_info, ci_msr_rvalue; it will contain the value of the MSR
in a previous operation.

Tested with clockmod in UP and SMP by me, tested with est in SMP
by Daniel Carosone and Michael Van Elst.

Ok'ed by Andrew Doran and Matthew R. Green.
 1.5  03-Nov-2005  yamt branches: 1.5.26; 1.5.28; 1.5.32; 1.5.34; 1.5.36;
- use sys/spl.h.
- add some IPL_ definitions.
 1.4  16-Apr-2005  yamt branches: 1.4.2;
make multi inclusion protection macros consistent.
 1.3  16-Jun-2003  thorpej branches: 1.3.2; 1.3.10; 1.3.16;
Rename IPL_IMP -> IPL_VM.
 1.2  04-May-2003  fvdl Block level-triggered interrupts at the ioapic if they are deferred.
Avoids interrupt storms seen on some systems. Many thanks to
Stoned Elipot for testing.
 1.1  26-Feb-2003  fvdl Move some files out of i386 into x86, so that they can be shared with
other ports.
 1.3.16.1  21-Apr-2005  tron Pull up revision 1.4 (requested by yamt in ticket #174):
make multi inclusion protection macros consistent.
 1.3.10.1  29-Apr-2005  kent sync with -current
 1.3.2.1  10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.4.2.4  21-Jan-2008  yamt sync with head
 1.4.2.3  07-Dec-2007  yamt sync with head
 1.4.2.2  03-Sep-2007  yamt sync with head.
 1.4.2.1  21-Jun-2006  yamt sync with head.
 1.5.36.1  29-Mar-2007  reinoud Pullup to -current
 1.5.34.1  11-Jul-2007  mjf Sync with head.
 1.5.32.6  23-Oct-2007  ad - Remove most of the hardware interrupt priority levels as proposed on
tech-kern, but leave the names of the remaining levels as none, vm, sched,
high: http://mail-index.netbsd.org/tech-kern/2007/05/05/0005.html

- Add aliases for the old levels to sys/intr.h.
 1.5.32.5  19-Oct-2007  ad Adjust previous.
 1.5.32.4  19-Oct-2007  ad Tidy up IPL defs, and remove a bogus comment block.
 1.5.32.3  29-Jul-2007  ad - When zeroing/copying pages, use SSE2 movtni to avoid polluting the cache.
- By default, align assembly routines on 32-byte starting boundaries.
- There are now 8 interrupt priority levels, half of which are softints.
Update intrdefs.h to match.
- Always clear/set spinlock words - removes lots of ifdefs.
- Remove the horrible ci_self150 hack that I introduced.
- Overhaul how TLB shootdown is performed. Inspired by a similar change in
OpenBSD but implemented quite differently. This should be a lot faster
but I have not benchmarked it yet.
 1.5.32.2  17-Jun-2007  ad - Increase the number of thread priorities from 128 to 256. How the space
is set up is to be revisited.
- Implement soft interrupts as kernel threads. A generic implementation
is provided, with hooks for fast-path MD code that can run the interrupt
threads over the top of other threads executing in the kernel.
- Split vnode::v_flag into three fields, depending on how the flag is
locked (by the interlock, by the vnode lock, by the file system).
- Miscellaneous locking fixes and improvements.
 1.5.32.1  10-Apr-2007  ad Sync with head.
 1.5.28.1  24-Mar-2007  yamt sync with head.
 1.5.26.1  20-Apr-2007  bouyer Pull up following revision(s) (requested by mlelstv in ticket #575):
sys/arch/i386/i386/est.c sync with 1.37
sys/arch/i386/i386/ipifuncs.c sync with 1.16
sys/arch/x86/include/cpu_msr.h sync with 1.4
sys/arch/x86/include/intrdefs.h sync with 1.8
sys/arch/x86/include/powernow.h sync with 1.9
sys/arch/x86/x86/powernow_k8.c sync with 1.20
sys/arch/x86/x86/msr_ipifuncs.c sync with 1.8
sys/arch/amd64/amd64/ipifuncs.c sync with 1.9
sys/arch/i386/i386/identcpu.c patch
sys/arch/i386/i386/machdep.c patch
sys/arch/i386/include/cpu.h patch
sys/arch/x86/conf/files.x86 patch
sys/arch/x86/x86/x86_machdep.c patch
sys/arch/amd64/amd64/machdep.c patch
Add MSR write IPI handler for x86. Use it and the RUN_ONCE framework
to make est and powernow drivers work properly with SMP.
 1.8.14.2  09-Jan-2008  matt sync with HEAD
 1.8.14.1  06-Nov-2007  matt sync with HEAD
 1.8.12.2  09-Dec-2007  jmcneill Sync with HEAD.
 1.8.12.1  03-Sep-2007  jmcneill Sync with HEAD.
 1.8.8.1  03-Sep-2007  skrll Sync with HEAD.
 1.8.4.1  03-Oct-2007  garbled Sync with HEAD
 1.10.2.2  27-Dec-2007  mjf Sync with HEAD.
 1.10.2.1  08-Dec-2007  mjf Sync with HEAD.
 1.11.6.1  02-Jan-2008  bouyer Sync with HEAD
 1.11.2.1  26-Dec-2007  ad Sync with head.
 1.12.10.4  11-Aug-2010  yamt sync with head.
 1.12.10.3  11-Mar-2010  yamt sync with head
 1.12.10.2  04-May-2009  yamt sync with head.
 1.12.10.1  16-May-2008  yamt sync with head.
 1.12.8.1  18-May-2008  yamt sync with head.
 1.12.6.2  17-Jan-2009  mjf Sync with HEAD.
 1.12.6.1  02-Jun-2008  mjf Sync with HEAD.
 1.13.10.1  17-Nov-2008  snj Pull up following revision(s) (requested by ad in ticket #73):
sys/arch/amd64/amd64/fpu.c: revision 1.27
sys/arch/amd64/amd64/ipifuncs.c: revision 1.20
sys/arch/i386/i386/ipifuncs.c: revision 1.28
sys/arch/i386/isa/npx.c: revision 1.130
sys/arch/x86/include/intrdefs.h: revision 1.14
PR port-amd64/38293 panic: fp_save ipi didn't
Kill the FP flush IPI and always save. The synchronization here isn't
strong and we could easily pull the chain on an innocent LWP's FP state.
Another fix to follow.
 1.13.8.1  19-Jan-2009  skrll Sync with HEAD.
 1.13.6.1  13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.14.4.2  24-Oct-2010  jym Sync with HEAD
 1.14.4.1  01-Nov-2009  jym Sync with HEAD.
 1.15.4.1  03-Jul-2010  rmind sync with head
 1.15.2.1  17-Aug-2010  uebayasi Sync with HEAD.
 1.16.8.1  10-Nov-2011  yamt sync with head
 1.16.6.1  03-Jun-2011  cherry Initial import of xen MP sources, with kernel and userspace tests.
- this is a source priview.
- boots to single user.
- spurious interrupt and pmap related panics are normal
 1.17.10.1  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.19.2.1  10-Aug-2014  tls Rebase.
 1.20.28.2  08-Apr-2020  martin Merge changes from current as of 20200406
 1.20.28.1  10-Jun-2019  christos Sync with HEAD
 1.20.20.1  09-Mar-2019  martin Pull up following revision(s) via patch (requested by nonaka in ticket #1210):

sys/dev/hyperv/vmbusvar.h: revision 1.1
sys/dev/hyperv/hvs.c: revision 1.1
sys/dev/hyperv/if_hvn.c: revision 1.1
sys/dev/hyperv/vmbusic.c: revision 1.1
sys/arch/x86/x86/lapic.c: revision 1.69
sys/arch/x86/isa/clock.c: revision 1.34
sys/arch/x86/include/intrdefs.h: revision 1.22
sys/arch/i386/conf/GENERIC: revision 1.1201
sys/arch/x86/x86/hyperv.c: revision 1.1
sys/arch/x86/include/cpu.h: revision 1.105
sys/arch/x86/x86/x86_machdep.c: revision 1.124
sys/arch/i386/conf/GENERIC: revision 1.1203
sys/arch/amd64/amd64/genassym.cf: revision 1.74
sys/arch/i386/conf/GENERIC: revision 1.1204
sys/arch/amd64/conf/GENERIC: revision 1.520
sys/arch/x86/x86/hypervreg.h: revision 1.1
sys/arch/amd64/amd64/vector.S: revision 1.69
sys/dev/hyperv/hvshutdown.c: revision 1.1
sys/dev/hyperv/hvshutdown.c: revision 1.2
sys/dev/usb/if_urndisreg.h: file removal
sys/arch/x86/x86/cpu.c: revision 1.167
sys/arch/x86/conf/files.x86: revision 1.107
sys/dev/usb/if_urndis.c: revision 1.20
sys/dev/hyperv/vmbusicreg.h: revision 1.1
sys/dev/hyperv/hvheartbeat.c: revision 1.1
sys/dev/hyperv/vmbusicreg.h: revision 1.2
sys/dev/hyperv/hvheartbeat.c: revision 1.2
sys/dev/hyperv/files.hyperv: revision 1.1
sys/dev/ic/rndisreg.h: revision 1.1
sys/arch/i386/i386/genassym.cf: revision 1.111
sys/dev/ic/rndisreg.h: revision 1.2
sys/dev/hyperv/hyperv_common.c: revision 1.1
sys/dev/hyperv/hvtimesync.c: revision 1.1
sys/dev/hyperv/hypervreg.h: revision 1.1
sys/dev/hyperv/hvtimesync.c: revision 1.2
sys/dev/hyperv/vmbusicvar.h: revision 1.1
sys/dev/hyperv/if_hvnreg.h: revision 1.1
sys/arch/x86/x86/lapic.c: revision 1.70
sys/arch/amd64/amd64/vector.S: revision 1.70
sys/dev/ic/ndisreg.h: revision 1.1
sys/arch/amd64/conf/GENERIC: revision 1.516
sys/dev/hyperv/hypervvar.h: revision 1.1
sys/arch/amd64/conf/GENERIC: revision 1.518
sys/arch/amd64/conf/GENERIC: revision 1.519
sys/arch/i386/conf/files.i386: revision 1.400
sys/dev/acpi/vmbus_acpi.c: revision 1.1
sys/dev/hyperv/vmbus.c: revision 1.1
sys/dev/hyperv/vmbus.c: revision 1.2
sys/arch/x86/x86/intr.c: revision 1.144
sys/arch/i386/i386/vector.S: revision 1.83
sys/arch/amd64/conf/files.amd64: revision 1.112

separate RNDIS definitions from urndis(4) for use with Hyper-V NetVSC.

-

Added Microsoft Hyper-V support. It ported from OpenBSD and FreeBSD.
graphical console is not work on Gen.2 VM yet. To use the serial console,
enter "consdev com,0x3f8,115200" on efiboot.

-

Add __diagused.

-

PR/53984: Partial revert of modify lapic_calibrate_timer() in lapic.c r1.69.

-

Update Hyper-V related drivers description.

-

Remove unused definition.

-

Rename the MODULE_*_HOOK() macros to MODULE_HOOK_*() as briefly
discussed on irc.
NFCI intended.

-

commented out hvkvp entry.

-

fix typo. pointed out by pgoyette@n.o.

-

Use IDTVEC instead of NENTRY for handle_hyperv_hypercall.

-

Rename the MODULE_*_HOOK() macros to MODULE_HOOK_*() as briefly
discussed on irc.
 1.23.6.1  12-Apr-2020  bouyer Get rid of xen-specific ci_x* interrupt handling:
- use the general SIR mechanism, reserving 3 more slots for IPL_VM, IPL_SCHED
and IPL_HIGH
- remove specific handling from C sources, or change to ipending
- convert IPL number to SIR number in various places
- Remove XUNMASK/XPENDING in assembly or change to IUNMASK/IPENDING
- remove Xen-specific ci_xsources, ci_xmask, ci_xunmask, ci_xpending from
struct cpu_info
- for now remove a KASSERT that there are no pending interrupts in
idle_block(). We can get there with some software interrupts pending
in autoconf XXX needs to be looked at.
 1.24.2.1  03-Apr-2021  thorpej Sync with HEAD.

RSS XML Feed