[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20150622121623.291363374@infradead.org>
Date: Mon, 22 Jun 2015 14:16:23 +0200
From: Peter Zijlstra <peterz@...radead.org>
To: oleg@...hat.com, paulmck@...ux.vnet.ibm.com
Cc: tj@...nel.org, mingo@...hat.com, linux-kernel@...r.kernel.org,
der.herr@...r.at, peterz@...radead.org, dave@...olabs.net,
riel@...hat.com, viro@...IV.linux.org.uk,
torvalds@...ux-foundation.org
Subject: [RFC][PATCH 00/13] percpu rwsem -v2
This is a derived work of the cpu hotplug lock rework I did in 2013 which never
really went anywhere because Linus didn't like it.
This applies those same optimizations to the percpu-rwsem. Seeing how we did
all the work it seemed a waste to not use it at all. Linus still didn't like it
because there was only a single user, there are two now:
- uprobes
- cgroups
This series converts the cpu hotplug lock into a percpu-rwsem to provide a 3rd
user.
Also, since Linus thinks lglocks is a failed locking primitive (which I whole
heartedly agree with, its preempt-disable latencies are an abomination), it
also converts the global part of fs/locks's usage of lglock over to a
percpu-rwsem and uses a per-cpu spinlock for the local part. This both provides
another (4th) percpu-rwsem users and removes an lglock user.
It further removes the stop_machine lglock usage, and with it kills lglocks.
Changes since -v1:
- Added the missing smp_load_acquire()/smp_store_release() as spotted by Oleg
- Added percpu_down_read_trylock()
- Convert cpu hotplug lock
- Convert fs/locks
- Removes lglock from stop_machine
- Removes lglock
---
Documentation/locking/lglock.txt | 166 -------------------------
fs/Kconfig | 1 +
fs/file_table.c | 1 -
fs/locks.c | 65 +++++++---
include/linux/cpu.h | 6 +
include/linux/lglock.h | 81 -------------
include/linux/percpu-rwsem.h | 96 +++++++++++++--
include/linux/sched.h | 9 +-
init/main.c | 1 +
kernel/cpu.c | 130 ++++++--------------
kernel/fork.c | 2 +
kernel/locking/Makefile | 1 -
kernel/locking/lglock.c | 111 -----------------
kernel/locking/percpu-rwsem.c | 255 +++++++++++++++++++++------------------
kernel/rcu/Makefile | 2 +-
kernel/stop_machine.c | 52 ++++----
lib/Kconfig | 10 ++
17 files changed, 371 insertions(+), 618 deletions(-)
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists