Files
kernel_xiaomi_raphael/include/linux
Peter Zijlstra 880c8ae64d sched/swait: Switch to full exclusive mode
Linus noted that swait basically implements exclusive mode -- because
swake_up() only wakes a single waiter. And because of that it should
take care to properly deal with the interruptible case.

In short, the problem is that swake_up() can race with a signal. In
this this case it is possible the swake_up() 'wakes' the waiter that
is already on the way out because it just got a signal and the wakeup
gets lost.

The normal wait code is very careful and avoids this situation, make
sure we do too.

Copy the exact exclusive semantics from wait.

Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
Cc: bigeasy@linutronix.de
Cc: oleg@redhat.com
Cc: paulmck@linux.vnet.ibm.com
Cc: pbonzini@redhat.com
Link: https://lkml.kernel.org/r/20180612083909.209762413@infradead.org
2022-09-22 17:33:18 +03:00
..
2021-04-12 07:58:19 +00:00
2022-01-22 14:28:43 +00:00
2022-05-13 06:30:58 +00:00
2022-05-13 06:31:10 +00:00
2019-11-05 05:46:34 -08:00
2022-03-11 11:13:06 +01:00
2022-05-13 06:31:07 +00:00
2022-04-18 11:35:12 +00:00
2021-10-20 22:09:19 +00:00
2019-11-27 15:27:44 +05:30
2022-01-19 09:47:22 +00:00
2021-08-16 12:27:20 +00:00
2022-04-28 07:14:51 +00:00
2020-11-15 19:26:24 -08:00
2020-01-13 19:40:11 +00:00
2019-12-17 21:13:36 +01:00
2021-03-03 18:58:56 +01:00
2021-08-11 09:11:32 +00:00
2022-04-03 15:40:43 +00:00
2022-04-03 15:41:24 +00:00
2021-04-12 07:58:19 +00:00
2022-02-07 09:32:52 +00:00
2019-12-31 12:37:21 +01:00
2022-04-11 08:52:37 +00:00
2021-07-11 12:48:09 +02:00
2022-07-18 06:35:09 +00:00
2022-01-22 14:28:43 +00:00
2022-01-22 14:28:43 +00:00
2020-06-16 12:53:13 -07:00
2019-08-12 13:29:46 -04:00
2019-06-11 12:21:48 +02:00
2022-01-22 14:28:43 +00:00
2022-01-22 14:28:43 +00:00
2022-01-22 14:28:43 +00:00
2022-01-22 14:28:43 +00:00
2022-04-18 11:35:12 +00:00
2022-01-22 14:28:43 +00:00
2022-01-22 14:28:43 +00:00
2022-01-22 14:28:43 +00:00
2021-08-16 13:11:54 +00:00
2020-04-02 16:34:36 +02:00
2022-05-13 06:35:34 +00:00
2021-08-16 13:11:54 +00:00
2022-04-03 15:41:24 +00:00
2022-01-22 14:28:43 +00:00
2022-01-22 14:28:43 +00:00
2022-01-22 14:28:43 +00:00
2020-01-09 14:58:35 -08:00
2022-04-11 08:52:28 +00:00
2022-05-09 07:32:00 +00:00
2019-08-12 13:29:46 -04:00
2022-04-18 11:35:12 +00:00
2022-04-18 11:35:12 +00:00
2022-01-22 14:28:43 +00:00
2022-01-22 14:28:43 +00:00
2020-09-11 11:23:08 -07:00
2020-02-13 14:17:03 +05:30
2020-04-02 16:34:36 +02:00
2020-12-10 21:30:48 -08:00