Re: [PATCH 03/17] x86, mpx: trace #BR exceptions

From: Steven Rostedt
Date: Mon Mar 30 2015 - 17:26:39 EST


On Fri, Mar 27, 2015 at 02:52:59PM -0700, Dave Hansen wrote:
>
> --- /dev/null 2014-10-10 16:10:57.316716958 -0700
> +++ b/arch/x86/include/asm/trace/mpx.h 2015-03-27 14:35:04.735760444 -0700
> @@ -0,0 +1,48 @@
> +#undef TRACE_SYSTEM
> +#define TRACE_SYSTEM mpx
> +
> +#if !defined(_TRACE_MPX_H) || defined(TRACE_HEADER_MULTI_READ)
> +#define _TRACE_MPX_H
> +
> +#include <linux/tracepoint.h>
> +
> +#ifdef CONFIG_X86_INTEL_MPX
> +
> +TRACE_EVENT(bounds_exception_mpx,
> +
> + TP_PROTO(struct bndcsr *bndcsr),
> + TP_ARGS(bndcsr),
> +
> + TP_STRUCT__entry(
> + __field(u64, bndcfgu)
> + __field(u64, bndstatus)
> + ),
> +
> + TP_fast_assign(
> + __entry->bndcfgu = bndcsr->bndcfgu;
> + __entry->bndstatus = bndcsr->bndstatus;
> + ),
> +
> + TP_printk("bndcfgu:0x%llx bndstatus:0x%llx",
> + __entry->bndcfgu,
> + __entry->bndstatus)
> +);
> +
> +#else
> +
> +/*
> + * This gets used outside of MPX-specific code, so we need a stub.
> + */

I'm a bit confused by this. What exactly is used outside of MPX-specific code?
Does it break the build without this?

-- Steve

> +static inline void trace_bounds_exception_mpx(struct bndcsr *bndcsr)
> +{
> +}
> +
> +#endif /* CONFIG_X86_INTEL_MPX */
> +
> +#undef TRACE_INCLUDE_PATH
> +#define TRACE_INCLUDE_PATH asm/trace/
> +#define TRACE_INCLUDE_FILE mpx
> +#endif /* _TRACE_MPX_H */
> +
> +/* This part must be outside protection */
> +#include <trace/define_trace.h>
> diff -puN arch/x86/kernel/traps.c~x86-br-exception-trace arch/x86/kernel/traps.c
> --- a/arch/x86/kernel/traps.c~x86-br-exception-trace 2015-03-27 14:35:04.731760263 -0700
> +++ b/arch/x86/kernel/traps.c 2015-03-27 14:35:04.736760489 -0700
> @@ -61,6 +61,7 @@
> #include <asm/mach_traps.h>
> #include <asm/alternative.h>
> #include <asm/mpx.h>
> +#include <asm/trace/mpx.h>
> #include <asm/xsave.h>
>
> #ifdef CONFIG_X86_64
> @@ -401,6 +402,7 @@ dotraplinkage void do_bounds(struct pt_r
> if (!bndcsr)
> goto exit_trap;
>
> + trace_bounds_exception_mpx(bndcsr);
> /*
> * The error code field of the BNDSTATUS register communicates status
> * information of a bound range exception #BR or operation involving
> diff -puN arch/x86/mm/mpx.c~x86-br-exception-trace arch/x86/mm/mpx.c
> --- a/arch/x86/mm/mpx.c~x86-br-exception-trace 2015-03-27 14:35:04.732760308 -0700
> +++ b/arch/x86/mm/mpx.c 2015-03-27 14:35:04.736760489 -0700
> @@ -18,6 +18,9 @@
> #include <asm/processor.h>
> #include <asm/fpu-internal.h>
>
> +#define CREATE_TRACE_POINTS
> +#include <asm/trace/mpx.h>
> +
> static const char *mpx_mapping_name(struct vm_area_struct *vma)
> {
> return "[mpx]";
> _
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/