freebsd-dev/sys
Hans Petter Selasky f3de9af633 Fix problem regarding priority inversion when using the concurrency
kit, CK, in the LinuxKPI.

When threads are pinned to a CPU core or when there is only one CPU,
it can happen that a higher priority thread can call the CK
synchronize function while a lower priority thread holds the read
lock. Because the CK's synchronize is a simple wait loop this can lead
to a deadlock situation. To solve this problem use the recently
introduced CK's wait callback function.

When detecting a CK blocking condition figure out the lowest priority
among the blockers and update the calling thread's priority and
yield. If another CPU core is holding the read lock, pin the thread to
the blocked CPU core and update the priority. The calling threads
priority and CPU bindings are restored before return.

If a thread holding a CK read lock is detected to be sleeping, pause()
will be used instead of yield().

MFC after:		1 week
Sponsored by:		Mellanox Technologies
2017-04-19 13:03:29 +00:00
..
amd64 Use kmem_malloc() instead of malloc(9) for the native amd64 filter. 2017-04-17 22:02:09 +00:00
arm Use hwreset_get_by_ofw_idx() function instead, since there is 2017-04-19 05:59:00 +00:00
arm64 Remove trailing whitespace from r317061 2017-04-17 18:57:26 +00:00
boot loader: uboot disk ioctl should call disk_ioctl 2017-04-18 19:36:58 +00:00
bsm Merge OpenBSM 1.2-alpha5 from vendor branch to FreeBSD -CURRENT: 2017-03-26 21:14:49 +00:00
cam da(4): Fix a TRIM regression introduced in r308155 2017-04-18 21:05:05 +00:00
cddl - Remove 'struct vmmeter' from 'struct pcpu', leaving only global vmmeter 2017-04-17 17:34:47 +00:00
compat Fix problem regarding priority inversion when using the concurrency 2017-04-19 13:03:29 +00:00
conf Replace the RC4 algorithm for generating in-kernel secure random 2017-04-16 09:11:02 +00:00
contrib Remove unneeded include of vm_phys.h. 2017-04-17 16:51:04 +00:00
crypto Replace the RC4 algorithm for generating in-kernel secure random 2017-04-16 09:11:02 +00:00
ddb Fix printing of negative offsets (typically from frame pointers) again. 2017-03-26 18:46:35 +00:00
dev hyperv: Use kmem_malloc for hypercall memory due to NX bit change. 2017-04-19 02:39:48 +00:00
fs - Remove 'struct vmmeter' from 'struct pcpu', leaving only global vmmeter 2017-04-17 17:34:47 +00:00
gdb
geom Rename two gmirror state flags to make their meanings slightly clearer. 2017-04-14 17:13:57 +00:00
gnu Update our device tree files to a Linux 4.10 2017-03-07 13:56:49 +00:00
i386 Use kmem_malloc() instead of malloc(9) for the native amd64 filter. 2017-04-17 22:02:09 +00:00
isa Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
kern - Remove 'struct vmmeter' from 'struct pcpu', leaving only global vmmeter 2017-04-17 17:34:47 +00:00
kgssapi
libkern Replace the RC4 algorithm for generating in-kernel secure random 2017-04-16 09:11:02 +00:00
mips Switch BERI Programmable Interrupt Controller to INTRNG. 2017-04-18 17:20:03 +00:00
modules 3BSD-licensed implementation of the chacha20 stream cipher, intended for 2017-04-15 20:51:53 +00:00
net Use kmem_malloc() instead of malloc(9) for the native amd64 filter. 2017-04-17 22:02:09 +00:00
net80211 [net80211] refactor out "add slot" and "purge slot" for A-MPDU. 2017-04-11 07:05:55 +00:00
netgraph mppc - Finish pluging NETGRAPH_MPPC_COMPRESSION. 2017-01-20 00:02:11 +00:00
netinet Rework r316770 to make it protocol independent and general, like we 2017-04-14 09:00:48 +00:00
netinet6 Rework r316770 to make it protocol independent and general, like we 2017-04-14 09:00:48 +00:00
netipsec Add large replay widow support to setkey(8) and libipsec. 2017-04-13 14:44:17 +00:00
netnatm
netpfil pf: Also clear limit counters 2017-04-18 20:07:21 +00:00
netsmb
nfs Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
nfsclient Add an NFSv4.1 mount option for "use one openowner". 2017-04-13 21:54:19 +00:00
nfsserver Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
nlm
ofed All these files need sys/vmmeter.h, but now they got it implicitly 2017-04-17 17:07:00 +00:00
opencrypto Don't leak a session and lock if a GMAC key has an invalid length. 2017-04-05 01:46:41 +00:00
powerpc - Remove 'struct vmmeter' from 'struct pcpu', leaving only global vmmeter 2017-04-17 17:34:47 +00:00
riscv Provide a NULL pointer to device tree blob so GENERIC kernel 2017-04-12 10:34:50 +00:00
rpc Fix a crash during unmount of an NFSv4.1 mount. 2017-04-10 22:47:18 +00:00
security Break audit_bsm_klib.c into two files: one (audit_bsm_klib.c) 2017-04-03 10:15:58 +00:00
sparc64 - Remove 'struct vmmeter' from 'struct pcpu', leaving only global vmmeter 2017-04-17 17:34:47 +00:00
sys - Remove 'struct vmmeter' from 'struct pcpu', leaving only global vmmeter 2017-04-17 17:34:47 +00:00
teken Oops, my fix for bright colors broke bright black some more (in cases 2017-03-27 10:48:28 +00:00
tests
tools [fdt] Make DTBs generated by make_dtb.sh overlay-ready 2017-03-10 22:45:07 +00:00
ufs All these files need sys/vmmeter.h, but now they got it implicitly 2017-04-17 17:07:00 +00:00
vm - Remove 'struct vmmeter' from 'struct pcpu', leaving only global vmmeter 2017-04-17 17:34:47 +00:00
x86 - Remove 'struct vmmeter' from 'struct pcpu', leaving only global vmmeter 2017-04-17 17:34:47 +00:00
xdr
xen xenstore: fix suspension when using the xenstore device 2017-03-07 09:17:48 +00:00
Makefile Remove pc98 support completely. 2017-01-28 02:22:15 +00:00