From: Waiman Long <longman@redhat.com>
To: Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>, Will Deacon <will.deacon@arm.com>,
Thomas Gleixner <tglx@linutronix.de>
Cc: linux-kernel@vger.kernel.org, x86@kernel.org,
Arnd Bergmann <arnd@arndb.de>, Borislav Petkov <bp@alien8.de>,
"H. Peter Anvin" <hpa@zytor.com>,
Davidlohr Bueso <dave@stgolabs.net>,
Linus Torvalds <torvalds@linux-foundation.org>,
Andrew Morton <akpm@linux-foundation.org>,
Tim Chen <tim.c.chen@linux.intel.com>,
Waiman Long <longman@redhat.com>
Subject: [PATCH 00/10] locking/rwsem: Rwsem rearchitecture part 1
Date: Tue, 12 Feb 2019 19:26:57 -0500 [thread overview]
Message-ID: <1550017627-14504-1-git-send-email-longman@redhat.com> (raw)
This is part 1 of a 3-part (0/1/2) series to rearchitect the internal
operation of rwsem. This depends on the part 0 patches sent out previously
https://lore.kernel.org/lkml/1549913486-16799-1-git-send-email-longman@redhat.com
This part lays the foundation for part 2 without making any functional
changes. This part includes the following changes:
1) Move code around and rename kernel/locking/rwsem.h to
kernel/locking/rwsem-xadd.h as it will be specific to rwsem-xadd.c
(patches 1-4).
2) Enhance the DEBUG_RWSEMS_WARN_ON() macro to provide more information
and add additional checks (patches 5 & 6).
3) Make the core qspinlock_stat.h code generic (lock event counting)
so that it can be used by all the architectures as well as other
locking subsystems such as rwsem (patches 7-10). Lock event
counting help us visualize how frequently a code path is being
used as well as spotting abnormal behavior due to bugs in the code
without noticeably affecting kernel performance and hence behavior.
Both (2) and (3) are useful debugging aids.
Waiman Long (10):
locking/rwsem: Relocate rwsem_down_read_failed()
locking/rwsem: Move owner setting code from rwsem.c to rwsem.h
locking/rwsem: Rename kernel/locking/rwsem.h
locking/rwsem: Move rwsem internal function declarations to
rwsem-xadd.h
locking/rwsem: Add debug check for __down_read*()
locking/rwsem: Enhance DEBUG_RWSEMS_WARN_ON() macro
locking/qspinlock_stat: Introduce a generic lockevent counting APIs
locking/lock_events: Make lock_events available for all archs & other
locks
locking/lock_events: Don't show pvqspinlock events on bare metal
locking/rwsem: Enable lock event counting
arch/Kconfig | 10 ++
arch/x86/Kconfig | 8 -
include/linux/rwsem.h | 7 -
kernel/locking/Makefile | 1 +
kernel/locking/lock_events.c | 179 ++++++++++++++++++++++
kernel/locking/lock_events.h | 55 +++++++
kernel/locking/lock_events_list.h | 67 ++++++++
kernel/locking/percpu-rwsem.c | 4 +-
kernel/locking/qspinlock.c | 8 +-
kernel/locking/qspinlock_paravirt.h | 19 +--
kernel/locking/qspinlock_stat.h | 242 ++++++-----------------------
kernel/locking/rwsem-xadd.c | 192 ++++++++++++-----------
kernel/locking/rwsem-xadd.h | 294 ++++++++++++++++++++++++++++++++++++
kernel/locking/rwsem.c | 32 ++--
kernel/locking/rwsem.h | 264 --------------------------------
15 files changed, 778 insertions(+), 604 deletions(-)
create mode 100644 kernel/locking/lock_events.c
create mode 100644 kernel/locking/lock_events.h
create mode 100644 kernel/locking/lock_events_list.h
create mode 100644 kernel/locking/rwsem-xadd.h
delete mode 100644 kernel/locking/rwsem.h
--
1.8.3.1
next reply other threads:[~2019-02-13 0:27 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-02-13 0:26 Waiman Long [this message]
2019-02-13 0:26 ` [PATCH 01/10] locking/rwsem: Relocate rwsem_down_read_failed() Waiman Long
2019-02-13 0:26 ` [PATCH 02/10] locking/rwsem: Move owner setting code from rwsem.c to rwsem.h Waiman Long
2019-02-13 0:27 ` [PATCH 03/10] locking/rwsem: Rename kernel/locking/rwsem.h Waiman Long
2019-02-13 9:19 ` Peter Zijlstra
2019-02-13 15:47 ` Waiman Long
2019-02-13 15:54 ` Peter Zijlstra
2019-02-13 16:16 ` Waiman Long
2019-02-13 16:16 ` Waiman Long
2019-02-13 16:20 ` Waiman Long
2019-02-13 0:27 ` [PATCH 04/10] locking/rwsem: Move rwsem internal function declarations to rwsem-xadd.h Waiman Long
2019-02-13 0:27 ` [PATCH 05/10] locking/rwsem: Add debug check for __down_read*() Waiman Long
2019-02-13 0:27 ` [PATCH 06/10] locking/rwsem: Enhance DEBUG_RWSEMS_WARN_ON() macro Waiman Long
2019-02-13 0:27 ` [PATCH 07/10] locking/qspinlock_stat: Introduce a generic lockevent counting APIs Waiman Long
2019-02-13 0:27 ` [PATCH 08/10] locking/lock_events: Make lock_events available for all archs & other locks Waiman Long
2019-02-13 0:27 ` [PATCH 09/10] locking/lock_events: Don't show pvqspinlock events on bare metal Waiman Long
2019-02-13 0:27 ` [PATCH 10/10] locking/rwsem: Enable lock event counting Waiman Long
2019-02-15 18:49 ` [PATCH 00/10] locking/rwsem: Rwsem rearchitecture part 1 Will Deacon
2019-02-15 18:55 ` Waiman Long
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1550017627-14504-1-git-send-email-longman@redhat.com \
--to=longman@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=arnd@arndb.de \
--cc=bp@alien8.de \
--cc=dave@stgolabs.net \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=tglx@linutronix.de \
--cc=tim.c.chen@linux.intel.com \
--cc=torvalds@linux-foundation.org \
--cc=will.deacon@arm.com \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®