linux-sh.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/11] introduce down_write_killable for rw_semaphore
@ 2016-02-29 12:58 Michal Hocko
  2016-02-29 12:58 ` [PATCH 01/11] locking, rwsem: get rid of __down_write_nested Michal Hocko
                   ` (13 more replies)
  0 siblings, 14 replies; 88+ messages in thread
From: Michal Hocko @ 2016-02-29 12:58 UTC (permalink / raw)
  To: LKML
  Cc: Peter Zijlstra, Ingo Molnar, Thomas Gleixner, H. Peter Anvin,
	David S. Miller, Tony Luck, Andrew Morton, Chris Zankel,
	Max Filippov, x86, linux-alpha, linux-ia64, linux-s390, linux-sh,
	sparclinux, linux-xtensa, linux-arch

Hi,
I have posted this series [1] and there didn't seem to be any
fundamental objections except for x86 maintainers who preferred the asm
__down_write implementation which I have reworked for this series. Apart
from that I have refreshed on top of the current linux-next and fixed
one unused variable warning which happened to trigger a compilation
failure on ppc.

The following patchset implements a killable variant of write lock for
rw_semaphore. My usecase is to turn as many mmap_sem write users to use
a killable variant which will be helpful for the oom_reaper [2] to
asynchronously tear down the oom victim address space which requires
mmap_sem for read. This will reduce a likelihood of OOM livelocks caused
by oom victim being stuck on a lock or other resource which prevents it
to reach its exit path and release the memory. I haven't implemented
the killable variant of the read lock because I do not have any usecase
for this API.

The patchset is organized as follows.
- Patch 1 is a trivial cleanup
- Patch 2, I belive, shouldn't introduce any functional changes as per
  Documentation/memory-barriers.txt.
- Patch 3 is the preparatory work and necessary infrastructure for
  down_write_killable. It implements generic __down_write_killable
  and prepares the write lock slow path to bail out earlier when told so
- Patch 4-1- are implementing arch specific __down_write_killable. One
  patch per architecture.
- finally patch 11 implements down_write_killable and ties everything
  together. I am not really an expert on lockdep so I hope I got it right.

Many of arch specific patches are basically same and I can squash them
into one patch if this is preferred but I thought that one patch per
arch is preferable.

My patch to change mmap_sem write users to killable form is not part of
the series because it is a larger change and I would like to prevent
from spamming people too much. I will post the series shortly.

I have tested on x86 with OOM situations with high mmap_sem contention
(basically many parallel page faults racing with many parallel mmap/munmap
tight loops) so the waiters for the write locks are routinely interrupted
by SIGKILL.

Patches should apply cleanly on both Linus and next tree.

[1] http://lkml.kernel.org/r/1454444369-2146-1-git-send-email-mhocko@kernel.org
[2] http://lkml.kernel.org/r/1452094975-551-1-git-send-email-mhocko@kernel.org

Any feedback is highly appreciated.

^ permalink raw reply	[flat|nested] 88+ messages in thread

end of thread, other threads:[~2016-04-27 12:02 UTC | newest]

