freebsd-dev/sys/sparc64/include
Marius Strobl 4cf9e21ed8 - Give PIL_PREEMPT the lowest priority just above low/stray interrupts.
The reason for this is that the SPARC v9 architecture allows nested
  interrupts of higher priority/level than that of the current interrupt
  to occur (and we can't just entirely bypass this model, also, at least
  for tick interrupts, this also wouldn't be wise). However, when a
  preemption interrupt interrupts another interrupt of lower priority,
  f.e. PIL_ITHREAD, and that one in turn is nested by a third interrupt,
  f.e. PIL_TICK, with SCHED_ULE the execution of interrupts higher than
  PIL_PREEMPT may be migrated to another CPU. In particular, tl1_ret(),
  which is responsible for restoring the state of the CPU prior to entry
  to the interrupt based on the (also migrated) trap frame, then is run
  on a CPU which actually didn't receive the interrupt in question,
  causing an inappropriate processor interrupt level to be "restored".
  In turn, this causes interrupts of the first level, i.e. PIL_ITHREAD
  in the above scenario, to be blocked on the target of the migration
  until the correct PIL happens to be restored again on that CPU again.
  Making PIL_PREEMPT the lowest real priority, this effectively prevents
  this scenario from happening, as preemption interrupts no longer can
  interrupt any other interrupt besides stray ones (which is no issue).
  Thanks to attilio@ and especially mav@ for helping me to understand
  this problem at the 201208DevSummit.
- Give PIL_STOP (which is also used for IPI_STOP_HARD, given that there's
  no real equivalent to NMIs on SPARC v9) the highest possible priority
  just below the hardwired PIL_TICK, so it has a chance to interrupt
  more things.

MFC after:	1 week
2012-10-20 12:07:48 +00:00
..
_align.h
_bus.h
_inttypes.h Sync licenses and the corresponding RCS IDs with NetBSD, mainly switching 2011-03-12 14:33:32 +00:00
_limits.h Fix types of some values in machine/_limits.h. 2011-01-08 11:13:34 +00:00
_stdint.h Make the wchar_t type machine dependent. 2012-06-24 04:15:58 +00:00
_types.h Make the wchar_t type machine dependent. 2012-06-24 04:15:58 +00:00
asi.h
asm.h Add macros for alternate entry points. 2010-09-15 21:11:29 +00:00
asmacros.h - Use atomic operations rather than sched_lock for safely assigning pm_active 2011-10-06 11:01:31 +00:00
atomic.h Add an unified macro to deny ability from the compiler to reorder 2012-10-09 14:32:30 +00:00
bus_common.h
bus_dma.h - Change contigmalloc() to use the vm_paddr_t type instead of an unsigned 2012-03-01 19:58:34 +00:00
bus_private.h Make sparc64 compatible with NEW_PCIB and enable it: 2011-10-02 23:22:38 +00:00
bus.h Make sparc64 compatible with NEW_PCIB and enable it: 2011-10-02 23:22:38 +00:00
cache.h - For Cheetah- and Zeus-class CPUs don't flush all unlocked entries from 2011-07-02 11:14:54 +00:00
ccr.h
clock.h Now that we have a working OF_printf() since r230631 and a OF_panic() 2012-01-27 23:21:54 +00:00
cmt.h
cpu.h Mark cpu_{halt,reset}() as __dead2 as appropriate. 2012-01-27 22:04:43 +00:00
cpufunc.h Correct spelling in comments. 2011-04-22 09:31:40 +00:00
db_machdep.h
dcr.h
elf.h Reserve AT_TIMEKEEP auxv entry for providing usermode the pointer to 2012-06-22 06:38:31 +00:00
endian.h Add casts to __uint16_t to the __bswap16() macros on all arches which 2012-03-09 20:34:31 +00:00
exec.h
fireplane.h
float.h Add C11 macros describing subnormal numbers to float.h. 2012-01-23 06:36:41 +00:00
floatingpoint.h
fp.h
frame.h
fsr.h Add a global MD macro for the VIS block size instead of duplicating 2012-08-31 11:15:01 +00:00
gdb_machdep.h
idprom.h
ieee.h
ieeefp.h People porting FreeBSD to new architectures ought not have to 2011-10-21 06:41:46 +00:00
in_cksum.h MFp4 bz_ipv6_fast: 2012-05-24 22:00:48 +00:00
instr.h
intr_machdep.h - Give PIL_PREEMPT the lowest priority just above low/stray interrupts. 2012-10-20 12:07:48 +00:00
iommureg.h Fix typos - remove duplicate "the". 2011-02-21 09:01:34 +00:00
iommuvar.h Sync licenses and the corresponding RCS IDs with NetBSD, mainly switching 2011-03-12 14:33:32 +00:00
jbus.h
kdb.h
kerneldump.h
ktr.h Adapt CATR() to r222813. This is somewhat tricky as we can't afford using 2011-06-07 17:33:39 +00:00
limits.h
lsu.h
mcntl.h
md_var.h For sparc64 also adjust the geometry of da(4) driven disks to not overflow 2011-11-27 15:43:40 +00:00
memdev.h Add reader/writer lock around mem_range_attr_get() and mem_range_attr_set(). 2011-01-17 22:58:28 +00:00
metadata.h
nexusvar.h
ofw_machdep.h - Now that we have a working OF_printf() since r230631, use it for 2012-01-27 22:35:53 +00:00
ofw_mem.h
ofw_nexus.h Sync licenses and the corresponding RCS IDs with NetBSD, mainly switching 2011-03-12 14:33:32 +00:00
param.h Merge from r224217: 2011-07-20 18:51:18 +00:00
pcb.h Add a convenience macro for the returns_twice attribute, and apply it to 2012-04-29 11:04:31 +00:00
pcpu.h Define curthread as an inline function that loads the thread pointer 2011-11-15 20:17:18 +00:00
pmap.h Merge r236494 from x86: 2012-08-05 22:03:13 +00:00
pmc_mdep.h
proc.h Remove unused define. 2011-10-07 16:09:44 +00:00
profile.h
pstate.h
ptrace.h
reg.h
reloc.h
resource.h
runq.h
sc_machdep.h
setjmp.h
sf_buf.h
sigframe.h
signal.h
smp.h - Unlike cache invalidation and TLB demapping IPIs, reading registers from 2012-08-29 16:56:50 +00:00
stack.h
stdarg.h
sysarch.h
tick.h - Wrap exchanging td_intr_frame and calling the event timer callback in 2010-10-19 19:44:05 +00:00
tlb.h - For Cheetah- and Zeus-class CPUs don't flush all unlocked entries from 2011-07-02 11:14:54 +00:00
trap.h
tsb.h On machines where we don't need to lock the kernel TSB into the dTLB and 2011-06-21 20:48:14 +00:00
tstate.h
tte.h
ucontext.h
upa.h
utrap.h
varargs.h Remove the advertising clause from the UCB license according to the 2011-03-13 13:42:43 +00:00
vdso.h Implement mechanism to export some kernel timekeeping data to 2012-06-22 07:06:40 +00:00
ver.h
vm.h
vmparam.h Prevent indent(1) from reformatting this comment, as it contains 2012-09-07 08:18:06 +00:00
watch.h
wstate.h