linux/ipc
Peter Zijlstra 76c00e307a ipc/sem: Rework semaphore wakeups
Current sysv sems have a weird ass wakeup scheme that involves keeping
preemption disabled over a potential O(n^2) loop and busy waiting on
that on other CPUs.

Kill this and simply wake the task directly from under the sem_lock.

This was discovered by a migrate_disable() debug feature that
disallows:

  spin_lock();
  preempt_disable();
  spin_unlock()
  preempt_enable();

Cc: Manfred Spraul <manfred@colorfullife.com>
Suggested-by: Thomas Gleixner <tglx@linutronix.de>
Reported-by: Mike Galbraith <efault@gmx.de>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Manfred Spraul <manfred@colorfullife.com>
Link: http://lkml.kernel.org/r/1315994224.5040.1.camel@twins
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2020-10-14 00:59:20 +03:00
..
Makefile Add generic sys_ipc wrapper 2010-03-12 15:52:32 -08:00
compat.c ipc: fix compat msgrcv with negative msgtyp 2014-01-27 21:02:40 -08:00
compat_mq.c ipc: whitespace cleanup 2014-01-27 21:02:39 -08:00
ipc_sysctl.c ipc: always handle a new value of auto_msgmni 2014-11-21 09:23:04 -08:00
ipcns_notifier.c ipc: do not use a negative value to re-enable msgmni automatic recomputing 2008-07-25 10:53:42 -07:00
mq_sysctl.c ipc,mqueue: remove limits for the amount of system-wide queues 2014-02-25 15:25:45 -08:00
mqueue.c ipc/mqueue: Add a critical section to avoid a deadlock 2020-10-14 00:59:13 +03:00
msg.c ipc: Make the ipc code -rt aware 2020-10-14 00:59:13 +03:00
msgutil.c ipc, msg: fix message length check for negative values 2013-11-13 12:09:36 +09:00
namespace.c ipc: drop ipc_lock_by_ptr 2013-09-11 15:59:44 -07:00
sem.c ipc/sem: Rework semaphore wakeups 2020-10-14 00:59:20 +03:00
shm.c ipc: standardize code comments 2014-01-27 21:02:39 -08:00
syscall.c get rid of union semop in sys_semctl(2) arguments 2013-03-05 15:14:16 -05:00
util.c ipc: delete seq_max field in struct ipc_ids 2014-01-27 21:02:40 -08:00
util.h ipc: delete seq_max field in struct ipc_ids 2014-01-27 21:02:40 -08:00