Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933517AbbFVMZC (ORCPT ); Mon, 22 Jun 2015 08:25:02 -0400 Received: from casper.infradead.org ([85.118.1.10]:48207 "EHLO casper.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754567AbbFVMYb (ORCPT ); Mon, 22 Jun 2015 08:24:31 -0400 Message-Id: <20150622121623.291363374@infradead.org> User-Agent: quilt/0.61-1 Date: Mon, 22 Jun 2015 14:16:23 +0200 From: Peter Zijlstra To: oleg@redhat.com, paulmck@linux.vnet.ibm.com Cc: tj@kernel.org, mingo@redhat.com, linux-kernel@vger.kernel.org, der.herr@hofr.at, peterz@infradead.org, dave@stgolabs.net, riel@redhat.com, viro@ZenIV.linux.org.uk, torvalds@linux-foundation.org Subject: [RFC][PATCH 00/13] percpu rwsem -v2 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2181 Lines: 53 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/