freebsd-nq/sys
Marius Strobl 9ed61314ff - We only lock the local per-CPU page in the local dTLB, so accessing the
foreign per-CPU pages in cpu_ipi_send() in order to get the module IDs
  of the other CPUs can cause a page fault. If this happens when doing a
  TLB shootdown while dealing with another page fault this causes a panic
  due to the recursive page fault. As I don't spot other code that assumes
  or requires that accessing foreign per-CPU pages must not page fault
  solve this by adding a statically allocated (and therefore locked in the
  kernel pages) array which establishes a FreeBSD CPU ID -> module ID
  relation and use that in cpu_ipi_selected() (instead of statically
  allocating the per-CPU pages which would just waste memory on say a dual
  CPU machine as sun4u theoretically supports up to 128 CPUs or wasting
  dTLB slots for the foreign per-CPU pages). [1]
- Fix a potential race in cpu_ipi_send(); as we don't serialize the access
  to cpu_ipi_selected() between MI and MD use (only MI-MI and MD-MD) we
  might catch the NACK bit caused by sending another IPI. Solve this by
  checking the NACK bit in the contents of the interrupt dispatch status
  reg read while interrupts were still turned off instead of reading that
  reg anew after interrupts were turned on again. This is also what the
  CPU docs suggest to do.
- Add a workaround for the SpitFire erratum  bug (affecting interrupt
  dispatch). While public info regarding what this CPU bug actually causes
  is not available testing shows that with the workaround in place it's
  less likely to get a "couldn't send ipi" panic, it doesn't solve these
  panics entirely though. [2]

