Home | History | Annotate | Download | only in include
History log of /src/sys/arch/xen/include/intrdefs.h
RevisionDateAuthorComments
 1.17  25-Apr-2020  bouyer 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.16  21-Apr-2020  ad XEN_IPI_KICK was replaced by XEN_IPI_AST.
 1.15  03-Apr-2020  ad branches: 1.15.2;
Attach xen IPI event counters.
 1.14  23-Nov-2019  ad 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.13  10-Sep-2018  cherry Make the use of 'irqs' in the range 0 < irq < 255 by xen
as a handle for internal use explicit.

This allows us to pass up the handle as "legacy" irq while
establishing interrupt handlers for xen.

No functional change.
 1.12  19-May-2014  rmind branches: 1.12.26; 1.12.28;
Implement MI IPI interface with cross-call support.
 1.11  07-Nov-2011  cherry branches: 1.11.10; 1.11.24;
Add an ipi callback to force hypervisor callback. this is useful to "re-route" interrupts to a given vcpu
 1.10  10-Aug-2011  cherry branches: 1.10.2;
Add Xen specific ipi bitmasks
 1.9  11-Jan-2008  bouyer branches: 1.9.18; 1.9.34;
Merge the bouyer-xeni386 branch to head, at tag bouyer-xeni386-merge1 (the
branch is still active and will see i386PAE support developement).
Sumary of changes:
- switch xeni386 to the x86/x86/pmap.c, and the xen/x86/x86_xpmap.c
pmap bootstrap.
- merge back most of xen/i386/ to i386/i386
- change the build to reduce diffs between i386 and amd64 in file locations
- remove include files that were identical to the i386/amd64 counterparts,
the build will find them via the xen-ma/machine link.
 1.8  03-Dec-2007  ad branches: 1.8.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.7  22-Nov-2007  bouyer Pull up the bouyer-xenamd64 branch to HEAD. This brings in amd64 support
to NetBSD/Xen, both Dom0 and DomU.
 1.6  28-Sep-2006  bouyer branches: 1.6.8; 1.6.26; 1.6.28; 1.6.32; 1.6.34;
Add Xen3 support for ACPI and/or MPBIOS + IOAPIC. To help with this, physical
CPUs are now configured on mainbus only in dom0, and only to know about
their APIC id. virtual CPUs are attached to hypervisor as:
vcpu* at hypervisor?
and this is what's used as curcpu(). The kernel config files needs to be
updated for this, see XEN3_DOM0 or XEN3_DOMU for examples.
XEN3_DOM0 now has acpi, MPBIOS and ioapic by default.
Note that a Xen dom0 kernel doens't have access to the lapic.
 1.5  09-Apr-2006  bouyer branches: 1.5.8; 1.5.10;
Add support for ACPI in xen-3 dom0 support. We can now boot a xen-3 dom0
kernel with a default xen comamnd line.
 1.4  11-Dec-2005  christos branches: 1.4.4; 1.4.6; 1.4.8; 1.4.10; 1.4.12;
merge ktrace-lwp.
 1.3  03-Nov-2005  yamt branches: 1.3.2;
- use sys/spl.h.
- add some IPL_ definitions.
 1.2  20-Apr-2005  bouyer branches: 1.2.2; 1.2.4; 1.2.6;
Add polling support to the domain controller. Use this in xencons instead
of relying on the fact that the domain controller is still getting interrupts
when xenconscn_getc()/xenconscn_putc() is called.
Now that polling is fixed, move IPL_CTRL down between IPL_SOFTSERIAL and
IPL_TTY, fixing port-xen/29999 by YAMAMOTO Takashi.
Now that IPL_CTRL is low enouth, remove the softintr stuff from the
domain controller, and call wakeup() directly.

Thanks to YAMAMOTO Takashi and Christian Limpach for feedback and suggestions.
 1.1  16-Apr-2005  bouyer Get rid of the event to pseudo-irq mapping. We are limited to 32 pseudo-irq,
including soft interrupt, and this is way too low in some use (lots of domains,
or domains with lots of xennet, or even hardware with lots of devices at
different interrupts).
Based on idea from YAMAMOTO Takashi, keep one list of handler per-event and
one per-IPL (so the same handler is now in 2 lists). In the common case were
an event is received at low IPL, we can call the handlers quickly (there
is usually only one handler per event, unless the event is mapped to a
physical interrupt and this interrupt is shared by different devices).
Deffered events and software interrupts are handled by a bitmask (as before)
with one bit per IPL. When one IPL has an event pending all handlers for
this IPL will be called.
With this change, it is now possible to have all the 1024 events active.

