Message ID | 1559698076-17247-1-git-send-email-chenbaodong@mxnavi.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | [v3] xen: make tracebuffer configurable | expand |
> On Jun 5, 2019, at 2:27 AM, Baodong Chen <chenbaodong@mxnavi.com> wrote: > > Xen internal running status(trace event) will be saved to > trace memory when enabled. trace event data and config params can be > read/changed by system control hypercall at run time. > > Can be disabled for smaller code footprint. > > Signed-off-by: Baodong Chen <chenbaodong@mxnavi.com> > --- > xen/common/Kconfig | 9 +++++++++ > xen/common/Makefile | 2 +- > xen/include/xen/trace.h | 26 ++++++++++++++++++++++++++ > 3 files changed, 36 insertions(+), 1 deletion(-) > > diff --git a/xen/common/Kconfig b/xen/common/Kconfig > index c838506..d908fe1 100644 > --- a/xen/common/Kconfig > +++ b/xen/common/Kconfig > @@ -368,4 +368,13 @@ config DOM0_MEM > > Leave empty if you are not sure what to specify. > > +config TRACEBUFFER > + bool "Enable tracing infrastructure" if EXPERT = "y" > + default y > + ---help--- > + Enable in tracing infrastructure and pre-defined tracepoints within Xen. Sorry, an editing mistake caused me to include a stray ‘in’ in this sentence when I suggested this text. :-) This could be removed on check-in. With that fixed, the commit message looks OK to me. -George
On 6/5/19 18:38, George Dunlap wrote: > >> On Jun 5, 2019, at 2:27 AM, Baodong Chen <chenbaodong@mxnavi.com> wrote: >> >> Xen internal running status(trace event) will be saved to >> trace memory when enabled. trace event data and config params can be >> read/changed by system control hypercall at run time. >> >> Can be disabled for smaller code footprint. >> >> Signed-off-by: Baodong Chen <chenbaodong@mxnavi.com> >> --- >> xen/common/Kconfig | 9 +++++++++ >> xen/common/Makefile | 2 +- >> xen/include/xen/trace.h | 26 ++++++++++++++++++++++++++ >> 3 files changed, 36 insertions(+), 1 deletion(-) >> >> diff --git a/xen/common/Kconfig b/xen/common/Kconfig >> index c838506..d908fe1 100644 >> --- a/xen/common/Kconfig >> +++ b/xen/common/Kconfig >> @@ -368,4 +368,13 @@ config DOM0_MEM >> >> Leave empty if you are not sure what to specify. >> >> +config TRACEBUFFER >> + bool "Enable tracing infrastructure" if EXPERT = "y" >> + default y >> + ---help--- >> + Enable in tracing infrastructure and pre-defined tracepoints within Xen. > Sorry, an editing mistake caused me to include a stray ‘in’ in this sentence when I suggested this text. :-) > > This could be removed on check-in. With that fixed, the commit message looks OK to me. Hello George, sorry for the late reply. Fixed according to your comments in v4. > -George >
diff --git a/xen/common/Kconfig b/xen/common/Kconfig index c838506..d908fe1 100644 --- a/xen/common/Kconfig +++ b/xen/common/Kconfig @@ -368,4 +368,13 @@ config DOM0_MEM Leave empty if you are not sure what to specify. +config TRACEBUFFER + bool "Enable tracing infrastructure" if EXPERT = "y" + default y + ---help--- + Enable in tracing infrastructure and pre-defined tracepoints within Xen. + This will allow live information about Xen’s execution and performance + to be collected at run time for debugging or performance analysis. + Memory and execution overhead when not active is minimal. + endmenu diff --git a/xen/common/Makefile b/xen/common/Makefile index bca48e6..9fd1bd2 100644 --- a/xen/common/Makefile +++ b/xen/common/Makefile @@ -56,7 +56,7 @@ obj-y += sysctl.o obj-y += tasklet.o obj-y += time.o obj-y += timer.o -obj-y += trace.o +obj-$(CONFIG_TRACEBUFFER) += trace.o obj-y += version.o obj-y += virtual_region.o obj-y += vm_event.o diff --git a/xen/include/xen/trace.h b/xen/include/xen/trace.h index 12966ea..fad92c7 100644 --- a/xen/include/xen/trace.h +++ b/xen/include/xen/trace.h @@ -21,12 +21,18 @@ #ifndef __XEN_TRACE_H__ #define __XEN_TRACE_H__ +/* Put 'tb_init_done' here because 'asm/trace.h' may use it */ +#ifdef CONFIG_TRACEBUFFER extern int tb_init_done; +#else +#define tb_init_done false +#endif #include <public/sysctl.h> #include <public/trace.h> #include <asm/trace.h> +#ifdef CONFIG_TRACEBUFFER /* Used to initialise trace buffer functionality */ void init_trace_bufs(void); @@ -47,6 +53,26 @@ static inline void trace_var(u32 event, int cycles, int extra, void __trace_hypercall(uint32_t event, unsigned long op, const xen_ulong_t *args); +#else +static inline void init_trace_bufs(void) {} +static inline int tb_control(struct xen_sysctl_tbuf_op *tbc) +{ + return -ENOSYS; +} + +static inline int trace_will_trace_event(uint32_t event) +{ + return 0; +} + +static inline void trace_var(uint32_t event, int cycles, int extra, + const void *extra_data) {} +static inline void __trace_var(uint32_t event, bool cycles, unsigned int extra, + const void *extra_data) {} +static inline void __trace_hypercall(uint32_t event, unsigned long op, + const xen_ulong_t *args) {} +#endif + /* Convenience macros for calling the trace function. */ #define TRACE_0D(_e) \ do { \
Xen internal running status(trace event) will be saved to trace memory when enabled. trace event data and config params can be read/changed by system control hypercall at run time. Can be disabled for smaller code footprint. Signed-off-by: Baodong Chen <chenbaodong@mxnavi.com> --- xen/common/Kconfig | 9 +++++++++ xen/common/Makefile | 2 +- xen/include/xen/trace.h | 26 ++++++++++++++++++++++++++ 3 files changed, 36 insertions(+), 1 deletion(-)