From: Doug Goldstein <cardoe@cardoe.com>
To: xen-devel@lists.xen.org
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
Julien Grall <julien.grall@arm.com>,
Stefano Stabellini <sstabellini@kernel.org>,
Doug Goldstein <cardoe@cardoe.com>,
Jan Beulich <jbeulich@suse.com>
Subject: [PATCH v3 6/6] build: convert lock_profile to Kconfig
Date: Tue, 10 May 2016 16:05:29 -0500 [thread overview]
Message-ID: <1462914329-8797-7-git-send-email-cardoe@cardoe.com> (raw)
In-Reply-To: <1462914329-8797-1-git-send-email-cardoe@cardoe.com>
Convert the 'lock_profile' option to Kconfig as CONFIG_LOCK_PROFILE.
Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
---
CC: Stefano Stabellini <sstabellini@kernel.org>
CC: Julien Grall <julien.grall@arm.com>
CC: Jan Beulich <jbeulich@suse.com>
CC: Andrew Cooper <andrew.cooper3@citrix.com>
---
INSTALL | 1 -
xen/Kconfig.debug | 7 +++++++
xen/Rules.mk | 2 --
xen/arch/arm/xen.lds.S | 2 +-
xen/arch/x86/domain.c | 2 +-
xen/arch/x86/xen.lds.S | 2 +-
xen/common/keyhandler.c | 2 +-
xen/common/spinlock.c | 10 +++++-----
xen/common/sysctl.c | 2 +-
xen/include/xen/spinlock.h | 4 ++--
10 files changed, 19 insertions(+), 15 deletions(-)
diff --git a/INSTALL b/INSTALL
index 623887d..616a67a 100644
--- a/INSTALL
+++ b/INSTALL
@@ -227,7 +227,6 @@ VGABIOS_REL_DATE="dd Mon yyyy"
The following variables can be used to tweak some aspects of the
hypervisor build.
-lock_profile=y
lto=y
During tools build external repos will be cloned into the source tree.
diff --git a/xen/Kconfig.debug b/xen/Kconfig.debug
index d056748..ca0913b 100644
--- a/xen/Kconfig.debug
+++ b/xen/Kconfig.debug
@@ -23,6 +23,13 @@ config FRAME_POINTER
maybe slower, but it gives very useful debugging information
in case of any Xen bugs.
+config LOCK_PROFILE
+ bool "Lock Profiiling"
+ ---help---
+ Lock profiling allows you to see how often locks are taken and blocked.
+ You can use serial console to print (and reset) using 'l' and 'L'
+ respectively, or the 'xenlockprof' tool.
+
config PERF_COUNTERS
bool "Performance Counters"
---help---
diff --git a/xen/Rules.mk b/xen/Rules.mk
index 2d9265e..f85b3b3 100644
--- a/xen/Rules.mk
+++ b/xen/Rules.mk
@@ -3,7 +3,6 @@
# If you change any of these configuration options then you must
# 'make clean' before rebuilding.
#
-lock_profile ?= n
lto ?= n
-include $(BASEDIR)/include/config/auto.conf
@@ -46,7 +45,6 @@ ifneq ($(clang),y)
CFLAGS += -Wa,--strip-local-absolute
endif
-CFLAGS-$(lock_profile) += -DLOCK_PROFILE
CFLAGS-$(CONFIG_FRAME_POINTER) += -fno-omit-frame-pointer
ifneq ($(max_phys_irqs),)
diff --git a/xen/arch/arm/xen.lds.S b/xen/arch/arm/xen.lds.S
index 1f010bd..76982b2 100644
--- a/xen/arch/arm/xen.lds.S
+++ b/xen/arch/arm/xen.lds.S
@@ -54,7 +54,7 @@ SECTIONS
*(.rodata)
*(.rodata.*)
-#ifdef LOCK_PROFILE
+#ifdef CONFIG_LOCK_PROFILE
. = ALIGN(POINTER_ALIGN);
__lock_profile_start = .;
*(.lockprofile.data)
diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 5af2cc5..978ec3a 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -251,7 +251,7 @@ struct domain *alloc_domain_struct(void)
#endif
-#ifndef LOCK_PROFILE
+#ifndef CONFIG_LOCK_PROFILE
BUILD_BUG_ON(sizeof(*d) > PAGE_SIZE);
#endif
d = alloc_xenheap_pages(order, MEMF_bits(bits));
diff --git a/xen/arch/x86/xen.lds.S b/xen/arch/x86/xen.lds.S
index b14bcd2..a43b29d 100644
--- a/xen/arch/x86/xen.lds.S
+++ b/xen/arch/x86/xen.lds.S
@@ -103,7 +103,7 @@ SECTIONS
*(.ex_table.pre)
__stop___pre_ex_table = .;
-#ifdef LOCK_PROFILE
+#ifdef CONFIG_LOCK_PROFILE
. = ALIGN(POINTER_ALIGN);
__lock_profile_start = .;
*(.lockprofile.data)
diff --git a/xen/common/keyhandler.c b/xen/common/keyhandler.c
index 65b70ce..16de6e8 100644
--- a/xen/common/keyhandler.c
+++ b/xen/common/keyhandler.c
@@ -64,7 +64,7 @@ static struct keyhandler {
KEYHANDLER('P', perfc_reset, "reset performance counters", 0),
#endif
-#ifdef LOCK_PROFILE
+#ifdef CONFIG_LOCK_PROFILE
KEYHANDLER('l', spinlock_profile_printall, "print lock profile info", 1),
KEYHANDLER('L', spinlock_profile_reset, "reset lock profile info", 0),
#endif
diff --git a/xen/common/spinlock.c b/xen/common/spinlock.c
index b377bb9..017bdf3 100644
--- a/xen/common/spinlock.c
+++ b/xen/common/spinlock.c
@@ -85,7 +85,7 @@ void spin_debug_disable(void)
#endif
-#ifdef LOCK_PROFILE
+#ifdef CONFIG_LOCK_PROFILE
#define LOCK_PROFILE_REL \
if (lock->profile) \
@@ -212,7 +212,7 @@ int _spin_trylock(spinlock_t *lock)
if ( cmpxchg(&lock->tickets.head_tail,
old.head_tail, new.head_tail) != old.head_tail )
return 0;
-#ifdef LOCK_PROFILE
+#ifdef CONFIG_LOCK_PROFILE
if (lock->profile)
lock->profile->time_locked = NOW();
#endif
@@ -227,7 +227,7 @@ int _spin_trylock(spinlock_t *lock)
void _spin_barrier(spinlock_t *lock)
{
spinlock_tickets_t sample;
-#ifdef LOCK_PROFILE
+#ifdef CONFIG_LOCK_PROFILE
s_time_t block = NOW();
#endif
@@ -238,7 +238,7 @@ void _spin_barrier(spinlock_t *lock)
{
while ( observe_head(&lock->tickets) == sample.head )
arch_lock_relax();
-#ifdef LOCK_PROFILE
+#ifdef CONFIG_LOCK_PROFILE
if ( lock->profile )
{
lock->profile->time_block += NOW() - block;
@@ -296,7 +296,7 @@ void _spin_unlock_recursive(spinlock_t *lock)
}
}
-#ifdef LOCK_PROFILE
+#ifdef CONFIG_LOCK_PROFILE
struct lock_profile_anc {
struct lock_profile_qhead *head_q; /* first head of this type */
diff --git a/xen/common/sysctl.c b/xen/common/sysctl.c
index 11bef0e..b4f235e 100644
--- a/xen/common/sysctl.c
+++ b/xen/common/sysctl.c
@@ -121,7 +121,7 @@ long do_sysctl(XEN_GUEST_HANDLE_PARAM(xen_sysctl_t) u_sysctl)
break;
#endif
-#ifdef LOCK_PROFILE
+#ifdef CONFIG_LOCK_PROFILE
case XEN_SYSCTL_lockprof_op:
ret = spinlock_profile_control(&op->u.lockprof_op);
break;
diff --git a/xen/include/xen/spinlock.h b/xen/include/xen/spinlock.h
index 88b53f9..c1883bd 100644
--- a/xen/include/xen/spinlock.h
+++ b/xen/include/xen/spinlock.h
@@ -20,7 +20,7 @@ struct lock_debug { };
#define spin_debug_disable() ((void)0)
#endif
-#ifdef LOCK_PROFILE
+#ifdef CONFIG_LOCK_PROFILE
#include <public/sysctl.h>
@@ -144,7 +144,7 @@ typedef struct spinlock {
u16 recurse_cnt:4;
#define SPINLOCK_MAX_RECURSE 0xfu
struct lock_debug debug;
-#ifdef LOCK_PROFILE
+#ifdef CONFIG_LOCK_PROFILE
struct lock_profile *profile;
#endif
} spinlock_t;
--
2.7.3
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
prev parent reply other threads:[~2016-05-10 21:05 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-10 21:05 [PATCH v3 0/6] Kconfig debug options Doug Goldstein
2016-05-10 21:05 ` [PATCH v3 1/6] build: add debug menu to Kconfig Doug Goldstein
2016-05-13 18:07 ` Konrad Rzeszutek Wilk
2016-05-10 21:05 ` [PATCH v3 2/6] build: convert crash_debug " Doug Goldstein
2016-05-11 9:47 ` Jan Beulich
2016-05-11 17:35 ` Doug Goldstein
2016-05-12 9:03 ` Jan Beulich
2016-05-18 2:15 ` Doug Goldstein
2016-05-18 9:14 ` Jan Beulich
2016-05-10 21:05 ` [PATCH v3 3/6] build: convert verbose " Doug Goldstein
2016-05-11 9:45 ` Jan Beulich
2016-05-11 17:37 ` Doug Goldstein
2016-05-12 9:04 ` Jan Beulich
2016-05-18 2:16 ` Doug Goldstein
2016-05-18 9:18 ` Jan Beulich
2016-05-10 21:05 ` [PATCH v3 4/6] build: convert frame_pointer " Doug Goldstein
2016-05-10 21:05 ` [PATCH v3 5/6] build: convert perfc{, _arrays} " Doug Goldstein
2016-05-11 9:53 ` Jan Beulich
2016-05-11 18:39 ` Doug Goldstein
2016-05-12 9:07 ` Jan Beulich
2016-05-10 21:05 ` Doug Goldstein [this message]
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=1462914329-8797-7-git-send-email-cardoe@cardoe.com \
--to=cardoe@cardoe.com \
--cc=andrew.cooper3@citrix.com \
--cc=jbeulich@suse.com \
--cc=julien.grall@arm.com \
--cc=sstabellini@kernel.org \
--cc=xen-devel@lists.xen.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;
as well as URLs for NNTP newsgroup(s).