Thread overview: 88+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-02-29 12:58 [PATCH 0/11] introduce down_write_killable for rw_semaphore Michal Hocko
2016-02-29 12:58 ` [PATCH 01/11] locking, rwsem: get rid of __down_write_nested Michal Hocko
2016-02-29 12:58 ` [PATCH 02/11] locking, rwsem: drop explicit memory barriers Michal Hocko
2016-02-29 12:58 ` [PATCH 03/11] locking, rwsem: introduce basis for down_write_killable Michal Hocko
2016-03-30 13:25   ` Peter Zijlstra
2016-03-31  8:33     ` Michal Hocko
2016-03-31  8:44       ` Peter Zijlstra
2016-03-31  8:55   ` [PATCH] " Michal Hocko
2016-02-29 12:58 ` [PATCH 04/11] alpha, rwsem: provide __down_write_killable Michal Hocko
2016-02-29 12:58 ` [PATCH 05/11] ia64, " Michal Hocko
2016-02-29 12:58 ` [PATCH 06/11] s390, " Michal Hocko
2016-02-29 12:58 ` [PATCH 07/11] sh, " Michal Hocko
2016-02-29 12:58 ` [PATCH 08/11] sparc, " Michal Hocko
2016-02-29 12:58 ` [PATCH 09/11] xtensa, " Michal Hocko
2016-02-29 12:58 ` [PATCH 10/11] x86, " Michal Hocko
2016-02-29 12:58 ` [PATCH 11/11] locking, rwsem: provide down_write_killable Michal Hocko
2016-03-30 13:32 ` [PATCH 0/11] introduce down_write_killable for rw_semaphore Peter Zijlstra
2016-03-31  8:59   ` Michal Hocko
2016-03-31  9:20     ` Ingo Molnar
2016-03-31 10:58       ` Michal Hocko
2016-03-31 17:03       ` Andrew Morton
2016-04-01  6:33         ` Ingo Molnar
2016-04-01  9:21           ` Michal Hocko
2016-04-01  9:50             ` Ingo Molnar
2016-04-01 10:52               ` Michal Hocko
2016-04-01  7:26         ` Michal Hocko
2016-04-01  9:11           ` Andrew Morton
2016-04-01 11:04 ` [PATCH 0/11] introduce down_write_killable for rw_semaphore v2 Michal Hocko
2016-04-01 11:04   ` [PATCH 01/11] locking, rwsem: get rid of __down_write_nested Michal Hocko
2016-04-02  0:28     ` Davidlohr Bueso
2016-04-01 11:04   ` [PATCH 02/11] locking, rwsem: drop explicit memory barriers Michal Hocko
2016-04-02  1:17     ` Davidlohr Bueso
2016-04-04  9:03       ` Michal Hocko
2016-04-04  9:06         ` [PATCH 1/2] xtensa, rwsem: drop superfluous arch specific implementation Michal Hocko
2016-04-04  9:06           ` [PATCH 2/2] sh, " Michal Hocko
2016-04-06  9:26             ` Peter Zijlstra
2016-04-06  9:50               ` Geert Uytterhoeven
2016-04-06 10:27                 ` Peter Zijlstra
2016-04-04 10:23           ` [PATCH 1/2] xtensa, " Max Filippov
2016-04-01 11:04   ` [PATCH 03/11] locking, rwsem: introduce basis for down_write_killable Michal Hocko
2016-04-02  4:41     ` Davidlohr Bueso
2016-04-04  9:17       ` Michal Hocko
2016-04-04  9:21         ` Peter Zijlstra
2016-04-07  6:58         ` Davidlohr Bueso
2016-04-07  7:38           ` Michal Hocko
2016-04-01 11:04   ` [PATCH 04/11] alpha, rwsem: provide __down_write_killable Michal Hocko
2016-04-01 11:04   ` [PATCH 05/11] ia64, " Michal Hocko
2016-04-01 11:04   ` [PATCH 06/11] s390, " Michal Hocko
2016-04-01 11:04   ` [PATCH 07/11] sh, " Michal Hocko
2016-04-01 11:04   ` [PATCH 08/11] sparc, " Michal Hocko
2016-04-01 11:04   ` [PATCH 09/11] xtensa, " Michal Hocko
2016-04-01 11:04   ` [PATCH 10/11] x86, " Michal Hocko
2016-04-06 18:31     ` Peter Zijlstra
2016-04-01 11:04   ` [PATCH 11/11] locking, rwsem: provide down_write_killable Michal Hocko
2016-04-07 15:12 ` [PATCH 0/11] introduce down_write_killable for rw_semaphore v3 Michal Hocko
2016-04-07 15:12   ` [PATCH 01/11] locking, rwsem: get rid of __down_write_nested Michal Hocko
2016-04-07 15:12   ` [PATCH 02/11] locking, rwsem: drop explicit memory barriers Michal Hocko
2016-04-07 15:12   ` [PATCH 03/11] xtensa, rwsem: drop superfluous arch specific implementation Michal Hocko
2016-04-07 15:12   ` [PATCH 04/11] sh, " Michal Hocko
2016-04-07 15:12   ` [PATCH 05/11] sparc, " Michal Hocko
2016-04-07 15:12   ` [PATCH 06/11] locking, rwsem: introduce basis for down_write_killable Michal Hocko
2016-04-07 15:12   ` [PATCH 07/11] alpha, rwsem: provide __down_write_killable Michal Hocko
2016-04-07 15:12   ` [PATCH 08/11] ia64, " Michal Hocko
2016-04-07 17:28     ` Sergei Shtylyov
2016-04-08  6:22       ` Michal Hocko
2016-04-07 15:12   ` [PATCH 09/11] s390, " Michal Hocko
2016-04-07 15:12   ` [PATCH 10/11] x86, " Michal Hocko
2016-04-13  9:08     ` Ingo Molnar
2016-04-13  9:16       ` Michal Hocko
2016-04-13  9:19         ` Ingo Molnar
     [not found]           ` <20160413102731.GA29896@gmail.com>
2016-04-13 12:49             ` Michal Hocko
2016-04-17 16:59               ` Michal Hocko
2016-04-20 13:40               ` Peter Zijlstra
2016-04-20 18:04                 ` H. Peter Anvin
2016-04-20 20:45                   ` Borislav Petkov
2016-04-20 20:58                     ` Michal Hocko
2016-04-20 21:06                     ` H. Peter Anvin
2016-04-20 21:36                       ` Borislav Petkov
2016-04-20 22:29                         ` H. Peter Anvin
2016-04-21 11:35                           ` Borislav Petkov
2016-04-21 13:09                             ` Michal Hocko
2016-04-21 13:21                               ` Borislav Petkov
2016-04-27 12:02                           ` [PATCH] x86/locking/rwsem: Cleanup ____down_write() Borislav Petkov
2016-04-22  6:53                 ` [PATCH 10/11] x86, rwsem: provide __down_write_killable Ingo Molnar
2016-04-07 15:12   ` [PATCH 11/11] locking, rwsem: provide down_write_killable Michal Hocko
2016-04-12  9:37   ` [PATCH 0/11] introduce down_write_killable for rw_semaphore v3 Michal Hocko
2016-04-12 15:40     ` Peter Zijlstra
2016-04-12 18:01       ` Michal Hocko

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).