freebsd-dev/sys/i386/i386
Alexander Motin aba10e131f Allow swi_sched() to be called from NMI context.
For purposes of handling hardware error reported via NMIs I need a way to
escape NMI context, being too restrictive to do something significant.

To do it this change introduces new swi_sched() flag SWI_FROMNMI, making
it careful about used KPIs.  On platforms allowing IPI sending from NMI
context (x86 for now) it immediately wakes clk_intr_event via new IPI_SWI,
otherwise it works just like SWI_DELAY.  To handle the delayed SWIs this
patch calls clk_intr_event on every hardclock() tick.

MFC after:	2 weeks
Sponsored by:	iXsystems, Inc.
Differential Revision:	https://reviews.freebsd.org/D25754
2020-07-25 15:19:38 +00:00
..
apic_vector.s Allow swi_sched() to be called from NMI context. 2020-07-25 15:19:38 +00:00
atpic_vector.s i386 4/4G split. 2018-04-13 20:30:49 +00:00
bios.c i386: Merge PAE and non-PAE pmaps into same kernel. 2019-01-30 02:07:13 +00:00
bioscall.s Rename assym.s to assym.inc 2018-03-20 17:58:51 +00:00
bpf_jit_machdep.c Make UMA and malloc(9) return non-executable memory in most cases. 2018-06-13 17:04:41 +00:00
bpf_jit_machdep.h
copyout_fast.s i386 4/4G split. 2018-04-13 20:30:49 +00:00
copyout.c Provide protection against starvation of the ll/sc loops when accessing userpace. 2019-07-12 18:43:24 +00:00
db_disasm.c Make first a 'bool' instead of a 'boolean_t'. 2018-04-14 22:14:18 +00:00
db_interface.c x86: Report per-cpu IPI TLB shootdown generation in ddb 'show pcpu' output. 2019-01-04 17:25:47 +00:00
db_trace.c i386: stop guessing the address of the trap frame in ddb backtrace. 2019-11-12 15:56:27 +00:00
elan-mmcr.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
elf_machdep.c [PowerPC][Book-E] Fix missing load base in elf_cpu_parse_dynamic(). 2020-03-18 02:58:18 +00:00
exception.s Mitigations for Microarchitectural Data Sampling. 2019-05-14 17:02:20 +00:00
gdb_machdep.c
genassym.c Mitigations for Microarchitectural Data Sampling. 2019-05-14 17:02:20 +00:00
geode.c Extract eventfilter declarations to sys/_eventfilter.h 2019-05-20 00:38:23 +00:00
in_cksum.c
initcpu.c typo: suppported. 2019-05-29 02:08:23 +00:00
io.c
k6_mem.c Revert r327828, r327949, r327953, r328016-r328026, r328041: 2018-01-21 15:42:36 +00:00
locore.s i386: Merge PAE and non-PAE pmaps into same kernel. 2019-01-30 02:07:13 +00:00
longrun.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
machdep.c [PowerPC] More relocation fixes 2020-06-21 03:39:26 +00:00
mem.c i386: Merge PAE and non-PAE pmaps into same kernel. 2019-01-30 02:07:13 +00:00
minidump_machdep_base.c Remove an obsolete TODO comment from several minidump implementations. 2020-04-24 18:47:42 +00:00
minidump_machdep_nopae.c i386: Merge PAE and non-PAE pmaps into same kernel. 2019-01-30 02:07:13 +00:00
minidump_machdep_pae.c i386: Merge PAE and non-PAE pmaps into same kernel. 2019-01-30 02:07:13 +00:00
minidump_machdep.c i386: Merge PAE and non-PAE pmaps into same kernel. 2019-01-30 02:07:13 +00:00
mp_clock.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
mp_machdep.c Allow swi_sched() to be called from NMI context. 2020-07-25 15:19:38 +00:00
mpboot.s i386: Merge PAE and non-PAE pmaps into same kernel. 2019-01-30 02:07:13 +00:00
npx.c FPU init: allocate initial state from UMA to ensure alignment 2020-06-12 21:17:56 +00:00
perfmon.c
pmap_base.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
pmap_nopae.c Define a unified pmap structure for i386. 2020-01-07 15:59:31 +00:00
pmap_pae.c Define a unified pmap structure for i386. 2020-01-07 15:59:31 +00:00
pmap.c Revert r240317 to prevent leaking pmap entries 2020-07-16 23:29:26 +00:00
prof_machdep.c Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
ptrace_machdep.c
sigtramp.s i386 4/4G split. 2018-04-13 20:30:49 +00:00
support.s copystr(9): Move to deprecate (attempt #2) 2020-05-25 16:40:48 +00:00
swtch.s Remove dead code in i386 cpu_throw(). 2018-08-25 15:31:23 +00:00
sys_machdep.c Use NLDT to get number of LDTs on i386 2019-02-04 18:07:03 +00:00
trap.c Untie nmi_handle_intr() from DEV_ISA. 2020-07-22 20:15:21 +00:00
uio_machdep.c
vm86.c i386: Merge PAE and non-PAE pmaps into same kernel. 2019-01-30 02:07:13 +00:00
vm86bios.s i386: Merge PAE and non-PAE pmaps into same kernel. 2019-01-30 02:07:13 +00:00
vm_machdep.c amd64 pmap: reorder IPI send and local TLB flush in TLB invalidations. 2020-06-10 22:07:57 +00:00