* [PATCH v3 0/6] Kconfig debug options
@ 2016-05-10 21:05 Doug Goldstein
2016-05-10 21:05 ` [PATCH v3 1/6] build: add debug menu to Kconfig Doug Goldstein
` (5 more replies)
0 siblings, 6 replies; 21+ messages in thread
From: Doug Goldstein @ 2016-05-10 21:05 UTC (permalink / raw)
To: xen-devel; +Cc: Doug Goldstein
This converts the debug options from xen/Rules.mk to Kconfig.
This is a change from the previous version in the series because the feedback
I got was that the debug options should not be linked to NDEBUG if EXPERT is
set. Unfortunately Kconfig does not let you descend into a menu if that menu
is not set. As a result this changes the way the menu works to just be a plain
menu and moving the NDEBUG (!CONFIG_DEBUG) to another menu item.
change since v2:
- dropped patch 5 as it was unwanted
- remove 'default n'
- redo patch 1 as described above
Doug Goldstein (6):
build: add debug menu to Kconfig
build: convert crash_debug to Kconfig
build: convert verbose to Kconfig
build: convert frame_pointer to Kconfig
build: convert perfc{,_arrays} to Kconfig
build: convert lock_profile to Kconfig
INSTALL | 6 -----
docs/misc/crashdb.txt | 4 +--
xen/Kconfig | 2 ++
xen/Kconfig.debug | 54 +++++++++++++++++++++++++++++++++++++++
xen/Rules.mk | 31 +++++-----------------
xen/arch/arm/kernel.c | 2 +-
xen/arch/arm/xen.lds.S | 2 +-
xen/arch/x86/Makefile | 3 +--
xen/arch/x86/domain.c | 2 +-
xen/arch/x86/domain_build.c | 2 +-
xen/arch/x86/hvm/hvm.c | 2 +-
xen/arch/x86/time.c | 4 +--
xen/arch/x86/x86_64/Makefile | 2 +-
xen/arch/x86/x86_64/asm-offsets.c | 2 +-
xen/arch/x86/xen.lds.S | 2 +-
xen/common/Makefile | 4 +--
xen/common/keyhandler.c | 4 +--
xen/common/perfc.c | 2 +-
xen/common/spinlock.c | 10 ++++----
xen/common/sysctl.c | 4 +--
xen/include/asm-x86/asm_defns.h | 2 +-
xen/include/asm-x86/debugger.h | 2 +-
xen/include/asm-x86/domain.h | 2 +-
xen/include/xen/config.h | 4 +++
xen/include/xen/gdbstub.h | 2 +-
xen/include/xen/perfc.h | 8 +++---
xen/include/xen/sched.h | 2 +-
xen/include/xen/spinlock.h | 4 +--
xen/include/xsm/dummy.h | 2 +-
29 files changed, 104 insertions(+), 68 deletions(-)
create mode 100644 xen/Kconfig.debug
--
2.7.3
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH v3 1/6] build: add debug menu to Kconfig
2016-05-10 21:05 [PATCH v3 0/6] Kconfig debug options Doug Goldstein
@ 2016-05-10 21:05 ` 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
` (4 subsequent siblings)
5 siblings, 1 reply; 21+ messages in thread
From: Doug Goldstein @ 2016-05-10 21:05 UTC (permalink / raw)
To: xen-devel
Cc: Stefano Stabellini, Wei Liu, George Dunlap, Andrew Cooper,
Doug Goldstein, Tim Deegan, Jan Beulich, Ian Jackson
There are a number of debugging options for Xen so the idea is to have a
menu to group them all together. Enabling this menu item will also
disable NDEBUG which will result in more debug prints. This was
previously wired into the 'debug=y' command line option.
Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
---
CC: Andrew Cooper <andrew.cooper3@citrix.com>
CC: George Dunlap <George.Dunlap@eu.citrix.com>
CC: Ian Jackson <ian.jackson@eu.citrix.com>
CC: Jan Beulich <jbeulich@suse.com>
CC: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
CC: Stefano Stabellini <sstabellini@kernel.org>
CC: Tim Deegan <tim@xen.org>
CC: Wei Liu <wei.liu2@citrix.com>
---
xen/Kconfig | 2 ++
xen/Kconfig.debug | 11 +++++++++++
xen/Rules.mk | 2 --
xen/include/xen/config.h | 4 ++++
4 files changed, 17 insertions(+), 2 deletions(-)
create mode 100644 xen/Kconfig.debug
diff --git a/xen/Kconfig b/xen/Kconfig
index fa8b27c..0fe7a1a 100644
--- a/xen/Kconfig
+++ b/xen/Kconfig
@@ -26,3 +26,5 @@ config DEFCONFIG_LIST
config EXPERT
string
option env="XEN_CONFIG_EXPERT"
+
+source "Kconfig.debug"
diff --git a/xen/Kconfig.debug b/xen/Kconfig.debug
new file mode 100644
index 0000000..47dc885
--- /dev/null
+++ b/xen/Kconfig.debug
@@ -0,0 +1,11 @@
+
+menu "Debugging Options"
+
+config DEBUG
+ bool "Developer Checks"
+ ---help---
+ Enables developer checks such as asserts and extra printks, this
+ option is intended for development purposes only, and not for
+ production use.
+
+endmenu
diff --git a/xen/Rules.mk b/xen/Rules.mk
index 961d533..f73d86e 100644
--- a/xen/Rules.mk
+++ b/xen/Rules.mk
@@ -20,8 +20,6 @@ include $(XEN_ROOT)/Config.mk
ifeq ($(debug),y)
verbose := y
frame_pointer := y
-else
-CFLAGS += -DNDEBUG
endif
ifeq ($(perfc_arrays),y)
perfc := y
diff --git a/xen/include/xen/config.h b/xen/include/xen/config.h
index ef6e5ee..473c5e8 100644
--- a/xen/include/xen/config.h
+++ b/xen/include/xen/config.h
@@ -81,4 +81,8 @@
/* allow existing code to work with Kconfig variable */
#define NR_CPUS CONFIG_NR_CPUS
+#ifndef CONFIG_DEBUG
+#define NDEBUG
+#endif
+
#endif /* __XEN_CONFIG_H__ */
--
2.7.3
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH v3 2/6] build: convert crash_debug to Kconfig
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-10 21:05 ` Doug Goldstein
2016-05-11 9:47 ` Jan Beulich
2016-05-10 21:05 ` [PATCH v3 3/6] build: convert verbose " Doug Goldstein
` (3 subsequent siblings)
5 siblings, 1 reply; 21+ messages in thread
From: Doug Goldstein @ 2016-05-10 21:05 UTC (permalink / raw)
To: xen-devel
Cc: Stefano Stabellini, Wei Liu, George Dunlap, Andrew Cooper,
Doug Goldstein, Tim Deegan, Jan Beulich, Ian Jackson
Convert the crash_debug option to Kconfig as CONFIG_CRASH_DEBUG. This
was previously togglable on the command line so this adds a message for
users enabling it from the command line to tell them to enable it from
make menuconfig.
Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
---
CC: Andrew Cooper <andrew.cooper3@citrix.com>
CC: George Dunlap <George.Dunlap@eu.citrix.com>
CC: Ian Jackson <ian.jackson@eu.citrix.com>
CC: Jan Beulich <jbeulich@suse.com>
CC: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
CC: Stefano Stabellini <sstabellini@kernel.org>
CC: Tim Deegan <tim@xen.org>
CC: Wei Liu <wei.liu2@citrix.com>
---
INSTALL | 1 -
docs/misc/crashdb.txt | 4 ++--
xen/Kconfig.debug | 7 +++++++
xen/Rules.mk | 5 +++--
xen/arch/x86/Makefile | 3 +--
xen/arch/x86/x86_64/Makefile | 2 +-
xen/common/Makefile | 2 +-
xen/include/asm-x86/debugger.h | 2 +-
xen/include/xen/gdbstub.h | 2 +-
9 files changed, 17 insertions(+), 11 deletions(-)
diff --git a/INSTALL b/INSTALL
index 95fa94d..2974b9b 100644
--- a/INSTALL
+++ b/INSTALL
@@ -231,7 +231,6 @@ verbose=y
perfc=y
perfc_arrays=y
lock_profile=y
-crash_debug=y
frame_pointer=y
lto=y
diff --git a/docs/misc/crashdb.txt b/docs/misc/crashdb.txt
index b41a538..9733666 100644
--- a/docs/misc/crashdb.txt
+++ b/docs/misc/crashdb.txt
@@ -5,7 +5,7 @@ Xen has a simple gdb stub for doing post-mortem debugging i.e. once
you've crashed it, you get to poke around and find out why. There's
also a special key handler for making it crash, which is handy.
-You need to have crash_debug=y set when compiling , and you also need
+You need to have CRASH_DEBUG=y set when compiling, and you also need
to enable it on the Xen command line, eg by gdb=com1.
If you need to have a serial port shared between gdb and the console,
@@ -19,7 +19,7 @@ if you have a simple null modem connection between the test box and
the workstation, and aren't using a H/L split console:
* Set debug=y in Config.mk
- * Set crash_debug=y in xen/Rules.mk
+ * Set CRASH_DEBUG=y with `make -C xen menuconfig`
* Make the changes in the attached patch, and build.
* Arrange to pass gdb=com1 as a hypervisor command line argument
(I already have com1=38400,8n1 console=com1,vga sync_console)
diff --git a/xen/Kconfig.debug b/xen/Kconfig.debug
index 47dc885..8abfbaa 100644
--- a/xen/Kconfig.debug
+++ b/xen/Kconfig.debug
@@ -1,6 +1,13 @@
menu "Debugging Options"
+config CRASH_DEBUG
+ bool "Crash Debugging Support"
+ depends on X86
+ ---help---
+ If you want to be able to attach gdb to Xen to be able to debug
+ Xen if it crashes then say Y.
+
config DEBUG
bool "Developer Checks"
---help---
diff --git a/xen/Rules.mk b/xen/Rules.mk
index f73d86e..1a220bd 100644
--- a/xen/Rules.mk
+++ b/xen/Rules.mk
@@ -7,7 +7,6 @@ verbose ?= n
perfc ?= n
perfc_arrays ?= n
lock_profile ?= n
-crash_debug ?= n
frame_pointer ?= n
lto ?= n
@@ -28,6 +27,9 @@ endif
ifneq ($(origin kexec),undefined)
$(error "You must use 'make menuconfig' to enable/disable kexec now.")
endif
+ifneq ($(origin crash_debug),undefined)
+$(error "You must use 'make menuconfig' to enable/disable crash_debug now.")
+endif
# Set ARCH/SUBARCH appropriately.
override TARGET_SUBARCH := $(XEN_TARGET_ARCH)
@@ -56,7 +58,6 @@ CFLAGS += -Wa,--strip-local-absolute
endif
CFLAGS-$(verbose) += -DVERBOSE
-CFLAGS-$(crash_debug) += -DCRASH_DEBUG
CFLAGS-$(perfc) += -DPERF_COUNTERS
CFLAGS-$(perfc_arrays) += -DPERF_ARRAYS
CFLAGS-$(lock_profile) += -DLOCK_PROFILE
diff --git a/xen/arch/x86/Makefile b/xen/arch/x86/Makefile
index 4665a68..4ccef4a 100644
--- a/xen/arch/x86/Makefile
+++ b/xen/arch/x86/Makefile
@@ -27,6 +27,7 @@ obj-y += domain_page.o
obj-y += e820.o
obj-y += extable.o
obj-y += flushtlb.o
+obj-$(CONFIG_CRASH_DEBUG) += gdbstub.o
obj-y += i387.o
obj-y += i8259.o
obj-y += io_apic.o
@@ -66,8 +67,6 @@ obj-y += vm_event.o
obj-$(CONFIG_XSPLICE) += alternative.o xsplice.o
obj-y += xstate.o
-obj-$(crash_debug) += gdbstub.o
-
x86_emulate.o: x86_emulate/x86_emulate.c x86_emulate/x86_emulate.h
efi-y := $(shell if [ ! -r $(BASEDIR)/include/xen/compile.h -o \
diff --git a/xen/arch/x86/x86_64/Makefile b/xen/arch/x86/x86_64/Makefile
index 5b54c16..d8815e7 100644
--- a/xen/arch/x86/x86_64/Makefile
+++ b/xen/arch/x86/x86_64/Makefile
@@ -14,4 +14,4 @@ obj-y += cpu_idle.o
obj-y += cpufreq.o
obj-bin-$(CONFIG_KEXEC) += kexec_reloc.o
-obj-$(crash_debug) += gdbstub.o
+obj-$(CONFIG_CRASH_DEBUG) += gdbstub.o
diff --git a/xen/common/Makefile b/xen/common/Makefile
index afd84b6..a98bcc2 100644
--- a/xen/common/Makefile
+++ b/xen/common/Makefile
@@ -8,6 +8,7 @@ obj-y += domain.o
obj-y += event_2l.o
obj-y += event_channel.o
obj-y += event_fifo.o
+obj-$(CONFIG_CRASH_DEBUG) += gdbstub.o
obj-y += grant_table.o
obj-y += guestcopy.o
obj-bin-y += gunzip.init.o
@@ -64,7 +65,6 @@ obj-$(CONFIG_XSPLICE) += xsplice_elf.o
obj-bin-$(CONFIG_X86) += $(foreach n,decompress bunzip2 unxz unlzma unlzo unlz4 earlycpio,$(n).init.o)
obj-$(perfc) += perfc.o
-obj-$(crash_debug) += gdbstub.o
obj-$(CONFIG_COMPAT) += $(addprefix compat/,domain.o kernel.o memory.o multicall.o xlat.o)
diff --git a/xen/include/asm-x86/debugger.h b/xen/include/asm-x86/debugger.h
index 33f4700..271cbaa 100644
--- a/xen/include/asm-x86/debugger.h
+++ b/xen/include/asm-x86/debugger.h
@@ -39,7 +39,7 @@
#define DEBUGGER_trap_fatal(_v, _r) \
if ( debugger_trap_fatal(_v, _r) ) return;
-#if defined(CRASH_DEBUG)
+#ifdef CONFIG_CRASH_DEBUG
#include <xen/gdbstub.h>
diff --git a/xen/include/xen/gdbstub.h b/xen/include/xen/gdbstub.h
index ab710da..a5e6714 100644
--- a/xen/include/xen/gdbstub.h
+++ b/xen/include/xen/gdbstub.h
@@ -23,7 +23,7 @@
#include <asm/atomic.h>
#include <asm/page.h>
-#ifdef CRASH_DEBUG
+#ifdef CONFIG_CRASH_DEBUG
struct gdb_context {
int serhnd; /* handle on our serial line */
--
2.7.3
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH v3 3/6] build: convert verbose to Kconfig
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-10 21:05 ` [PATCH v3 2/6] build: convert crash_debug " Doug Goldstein
@ 2016-05-10 21:05 ` Doug Goldstein
2016-05-11 9:45 ` Jan Beulich
2016-05-10 21:05 ` [PATCH v3 4/6] build: convert frame_pointer " Doug Goldstein
` (2 subsequent siblings)
5 siblings, 1 reply; 21+ messages in thread
From: Doug Goldstein @ 2016-05-10 21:05 UTC (permalink / raw)
To: xen-devel
Cc: Stefano Stabellini, Andrew Cooper, Doug Goldstein, Julien Grall,
Jan Beulich, Daniel De Graaf
Convert 'verbose', which was enabled by 'debug=y' to Kconfig as
CONFIG_VERBOSE_DEBUG which is enabled by default when CONFIG_DEBUG is
enabled.
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>
CC: Daniel De Graaf <dgdegra@tycho.nsa.gov>
---
INSTALL | 1 -
xen/Kconfig.debug | 7 +++++++
xen/Rules.mk | 3 ---
xen/arch/arm/kernel.c | 2 +-
xen/arch/x86/domain_build.c | 2 +-
xen/include/xsm/dummy.h | 2 +-
6 files changed, 10 insertions(+), 7 deletions(-)
diff --git a/INSTALL b/INSTALL
index 2974b9b..35668bd 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.
-verbose=y
perfc=y
perfc_arrays=y
lock_profile=y
diff --git a/xen/Kconfig.debug b/xen/Kconfig.debug
index 8abfbaa..734e78d 100644
--- a/xen/Kconfig.debug
+++ b/xen/Kconfig.debug
@@ -15,4 +15,11 @@ config DEBUG
option is intended for development purposes only, and not for
production use.
+config VERBOSE_DEBUG
+ bool "Verbose debug messages"
+ default DEBUG
+ ---help---
+ Guest output from HYPERVISOR_console_io and hypervisor parsing
+ ELF images (dom0) is logged in the Xen ring buffer.
+
endmenu
diff --git a/xen/Rules.mk b/xen/Rules.mk
index 1a220bd..b159451 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.
#
-verbose ?= n
perfc ?= n
perfc_arrays ?= n
lock_profile ?= n
@@ -17,7 +16,6 @@ include $(XEN_ROOT)/Config.mk
# Hardcoded configuration implications and dependencies.
# Do this is a neater way if it becomes unwieldy.
ifeq ($(debug),y)
-verbose := y
frame_pointer := y
endif
ifeq ($(perfc_arrays),y)
@@ -57,7 +55,6 @@ ifneq ($(clang),y)
CFLAGS += -Wa,--strip-local-absolute
endif
-CFLAGS-$(verbose) += -DVERBOSE
CFLAGS-$(perfc) += -DPERF_COUNTERS
CFLAGS-$(perfc_arrays) += -DPERF_ARRAYS
CFLAGS-$(lock_profile) += -DLOCK_PROFILE
diff --git a/xen/arch/arm/kernel.c b/xen/arch/arm/kernel.c
index 9871bd9..3f6cce3 100644
--- a/xen/arch/arm/kernel.c
+++ b/xen/arch/arm/kernel.c
@@ -472,7 +472,7 @@ static int kernel_elf_probe(struct kernel_info *info,
if ( (rc = elf_init(&info->elf.elf, info->elf.kernel_img, size )) != 0 )
goto err;
-#ifdef VERBOSE
+#ifdef CONFIG_VERBOSE_DEBUG
elf_set_verbose(&info->elf.elf);
#endif
elf_parse_binary(&info->elf.elf);
diff --git a/xen/arch/x86/domain_build.c b/xen/arch/x86/domain_build.c
index f9a3eca..b29c377 100644
--- a/xen/arch/x86/domain_build.c
+++ b/xen/arch/x86/domain_build.c
@@ -942,7 +942,7 @@ int __init construct_dom0(
if ( (rc = elf_init(&elf, image_start, image_len)) != 0 )
return rc;
-#ifdef VERBOSE
+#ifdef CONFIG_VERBOSE_DEBUG
elf_set_verbose(&elf);
#endif
elf_parse_binary(&elf);
diff --git a/xen/include/xsm/dummy.h b/xen/include/xsm/dummy.h
index abbe282..406cd18 100644
--- a/xen/include/xsm/dummy.h
+++ b/xen/include/xsm/dummy.h
@@ -215,7 +215,7 @@ static XSM_INLINE int xsm_memory_stat_reservation(XSM_DEFAULT_ARG struct domain
static XSM_INLINE int xsm_console_io(XSM_DEFAULT_ARG struct domain *d, int cmd)
{
XSM_ASSERT_ACTION(XSM_OTHER);
-#ifdef VERBOSE
+#ifdef CONFIG_VERBOSE_DEBUG
if ( cmd == CONSOLEIO_write )
return xsm_default_action(XSM_HOOK, d, NULL);
#endif
--
2.7.3
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH v3 4/6] build: convert frame_pointer to Kconfig
2016-05-10 21:05 [PATCH v3 0/6] Kconfig debug options Doug Goldstein
` (2 preceding siblings ...)
2016-05-10 21:05 ` [PATCH v3 3/6] build: convert verbose " Doug Goldstein
@ 2016-05-10 21:05 ` Doug Goldstein
2016-05-10 21:05 ` [PATCH v3 5/6] build: convert perfc{, _arrays} " Doug Goldstein
2016-05-10 21:05 ` [PATCH v3 6/6] build: convert lock_profile " Doug Goldstein
5 siblings, 0 replies; 21+ messages in thread
From: Doug Goldstein @ 2016-05-10 21:05 UTC (permalink / raw)
To: xen-devel
Cc: Stefano Stabellini, Wei Liu, George Dunlap, Andrew Cooper,
Doug Goldstein, Tim Deegan, Jan Beulich, Ian Jackson
Converts the frame_pointer option to a Kconfig option.
Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
---
CC: Andrew Cooper <andrew.cooper3@citrix.com>
CC: George Dunlap <George.Dunlap@eu.citrix.com>
CC: Ian Jackson <ian.jackson@eu.citrix.com>
CC: Jan Beulich <jbeulich@suse.com>
CC: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
CC: Stefano Stabellini <sstabellini@kernel.org>
CC: Tim Deegan <tim@xen.org>
CC: Wei Liu <wei.liu2@citrix.com>
---
INSTALL | 1 -
xen/Kconfig.debug | 8 ++++++++
xen/Rules.mk | 6 +-----
3 files changed, 9 insertions(+), 6 deletions(-)
diff --git a/INSTALL b/INSTALL
index 35668bd..f55d42c 100644
--- a/INSTALL
+++ b/INSTALL
@@ -230,7 +230,6 @@ hypervisor build.
perfc=y
perfc_arrays=y
lock_profile=y
-frame_pointer=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 734e78d..375c71d 100644
--- a/xen/Kconfig.debug
+++ b/xen/Kconfig.debug
@@ -15,6 +15,14 @@ config DEBUG
option is intended for development purposes only, and not for
production use.
+config FRAME_POINTER
+ bool "Compile Xen with frame pointers"
+ default DEBUG
+ ---help---
+ If you say Y here the resulting Xen will be slightly larger and
+ maybe slower, but it gives very useful debugging information
+ in case of any Xen bugs.
+
config VERBOSE_DEBUG
bool "Verbose debug messages"
default DEBUG
diff --git a/xen/Rules.mk b/xen/Rules.mk
index b159451..84b9d81 100644
--- a/xen/Rules.mk
+++ b/xen/Rules.mk
@@ -6,7 +6,6 @@
perfc ?= n
perfc_arrays ?= n
lock_profile ?= n
-frame_pointer ?= n
lto ?= n
-include $(BASEDIR)/include/config/auto.conf
@@ -15,9 +14,6 @@ include $(XEN_ROOT)/Config.mk
# Hardcoded configuration implications and dependencies.
# Do this is a neater way if it becomes unwieldy.
-ifeq ($(debug),y)
-frame_pointer := y
-endif
ifeq ($(perfc_arrays),y)
perfc := y
endif
@@ -58,7 +54,7 @@ endif
CFLAGS-$(perfc) += -DPERF_COUNTERS
CFLAGS-$(perfc_arrays) += -DPERF_ARRAYS
CFLAGS-$(lock_profile) += -DLOCK_PROFILE
-CFLAGS-$(frame_pointer) += -fno-omit-frame-pointer -DCONFIG_FRAME_POINTER
+CFLAGS-$(CONFIG_FRAME_POINTER) += -fno-omit-frame-pointer
ifneq ($(max_phys_irqs),)
CFLAGS-y += -DMAX_PHYS_IRQS=$(max_phys_irqs)
--
2.7.3
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH v3 5/6] build: convert perfc{, _arrays} to Kconfig
2016-05-10 21:05 [PATCH v3 0/6] Kconfig debug options Doug Goldstein
` (3 preceding siblings ...)
2016-05-10 21:05 ` [PATCH v3 4/6] build: convert frame_pointer " Doug Goldstein
@ 2016-05-10 21:05 ` Doug Goldstein
2016-05-11 9:53 ` Jan Beulich
2016-05-10 21:05 ` [PATCH v3 6/6] build: convert lock_profile " Doug Goldstein
5 siblings, 1 reply; 21+ messages in thread
From: Doug Goldstein @ 2016-05-10 21:05 UTC (permalink / raw)
To: xen-devel
Cc: Stefano Stabellini, Wei Liu, George Dunlap, Andrew Cooper,
Doug Goldstein, Tim Deegan, Jan Beulich, Ian Jackson
Convert the 'perfc' and 'perfc_arrays' options to Kconfig as
CONFIG_PERF_COUNTERS and CONFIG_PERF_ARRAYS to minimize code changes.
Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
---
CC: Andrew Cooper <andrew.cooper3@citrix.com>
CC: George Dunlap <George.Dunlap@eu.citrix.com>
CC: Ian Jackson <ian.jackson@eu.citrix.com>
CC: Jan Beulich <jbeulich@suse.com>
CC: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
CC: Stefano Stabellini <sstabellini@kernel.org>
CC: Tim Deegan <tim@xen.org>
CC: Wei Liu <wei.liu2@citrix.com>
---
INSTALL | 2 --
xen/Kconfig.debug | 14 ++++++++++++++
xen/Rules.mk | 13 +++----------
xen/arch/x86/hvm/hvm.c | 2 +-
xen/arch/x86/time.c | 4 ++--
xen/arch/x86/x86_64/asm-offsets.c | 2 +-
xen/common/Makefile | 2 +-
xen/common/keyhandler.c | 2 +-
xen/common/perfc.c | 2 +-
xen/common/sysctl.c | 2 +-
xen/include/asm-x86/asm_defns.h | 2 +-
xen/include/asm-x86/domain.h | 2 +-
xen/include/xen/perfc.h | 8 ++++----
xen/include/xen/sched.h | 2 +-
14 files changed, 32 insertions(+), 27 deletions(-)
diff --git a/INSTALL b/INSTALL
index f55d42c..623887d 100644
--- a/INSTALL
+++ b/INSTALL
@@ -227,8 +227,6 @@ VGABIOS_REL_DATE="dd Mon yyyy"
The following variables can be used to tweak some aspects of the
hypervisor build.
-perfc=y
-perfc_arrays=y
lock_profile=y
lto=y
diff --git a/xen/Kconfig.debug b/xen/Kconfig.debug
index 375c71d..d056748 100644
--- a/xen/Kconfig.debug
+++ b/xen/Kconfig.debug
@@ -23,6 +23,20 @@ config FRAME_POINTER
maybe slower, but it gives very useful debugging information
in case of any Xen bugs.
+config PERF_COUNTERS
+ bool "Performance Counters"
+ ---help---
+ Enables software performance counters that allows you to analyze
+ bottlenecks in the system. To access this data you must use the
+ 'xenperf' tool.
+
+config PERF_ARRAYS
+ bool "Performance Counter Array Histograms"
+ depends on PERF_COUNTERS
+ ---help---
+ Enables software performance counter array histograms.
+
+
config VERBOSE_DEBUG
bool "Verbose debug messages"
default DEBUG
diff --git a/xen/Rules.mk b/xen/Rules.mk
index 84b9d81..2d9265e 100644
--- a/xen/Rules.mk
+++ b/xen/Rules.mk
@@ -3,8 +3,6 @@
# If you change any of these configuration options then you must
# 'make clean' before rebuilding.
#
-perfc ?= n
-perfc_arrays ?= n
lock_profile ?= n
lto ?= n
@@ -12,18 +10,15 @@ lto ?= n
include $(XEN_ROOT)/Config.mk
-# Hardcoded configuration implications and dependencies.
-# Do this is a neater way if it becomes unwieldy.
-ifeq ($(perfc_arrays),y)
-perfc := y
-endif
-
ifneq ($(origin kexec),undefined)
$(error "You must use 'make menuconfig' to enable/disable kexec now.")
endif
ifneq ($(origin crash_debug),undefined)
$(error "You must use 'make menuconfig' to enable/disable crash_debug now.")
endif
+ifneq ($(origin perfc),undefined)
+$(error "You must use 'make menuconfig' to enable/disable perfc now.")
+endif
# Set ARCH/SUBARCH appropriately.
override TARGET_SUBARCH := $(XEN_TARGET_ARCH)
@@ -51,8 +46,6 @@ ifneq ($(clang),y)
CFLAGS += -Wa,--strip-local-absolute
endif
-CFLAGS-$(perfc) += -DPERF_COUNTERS
-CFLAGS-$(perfc_arrays) += -DPERF_ARRAYS
CFLAGS-$(lock_profile) += -DLOCK_PROFILE
CFLAGS-$(CONFIG_FRAME_POINTER) += -fno-omit-frame-pointer
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 863d134..34bc7a8 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -3535,7 +3535,7 @@ void hvm_cpuid(unsigned int input, unsigned int *eax, unsigned int *ebx,
static uint64_t _hvm_rdtsc_intercept(void)
{
struct vcpu *curr = current;
-#if !defined(NDEBUG) || defined(PERF_COUNTERS)
+#if !defined(NDEBUG) || defined(CONFIG_PERF_COUNTERS)
struct domain *currd = curr->domain;
if ( currd->arch.vtsc )
diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c
index 6438b47..3928a5f 100644
--- a/xen/arch/x86/time.c
+++ b/xen/arch/x86/time.c
@@ -1688,7 +1688,7 @@ void pv_soft_rdtsc(struct vcpu *v, struct cpu_user_regs *regs, int rdtscp)
spin_lock(&d->arch.vtsc_lock);
-#if !defined(NDEBUG) || defined(PERF_COUNTERS)
+#if !defined(NDEBUG) || defined(CONFIG_PERF_COUNTERS)
if ( guest_kernel_mode(v, regs) )
d->arch.vtsc_kerncount++;
else
@@ -1959,7 +1959,7 @@ static void dump_softtsc(unsigned char key)
printk(",khz=%"PRIu32, d->arch.tsc_khz);
if ( d->arch.incarnation )
printk(",inc=%"PRIu32, d->arch.incarnation);
-#if !defined(NDEBUG) || defined(PERF_COUNTERS)
+#if !defined(NDEBUG) || defined(CONFIG_PERF_COUNTERS)
if ( !(d->arch.vtsc_kerncount | d->arch.vtsc_usercount) )
printk("\n");
else
diff --git a/xen/arch/x86/x86_64/asm-offsets.c b/xen/arch/x86/x86_64/asm-offsets.c
index fa37ee0..891ddc8 100644
--- a/xen/arch/x86/x86_64/asm-offsets.c
+++ b/xen/arch/x86/x86_64/asm-offsets.c
@@ -151,7 +151,7 @@ void __dummy__(void)
OFFSET(TRAPBOUNCE_eip, struct trap_bounce, eip);
BLANK();
-#if PERF_COUNTERS
+#if CONFIG_PERF_COUNTERS
DEFINE(ASM_PERFC_hypercalls, PERFC_hypercalls);
DEFINE(ASM_PERFC_exceptions, PERFC_exceptions);
BLANK();
diff --git a/xen/common/Makefile b/xen/common/Makefile
index a98bcc2..5891b1c 100644
--- a/xen/common/Makefile
+++ b/xen/common/Makefile
@@ -64,7 +64,7 @@ obj-$(CONFIG_XSPLICE) += xsplice_elf.o
obj-bin-$(CONFIG_X86) += $(foreach n,decompress bunzip2 unxz unlzma unlzo unlz4 earlycpio,$(n).init.o)
-obj-$(perfc) += perfc.o
+obj-$(CONFIG_PERF_COUNTERS) += perfc.o
obj-$(CONFIG_COMPAT) += $(addprefix compat/,domain.o kernel.o memory.o multicall.o xlat.o)
diff --git a/xen/common/keyhandler.c b/xen/common/keyhandler.c
index 4ff90f6..65b70ce 100644
--- a/xen/common/keyhandler.c
+++ b/xen/common/keyhandler.c
@@ -59,7 +59,7 @@ static struct keyhandler {
IRQ_KEYHANDLER('%', do_debug_key, "trap to xendbg", 0),
IRQ_KEYHANDLER('*', run_all_keyhandlers, "print all diagnostics", 0),
-#ifdef PERF_COUNTERS
+#ifdef CONFIG_PERF_COUNTERS
KEYHANDLER('p', perfc_printall, "print performance counters", 1),
KEYHANDLER('P', perfc_reset, "reset performance counters", 0),
#endif
diff --git a/xen/common/perfc.c b/xen/common/perfc.c
index 9f078e1..3da4c96 100644
--- a/xen/common/perfc.c
+++ b/xen/common/perfc.c
@@ -78,7 +78,7 @@ void perfc_printall(unsigned char key)
printk("TOTAL[%12Lu]", sum);
if (sum)
{
-#ifdef PERF_ARRAYS
+#ifdef CONFIG_PERF_ARRAYS
for ( k = 0; k < perfc_info[i].nr_elements; k++ )
{
sum = 0;
diff --git a/xen/common/sysctl.c b/xen/common/sysctl.c
index 9a4cc1f..11bef0e 100644
--- a/xen/common/sysctl.c
+++ b/xen/common/sysctl.c
@@ -115,7 +115,7 @@ long do_sysctl(XEN_GUEST_HANDLE_PARAM(xen_sysctl_t) u_sysctl)
}
break;
-#ifdef PERF_COUNTERS
+#ifdef CONFIG_PERF_COUNTERS
case XEN_SYSCTL_perfc_op:
ret = perfc_control(&op->u.perfc_op);
break;
diff --git a/xen/include/asm-x86/asm_defns.h b/xen/include/asm-x86/asm_defns.h
index b5f79d8..24f5404 100644
--- a/xen/include/asm-x86/asm_defns.h
+++ b/xen/include/asm-x86/asm_defns.h
@@ -363,7 +363,7 @@ static always_inline void stac(void)
#endif
-#ifdef PERF_COUNTERS
+#ifdef CONFIG_PERF_COUNTERS
#define PERFC_INCR(_name,_idx,_cur) \
pushq _cur; \
movslq VCPU_processor(_cur),_cur; \
diff --git a/xen/include/asm-x86/domain.h b/xen/include/asm-x86/domain.h
index 165e533..783fa4f 100644
--- a/xen/include/asm-x86/domain.h
+++ b/xen/include/asm-x86/domain.h
@@ -377,7 +377,7 @@ struct arch_domain
hardware TSC scaling cases */
uint32_t incarnation; /* incremented every restore or live migrate
(possibly other cases in the future */
-#if !defined(NDEBUG) || defined(PERF_COUNTERS)
+#if !defined(NDEBUG) || defined(CONFIG_PERF_COUNTERS)
uint64_t vtsc_kerncount;
uint64_t vtsc_usercount;
#endif
diff --git a/xen/include/xen/perfc.h b/xen/include/xen/perfc.h
index 6cb0cd1..6846e71 100644
--- a/xen/include/xen/perfc.h
+++ b/xen/include/xen/perfc.h
@@ -1,7 +1,7 @@
#ifndef __XEN_PERFC_H__
#define __XEN_PERFC_H__
-#ifdef PERF_COUNTERS
+#ifdef CONFIG_PERF_COUNTERS
#include <xen/lib.h>
#include <xen/smp.h>
@@ -76,7 +76,7 @@ DECLARE_PER_CPU(perfc_t[NUM_PERFCOUNTERS], perfcounters);
* Histogram: special treatment for 0 and 1 count. After that equally spaced
* with last bucket taking the rest.
*/
-#ifdef PERF_ARRAYS
+#ifdef CONFIG_PERF_ARRAYS
#define perfc_incr_histo(x,v) \
do { \
if ( (v) == 0 ) \
@@ -100,7 +100,7 @@ extern void perfc_printall(unsigned char key);
extern void perfc_reset(unsigned char key);
-#else /* PERF_COUNTERS */
+#else /* CONFIG_PERF_COUNTERS */
#define perfc_value(x) (0)
#define perfc_valuea(x,y) (0)
@@ -114,6 +114,6 @@ extern void perfc_reset(unsigned char key);
#define perfc_adda(x,y,z) ((void)0)
#define perfc_incr_histo(x,y,z) ((void)0)
-#endif /* PERF_COUNTERS */
+#endif /* CONFIG_PERF_COUNTERS */
#endif /* __XEN_PERFC_H__ */
diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
index fe15e9c..46c82e7 100644
--- a/xen/include/xen/sched.h
+++ b/xen/include/xen/sched.h
@@ -39,7 +39,7 @@ DEFINE_XEN_GUEST_HANDLE(vcpu_runstate_info_compat_t);
* Enable and ease the use of scheduling related performance counters.
*
*/
-#ifdef PERF_COUNTERS
+#ifdef CONFIG_PERF_COUNTERS
#define SCHED_STATS
#endif
--
2.7.3
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH v3 6/6] build: convert lock_profile to Kconfig
2016-05-10 21:05 [PATCH v3 0/6] Kconfig debug options Doug Goldstein
` (4 preceding siblings ...)
2016-05-10 21:05 ` [PATCH v3 5/6] build: convert perfc{, _arrays} " Doug Goldstein
@ 2016-05-10 21:05 ` Doug Goldstein
5 siblings, 0 replies; 21+ messages in thread
From: Doug Goldstein @ 2016-05-10 21:05 UTC (permalink / raw)
To: xen-devel
Cc: Andrew Cooper, Julien Grall, Stefano Stabellini, Doug Goldstein,
Jan Beulich
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
^ permalink raw reply related [flat|nested] 21+ messages in thread
* Re: [PATCH v3 3/6] build: convert verbose to Kconfig
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
0 siblings, 1 reply; 21+ messages in thread
From: Jan Beulich @ 2016-05-11 9:45 UTC (permalink / raw)
To: Doug Goldstein
Cc: Andrew Cooper, Julien Grall, Stefano Stabellini, Daniel De Graaf,
xen-devel
>>> On 10.05.16 at 23:05, <cardoe@cardoe.com> wrote:
> --- a/xen/Kconfig.debug
> +++ b/xen/Kconfig.debug
> @@ -15,4 +15,11 @@ config DEBUG
> option is intended for development purposes only, and not for
> production use.
>
> +config VERBOSE_DEBUG
> + bool "Verbose debug messages"
> + default DEBUG
> + ---help---
> + Guest output from HYPERVISOR_console_io and hypervisor parsing
> + ELF images (dom0) is logged in the Xen ring buffer.
The "depends on DEBUG || EXPERT" did get lost here (or, looking at
the following patch, a respective "if" framing them all).
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v3 2/6] build: convert crash_debug to Kconfig
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
0 siblings, 1 reply; 21+ messages in thread
From: Jan Beulich @ 2016-05-11 9:47 UTC (permalink / raw)
To: Doug Goldstein
Cc: Tim Deegan, Stefano Stabellini, Wei Liu, George Dunlap,
Andrew Cooper, Ian Jackson, xen-devel
>>> On 10.05.16 at 23:05, <cardoe@cardoe.com> wrote:
> --- a/xen/Kconfig.debug
> +++ b/xen/Kconfig.debug
> @@ -1,6 +1,13 @@
>
> menu "Debugging Options"
>
> +config CRASH_DEBUG
> + bool "Crash Debugging Support"
> + depends on X86
> + ---help---
> + If you want to be able to attach gdb to Xen to be able to debug
> + Xen if it crashes then say Y.
> +
> config DEBUG
> bool "Developer Checks"
> ---help---
Is this really meant to be independent of DEBUG (or EXPERT), as it's
being placed ahead of DEBUG?
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v3 5/6] build: convert perfc{, _arrays} to Kconfig
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
0 siblings, 1 reply; 21+ messages in thread
From: Jan Beulich @ 2016-05-11 9:53 UTC (permalink / raw)
To: Doug Goldstein
Cc: Tim Deegan, Stefano Stabellini, Wei Liu, George Dunlap,
Andrew Cooper, Ian Jackson, xen-devel
>>> On 10.05.16 at 23:05, <cardoe@cardoe.com> wrote:
> Convert the 'perfc' and 'perfc_arrays' options to Kconfig as
> CONFIG_PERF_COUNTERS and CONFIG_PERF_ARRAYS to minimize code changes.
I don't understand the "to minimize code changes" part.
> @@ -12,18 +10,15 @@ lto ?= n
>
> include $(XEN_ROOT)/Config.mk
>
> -# Hardcoded configuration implications and dependencies.
> -# Do this is a neater way if it becomes unwieldy.
> -ifeq ($(perfc_arrays),y)
> -perfc := y
> -endif
> -
> ifneq ($(origin kexec),undefined)
> $(error "You must use 'make menuconfig' to enable/disable kexec now.")
> endif
> ifneq ($(origin crash_debug),undefined)
> $(error "You must use 'make menuconfig' to enable/disable crash_debug now.")
> endif
> +ifneq ($(origin perfc),undefined)
> +$(error "You must use 'make menuconfig' to enable/disable perfc now.")
> +endif
I'm pretty sure I've asked before: Why do you add something
here for crash_debug and perfc, but not for debug, verbose,
and frame_pointer?
> --- a/xen/arch/x86/x86_64/asm-offsets.c
> +++ b/xen/arch/x86/x86_64/asm-offsets.c
> @@ -151,7 +151,7 @@ void __dummy__(void)
> OFFSET(TRAPBOUNCE_eip, struct trap_bounce, eip);
> BLANK();
>
> -#if PERF_COUNTERS
> +#if CONFIG_PERF_COUNTERS
Same here - I'm pretty sure I've already asked for this to become
#ifdef.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v3 2/6] build: convert crash_debug to Kconfig
2016-05-11 9:47 ` Jan Beulich
@ 2016-05-11 17:35 ` Doug Goldstein
2016-05-12 9:03 ` Jan Beulich
0 siblings, 1 reply; 21+ messages in thread
From: Doug Goldstein @ 2016-05-11 17:35 UTC (permalink / raw)
To: Jan Beulich
Cc: Tim Deegan, Stefano Stabellini, Wei Liu, George Dunlap,
Andrew Cooper, Ian Jackson, xen-devel
[-- Attachment #1.1.1: Type: text/plain, Size: 1365 bytes --]
On 5/11/16 4:47 AM, Jan Beulich wrote:
>>>> On 10.05.16 at 23:05, <cardoe@cardoe.com> wrote:
>> --- a/xen/Kconfig.debug
>> +++ b/xen/Kconfig.debug
>> @@ -1,6 +1,13 @@
>>
>> menu "Debugging Options"
>>
>> +config CRASH_DEBUG
>> + bool "Crash Debugging Support"
>> + depends on X86
>> + ---help---
>> + If you want to be able to attach gdb to Xen to be able to debug
>> + Xen if it crashes then say Y.
>> +
>> config DEBUG
>> bool "Developer Checks"
>> ---help---
>
> Is this really meant to be independent of DEBUG (or EXPERT), as it's
> being placed ahead of DEBUG?
>
> Jan
>
That's what we talked about with v2. You wanted it to be independent if
EXPERT was set but when you have something defined as "menuconfig XXXX"
you cannot then have a rule "if XXXX || EXPERT" as you asked for in v2.
So I needed to make them independent always which is what I did.
Let me restate more generically, if things are dependent on a menu for
the sub-menu items to be displayed (as in v2) then the menu must be
enabled and cannot be conditionally displayed on another option.
Roughly think of it this way:
menuconfig SOME_STATE
if SOME_STATE || EXPERT
config OTHER
endif
is the following code:
if (SOME_STATE) {
if (SOME_STATE or EXPERT) {
printf("got here\n");
}
}
--
Doug Goldstein
[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 959 bytes --]
[-- Attachment #2: Type: text/plain, Size: 126 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v3 3/6] build: convert verbose to Kconfig
2016-05-11 9:45 ` Jan Beulich
@ 2016-05-11 17:37 ` Doug Goldstein
2016-05-12 9:04 ` Jan Beulich
0 siblings, 1 reply; 21+ messages in thread
From: Doug Goldstein @ 2016-05-11 17:37 UTC (permalink / raw)
To: Jan Beulich
Cc: Andrew Cooper, Julien Grall, Stefano Stabellini, Daniel De Graaf,
xen-devel
[-- Attachment #1.1.1: Type: text/plain, Size: 932 bytes --]
On 5/11/16 4:45 AM, Jan Beulich wrote:
>>>> On 10.05.16 at 23:05, <cardoe@cardoe.com> wrote:
>> --- a/xen/Kconfig.debug
>> +++ b/xen/Kconfig.debug
>> @@ -15,4 +15,11 @@ config DEBUG
>> option is intended for development purposes only, and not for
>> production use.
>>
>> +config VERBOSE_DEBUG
>> + bool "Verbose debug messages"
>> + default DEBUG
>> + ---help---
>> + Guest output from HYPERVISOR_console_io and hypervisor parsing
>> + ELF images (dom0) is logged in the Xen ring buffer.
>
> The "depends on DEBUG || EXPERT" did get lost here (or, looking at
> the following patch, a respective "if" framing them all).
>
> Jan
>
This option is always visible to someone and is not dependent on DEBUG
due to the if not being possible in the form you asked. So I adjusted it
to "default DEBUG" as you had asked. I can make this option dependent on
DEBUG or EXPERT.
--
Doug Goldstein
[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 959 bytes --]
[-- Attachment #2: Type: text/plain, Size: 126 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v3 5/6] build: convert perfc{, _arrays} to Kconfig
2016-05-11 9:53 ` Jan Beulich
@ 2016-05-11 18:39 ` Doug Goldstein
2016-05-12 9:07 ` Jan Beulich
0 siblings, 1 reply; 21+ messages in thread
From: Doug Goldstein @ 2016-05-11 18:39 UTC (permalink / raw)
To: Jan Beulich
Cc: Tim Deegan, Stefano Stabellini, Wei Liu, George Dunlap,
Andrew Cooper, Ian Jackson, xen-devel
[-- Attachment #1.1.1: Type: text/plain, Size: 1968 bytes --]
On 5/11/16 4:53 AM, Jan Beulich wrote:
>>>> On 10.05.16 at 23:05, <cardoe@cardoe.com> wrote:
>> Convert the 'perfc' and 'perfc_arrays' options to Kconfig as
>> CONFIG_PERF_COUNTERS and CONFIG_PERF_ARRAYS to minimize code changes.
>
> I don't understand the "to minimize code changes" part.
Instead of calling the options "CONFIG_PERFC" and CONFIG_PERFC_ARRAYS"
as the originals would be called.
I do most of these Kconfig patches with sed and not by hand.
>
>> @@ -12,18 +10,15 @@ lto ?= n
>>
>> include $(XEN_ROOT)/Config.mk
>>
>> -# Hardcoded configuration implications and dependencies.
>> -# Do this is a neater way if it becomes unwieldy.
>> -ifeq ($(perfc_arrays),y)
>> -perfc := y
>> -endif
>> -
>> ifneq ($(origin kexec),undefined)
>> $(error "You must use 'make menuconfig' to enable/disable kexec now.")
>> endif
>> ifneq ($(origin crash_debug),undefined)
>> $(error "You must use 'make menuconfig' to enable/disable crash_debug now.")
>> endif
>> +ifneq ($(origin perfc),undefined)
>> +$(error "You must use 'make menuconfig' to enable/disable perfc now.")
>> +endif
>
> I'm pretty sure I've asked before: Why do you add something
> here for crash_debug and perfc, but not for debug, verbose,
> and frame_pointer?
I added the one you had mentioned. I didn't realize it was a uniform
statement. In the past (for other series) I've been told to drop those
statements for not common options.
As far as the debug one, I had that in patch 5 but passing the value in
but that was dropped.
>
>> --- a/xen/arch/x86/x86_64/asm-offsets.c
>> +++ b/xen/arch/x86/x86_64/asm-offsets.c
>> @@ -151,7 +151,7 @@ void __dummy__(void)
>> OFFSET(TRAPBOUNCE_eip, struct trap_bounce, eip);
>> BLANK();
>>
>> -#if PERF_COUNTERS
>> +#if CONFIG_PERF_COUNTERS
>
> Same here - I'm pretty sure I've already asked for this to become
> #ifdef.
>
> Jan
>
--
Doug Goldstein
[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 959 bytes --]
[-- Attachment #2: Type: text/plain, Size: 126 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v3 2/6] build: convert crash_debug to Kconfig
2016-05-11 17:35 ` Doug Goldstein
@ 2016-05-12 9:03 ` Jan Beulich
2016-05-18 2:15 ` Doug Goldstein
0 siblings, 1 reply; 21+ messages in thread
From: Jan Beulich @ 2016-05-12 9:03 UTC (permalink / raw)
To: Doug Goldstein
Cc: Tim Deegan, Stefano Stabellini, Wei Liu, George Dunlap,
Andrew Cooper, Ian Jackson, xen-devel
>>> On 11.05.16 at 19:35, <cardoe@cardoe.com> wrote:
> On 5/11/16 4:47 AM, Jan Beulich wrote:
>>>>> On 10.05.16 at 23:05, <cardoe@cardoe.com> wrote:
>>> --- a/xen/Kconfig.debug
>>> +++ b/xen/Kconfig.debug
>>> @@ -1,6 +1,13 @@
>>>
>>> menu "Debugging Options"
>>>
>>> +config CRASH_DEBUG
>>> + bool "Crash Debugging Support"
>>> + depends on X86
>>> + ---help---
>>> + If you want to be able to attach gdb to Xen to be able to debug
>>> + Xen if it crashes then say Y.
>>> +
>>> config DEBUG
>>> bool "Developer Checks"
>>> ---help---
>>
>> Is this really meant to be independent of DEBUG (or EXPERT), as it's
>> being placed ahead of DEBUG?
>
> That's what we talked about with v2. You wanted it to be independent if
> EXPERT was set but when you have something defined as "menuconfig XXXX"
> you cannot then have a rule "if XXXX || EXPERT" as you asked for in v2.
> So I needed to make them independent always which is what I did.
>
> Let me restate more generically, if things are dependent on a menu for
> the sub-menu items to be displayed (as in v2) then the menu must be
> enabled and cannot be conditionally displayed on another option.
>
> Roughly think of it this way:
>
> menuconfig SOME_STATE
>
> if SOME_STATE || EXPERT
>
> config OTHER
>
> endif
>
>
> is the following code:
>
>
> if (SOME_STATE) {
> if (SOME_STATE or EXPERT) {
> printf("got here\n");
> }
> }
But there's no menuconfig anymore, for precisely that reason (aiui).
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v3 3/6] build: convert verbose to Kconfig
2016-05-11 17:37 ` Doug Goldstein
@ 2016-05-12 9:04 ` Jan Beulich
2016-05-18 2:16 ` Doug Goldstein
0 siblings, 1 reply; 21+ messages in thread
From: Jan Beulich @ 2016-05-12 9:04 UTC (permalink / raw)
To: Doug Goldstein
Cc: Andrew Cooper, Julien Grall, Stefano Stabellini, Daniel De Graaf,
xen-devel
>>> On 11.05.16 at 19:37, <cardoe@cardoe.com> wrote:
> On 5/11/16 4:45 AM, Jan Beulich wrote:
>>>>> On 10.05.16 at 23:05, <cardoe@cardoe.com> wrote:
>>> --- a/xen/Kconfig.debug
>>> +++ b/xen/Kconfig.debug
>>> @@ -15,4 +15,11 @@ config DEBUG
>>> option is intended for development purposes only, and not for
>>> production use.
>>>
>>> +config VERBOSE_DEBUG
>>> + bool "Verbose debug messages"
>>> + default DEBUG
>>> + ---help---
>>> + Guest output from HYPERVISOR_console_io and hypervisor parsing
>>> + ELF images (dom0) is logged in the Xen ring buffer.
>>
>> The "depends on DEBUG || EXPERT" did get lost here (or, looking at
>> the following patch, a respective "if" framing them all).
>
> This option is always visible to someone and is not dependent on DEBUG
> due to the if not being possible in the form you asked. So I adjusted it
> to "default DEBUG" as you had asked. I can make this option dependent on
> DEBUG or EXPERT.
Same here - with the menuconfig gone, I don't see why.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v3 5/6] build: convert perfc{, _arrays} to Kconfig
2016-05-11 18:39 ` Doug Goldstein
@ 2016-05-12 9:07 ` Jan Beulich
0 siblings, 0 replies; 21+ messages in thread
From: Jan Beulich @ 2016-05-12 9:07 UTC (permalink / raw)
To: Doug Goldstein
Cc: Tim Deegan, Stefano Stabellini, Wei Liu, George Dunlap,
Andrew Cooper, Ian Jackson, xen-devel
>>> On 11.05.16 at 20:39, <cardoe@cardoe.com> wrote:
> On 5/11/16 4:53 AM, Jan Beulich wrote:
>>>>> On 10.05.16 at 23:05, <cardoe@cardoe.com> wrote:
>>> Convert the 'perfc' and 'perfc_arrays' options to Kconfig as
>>> CONFIG_PERF_COUNTERS and CONFIG_PERF_ARRAYS to minimize code changes.
>>
>> I don't understand the "to minimize code changes" part.
>
> Instead of calling the options "CONFIG_PERFC" and CONFIG_PERFC_ARRAYS"
> as the originals would be called.
How would using those have resulted in more code changes? The
changes would have looked a little different, but it would have been
the same amount of lines modified.
> I do most of these Kconfig patches with sed and not by hand.
Sure, but that's unrelated to this afaict.
>>> @@ -12,18 +10,15 @@ lto ?= n
>>>
>>> include $(XEN_ROOT)/Config.mk
>>>
>>> -# Hardcoded configuration implications and dependencies.
>>> -# Do this is a neater way if it becomes unwieldy.
>>> -ifeq ($(perfc_arrays),y)
>>> -perfc := y
>>> -endif
>>> -
>>> ifneq ($(origin kexec),undefined)
>>> $(error "You must use 'make menuconfig' to enable/disable kexec now.")
>>> endif
>>> ifneq ($(origin crash_debug),undefined)
>>> $(error "You must use 'make menuconfig' to enable/disable crash_debug now.")
>>> endif
>>> +ifneq ($(origin perfc),undefined)
>>> +$(error "You must use 'make menuconfig' to enable/disable perfc now.")
>>> +endif
>>
>> I'm pretty sure I've asked before: Why do you add something
>> here for crash_debug and perfc, but not for debug, verbose,
>> and frame_pointer?
>
> I added the one you had mentioned. I didn't realize it was a uniform
> statement. In the past (for other series) I've been told to drop those
> statements for not common options.
Hmm, I don't recall such requests, but if there were - what is the
criteria for being "not common"?
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v3 1/6] build: add debug menu to Kconfig
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
0 siblings, 0 replies; 21+ messages in thread
From: Konrad Rzeszutek Wilk @ 2016-05-13 18:07 UTC (permalink / raw)
To: Doug Goldstein
Cc: Tim Deegan, Stefano Stabellini, Wei Liu, George Dunlap,
Andrew Cooper, Ian Jackson, xen-devel, Jan Beulich
On Tue, May 10, 2016 at 04:05:24PM -0500, Doug Goldstein wrote:
> There are a number of debugging options for Xen so the idea is to have a
> menu to group them all together. Enabling this menu item will also
> disable NDEBUG which will result in more debug prints. This was
> previously wired into the 'debug=y' command line option.
>
> Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
> ---
> CC: Andrew Cooper <andrew.cooper3@citrix.com>
> CC: George Dunlap <George.Dunlap@eu.citrix.com>
> CC: Ian Jackson <ian.jackson@eu.citrix.com>
> CC: Jan Beulich <jbeulich@suse.com>
> CC: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
> CC: Stefano Stabellini <sstabellini@kernel.org>
> CC: Tim Deegan <tim@xen.org>
> CC: Wei Liu <wei.liu2@citrix.com>
> ---
> xen/Kconfig | 2 ++
> xen/Kconfig.debug | 11 +++++++++++
> xen/Rules.mk | 2 --
> xen/include/xen/config.h | 4 ++++
> 4 files changed, 17 insertions(+), 2 deletions(-)
> create mode 100644 xen/Kconfig.debug
>
> diff --git a/xen/Kconfig b/xen/Kconfig
> index fa8b27c..0fe7a1a 100644
> --- a/xen/Kconfig
> +++ b/xen/Kconfig
> @@ -26,3 +26,5 @@ config DEFCONFIG_LIST
> config EXPERT
> string
> option env="XEN_CONFIG_EXPERT"
> +
> +source "Kconfig.debug"
> diff --git a/xen/Kconfig.debug b/xen/Kconfig.debug
> new file mode 100644
> index 0000000..47dc885
> --- /dev/null
> +++ b/xen/Kconfig.debug
> @@ -0,0 +1,11 @@
> +
> +menu "Debugging Options"
> +
> +config DEBUG
> + bool "Developer Checks"
> + ---help---
> + Enables developer checks such as asserts and extra printks, this
> + option is intended for development purposes only, and not for
> + production use.
"You probably want to say 'N' here."
Otherwise it looks good to me.
> +
> +endmenu
> diff --git a/xen/Rules.mk b/xen/Rules.mk
> index 961d533..f73d86e 100644
> --- a/xen/Rules.mk
> +++ b/xen/Rules.mk
> @@ -20,8 +20,6 @@ include $(XEN_ROOT)/Config.mk
> ifeq ($(debug),y)
> verbose := y
> frame_pointer := y
> -else
> -CFLAGS += -DNDEBUG
> endif
> ifeq ($(perfc_arrays),y)
> perfc := y
> diff --git a/xen/include/xen/config.h b/xen/include/xen/config.h
> index ef6e5ee..473c5e8 100644
> --- a/xen/include/xen/config.h
> +++ b/xen/include/xen/config.h
> @@ -81,4 +81,8 @@
> /* allow existing code to work with Kconfig variable */
> #define NR_CPUS CONFIG_NR_CPUS
>
> +#ifndef CONFIG_DEBUG
> +#define NDEBUG
> +#endif
> +
> #endif /* __XEN_CONFIG_H__ */
> --
> 2.7.3
>
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v3 2/6] build: convert crash_debug to Kconfig
2016-05-12 9:03 ` Jan Beulich
@ 2016-05-18 2:15 ` Doug Goldstein
2016-05-18 9:14 ` Jan Beulich
0 siblings, 1 reply; 21+ messages in thread
From: Doug Goldstein @ 2016-05-18 2:15 UTC (permalink / raw)
To: Jan Beulich
Cc: Tim Deegan, Stefano Stabellini, Wei Liu, George Dunlap,
Andrew Cooper, Ian Jackson, xen-devel
[-- Attachment #1.1.1: Type: text/plain, Size: 1793 bytes --]
On 5/12/16 4:03 AM, Jan Beulich wrote:
>>>> On 11.05.16 at 19:35, <cardoe@cardoe.com> wrote:
>> On 5/11/16 4:47 AM, Jan Beulich wrote:
>>>>>> On 10.05.16 at 23:05, <cardoe@cardoe.com> wrote:
>>>> --- a/xen/Kconfig.debug
>>>> +++ b/xen/Kconfig.debug
>>>> @@ -1,6 +1,13 @@
>>>>
>>>> menu "Debugging Options"
>>>>
>>>> +config CRASH_DEBUG
>>>> + bool "Crash Debugging Support"
>>>> + depends on X86
>>>> + ---help---
>>>> + If you want to be able to attach gdb to Xen to be able to debug
>>>> + Xen if it crashes then say Y.
>>>> +
>>>> config DEBUG
>>>> bool "Developer Checks"
>>>> ---help---
>>>
>>> Is this really meant to be independent of DEBUG (or EXPERT), as it's
>>> being placed ahead of DEBUG?
>>
>> That's what we talked about with v2. You wanted it to be independent if
>> EXPERT was set but when you have something defined as "menuconfig XXXX"
>> you cannot then have a rule "if XXXX || EXPERT" as you asked for in v2.
>> So I needed to make them independent always which is what I did.
>>
>> Let me restate more generically, if things are dependent on a menu for
>> the sub-menu items to be displayed (as in v2) then the menu must be
>> enabled and cannot be conditionally displayed on another option.
>>
>> Roughly think of it this way:
>>
>> menuconfig SOME_STATE
>>
>> if SOME_STATE || EXPERT
>>
>> config OTHER
>>
>> endif
>>
>>
>> is the following code:
>>
>>
>> if (SOME_STATE) {
>> if (SOME_STATE or EXPERT) {
>> printf("got here\n");
>> }
>> }
>
> But there's no menuconfig anymore, for precisely that reason (aiui).
>
> Jan
>
Right. That's what I was trying to get across. What I gathered from past
reviews is that it should to be independent of DEBUG correct?
--
Doug Goldstein
[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 959 bytes --]
[-- Attachment #2: Type: text/plain, Size: 126 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v3 3/6] build: convert verbose to Kconfig
2016-05-12 9:04 ` Jan Beulich
@ 2016-05-18 2:16 ` Doug Goldstein
2016-05-18 9:18 ` Jan Beulich
0 siblings, 1 reply; 21+ messages in thread
From: Doug Goldstein @ 2016-05-18 2:16 UTC (permalink / raw)
To: Jan Beulich
Cc: Andrew Cooper, Julien Grall, Stefano Stabellini, Daniel De Graaf,
xen-devel
[-- Attachment #1.1.1: Type: text/plain, Size: 1274 bytes --]
On 5/12/16 4:04 AM, Jan Beulich wrote:
>>>> On 11.05.16 at 19:37, <cardoe@cardoe.com> wrote:
>> On 5/11/16 4:45 AM, Jan Beulich wrote:
>>>>>> On 10.05.16 at 23:05, <cardoe@cardoe.com> wrote:
>>>> --- a/xen/Kconfig.debug
>>>> +++ b/xen/Kconfig.debug
>>>> @@ -15,4 +15,11 @@ config DEBUG
>>>> option is intended for development purposes only, and not for
>>>> production use.
>>>>
>>>> +config VERBOSE_DEBUG
>>>> + bool "Verbose debug messages"
>>>> + default DEBUG
>>>> + ---help---
>>>> + Guest output from HYPERVISOR_console_io and hypervisor parsing
>>>> + ELF images (dom0) is logged in the Xen ring buffer.
>>>
>>> The "depends on DEBUG || EXPERT" did get lost here (or, looking at
>>> the following patch, a respective "if" framing them all).
>>
>> This option is always visible to someone and is not dependent on DEBUG
>> due to the if not being possible in the form you asked. So I adjusted it
>> to "default DEBUG" as you had asked. I can make this option dependent on
>> DEBUG or EXPERT.
>
> Same here - with the menuconfig gone, I don't see why.
>
> Jan
>
So no change? From the first email I gather that it should be "depends
on DEBUG || EXPERT" but from the last one I gather no change.
--
Doug Goldstein
[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 959 bytes --]
[-- Attachment #2: Type: text/plain, Size: 126 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v3 2/6] build: convert crash_debug to Kconfig
2016-05-18 2:15 ` Doug Goldstein
@ 2016-05-18 9:14 ` Jan Beulich
0 siblings, 0 replies; 21+ messages in thread
From: Jan Beulich @ 2016-05-18 9:14 UTC (permalink / raw)
To: Doug Goldstein
Cc: Tim Deegan, Stefano Stabellini, Wei Liu, George Dunlap,
Andrew Cooper, Ian Jackson, xen-devel
>>> On 18.05.16 at 04:15, <cardoe@cardoe.com> wrote:
> On 5/12/16 4:03 AM, Jan Beulich wrote:
>>>>> On 11.05.16 at 19:35, <cardoe@cardoe.com> wrote:
>>> On 5/11/16 4:47 AM, Jan Beulich wrote:
>>>>>>> On 10.05.16 at 23:05, <cardoe@cardoe.com> wrote:
>>>>> --- a/xen/Kconfig.debug
>>>>> +++ b/xen/Kconfig.debug
>>>>> @@ -1,6 +1,13 @@
>>>>>
>>>>> menu "Debugging Options"
>>>>>
>>>>> +config CRASH_DEBUG
>>>>> + bool "Crash Debugging Support"
>>>>> + depends on X86
>>>>> + ---help---
>>>>> + If you want to be able to attach gdb to Xen to be able to debug
>>>>> + Xen if it crashes then say Y.
>>>>> +
>>>>> config DEBUG
>>>>> bool "Developer Checks"
>>>>> ---help---
>>>>
>>>> Is this really meant to be independent of DEBUG (or EXPERT), as it's
>>>> being placed ahead of DEBUG?
>>>
>>> That's what we talked about with v2. You wanted it to be independent if
>>> EXPERT was set but when you have something defined as "menuconfig XXXX"
>>> you cannot then have a rule "if XXXX || EXPERT" as you asked for in v2.
>>> So I needed to make them independent always which is what I did.
>>>
>>> Let me restate more generically, if things are dependent on a menu for
>>> the sub-menu items to be displayed (as in v2) then the menu must be
>>> enabled and cannot be conditionally displayed on another option.
>>>
>>> Roughly think of it this way:
>>>
>>> menuconfig SOME_STATE
>>>
>>> if SOME_STATE || EXPERT
>>>
>>> config OTHER
>>>
>>> endif
>>>
>>>
>>> is the following code:
>>>
>>>
>>> if (SOME_STATE) {
>>> if (SOME_STATE or EXPERT) {
>>> printf("got here\n");
>>> }
>>> }
>>
>> But there's no menuconfig anymore, for precisely that reason (aiui).
>
> Right. That's what I was trying to get across. What I gathered from past
> reviews is that it should to be independent of DEBUG correct?
"It" being what? The CRASH_DEBUG above? That would be the
question I asked you in my initial reply (still visible above); I
don't think it should be, but instead should, like all the other
DEBUG controlled ones, be dependent on "DEBUG || EXPERT" as
said a number of times.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v3 3/6] build: convert verbose to Kconfig
2016-05-18 2:16 ` Doug Goldstein
@ 2016-05-18 9:18 ` Jan Beulich
0 siblings, 0 replies; 21+ messages in thread
From: Jan Beulich @ 2016-05-18 9:18 UTC (permalink / raw)
To: Doug Goldstein
Cc: Andrew Cooper, Julien Grall, Stefano Stabellini, Daniel De Graaf,
xen-devel
>>> On 18.05.16 at 04:16, <cardoe@cardoe.com> wrote:
> On 5/12/16 4:04 AM, Jan Beulich wrote:
>>>>> On 11.05.16 at 19:37, <cardoe@cardoe.com> wrote:
>>> On 5/11/16 4:45 AM, Jan Beulich wrote:
>>>>>>> On 10.05.16 at 23:05, <cardoe@cardoe.com> wrote:
>>>>> --- a/xen/Kconfig.debug
>>>>> +++ b/xen/Kconfig.debug
>>>>> @@ -15,4 +15,11 @@ config DEBUG
>>>>> option is intended for development purposes only, and not for
>>>>> production use.
>>>>>
>>>>> +config VERBOSE_DEBUG
>>>>> + bool "Verbose debug messages"
>>>>> + default DEBUG
>>>>> + ---help---
>>>>> + Guest output from HYPERVISOR_console_io and hypervisor parsing
>>>>> + ELF images (dom0) is logged in the Xen ring buffer.
>>>>
>>>> The "depends on DEBUG || EXPERT" did get lost here (or, looking at
>>>> the following patch, a respective "if" framing them all).
>>>
>>> This option is always visible to someone and is not dependent on DEBUG
>>> due to the if not being possible in the form you asked. So I adjusted it
>>> to "default DEBUG" as you had asked. I can make this option dependent on
>>> DEBUG or EXPERT.
>>
>> Same here - with the menuconfig gone, I don't see why.
>
> So no change? From the first email I gather that it should be "depends
> on DEBUG || EXPERT" but from the last one I gather no change.
Oh, my mistake. I read the "can" in the last sentence of your
previous reply as "can only", i.e. understanding you mean either
DEBUG or EXPERT. So yes, what I meant to be asking for is
"depends on DEBUG || EXPERT" uniformly for all the DEBUG
sub-options. Which, it no longer being a menuconfig, should be
possible to express by just an "if DEBUG || EXPERT" framing them
all.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 21+ messages in thread
end of thread, other threads:[~2016-05-18 9:18 UTC | newest]
Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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 ` [PATCH v3 6/6] build: convert lock_profile " Doug Goldstein
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).