xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
* [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).