Reported by:		kris [1]
Some clue from:		kmacy [1]
Info from:		Linux, OpenSolaris [2]
Additional testing by:	kris
MFC after:		3 days
2006-03-29 00:14:08 +00:00
..
alpha Use the read_cycle_count() function recently added for cpu_ticks() for 2006-03-28 21:20:12 +00:00
amd64 If the XSDT address in the RSDP for an ACPI 2.0 machine is NULL, then fall 2006-03-27 15:59:48 +00:00
arm Implement pmap_object_init_pt() the way it is on sparc64/alpha, by doing 2006-03-26 22:03:43 +00:00
boot Reimplementation of world/kernel build options. For details, see: 2006-03-17 18:54:44 +00:00
bsm Update src/sys/bsm for OpenBSM 1.0 alpha 5 changes: 2006-03-04 16:54:21 +00:00
cam Add reference to PR to TOSHIBA TransMemory quirk entry. 2006-03-18 21:13:14 +00:00
coda CODA_COMPAT_5 may not be defined unconditionally in the coda5 module. 2006-02-27 12:04:13 +00:00
compat Unbreaking build by removing a now unused variable. 2006-03-27 23:27:11 +00:00
conf Erm don't use -mno-apcs-frame if we're going to do profiling either, it's not 2006-03-27 00:32:46 +00:00
contrib Loopback pf_norm.c rev. 1.106 from OpenBSD: 2006-03-25 21:15:25 +00:00
crypto
ddb Clean up the way we handle auxiliary commands for a given ddb command 2006-03-07 22:17:06 +00:00
dev Fix 64-bit DMA. The problem was an incorrect flag check. Thanks to Paul 2006-03-28 23:59:07 +00:00
doc
fs Call vn_start_write() before locking vnode. 2006-03-19 20:45:06 +00:00
gdb add support for copying console messages to a remote gdb 2006-03-23 23:06:14 +00:00
geom Preserve previous behaviour of kern.geom.raid3.n{64,16,4}k tunables were 0 2006-03-28 18:34:36 +00:00
gnu Update a DB_SET to DB_FUNC I missed yesterday. 2006-03-08 15:47:48 +00:00
i4b Fix -Wundef warnings found when compiling i386 LINT, GENERIC and 2005-12-05 11:58:35 +00:00
i386 Use wrapper macros for atomic pointer operations in order to perform the 2006-03-28 14:34:48 +00:00
ia64 Close some races between procfs/ptrace and exit(2): 2006-02-22 18:57:50 +00:00
isa Committed the xbox syscons(8)-able console driver. 2006-03-03 14:52:57 +00:00
isofs/cd9660 When encountering a ISO_SUSP_CFLAG_ROOT element in Rock Ridge 2006-03-13 22:32:33 +00:00
kern - Conditionalize Giant around VFS operations for ALQ, ktrace, and 2006-03-28 21:30:22 +00:00
libkern Convert function declarations to ANSI C. 2006-01-22 00:46:40 +00:00
modules Add a driver for the new LSI MegaRAID SAS controller family. The 'MFI' name 2006-03-25 06:14:32 +00:00
net Assert that the mbuf is not shared to ensure problems like the last commit are 2006-03-26 20:52:47 +00:00
net80211 implement set(IEEE80211_IOC_STA_STATS) for hostapd; for 2006-03-27 05:22:35 +00:00
netatalk In at_setsockaddr(), assert that ddp != NULL, rather than returning an 2006-03-25 18:54:17 +00:00
netatm Convert to ANSI C function declarations. 2006-01-22 01:07:11 +00:00
netgraph Free private data when deleting hook. 2006-03-15 15:41:36 +00:00
netinet Define two new inpcb flags in the inp_vflag field, which for whatever 2006-03-26 11:30:31 +00:00
netinet6 This comment on various IPPORT_ defines was copied from in.h and 2006-03-28 12:51:22 +00:00
netipsec First steps towards IPSec cleanup. 2006-03-25 13:38:52 +00:00
netipx Add a simple netipx TODO list to the end of README, since there are a 2006-03-27 09:10:09 +00:00
netkey Fix stack corruptions on amd64. 2006-01-21 10:44:34 +00:00
netnatm Change so_pcb invariants in netnatm, such that netnatm sockets always have 2006-03-17 18:25:57 +00:00
netncp In ncp_sysctl_connstat(), the SLIST_FOREACH() logic to check 'error' 2006-01-14 11:40:32 +00:00
netsmb Retire NETSMBCRYPTO as a kernel option and make its functionality 2006-03-05 22:52:17 +00:00
nfs
nfs4client Use nfs4_disconnect for connections opened with nfs4_connect. 2006-01-19 22:48:31 +00:00
nfsclient Fix a bug in the NFS/TCP retransmission path. 2006-03-23 22:58:42 +00:00
nfsserver - Reorder vrele calls after vput calls to prevent lock order reversals 2006-03-12 04:59:04 +00:00
opencrypto Fix memory leak which occurs when crypto.ko module is unloaded. 2006-03-28 08:33:30 +00:00
pc98 Don't allow userland to set hardware watch points on kernel memory at all. 2006-03-14 16:13:55 +00:00
pccard I don't believe these are used at all, and can be safely removed 2006-01-15 06:49:28 +00:00
pci Add support for RTL8111B chip, that can be found on some mainboards, 2006-03-22 07:33:03 +00:00
posix4 mqueue.h has been superceded by sys/mqueue.h thanks to David Xu's work. 2005-11-28 02:58:30 +00:00
powerpc Simplify system time accounting for profiling. 2006-02-08 08:09:17 +00:00
rpc Fix up some cut-n-paste damage and some out-of-date comments. 2006-01-20 15:20:41 +00:00
security Don't call vn_finished_write() if vn_start_write() failed. 2006-03-19 20:43:07 +00:00
sparc64 - We only lock the local per-CPU page in the local dTLB, so accessing the 2006-03-29 00:14:08 +00:00
sys Remove unused symbols. 2006-03-28 16:20:29 +00:00
tools Fix a leftover "iwi_boot" string. 2006-01-30 16:32:08 +00:00
ufs Allow compilation when not using softupdates. 2006-03-19 22:16:44 +00:00
vm MFP4: Support for profiling dynamically loaded objects. 2006-03-26 12:20:54 +00:00
Makefile Reimplementation of world/kernel build options. For details, see: 2006-03-17 18:54:44 +00:00