While here, handle debug event in a special way: the handler is always called,
regardless of the current IPL. Make the handler print usefull informations
about events and IPL states.
Also remove code not used on Xen in files inherited from the x86 port.
 1.2.6.4  21-Jan-2008  yamt sync with head
 1.2.6.3  07-Dec-2007  yamt sync with head
 1.2.6.2  30-Dec-2006  yamt sync with head.
 1.2.6.1  21-Jun-2006  yamt sync with head.
 1.2.4.2  29-Apr-2005  kent sync with -current
 1.2.4.1  20-Apr-2005  kent file intrdefs.h was added on branch kent-audio2 on 2005-04-29 11:28:29 +0000
 1.2.2.3  28-Apr-2005  tron Pull up revision 1.2 (requested by bouyer in ticket #193):
Add polling support to the domain controller. Use this in xencons instead
of relying on the fact that the domain controller is still getting interrupts
when xenconscn_getc()/xenconscn_putc() is called.
Now that polling is fixed, move IPL_CTRL down between IPL_SOFTSERIAL and
IPL_TTY, fixing port-xen/29999 by YAMAMOTO Takashi.
Now that IPL_CTRL is low enouth, remove the softintr stuff from the
domain controller, and call wakeup() directly.
Thanks to YAMAMOTO Takashi and Christian Limpach for feedback and suggestions.
 1.2.2.2  28-Apr-2005  tron Pull up revision 1.1 (requested by bouyer in ticket #192):
Get rid of the event to pseudo-irq mapping. We are limited to 32 pseudo-irq,
including soft interrupt, and this is way too low in some use (lots of domains,
or domains with lots of xennet, or even hardware with lots of devices at
different interrupts).
Based on idea from YAMAMOTO Takashi, keep one list of handler per-event and
one per-IPL (so the same handler is now in 2 lists). In the common case were
an event is received at low IPL, we can call the handlers quickly (there
is usually only one handler per event, unless the event is mapped to a
physical interrupt and this interrupt is shared by different devices).
Deffered events and software interrupts are handled by a bitmask (as before)
with one bit per IPL. When one IPL has an event pending all handlers for
this IPL will be called.
With this change, it is now possible to have all the 1024 events active.
While here, handle debug event in a special way: the handler is always called,
regardless of the current IPL. Make the handler print usefull informations
about events and IPL states.
Also remove code not used on Xen in files inherited from the x86 port.
 1.2.2.1  20-Apr-2005  tron file intrdefs.h was added on branch netbsd-3 on 2005-04-28 10:20:11 +0000
 1.3.2.2  10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.3.2.1  03-Nov-2005  skrll file intrdefs.h was added on branch ktrace-lwp on 2005-11-10 14:00:34 +0000
 1.4.12.1  24-May-2006  tron Merge 2006-05-24 NetBSD-current into the "peter-altq" branch.
 1.4.10.1  19-Apr-2006  elad sync with head - hopefully this will work
 1.4.8.1  11-Apr-2006  yamt sync with head
 1.4.6.1  22-Apr-2006  simonb Sync with head.
 1.4.4.1  09-Sep-2006  rpaulo sync with head
 1.5.10.1  22-Oct-2006  yamt sync with head
 1.5.8.1  18-Nov-2006  ad Sync with head.
 1.6.34.2  18-Feb-2008  mjf Sync with HEAD.
 1.6.34.1  08-Dec-2007  mjf Sync with HEAD.
 1.6.32.2  25-Oct-2007  bouyer Finish sync with HEAD. Especially use the new x86 pmap for xenamd64.
For this:
- rename pmap_pte_set() to pmap_pte_testset()
- make pmap_pte_set() a function or macro for non-atomic PTE write
- define and use pmap_pa2pte()/pmap_pte2pa() to read/write PTE entries
- define pmap_pte_flush() which is a nop in x86 case, and flush the
MMUops queue in the Xen case
 1.6.32.1  17-Oct-2007  bouyer Prepare for xenamd64:
- kill xen/i386/identcpu.c, use i386/i386/identcpu.c instead (with a few
#ifndef XEN)
- move some files that can be shared between i386 and amd64 from
xen/i386 to xen/x86 (or to xen/xen for non-cpu-specific code)
- split assembly out of xen/include/hypervisor.h to xen/include/hypercalls.h
- use <xen/...> instead of <machine/...> for cpu-independant include files.

more work needed here, i386-specific files should got out of arch/xen to
arch/xeni386, and more code shared with arch/i386.
 1.6.28.2  23-Mar-2008  matt sync with HEAD
 1.6.28.1  09-Jan-2008  matt sync with HEAD
 1.6.26.2  09-Dec-2007  jmcneill Sync with HEAD.
 1.6.26.1  27-Nov-2007  joerg Sync with HEAD. amd64 Xen support needs testing.
 1.6.8.1  03-Dec-2007  ad Sync with HEAD.
 1.8.6.1  05-Jan-2008  bouyer Remove files that just include the x86 counterpart.
 1.9.34.3  18-Sep-2011  cherry Use an IPI to re-route events to the cpu where the handler has been registered
 1.9.34.2  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.9.34.1  11-Jan-2008  cherry file intrdefs.h was added on branch cherry-xenmp on 2011-06-03 13:27:40 +0000
 1.9.18.1  27-Aug-2011  jym Add/remove files, like in HEAD.
 1.10.2.1  10-Nov-2011  yamt sync with head
 1.11.24.1  10-Aug-2014  tls Rebase.
 1.11.10.1  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.12.28.2  08-Apr-2020  martin Merge changes from current as of 20200406
 1.12.28.1  10-Jun-2019  christos Sync with HEAD
 1.12.26.1  30-Sep-2018  pgoyette Ssync with HEAD
 1.15.2.2  25-Apr-2020  bouyer Sync with bouyer-xenpvh-base2 (HEAD)
 1.15.2.1  11-Apr-2020  bouyer Move softint and preemtion-related functions out of x86/x86/intr.c to
its own file, x86/x86/x86_softintr.c
Add x86/x86/x86_softintr.c for native and XenPV
Make sure XenPV also check ci_ioending, which is used for softints.
Switch XenPV to fast softints and allow kernel preemption.
kpreempt_disable() before calling pmap_changeprot_local()
run xen_wallclock_time() and xen_global_systime_ns() at splshed() to
avoid being interrupted.

XXX amd64 lock stubs are racy for XPENDING

RSS XML Feed