tracing: kprobe-based event tracer and x86 instruction decoder
Subsystems (8)
v14 cover tracing: kprobe-based event tracer and x86 instruction decoder
Hi,
Here are the patches of kprobe-based event tracer for x86, version 14, which allows you to probe various kernel events through ftrace interface. The tracer supports per-probe filtering which allows you to set filters on each probe and shows formats of each probe.
This version includes below fixes.
- Define remove_subsystem_dir() always (patch 6/12)
- Modify syscall_tracer because of ftrace_event_call change (patch 6/12)
- Support 'sa' argument for stack address (patch 8/12)
- Use call->data instead of container_of() macro. (patch 8/12)
- Assign new event id for each event. (patch 11/12)
Lai, this version still can not be applied on your patch ('use defined fields to print formats') yet, since I couldn't update your patch on the latest -tip tree.
This patchset also includes x86(-64) instruction decoder which supports non-SSE/FP opcodes and includes x86 opcode map. The decoder is used for finding the instruction boundaries when inserting new kprobes. I think it will be possible to share this opcode map with KVM's decoder.
The decoder is tested when building kernel, the test compares the results of objdump and the decoder right after building vmlinux. You can enable that test by CONFIG_X86_DECODER_SELFTEST=y.
This series can be applied on the latest linux-2.6.31-rc5-tip.
This supports only x86(-32/-64) (but porting it on other arch just needs kprobes/kretprobes and register and stack access APIs).
I also made two tools for this tracer.
- Kprobe stress test script which tests kprobes on all kernel symbols to find symbols which should be blacklisted.
- C expression to kprobes event format converter which helps you to define kprobes events by C source code line number or function name, and local variable name.
Enhancement ideas will be added after merging:
- .init function tracing support.
- Support primitive types(long, ulong, int, uint, etc) for args.
Kprobe-based Event Tracer
=========================
Overview
--------
This tracer is similar to the events tracer which is based on Tracepoint infrastructure. Instead of Tracepoint, this tracer is based on kprobes(kprobe and kretprobe). It probes anywhere where kprobes can probe(this means, all functions body except for __kprobes functions).
Unlike the function tracer, this tracer can probe instructions inside of kernel functions. It allows you to check which instruction has been executed.
Unlike the Tracepoint based events tracer, this tracer can add new probe points on the fly.
Similar to the events tracer, this tracer doesn't need to be activated via current_tracer, instead of that, just set probe points via /sys/kernel/debug/tracing/kprobe_events. And you can set filters on each probe events via /sys/kernel/debug/tracing/events/kprobes/<EVENT>/filter.
Synopsis of kprobe_events
-------------------------
p[:EVENT] SYMBOL[+offs|-offs]|MEMADDR [FETCHARGS] : Set a probe
r[:EVENT] SYMBOL[+0] [FETCHARGS] : Set a return probe
EVENT : Event name. If omitted, the event name is generated
based on SYMBOL+offs or MEMADDR.
SYMBOL[+offs|-offs] : Symbol+offset where the probe is inserted.
MEMADDR : Address where the probe is inserted.
FETCHARGS : Arguments. Each probe can have up to 128 args.
%REG : Fetch register REG
sN : Fetch Nth entry of stack (N >= 0)
sa : Fetch stack address.
@ADDR : Fetch memory at ADDR (ADDR should be in kernel)
@SYM[+|-offs] : Fetch memory at SYM +|- offs (SYM should be a data symbol)
aN : Fetch function argument. (N >= 0)(*)
rv : Fetch return value.(**)
ra : Fetch return address.(**)
+|-offs(FETCHARG) : fetch memory at FETCHARG +|- offs address.(***)
(*) aN may not correct on asmlinkaged functions and at the middle of
function body.
(**) only for return probe.
(***) this is useful for fetching a field of data structures.
Per-Probe Event Filtering
-------------------------
Per-probe event filtering feature allows you to set different filter on each
probe and gives you what arguments will be shown in trace buffer. If an event name is specified right after 'p:' or 'r:' in kprobe_events, the tracer adds an event under tracing/events/kprobes/<EVENT>, at the directory you can see 'id', 'enabled', 'format' and 'filter'.
enabled:
You can enable/disable the probe by writing 1 or 0 on it.
format:
It shows the format of this probe event. It also shows aliases of arguments
which you specified to kprobe_events.
filter:
You can write filtering rules of this event. And you can use both of aliase
names and field names for describing filters.
Event Profiling
---------------
You can check the total number of probe hits and probe miss-hits via/sys/kernel/debug/tracing/kprobe_profile.
The first column is event name, the second is the number of probe hits,
the third is the number of probe miss-hits.
Usage examples
--------------
To add a probe as a new event, write a new definition to kprobe_events as below.
echo p:myprobe do_sys_open a0 a1 a2 a3 > /sys/kernel/debug/tracing/kprobe_events
This sets a kprobe on the top of do_sys_open() function with recording
1st to 4th arguments as "myprobe" event.
echo r:myretprobe do_sys_open rv ra >> /sys/kernel/debug/tracing/kprobe_events
This sets a kretprobe on the return point of do_sys_open() function with
recording return value and return address as "myretprobe" event.
You can see the format of these events via
/sys/kernel/debug/tracing/events/kprobes/<EVENT>/format.
cat /sys/kernel/debug/tracing/events/kprobes/myprobe/format
name: myprobe
ID: 23
format:
field:unsigned short common_type; offset:0; size:2; field:unsigned char common_flags; offset:2; size:1; field:unsigned char common_preempt_count; offset:3; size:1; field:int common_pid; offset:4; size:4; field:int common_tgid; offset:8; size:4; field: unsigned long ip; offset:16;tsize:8; field: int nargs; offset:24;tsize:4; field: unsigned long arg0; offset:32;tsize:8; field: unsigned long arg1; offset:40;tsize:8; field: unsigned long arg2; offset:48;tsize:8; field: unsigned long arg3; offset:56;tsize:8; alias: a0; original: arg0; alias: a1; original: arg1; alias: a2; original: arg2; alias: a3; original: arg3;
print fmt: "%lx: 0x%lx 0x%lx 0x%lx 0x%lx", ip, arg0, arg1, arg2, arg3
You can see that the event has 4 arguments and alias expressions
corresponding to it.
echo > /sys/kernel/debug/tracing/kprobe_events
This clears all probe points. and you can see the traced information via/sys/kernel/debug/tracing/trace.
cat /sys/kernel/debug/tracing/trace
# tracer: nop
#
# TASK-PID CPU# TIMESTAMP FUNCTION
# | | | | |
<...>-1447 [001] 1038282.286875: do_sys_open+0x0/0xd6: 0x3 0x7fffd1ec4440 0x8000 0x0
<...>-1447 [001] 1038282.286878: sys_openat+0xc/0xe <- do_sys_open: 0xfffffffffffffffe 0xffffffff81367a3a
<...>-1447 [001] 1038282.286885: do_sys_open+0x0/0xd6: 0xffffff9c 0x40413c 0x8000 0x1b6
<...>-1447 [001] 1038282.286915: sys_open+0x1b/0x1d <- do_sys_open: 0x3 0xffffffff81367a3a
<...>-1447 [001] 1038282.286969: do_sys_open+0x0/0xd6: 0xffffff9c 0x4041c6 0x98800 0x10
<...>-1447 [001] 1038282.286976: sys_open+0x1b/0x1d <- do_sys_open: 0x3 0xffffffff81367a3a Each line shows when the kernel hits a probe, and <- SYMBOL means kernel
returns from SYMBOL(e.g. "sys_open+0x1b/0x1d <- do_sys_open" means kernel returns from do_sys_open to sys_open+0x1b).
Thank you,
---
Masami Hiramatsu (12):
tracing: Add kprobes event profiling interface
tracing: Kprobe tracer assigns new event ids for each event
tracing: Generate names for each kprobe event automatically
tracing: Kprobe-tracer supports more than 6 arguments
tracing: add kprobe-based event tracer
tracing: Introduce TRACE_FIELD_ZERO() macro
tracing: ftrace dynamic ftrace_event_call support
x86: add pt_regs register and stack access APIs
kprobes: cleanup fix_riprel() using insn decoder on x86
kprobes: checks probe address is instruction boudary on x86
x86: x86 instruction decoder build-time selftest
x86: instruction decoder API
Documentation/trace/kprobetrace.txt | 148 ++++ arch/x86/Kconfig.debug | 9 arch/x86/Makefile | 3 arch/x86/include/asm/inat.h | 188 +++++ arch/x86/include/asm/inat_types.h | 29 + arch/x86/include/asm/insn.h | 143 ++++ arch/x86/include/asm/ptrace.h | 62 ++ arch/x86/kernel/kprobes.c | 197 +++-- arch/x86/kernel/ptrace.c | 112 +++ arch/x86/lib/Makefile | 13 arch/x86/lib/inat.c | 78 ++ arch/x86/lib/insn.c | 464 +++++++++++++ arch/x86/lib/x86-opcode-map.txt | 719 ++++++++++++++++++++ arch/x86/tools/Makefile | 15 arch/x86/tools/distill.awk | 42 + arch/x86/tools/gen-insn-attr-x86.awk | 314 +++++++++ arch/x86/tools/test_get_len.c | 113 +++ include/linux/ftrace_event.h | 14 include/linux/syscalls.h | 4 include/trace/ftrace.h | 19 - include/trace/syscall.h | 8 kernel/trace/Kconfig | 12 kernel/trace/Makefile | 1 kernel/trace/trace.h | 23 + kernel/trace/trace_event_types.h | 4 kernel/trace/trace_events.c | 119 ++- kernel/trace/trace_export.c | 39 + kernel/trace/trace_kprobe.c | 1234 ++++++++++++++++++++++++++++++++++ kernel/trace/trace_syscalls.c | 16 29 files changed, 3949 insertions(+), 193 deletions(-) create mode 100644 Documentation/trace/kprobetrace.txt create mode 100644 arch/x86/include/asm/inat.h create mode 100644 arch/x86/include/asm/inat_types.h create mode 100644 arch/x86/include/asm/insn.h create mode 100644 arch/x86/lib/inat.c create mode 100644 arch/x86/lib/insn.c create mode 100644 arch/x86/lib/x86-opcode-map.txt create mode 100644 arch/x86/tools/Makefile create mode 100644 arch/x86/tools/distill.awk create mode 100644 arch/x86/tools/gen-insn-attr-x86.awk create mode 100644 arch/x86/tools/test_get_len.c create mode 100644 kernel/trace/trace_kprobe.c
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
PATCH v14 1/12 x86: instruction decoder API
Add x86 instruction decoder to arch-specific libraries. This decoder can decode x86 instructions used in kernel into prefix, opcode, modrm, sib, displacement and immediates. This can also show the length of instructions.
This version introduces instruction attributes for decoding instructions. The instruction attribute tables are generated from the opcode map file (x86-opcode-map.txt) by the generator script(gen-insn-attr-x86.awk).
Currently, the opcode maps are based on opcode maps in Intel(R) 64 and IA-32 Architectures Software Developers Manual Vol.2: Appendix.A, and consist of below two types of opcode tables.
1-byte/2-bytes/3-bytes opcodes, which has 256 elements, are written as below;
Table: table-name
Referrer: escaped-name
opcode: mnemonic|GrpXXX [operand1[,operand2...]] [(extra1)[,(extra2)...] [| 2nd-mnemonic ...]
(or)
opcode: escape # escaped-name
EndTable
Group opcodes, which has 8 elements, are written as below;
GrpTable: GrpXXX
reg: mnemonic [operand1[,operand2...]] [(extra1)[,(extra2)...] [| 2nd-mnemonic ...] EndTable
These opcode maps include a few SSE and FP opcodes (for setup), because those opcodes are used in the kernel.
---
arch/x86/include/asm/inat.h | 188 +++++++++ arch/x86/include/asm/inat_types.h | 29 + arch/x86/include/asm/insn.h | 143 +++++++ arch/x86/lib/Makefile | 13 + arch/x86/lib/inat.c | 78 ++++ arch/x86/lib/insn.c | 464 ++++++++++++++++++++++ arch/x86/lib/x86-opcode-map.txt | 719 ++++++++++++++++++++++++++++++++++ arch/x86/tools/gen-insn-attr-x86.awk | 314 +++++++++++++++ 8 files changed, 1948 insertions(+), 0 deletions(-) create mode 100644 arch/x86/include/asm/inat.h create mode 100644 arch/x86/include/asm/inat_types.h create mode 100644 arch/x86/include/asm/insn.h create mode 100644 arch/x86/lib/inat.c create mode 100644 arch/x86/lib/insn.c create mode 100644 arch/x86/lib/x86-opcode-map.txt create mode 100644 arch/x86/tools/gen-insn-attr-x86.awk
arch/x86/include/asm/inat.h new file +188 -0
@@ -0,0 +1,188 @@ +#ifndef _ASM_X86_INAT_H +#define _ASM_X86_INAT_H +/* +* x86 instruction attributes +* +* Written by Masami Hiramatsu <[email protected]> +* +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation; either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +* +*/ +#include <asm/inat_types.h> + +/* +* Internal bits. Don't use bitmasks directly, because these bits are +* unstable. You should use checking functions. +*/ + +#define INAT_OPCODE_TABLE_SIZE 256 +#define INAT_GROUP_TABLE_SIZE 8 + +/* Legacy instruction prefixes */ +#define INAT_PFX_OPNDSZ 1/* 0x66 */ /* LPFX1 */ +#define INAT_PFX_REPNE 2/* 0xF2 */ /* LPFX2 */ +#define INAT_PFX_REPE 3/* 0xF3 */ /* LPFX3 */ +#define INAT_PFX_LOCK 4/* 0xF0 */ +#define INAT_PFX_CS 5/* 0x2E */ +#define INAT_PFX_DS 6/* 0x3E */ +#define INAT_PFX_ES 7/* 0x26 */ +#define INAT_PFX_FS 8/* 0x64 */ +#define INAT_PFX_GS 9/* 0x65 */ +#define INAT_PFX_SS 10/* 0x36 */ +#define INAT_PFX_ADDRSZ 11/* 0x67 */ + +#define INAT_LPREFIX_MAX 3 + +/* Immediate size */ +#define INAT_IMM_BYTE 1 +#define INAT_IMM_WORD 2 +#define INAT_IMM_DWORD 3 +#define INAT_IMM_QWORD 4 +#define INAT_IMM_PTR 5 +#define INAT_IMM_VWORD32 6 +#define INAT_IMM_VWORD 7 + +/* Legacy prefix */ +#define INAT_PFX_OFFS 0 +#define INAT_PFX_BITS 4 +#define INAT_PFX_MAX ((1 << INAT_PFX_BITS) - 1) +#define INAT_PFX_MASK (INAT_PFX_MAX << INAT_PFX_OFFS) +/* Escape opcodes */ +#define INAT_ESC_OFFS (INAT_PFX_OFFS + INAT_PFX_BITS) +#define INAT_ESC_BITS 2 +#define INAT_ESC_MAX ((1 << INAT_ESC_BITS) - 1) +#define INAT_ESC_MASK (INAT_ESC_MAX << INAT_ESC_OFFS) +/* Group opcodes (1-16) */ +#define INAT_GRP_OFFS (INAT_ESC_OFFS + INAT_ESC_BITS) +#define INAT_GRP_BITS 5 +#define INAT_GRP_MAX ((1 << INAT_GRP_BITS) - 1) +#define INAT_GRP_MASK (INAT_GRP_MAX << INAT_GRP_OFFS) +/* Immediates */ +#define INAT_IMM_OFFS (INAT_GRP_OFFS + INAT_GRP_BITS) +#define INAT_IMM_BITS 3 +#define INAT_IMM_MASK (((1 << INAT_IMM_BITS) - 1) << INAT_IMM_OFFS) +/* Flags */ +#define INAT_FLAG_OFFS (INAT_IMM_OFFS + INAT_IMM_BITS) +#define INAT_REXPFX (1 << INAT_FLAG_OFFS) +#define INAT_MODRM (1 << (INAT_FLAG_OFFS + 1)) +#define INAT_FORCE64 (1 << (INAT_FLAG_OFFS + 2)) +#define INAT_SCNDIMM (1 << (INAT_FLAG_OFFS + 3)) +#define INAT_MOFFSET (1 << (INAT_FLAG_OFFS + 4)) +#define INAT_VARIANT (1 << (INAT_FLAG_OFFS + 5)) +/* Attribute making macros for attribute tables */ +#define INAT_MAKE_PREFIX (pfx) (pfx << INAT_PFX_OFFS) +#define INAT_MAKE_ESCAPE (esc) (esc << INAT_ESC_OFFS) +#define INAT_MAKE_GROUP (grp) ((grp << INAT_GRP_OFFS) | INAT_MODRM) +#define INAT_MAKE_IMM (imm) (imm << INAT_IMM_OFFS) + +/* Attribute search APIs */ +extern insn_attr_t inat_get_opcode_attribute (insn_byte_t opcode); +extern insn_attr_t inat_get_escape_attribute (insn_byte_t opcode, +insn_byte_t last_pfx, +insn_attr_t esc_attr); +extern insn_attr_t inat_get_group_attribute (insn_byte_t modrm, +insn_byte_t last_pfx, +insn_attr_t esc_attr); + +/* Attribute checking functions */ +static inline int inat_is_prefix (insn_attr_t attr) +{ +return attr &INAT_PFX_MASK ; +} + +static inline int inat_is_address_size_prefix (insn_attr_t attr) +{ +return (attr &INAT_PFX_MASK ) ==INAT_PFX_ADDRSZ ; +} + +static inline int inat_is_operand_size_prefix (insn_attr_t attr) +{ +return (attr &INAT_PFX_MASK ) ==INAT_PFX_OPNDSZ ; +} + +static inline int inat_last_prefix_id (insn_attr_t attr) +{ +if ((attr &INAT_PFX_MASK ) >INAT_LPREFIX_MAX ) +return 0 ; +else +return attr &INAT_PFX_MASK ; +} + +static inline int inat_is_escape (insn_attr_t attr) +{ +return attr &INAT_ESC_MASK ; +} + +static inline int inat_escape_id (insn_attr_t attr) +{ +return (attr &INAT_ESC_MASK ) >>INAT_ESC_OFFS ; +} + +static inline int inat_is_group (insn_attr_t attr) +{ +return attr &INAT_GRP_MASK ; +} + +static inline int inat_group_id (insn_attr_t attr) +{ +return (attr &INAT_GRP_MASK ) >>INAT_GRP_OFFS ; +} + +static inline int inat_group_common_attribute (insn_attr_t attr) +{ +return attr & ~INAT_GRP_MASK ; +} + +static inline int inat_has_immediate (insn_attr_t attr) +{ +return attr &INAT_IMM_MASK ; +} + +static inline int inat_immediate_size (insn_attr_t attr) +{ +return (attr &INAT_IMM_MASK ) >>INAT_IMM_OFFS ; +} + +static inline int inat_is_rex_prefix (insn_attr_t attr) +{ +return attr &INAT_REXPFX ; +} + +static inline int inat_has_modrm (insn_attr_t attr) +{ +return attr &INAT_MODRM ; +} + +static inline int inat_is_force64 (insn_attr_t attr) +{ +return attr &INAT_FORCE64 ; +} + +static inline int inat_has_second_immediate (insn_attr_t attr) +{ +return attr &INAT_SCNDIMM ; +} + +static inline int inat_has_moffset (insn_attr_t attr) +{ +return attr &INAT_MOFFSET ; +} + +static inline int inat_has_variant (insn_attr_t attr) +{ +return attr &INAT_VARIANT ; +} + +#endif
arch/x86/include/asm/inat_types.h new file +29 -0
@@ -0,0 +1,29 @@ +#ifndef _ASM_X86_INAT_TYPES_H +#define _ASM_X86_INAT_TYPES_H +/* +* x86 instruction attributes +* +* Written by Masami Hiramatsu <[email protected]> +* +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation; either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +* +*/ + +/* Instruction attributes */ +typedef unsigned int insn_attr_t ; +typedef unsigned char insn_byte_t ; +typedef signed int insn_value_t ; + +#endif
arch/x86/include/asm/insn.h new file +143 -0
143 lines not on this page · raw message
arch/x86/lib/Makefile +13 -0
@@ -2,12 +2,25 @@ # Makefile for x86 specific library files. # +inat_tables_script = $(srctree)/arch/x86/tools/gen-insn-attr-x86.awk +inat_tables_maps = $(srctree)/arch/x86/lib/x86-opcode-map.txt +quiet_cmd_inat_tables = GEN $@ + cmd_inat_tables = $(AWK) -f $(inat_tables_script) $(inat_tables_maps) > $@ + +$(obj)/inat-tables.c: $(inat_tables_script) $(inat_tables_maps) + $(call cmd,inat_tables) + +$(obj)/inat.o: $(obj)/inat-tables.c + +clean-files := inat-tables.c + obj-$(CONFIG_SMP) := msr.o lib-y := delay.o lib-y += thunk_$(BITS).o lib-y += usercopy_$(BITS).o getuser.o putuser.o lib-y += memcpy_$(BITS).o +lib-y += insn.o inat.o ifeq ($(CONFIG_X86_32),y) obj-y += atomic64_32.o
arch/x86/lib/inat.c new file +78 -0
78 lines not on this page · raw message
arch/x86/lib/insn.c new file +464 -0
464 lines not on this page · raw message
arch/x86/lib/x86-opcode-map.txt new file +719 -0
719 lines not on this page · raw message
arch/x86/tools/gen-insn-attr-x86.awk new file +314 -0
314 lines not on this page · raw message
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
Re: [PATCH -tip v14 01/12] x86: instruction decoder API
Quoted 23 lines · Masami Hiramatsu
Add x86 instruction decoder to arch-specific libraries. This decoder can decode x86 instructions used in kernel into prefix, opcode, modrm, sib, displacement and immediates. This can also show the length of instructions.
This version introduces instruction attributes for decoding instructions. The instruction attribute tables are generated from the opcode map file (x86-opcode-map.txt) by the generator script(gen-insn-attr-x86.awk).
Currently, the opcode maps are based on opcode maps in Intel(R) 64 and IA-32 Architectures Software Developers Manual Vol.2: Appendix.A, and consist of below two types of opcode tables.
1-byte/2-bytes/3-bytes opcodes, which has 256 elements, are written as below;
Table: table-name
Referrer: escaped-name
opcode: mnemonic|GrpXXX [operand1[,operand2...]] [(extra1)[,(extra2)...] [| 2nd-mnemonic ...]
(or)
opcode: escape # escaped-name
EndTable
Quoted 9 lines
Group opcodes, which has 8 elements, are written as below;
GrpTable: GrpXXX
reg: mnemonic [operand1[,operand2...]] [(extra1)[,(extra2)...] [| 2nd-mnemonic ...] EndTableThese opcode maps include a few SSE and FP opcodes (for setup), because those opcodes are used in the kernel.
I'm getting the following build error on an old K7 box:
arch/x86/lib/inat.c: In function ‘inat_get_opcode_attribute’:arch/x86/lib/inat.c:29: erreur: ‘inat_primary_table’ undeclared (first use in this function) arch/x86/lib/inat.c:29: erreur: (Each undeclared identifier is reported only once arch/x86/lib/inat.c:29: erreur: for each function it appears in.)
I've attached my config. I haven't such problem on a dual x86-64 box.
#
# Automatically generated make config: don't edit # Linux kernel version: 2.6.31-rc5
# Fri Jun 11 05:59:12 2010
#
# CONFIG_64BIT is not setCONFIG_X86_32=y
# CONFIG_X86_64 is not setCONFIG_X86=yCONFIG_OUTPUT_FORMAT="elf32-i386" CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig" CONFIG_GENERIC_TIME=yCONFIG_GENERIC_CMOS_UPDATE=y CONFIG_CLOCKSOURCE_WATCHDOG=y CONFIG_GENERIC_CLOCKEVENTS=y CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y CONFIG_LOCKDEP_SUPPORT=y CONFIG_STACKTRACE_SUPPORT=y CONFIG_HAVE_LATENCYTOP_SUPPORT=y CONFIG_FAST_CMPXCHG_LOCAL=yCONFIG_MMU=yCONFIG_ZONE_DMA=yCONFIG_GENERIC_ISA_DMA=yCONFIG_GENERIC_IOMAP=yCONFIG_GENERIC_BUG=yCONFIG_GENERIC_HWEIGHT=y CONFIG_ARCH_MAY_HAVE_PC_FDC=y
# CONFIG_RWSEM_GENERIC_SPINLOCK is not set CONFIG_RWSEM_XCHGADD_ALGORITHM=y CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y CONFIG_GENERIC_CALIBRATE_DELAY=y
# CONFIG_GENERIC_TIME_VSYSCALL is not set CONFIG_ARCH_HAS_CPU_RELAX=y CONFIG_ARCH_HAS_DEFAULT_IDLE=y CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y CONFIG_HAVE_SETUP_PER_CPU_AREA=y CONFIG_HAVE_DYNAMIC_PER_CPU_AREA=y
# CONFIG_HAVE_CPUMASK_OF_CPU_MAP is not set CONFIG_ARCH_HIBERNATION_POSSIBLE=y CONFIG_ARCH_SUSPEND_POSSIBLE=y
# CONFIG_ZONE_DMA32 is not set CONFIG_ARCH_POPULATES_NODE_MAP=y
# CONFIG_AUDIT_ARCH is not set CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y CONFIG_GENERIC_HARDIRQS=y CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y CONFIG_GENERIC_IRQ_PROBE=y CONFIG_GENERIC_PENDING_IRQ=y CONFIG_USE_GENERIC_SMP_HELPERS=y CONFIG_X86_32_SMP=yCONFIG_X86_HT=yCONFIG_X86_TRAMPOLINE=yCONFIG_X86_32_LAZY_GS=yCONFIG_KTIME_SCALAR=y CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" CONFIG_CONSTRUCTORS=y
#
# General setup
#CONFIG_EXPERIMENTAL=yCONFIG_LOCK_KERNEL=yCONFIG_INIT_ENV_ARG_LIMIT=32CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not setCONFIG_HAVE_KERNEL_GZIP=yCONFIG_HAVE_KERNEL_BZIP2=yCONFIG_HAVE_KERNEL_LZMA=yCONFIG_KERNEL_GZIP=y
# CONFIG_KERNEL_BZIP2 is not set
# CONFIG_KERNEL_LZMA is not setCONFIG_SWAP=yCONFIG_SYSVIPC=yCONFIG_SYSVIPC_SYSCTL=yCONFIG_POSIX_MQUEUE=yCONFIG_POSIX_MQUEUE_SYSCTL=yCONFIG_BSD_PROCESS_ACCT=yCONFIG_BSD_PROCESS_ACCT_V3=y
# CONFIG_TASKSTATS is not setCONFIG_AUDIT=y
# CONFIG_AUDITSYSCALL is not set
#
# RCU Subsystem
#CONFIG_CLASSIC_RCU=y
# CONFIG_TREE_RCU is not set
# CONFIG_PREEMPT_RCU is not set
# CONFIG_TREE_RCU_TRACE is not set
# CONFIG_PREEMPT_RCU_TRACE is not setCONFIG_IKCONFIG=yCONFIG_IKCONFIG_PROC=yCONFIG_LOG_BUF_SHIFT=17CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
# CONFIG_GROUP_SCHED is not set
# CONFIG_CGROUPS is not setCONFIG_SYSFS_DEPRECATED=yCONFIG_SYSFS_DEPRECATED_V2=yCONFIG_RELAY=yCONFIG_NAMESPACES=y
# CONFIG_UTS_NS is not set
# CONFIG_IPC_NS is not set
# CONFIG_USER_NS is not set
# CONFIG_PID_NS is not set
# CONFIG_NET_NS is not setCONFIG_BLK_DEV_INITRD=yCONFIG_INITRAMFS_SOURCE=""CONFIG_RD_GZIP=yCONFIG_RD_BZIP2=yCONFIG_RD_LZMA=y
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not setCONFIG_SYSCTL=yCONFIG_ANON_INODES=y
# CONFIG_EMBEDDED is not setCONFIG_UID16=yCONFIG_SYSCTL_SYSCALL=yCONFIG_KALLSYMS=yCONFIG_KALLSYMS_ALL=y
# CONFIG_KALLSYMS_EXTRA_PASS is not setCONFIG_HOTPLUG=yCONFIG_PRINTK=yCONFIG_BUG=yCONFIG_ELF_CORE=yCONFIG_PCSPKR_PLATFORM=yCONFIG_BASE_FULL=yCONFIG_FUTEX=yCONFIG_EPOLL=yCONFIG_SIGNALFD=yCONFIG_TIMERFD=yCONFIG_EVENTFD=yCONFIG_SHMEM=yCONFIG_AIO=yCONFIG_HAVE_PERF_COUNTERS=y
#
# Performance Counters
#CONFIG_PERF_COUNTERS=yCONFIG_EVENT_PROFILE=yCONFIG_VM_EVENT_COUNTERS=yCONFIG_PCI_QUIRKS=y
# CONFIG_STRIP_ASM_SYMS is not setCONFIG_COMPAT_BRK=yCONFIG_SLAB=y
# CONFIG_SLUB is not set
# CONFIG_SLOB is not setCONFIG_PROFILING=yCONFIG_TRACEPOINTS=yCONFIG_MARKERS=yCONFIG_OPROFILE=y
# CONFIG_OPROFILE_IBS is not setCONFIG_HAVE_OPROFILE=yCONFIG_KPROBES=yCONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=yCONFIG_KRETPROBES=yCONFIG_HAVE_IOREMAP_PROT=yCONFIG_HAVE_KPROBES=yCONFIG_HAVE_KRETPROBES=yCONFIG_HAVE_ARCH_TRACEHOOK=yCONFIG_HAVE_DMA_ATTRS=yCONFIG_HAVE_DMA_API_DEBUG=y
#
# GCOV-based kernel profiling
#
# CONFIG_GCOV_KERNEL is not set
# CONFIG_SLOW_WORK is not setCONFIG_HAVE_GENERIC_DMA_COHERENT=yCONFIG_SLABINFO=yCONFIG_RT_MUTEXES=yCONFIG_BASE_SMALL=0CONFIG_MODULES=y
# CONFIG_MODULE_FORCE_LOAD is not set
# CONFIG_MODULE_UNLOAD is not set
# CONFIG_MODVERSIONS is not set
# CONFIG_MODULE_SRCVERSION_ALL is not setCONFIG_STOP_MACHINE=yCONFIG_BLOCK=yCONFIG_LBDAF=y
# CONFIG_BLK_DEV_BSG is not set
# CONFIG_BLK_DEV_INTEGRITY is not set
#
# IO Schedulers
#CONFIG_IOSCHED_NOOP=yCONFIG_IOSCHED_AS=yCONFIG_IOSCHED_DEADLINE=yCONFIG_IOSCHED_CFQ=y
# CONFIG_DEFAULT_AS is not set
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_CFQ is not setCONFIG_DEFAULT_NOOP=yCONFIG_DEFAULT_IOSCHED="noop"CONFIG_FREEZER=y
#
# Processor type and features
#CONFIG_TICK_ONESHOT=yCONFIG_NO_HZ=yCONFIG_HIGH_RES_TIMERS=y CONFIG_GENERIC_CLOCKEVENTS_BUILD=y CONFIG_SMP=y
# CONFIG_SPARSE_IRQ is not set CONFIG_X86_MPPARSE=y
# CONFIG_X86_BIGSMP is not set
# CONFIG_X86_EXTENDED_PLATFORM is not set CONFIG_SCHED_OMIT_FRAME_POINTER=y
# CONFIG_PARAVIRT_GUEST is not set
# CONFIG_MEMTEST is not set
# CONFIG_M386 is not set
# CONFIG_M486 is not set
# CONFIG_M586 is not set
# CONFIG_M586TSC is not set
# CONFIG_M586MMX is not set
# CONFIG_M686 is not set
# CONFIG_MPENTIUMII is not set
# CONFIG_MPENTIUMIII is not set
# CONFIG_MPENTIUMM is not set
# CONFIG_MPENTIUM4 is not set
# CONFIG_MK6 is not setCONFIG_MK7=y
# CONFIG_MK8 is not set
# CONFIG_MCRUSOE is not set
# CONFIG_MEFFICEON is not set
# CONFIG_MWINCHIPC6 is not set
# CONFIG_MWINCHIP3D is not set
# CONFIG_MGEODEGX1 is not set
# CONFIG_MGEODE_LX is not set
# CONFIG_MCYRIXIII is not set
# CONFIG_MVIAC3_2 is not set
# CONFIG_MVIAC7 is not set
# CONFIG_MPSC is not set
# CONFIG_MCORE2 is not set
# CONFIG_GENERIC_CPU is not set
# CONFIG_X86_GENERIC is not set CONFIG_X86_CPU=y CONFIG_X86_L1_CACHE_BYTES=64 CONFIG_X86_INTERNODE_CACHE_BYTES=64 CONFIG_X86_CMPXCHG=y CONFIG_X86_L1_CACHE_SHIFT=6 CONFIG_X86_XADD=yCONFIG_X86_WP_WORKS_OK=yCONFIG_X86_INVLPG=yCONFIG_X86_BSWAP=yCONFIG_X86_POPAD_OK=y CONFIG_X86_INTEL_USERCOPY=y CONFIG_X86_USE_PPRO_CHECKSUM=y CONFIG_X86_USE_3DNOW=yCONFIG_X86_TSC=yCONFIG_X86_CMOV=y CONFIG_X86_MINIMUM_CPU_FAMILY=4 CONFIG_X86_DEBUGCTLMSR=y CONFIG_CPU_SUP_INTEL=y CONFIG_CPU_SUP_CYRIX_32=y CONFIG_CPU_SUP_AMD=y CONFIG_CPU_SUP_CENTAUR=y CONFIG_CPU_SUP_TRANSMETA_32=y CONFIG_CPU_SUP_UMC_32=y
# CONFIG_X86_DS is not set CONFIG_HPET_TIMER=yCONFIG_DMI=y
# CONFIG_IOMMU_HELPER is not set
# CONFIG_IOMMU_API is not set CONFIG_NR_CPUS=2CONFIG_SCHED_SMT=yCONFIG_SCHED_MC=y
# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT_VOLUNTARY is not set CONFIG_PREEMPT=yCONFIG_X86_LOCAL_APIC=yCONFIG_X86_IO_APIC=y
# CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS is not set # CONFIG_X86_MCE is not set
# CONFIG_X86_ANCIENT_MCE is not set CONFIG_VM86=y
# CONFIG_TOSHIBA is not set
# CONFIG_I8K is not set CONFIG_X86_REBOOTFIXUPS=yCONFIG_MICROCODE=yCONFIG_MICROCODE_INTEL=y
# CONFIG_MICROCODE_AMD is not set CONFIG_MICROCODE_OLD_INTERFACE=y CONFIG_X86_MSR=yCONFIG_X86_CPUID=y
# CONFIG_X86_CPU_DEBUG is not set CONFIG_NOHIGHMEM=y
# CONFIG_HIGHMEM4G is not set
# CONFIG_HIGHMEM64G is not set CONFIG_PAGE_OFFSET=0xC0000000
# CONFIG_X86_PAE is not set
# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set CONFIG_ARCH_FLATMEM_ENABLE=y CONFIG_ARCH_SPARSEMEM_ENABLE=y CONFIG_ARCH_SELECT_MEMORY_MODEL=y CONFIG_SELECT_MEMORY_MODEL=y CONFIG_FLATMEM_MANUAL=y
# CONFIG_DISCONTIGMEM_MANUAL is not set
# CONFIG_SPARSEMEM_MANUAL is not set CONFIG_FLATMEM=yCONFIG_FLAT_NODE_MEM_MAP=y CONFIG_SPARSEMEM_STATIC=y CONFIG_PAGEFLAGS_EXTENDED=y CONFIG_SPLIT_PTLOCK_CPUS=4
# CONFIG_PHYS_ADDR_T_64BIT is not set CONFIG_ZONE_DMA_FLAG=1CONFIG_BOUNCE=yCONFIG_VIRT_TO_BUS=yCONFIG_HAVE_MLOCK=y CONFIG_HAVE_MLOCKED_PAGE_BIT=y CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set CONFIG_X86_RESERVE_LOW_64K=y
# CONFIG_MATH_EMULATION is not set CONFIG_MTRR=yCONFIG_MTRR_SANITIZER=y CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=0 CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1 # CONFIG_X86_PAT is not setCONFIG_EFI=yCONFIG_SECCOMP=y
# CONFIG_CC_STACKPROTECTOR is not set
# CONFIG_HZ_100 is not set
# CONFIG_HZ_250 is not set
# CONFIG_HZ_300 is not setCONFIG_HZ_1000=yCONFIG_HZ=1000CONFIG_SCHED_HRTICK=y
# CONFIG_KEXEC is not set CONFIG_PHYSICAL_START=0x1000000
# CONFIG_RELOCATABLE is not set CONFIG_PHYSICAL_ALIGN=0x100000 CONFIG_HOTPLUG_CPU=yCONFIG_COMPAT_VDSO=yCONFIG_CMDLINE_BOOL=yCONFIG_CMDLINE=""
# CONFIG_CMDLINE_OVERRIDE is not set
#
# Power management and ACPI options
#CONFIG_PM=yCONFIG_PM_DEBUG=y
# CONFIG_PM_VERBOSE is not setCONFIG_CAN_PM_TRACE=y
# CONFIG_PM_TRACE_RTC is not setCONFIG_PM_SLEEP_SMP=yCONFIG_PM_SLEEP=yCONFIG_SUSPEND=yCONFIG_SUSPEND_FREEZER=y
# CONFIG_HIBERNATION is not setCONFIG_ACPI=yCONFIG_ACPI_SLEEP=y
# CONFIG_ACPI_PROCFS is not setCONFIG_ACPI_PROCFS_POWER=yCONFIG_ACPI_SYSFS_POWER=yCONFIG_ACPI_PROC_EVENT=yCONFIG_ACPI_AC=yCONFIG_ACPI_BATTERY=yCONFIG_ACPI_BUTTON=yCONFIG_ACPI_FAN=y
# CONFIG_ACPI_DOCK is not setCONFIG_ACPI_PROCESSOR=yCONFIG_ACPI_HOTPLUG_CPU=yCONFIG_ACPI_THERMAL=y
# CONFIG_ACPI_CUSTOM_DSDT is not setCONFIG_ACPI_BLACKLIST_YEAR=2000
# CONFIG_ACPI_DEBUG is not set
# CONFIG_ACPI_PCI_SLOT is not setCONFIG_X86_PM_TIMER=yCONFIG_ACPI_CONTAINER=yCONFIG_ACPI_SBS=yCONFIG_X86_APM_BOOT=yCONFIG_APM=y
# CONFIG_APM_IGNORE_USER_SUSPEND is not set
# CONFIG_APM_DO_ENABLE is not set
# CONFIG_APM_CPU_IDLE is not set
# CONFIG_APM_DISPLAY_BLANK is not set
# CONFIG_APM_ALLOW_INTS is not set
#
# CPU Frequency scaling
#
# CONFIG_CPU_FREQ is not setCONFIG_CPU_IDLE=yCONFIG_CPU_IDLE_GOV_LADDER=yCONFIG_CPU_IDLE_GOV_MENU=y
#
# Bus options (PCI etc.)
#CONFIG_PCI=y
# CONFIG_PCI_GOBIOS is not set
# CONFIG_PCI_GOMMCONFIG is not set
# CONFIG_PCI_GODIRECT is not set
# CONFIG_PCI_GOOLPC is not setCONFIG_PCI_GOANY=yCONFIG_PCI_BIOS=yCONFIG_PCI_DIRECT=yCONFIG_PCI_MMCONFIG=yCONFIG_PCI_DOMAINS=yCONFIG_PCIEPORTBUS=y
# CONFIG_HOTPLUG_PCI_PCIE is not setCONFIG_PCIEAER=y
# CONFIG_PCIE_ECRC is not set
# CONFIG_PCIEAER_INJECT is not set
# CONFIG_PCIEASPM is not setCONFIG_ARCH_SUPPORTS_MSI=y
# CONFIG_PCI_MSI is not setCONFIG_PCI_LEGACY=y
# CONFIG_PCI_DEBUG is not setCONFIG_PCI_STUB=yCONFIG_HT_IRQ=y
# CONFIG_PCI_IOV is not setCONFIG_ISA_DMA_API=y
# CONFIG_ISA is not set
# CONFIG_MCA is not set
# CONFIG_SCx200 is not set
# CONFIG_OLPC is not set
# CONFIG_PCCARD is not setCONFIG_HOTPLUG_PCI=y
# CONFIG_HOTPLUG_PCI_FAKE is not set
# CONFIG_HOTPLUG_PCI_COMPAQ is not set
# CONFIG_HOTPLUG_PCI_IBM is not setCONFIG_HOTPLUG_PCI_ACPI=y
# CONFIG_HOTPLUG_PCI_ACPI_IBM is not set
# CONFIG_HOTPLUG_PCI_CPCI is not setCONFIG_HOTPLUG_PCI_SHPC=y
#
# Executable file formats / Emulations
#CONFIG_BINFMT_ELF=y
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not setCONFIG_HAVE_AOUT=yCONFIG_BINFMT_AOUT=yCONFIG_BINFMT_MISC=yCONFIG_HAVE_ATOMIC_IOMAP=yCONFIG_NET=y
#
# Networking options
#CONFIG_PACKET=yCONFIG_PACKET_MMAP=yCONFIG_UNIX=yCONFIG_XFRM=yCONFIG_XFRM_USER=y
# CONFIG_XFRM_SUB_POLICY is not set
# CONFIG_XFRM_MIGRATE is not set
# CONFIG_XFRM_STATISTICS is not setCONFIG_XFRM_IPCOMP=yCONFIG_NET_KEY=y
# CONFIG_NET_KEY_MIGRATE is not setCONFIG_INET=yCONFIG_IP_MULTICAST=y
# CONFIG_IP_ADVANCED_ROUTER is not setCONFIG_IP_FIB_HASH=y
# CONFIG_IP_PNP is not setCONFIG_NET_IPIP=yCONFIG_NET_IPGRE=yCONFIG_NET_IPGRE_BROADCAST=y
# CONFIG_IP_MROUTE is not set
# CONFIG_ARPD is not setCONFIG_SYN_COOKIES=yCONFIG_INET_AH=yCONFIG_INET_ESP=yCONFIG_INET_IPCOMP=yCONFIG_INET_XFRM_TUNNEL=yCONFIG_INET_TUNNEL=yCONFIG_INET_XFRM_MODE_TRANSPORT=yCONFIG_INET_XFRM_MODE_TUNNEL=yCONFIG_INET_XFRM_MODE_BEET=y
# CONFIG_INET_LRO is not setCONFIG_INET_DIAG=yCONFIG_INET_TCP_DIAG=y
# CONFIG_TCP_CONG_ADVANCED is not setCONFIG_TCP_CONG_CUBIC=yCONFIG_DEFAULT_TCP_CONG="cubic"CONFIG_TCP_MD5SIG=y
# CONFIG_IPV6 is not set
# CONFIG_NETLABEL is not setCONFIG_NETWORK_SECMARK=y
# CONFIG_NETFILTER is not set
# CONFIG_IP_DCCP is not setCONFIG_IP_SCTP=y
# CONFIG_SCTP_DBG_MSG is not set
# CONFIG_SCTP_DBG_OBJCNT is not set
# CONFIG_SCTP_HMAC_NONE is not set
# CONFIG_SCTP_HMAC_SHA1 is not setCONFIG_SCTP_HMAC_MD5=y
# CONFIG_TIPC is not set
# CONFIG_ATM is not set
# CONFIG_BRIDGE is not set
# CONFIG_NET_DSA is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
# CONFIG_LLC2 is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
# CONFIG_PHONET is not set
# CONFIG_IEEE802154 is not set
# CONFIG_NET_SCHED is not set
# CONFIG_DCB is not set
#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_NET_TCPPROBE is not set
# CONFIG_NET_DROP_MONITOR is not set
# CONFIG_HAMRADIO is not set
# CONFIG_CAN is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
# CONFIG_AF_RXRPC is not set
# CONFIG_WIRELESS is not set
# CONFIG_WIMAX is not setCONFIG_RFKILL=yCONFIG_RFKILL_INPUT=y
# CONFIG_NET_9P is not set
#
# Device Drivers
#
#
# Generic Driver Options
#CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"CONFIG_STANDALONE=yCONFIG_PREVENT_FIRMWARE_BUILD=yCONFIG_FW_LOADER=yCONFIG_FIRMWARE_IN_KERNEL=yCONFIG_EXTRA_FIRMWARE=""
# CONFIG_DEBUG_DRIVER is not set
# CONFIG_DEBUG_DEVRES is not set
# CONFIG_SYS_HYPERVISOR is not set
# CONFIG_CONNECTOR is not set
# CONFIG_MTD is not set
# CONFIG_PARPORT is not setCONFIG_PNP=yCONFIG_PNP_DEBUG_MESSAGES=y
#
# Protocols
#CONFIG_PNPACPI=yCONFIG_BLK_DEV=y
# CONFIG_BLK_DEV_FD is not set
# CONFIG_BLK_CPQ_DA is not set
# CONFIG_BLK_CPQ_CISS_DA is not set
# CONFIG_BLK_DEV_DAC960 is not set
# CONFIG_BLK_DEV_UMEM is not set
# CONFIG_BLK_DEV_COW_COMMON is not setCONFIG_BLK_DEV_LOOP=yCONFIG_BLK_DEV_CRYPTOLOOP=yCONFIG_BLK_DEV_NBD=y
# CONFIG_BLK_DEV_SX8 is not setCONFIG_BLK_DEV_RAM=yCONFIG_BLK_DEV_RAM_COUNT=16CONFIG_BLK_DEV_RAM_SIZE=65536
# CONFIG_BLK_DEV_XIP is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
# CONFIG_BLK_DEV_HD is not set
# CONFIG_MISC_DEVICES is not setCONFIG_HAVE_IDE=yCONFIG_IDE=y
#
# Please see Documentation/ide/ide.txt for help/info on IDE drives #CONFIG_IDE_XFER_MODE=yCONFIG_IDE_TIMINGS=y
# CONFIG_BLK_DEV_IDE_SATA is not setCONFIG_IDE_GD=yCONFIG_IDE_GD_ATA=y
# CONFIG_IDE_GD_ATAPI is not set
# CONFIG_BLK_DEV_IDECD is not set
# CONFIG_BLK_DEV_IDETAPE is not set CONFIG_BLK_DEV_IDEACPI=y
# CONFIG_IDE_TASK_IOCTL is not setCONFIG_IDE_PROC_FS=y
#
# IDE chipset support/bugfixes
#
# CONFIG_IDE_GENERIC is not set
# CONFIG_BLK_DEV_PLATFORM is not set
# CONFIG_BLK_DEV_CMD640 is not setCONFIG_BLK_DEV_IDEPNP=yCONFIG_BLK_DEV_IDEDMA_SFF=y
#
# PCI IDE chipsets support
#CONFIG_BLK_DEV_IDEPCI=yCONFIG_IDEPCI_PCIBUS_ORDER=y
# CONFIG_BLK_DEV_GENERIC is not set
# CONFIG_BLK_DEV_OPTI621 is not set
# CONFIG_BLK_DEV_RZ1000 is not setCONFIG_BLK_DEV_IDEDMA_PCI=y
# CONFIG_BLK_DEV_AEC62XX is not set
# CONFIG_BLK_DEV_ALI15X3 is not set
# CONFIG_BLK_DEV_AMD74XX is not set
# CONFIG_BLK_DEV_ATIIXP is not set
# CONFIG_BLK_DEV_CMD64X is not set
# CONFIG_BLK_DEV_TRIFLEX is not set
# CONFIG_BLK_DEV_CS5520 is not set
# CONFIG_BLK_DEV_CS5530 is not set
# CONFIG_BLK_DEV_CS5535 is not set
# CONFIG_BLK_DEV_CS5536 is not set
# CONFIG_BLK_DEV_HPT366 is not set
# CONFIG_BLK_DEV_JMICRON is not set
# CONFIG_BLK_DEV_SC1200 is not set
# CONFIG_BLK_DEV_PIIX is not set
# CONFIG_BLK_DEV_IT8172 is not set
# CONFIG_BLK_DEV_IT8213 is not set
# CONFIG_BLK_DEV_IT821X is not set
# CONFIG_BLK_DEV_NS87415 is not set
# CONFIG_BLK_DEV_PDC202XX_OLD is not set
# CONFIG_BLK_DEV_PDC202XX_NEW is not set
# CONFIG_BLK_DEV_SVWKS is not set
# CONFIG_BLK_DEV_SIIMAGE is not set
# CONFIG_BLK_DEV_SIS5513 is not set
# CONFIG_BLK_DEV_SLC90E66 is not set
# CONFIG_BLK_DEV_TRM290 is not setCONFIG_BLK_DEV_VIA82CXXX=y
# CONFIG_BLK_DEV_TC86C001 is not setCONFIG_BLK_DEV_IDEDMA=y
#
# SCSI device support
#
# CONFIG_RAID_ATTRS is not setCONFIG_SCSI=yCONFIG_SCSI_DMA=yCONFIG_SCSI_TGT=yCONFIG_SCSI_NETLINK=yCONFIG_SCSI_PROC_FS=y
#
# SCSI support type (disk, tape, CD-ROM)
#CONFIG_BLK_DEV_SD=y
# CONFIG_CHR_DEV_ST is not set
# CONFIG_CHR_DEV_OSST is not set
# CONFIG_BLK_DEV_SR is not setCONFIG_CHR_DEV_SG=y
# CONFIG_CHR_DEV_SCH is not set
# CONFIG_SCSI_MULTI_LUN is not set
# CONFIG_SCSI_CONSTANTS is not set
# CONFIG_SCSI_LOGGING is not set
# CONFIG_SCSI_SCAN_ASYNC is not setCONFIG_SCSI_WAIT_SCAN=m
#
# SCSI Transports
#CONFIG_SCSI_SPI_ATTRS=yCONFIG_SCSI_FC_ATTRS=y
# CONFIG_SCSI_FC_TGT_ATTRS is not setCONFIG_SCSI_ISCSI_ATTRS=yCONFIG_SCSI_SAS_ATTRS=yCONFIG_SCSI_SAS_LIBSAS=yCONFIG_SCSI_SAS_HOST_SMP=y
# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set
# CONFIG_SCSI_SRP_ATTRS is not set
# CONFIG_SCSI_LOWLEVEL is not set
# CONFIG_SCSI_DH is not set
# CONFIG_SCSI_OSD_INITIATOR is not set
# CONFIG_ATA is not set
# CONFIG_MD is not set
# CONFIG_FUSION is not set
#
# IEEE 1394 (FireWire) support
#
#
# You can enable one or both FireWire driver stacks. #
#
# See the help texts for more information. #
# CONFIG_FIREWIRE is not set
# CONFIG_IEEE1394 is not set
# CONFIG_I2O is not set
# CONFIG_MACINTOSH_DRIVERS is not set CONFIG_NETDEVICES=yCONFIG_DUMMY=yCONFIG_BONDING=y
# CONFIG_MACVLAN is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
# CONFIG_VETH is not set
# CONFIG_NET_SB1000 is not set
# CONFIG_ARCNET is not set
# CONFIG_PHYLIB is not set CONFIG_NET_ETHERNET=yCONFIG_MII=y
# CONFIG_HAPPYMEAL is not set
# CONFIG_SUNGEM is not set
# CONFIG_CASSINI is not set
# CONFIG_NET_VENDOR_3COM is not set
# CONFIG_ETHOC is not set
# CONFIG_DNET is not set CONFIG_NET_TULIP=y
# CONFIG_DE2104X is not setCONFIG_TULIP=yCONFIG_TULIP_MWI=yCONFIG_TULIP_MMIO=y
# CONFIG_TULIP_NAPI is not set
# CONFIG_DE4X5 is not set
# CONFIG_WINBOND_840 is not set
# CONFIG_DM9102 is not set
# CONFIG_ULI526X is not set
# CONFIG_HP100 is not set
# CONFIG_IBM_NEW_EMAC_ZMII is not set
# CONFIG_IBM_NEW_EMAC_RGMII is not set
# CONFIG_IBM_NEW_EMAC_TAH is not set
# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set # CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set # CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set # CONFIG_NET_PCI is not set
# CONFIG_B44 is not set
# CONFIG_KS8842 is not set
# CONFIG_ATL2 is not set
# CONFIG_NETDEV_1000 is not set
# CONFIG_NETDEV_10000 is not set
# CONFIG_TR is not set
#
# Wireless LAN
#
# CONFIG_WLAN_PRE80211 is not set
# CONFIG_WLAN_80211 is not set
#
# Enable WiMAX (Networking options) to see the WiMAX drivers #
# CONFIG_WAN is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
# CONFIG_NET_FC is not set
# CONFIG_NETCONSOLE is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
# CONFIG_ISDN is not set
# CONFIG_PHONE is not set
#
# Input device support
#CONFIG_INPUT=yCONFIG_INPUT_FF_MEMLESS=yCONFIG_INPUT_POLLDEV=y
#
# Userland interfaces
#CONFIG_INPUT_MOUSEDEV=y
# CONFIG_INPUT_MOUSEDEV_PSAUX is not setCONFIG_INPUT_MOUSEDEV_SCREEN_X=1024CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
# CONFIG_INPUT_JOYDEV is not setCONFIG_INPUT_EVDEV=y
# CONFIG_INPUT_EVBUG is not set
#
# Input Device Drivers
#CONFIG_INPUT_KEYBOARD=yCONFIG_KEYBOARD_ATKBD=yCONFIG_KEYBOARD_LKKBD=y
# CONFIG_KEYBOARD_LM8323 is not setCONFIG_KEYBOARD_NEWTON=yCONFIG_KEYBOARD_STOWAWAY=yCONFIG_KEYBOARD_SUNKBD=yCONFIG_KEYBOARD_XTKBD=y
# CONFIG_INPUT_MOUSE is not set
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TABLET is not set
# CONFIG_INPUT_TOUCHSCREEN is not setCONFIG_INPUT_MISC=yCONFIG_INPUT_PCSPKR=y
# CONFIG_INPUT_APANEL is not setCONFIG_INPUT_WISTRON_BTNS=y
# CONFIG_INPUT_ATLAS_BTNS is not setCONFIG_INPUT_UINPUT=y
#
# Hardware I/O ports
#CONFIG_SERIO=yCONFIG_SERIO_I8042=yCONFIG_SERIO_SERPORT=yCONFIG_SERIO_CT82C710=yCONFIG_SERIO_PCIPS2=yCONFIG_SERIO_LIBPS2=yCONFIG_SERIO_RAW=yCONFIG_GAMEPORT=yCONFIG_GAMEPORT_NS558=yCONFIG_GAMEPORT_L4=yCONFIG_GAMEPORT_EMU10K1=yCONFIG_GAMEPORT_FM801=y
#
# Character devices
#CONFIG_VT=yCONFIG_CONSOLE_TRANSLATIONS=yCONFIG_VT_CONSOLE=yCONFIG_HW_CONSOLE=yCONFIG_VT_HW_CONSOLE_BINDING=yCONFIG_DEVKMEM=yCONFIG_SERIAL_NONSTANDARD=y
# CONFIG_COMPUTONE is not set
# CONFIG_ROCKETPORT is not set
# CONFIG_CYCLADES is not set
# CONFIG_DIGIEPCA is not set
# CONFIG_MOXA_INTELLIO is not set
# CONFIG_MOXA_SMARTIO is not set
# CONFIG_ISI is not set
# CONFIG_SYNCLINK is not set
# CONFIG_SYNCLINKMP is not set
# CONFIG_SYNCLINK_GT is not set
# CONFIG_N_HDLC is not set
# CONFIG_RISCOM8 is not set
# CONFIG_SPECIALIX is not set
# CONFIG_SX is not set
# CONFIG_RIO is not set
# CONFIG_STALDRV is not set
# CONFIG_NOZOMI is not set
#
# Serial drivers
#
# CONFIG_SERIAL_8250 is not setCONFIG_FIX_EARLYCON_MEM=y
#
# Non-8250 serial port support
#
# CONFIG_SERIAL_JSM is not setCONFIG_UNIX98_PTYS=y
# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not setCONFIG_LEGACY_PTYS=yCONFIG_LEGACY_PTY_COUNT=256
# CONFIG_IPMI_HANDLER is not set
# CONFIG_HW_RANDOM is not setCONFIG_NVRAM=y
# CONFIG_RTC is not set
# CONFIG_GEN_RTC is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
# CONFIG_SONYPI is not set
# CONFIG_MWAVE is not set
# CONFIG_PC8736x_GPIO is not set
# CONFIG_NSC_GPIO is not set
# CONFIG_CS5535_GPIO is not set
# CONFIG_RAW_DRIVER is not setCONFIG_HPET=yCONFIG_HPET_MMAP=y
# CONFIG_HANGCHECK_TIMER is not set
# CONFIG_TCG_TPM is not set
# CONFIG_TELCLOCK is not setCONFIG_DEVPORT=yCONFIG_I2C=yCONFIG_I2C_BOARDINFO=y
# CONFIG_I2C_CHARDEV is not set
# CONFIG_I2C_HELPER_AUTO is not set
#
# I2C Algorithms
#CONFIG_I2C_ALGOBIT=y
# CONFIG_I2C_ALGOPCF is not set
# CONFIG_I2C_ALGOPCA is not set
#
# I2C Hardware Bus support
#
#
# PC SMBus host controller drivers
#
# CONFIG_I2C_ALI1535 is not set
# CONFIG_I2C_ALI1563 is not set
# CONFIG_I2C_ALI15X3 is not set
# CONFIG_I2C_AMD756 is not set
# CONFIG_I2C_AMD8111 is not set
# CONFIG_I2C_I801 is not set
# CONFIG_I2C_ISCH is not set
# CONFIG_I2C_PIIX4 is not set
# CONFIG_I2C_NFORCE2 is not set
# CONFIG_I2C_SIS5595 is not set
# CONFIG_I2C_SIS630 is not set
# CONFIG_I2C_SIS96X is not setCONFIG_I2C_VIA=yCONFIG_I2C_VIAPRO=y
#
# I2C system bus drivers (mostly embedded / system-on-chip) #
# CONFIG_I2C_OCORES is not set
# CONFIG_I2C_SIMTEC is not set
#
# External I2C/SMBus adapter drivers
#
# CONFIG_I2C_PARPORT_LIGHT is not set
# CONFIG_I2C_TAOS_EVM is not set
#
# Graphics adapter I2C/DDC channel drivers
#
# CONFIG_I2C_VOODOO3 is not set
#
# Other I2C/SMBus bus drivers
#
# CONFIG_I2C_PCA_PLATFORM is not set
# CONFIG_I2C_STUB is not set
# CONFIG_SCx200_ACB is not set
#
# Miscellaneous I2C Chip support
#
# CONFIG_DS1682 is not set
# CONFIG_SENSORS_PCF8574 is not set
# CONFIG_PCF8575 is not set
# CONFIG_SENSORS_PCA9539 is not set
# CONFIG_SENSORS_TSL2550 is not set
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not set
# CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_I2C_DEBUG_CHIP is not set
# CONFIG_SPI is not set
#
# PPS support
#
# CONFIG_PPS is not setCONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
# CONFIG_GPIOLIB is not set
# CONFIG_W1 is not setCONFIG_POWER_SUPPLY=y
# CONFIG_POWER_SUPPLY_DEBUG is not set
# CONFIG_PDA_POWER is not set
# CONFIG_BATTERY_DS2760 is not set
# CONFIG_BATTERY_DS2782 is not set
# CONFIG_BATTERY_BQ27x00 is not set
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_HWMON is not setCONFIG_THERMAL=y
# CONFIG_WATCHDOG is not setCONFIG_SSB_POSSIBLE=y
#
# Sonics Silicon Backplane
#
# CONFIG_SSB is not set
#
# Multifunction device drivers
#
# CONFIG_MFD_CORE is not set
# CONFIG_MFD_SM501 is not set
# CONFIG_HTC_PASIC3 is not set
# CONFIG_TWL4030_CORE is not set
# CONFIG_MFD_TMIO is not set
# CONFIG_PMIC_DA903X is not set
# CONFIG_MFD_WM8400 is not set
# CONFIG_MFD_WM8350_I2C is not set
# CONFIG_MFD_PCF50633 is not set
# CONFIG_AB3100_CORE is not set
# CONFIG_REGULATOR is not set
# CONFIG_MEDIA_SUPPORT is not set
#
# Graphics support
#CONFIG_AGP=y
# CONFIG_AGP_ALI is not set
# CONFIG_AGP_ATI is not set
# CONFIG_AGP_AMD is not set
# CONFIG_AGP_AMD64 is not set
# CONFIG_AGP_INTEL is not setCONFIG_AGP_NVIDIA=y
# CONFIG_AGP_SIS is not set
# CONFIG_AGP_SWORKS is not setCONFIG_AGP_VIA=y
# CONFIG_AGP_EFFICEON is not setCONFIG_DRM=yCONFIG_DRM_TDFX=yCONFIG_DRM_R128=yCONFIG_DRM_RADEON=yCONFIG_DRM_MGA=yCONFIG_DRM_SIS=yCONFIG_DRM_VIA=yCONFIG_DRM_SAVAGE=yCONFIG_VGASTATE=y
# CONFIG_VIDEO_OUTPUT_CONTROL is not setCONFIG_FB=yCONFIG_FIRMWARE_EDID=yCONFIG_FB_DDC=yCONFIG_FB_BOOT_VESA_SUPPORT=yCONFIG_FB_CFB_FILLRECT=yCONFIG_FB_CFB_COPYAREA=yCONFIG_FB_CFB_IMAGEBLIT=y
# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
# CONFIG_FB_SYS_FILLRECT is not set
# CONFIG_FB_SYS_COPYAREA is not set
# CONFIG_FB_SYS_IMAGEBLIT is not set
# CONFIG_FB_FOREIGN_ENDIAN is not set
# CONFIG_FB_SYS_FOPS is not set
# CONFIG_FB_SVGALIB is not set
# CONFIG_FB_MACMODES is not setCONFIG_FB_BACKLIGHT=yCONFIG_FB_MODE_HELPERS=yCONFIG_FB_TILEBLITTING=y
#
# Frame buffer hardware drivers
#
# CONFIG_FB_CIRRUS is not set
# CONFIG_FB_PM2 is not set
# CONFIG_FB_CYBER2000 is not set
# CONFIG_FB_ARC is not set
# CONFIG_FB_ASILIANT is not set
# CONFIG_FB_IMSTT is not setCONFIG_FB_VGA16=yCONFIG_FB_VESA=y
# CONFIG_FB_EFI is not set
# CONFIG_FB_N411 is not set
# CONFIG_FB_HGA is not set
# CONFIG_FB_S1D13XXX is not setCONFIG_FB_NVIDIA=yCONFIG_FB_NVIDIA_I2C=y
# CONFIG_FB_NVIDIA_DEBUG is not setCONFIG_FB_NVIDIA_BACKLIGHT=y
# CONFIG_FB_RIVA is not set
# CONFIG_FB_LE80578 is not set
# CONFIG_FB_MATROX is not set
# CONFIG_FB_RADEON is not set
# CONFIG_FB_ATY128 is not set
# CONFIG_FB_ATY is not set
# CONFIG_FB_S3 is not set
# CONFIG_FB_SAVAGE is not set
# CONFIG_FB_SIS is not set
# CONFIG_FB_VIA is not set
# CONFIG_FB_NEOMAGIC is not set
# CONFIG_FB_KYRO is not set
# CONFIG_FB_3DFX is not set
# CONFIG_FB_VOODOO1 is not set
# CONFIG_FB_VT8623 is not set
# CONFIG_FB_TRIDENT is not set
# CONFIG_FB_ARK is not set
# CONFIG_FB_PM3 is not set
# CONFIG_FB_CARMINE is not set
# CONFIG_FB_GEODE is not set
# CONFIG_FB_VIRTUAL is not set
# CONFIG_FB_METRONOME is not set
# CONFIG_FB_MB862XX is not set
# CONFIG_FB_BROADSHEET is not setCONFIG_BACKLIGHT_LCD_SUPPORT=y
# CONFIG_LCD_CLASS_DEVICE is not setCONFIG_BACKLIGHT_CLASS_DEVICE=y
# CONFIG_BACKLIGHT_GENERIC is not set
# CONFIG_BACKLIGHT_PROGEAR is not set
# CONFIG_BACKLIGHT_MBP_NVIDIA is not set
# CONFIG_BACKLIGHT_SAHARA is not set
#
# Display device support
#CONFIG_DISPLAY_SUPPORT=y
#
# Display hardware drivers
#
#
# Console display driver support
#CONFIG_VGA_CONSOLE=yCONFIG_VGACON_SOFT_SCROLLBACK=yCONFIG_VGACON_SOFT_SCROLLBACK_SIZE=64CONFIG_DUMMY_CONSOLE=yCONFIG_FRAMEBUFFER_CONSOLE=yCONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=yCONFIG_FRAMEBUFFER_CONSOLE_ROTATION=yCONFIG_FONTS=y
# CONFIG_FONT_8x8 is not set
CONFIG_FONT_8x16=y
# CONFIG_FONT_6x11 is not set
# CONFIG_FONT_7x14 is not set
# CONFIG_FONT_PEARL_8x8 is not set
# CONFIG_FONT_ACORN_8x8 is not set
# CONFIG_FONT_MINI_4x6 is not set
# CONFIG_FONT_SUN8x16 is not set
# CONFIG_FONT_SUN12x22 is not set
# CONFIG_FONT_10x18 is not setCONFIG_LOGO=y
# CONFIG_LOGO_LINUX_MONO is not set
# CONFIG_LOGO_LINUX_VGA16 is not setCONFIG_LOGO_LINUX_CLUT224=y
# CONFIG_SOUND is not set
# CONFIG_HID_SUPPORT is not set
# CONFIG_USB_SUPPORT is not set
# CONFIG_UWB is not set
# CONFIG_MMC is not set
# CONFIG_MEMSTICK is not setCONFIG_NEW_LEDS=yCONFIG_LEDS_CLASS=y
#
# LED drivers
#
# CONFIG_LEDS_ALIX2 is not set
# CONFIG_LEDS_PCA9532 is not set
# CONFIG_LEDS_LP3944 is not set
# CONFIG_LEDS_CLEVO_MAIL is not set
# CONFIG_LEDS_PCA955X is not set
# CONFIG_LEDS_BD2802 is not set
#
# LED Triggers
#
# CONFIG_LEDS_TRIGGERS is not set
# CONFIG_ACCESSIBILITY is not set
# CONFIG_INFINIBAND is not set
# CONFIG_EDAC is not set
# CONFIG_RTC_CLASS is not set
# CONFIG_DMADEVICES is not set
# CONFIG_AUXDISPLAY is not set
# CONFIG_UIO is not set
#
# TI VLYNQ
#
# CONFIG_STAGING is not set
# CONFIG_X86_PLATFORM_DEVICES is not set
#
# Firmware Drivers
#
# CONFIG_EDD is not setCONFIG_FIRMWARE_MEMMAP=yCONFIG_EFI_VARS=yCONFIG_DELL_RBU=y
# CONFIG_DCDBAS is not setCONFIG_DMIID=y
# CONFIG_ISCSI_IBFT_FIND is not set
#
# File systems
#
# CONFIG_EXT2_FS is not setCONFIG_EXT3_FS=y
# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not setCONFIG_EXT3_FS_XATTR=yCONFIG_EXT3_FS_POSIX_ACL=yCONFIG_EXT3_FS_SECURITY=y
# CONFIG_EXT4_FS is not setCONFIG_JBD=y
# CONFIG_JBD_DEBUG is not setCONFIG_FS_MBCACHE=yCONFIG_REISERFS_FS=yCONFIG_REISERFS_CHECK=y
# CONFIG_REISERFS_PROC_INFO is not setCONFIG_REISERFS_FS_XATTR=yCONFIG_REISERFS_FS_POSIX_ACL=yCONFIG_REISERFS_FS_SECURITY=y
# CONFIG_JFS_FS is not setCONFIG_FS_POSIX_ACL=y
# CONFIG_XFS_FS is not set
# CONFIG_GFS2_FS is not set
# CONFIG_OCFS2_FS is not set
# CONFIG_BTRFS_FS is not setCONFIG_FILE_LOCKING=yCONFIG_FSNOTIFY=yCONFIG_DNOTIFY=yCONFIG_INOTIFY=yCONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not setCONFIG_AUTOFS_FS=yCONFIG_AUTOFS4_FS=yCONFIG_FUSE_FS=y
# CONFIG_CUSE is not set
#
# Caches
#
# CONFIG_FSCACHE is not set
#
# CD-ROM/DVD Filesystems
#
# CONFIG_ISO9660_FS is not set
# CONFIG_UDF_FS is not set
#
# DOS/FAT/NT Filesystems
#
# CONFIG_MSDOS_FS is not set
# CONFIG_VFAT_FS is not set
# CONFIG_NTFS_FS is not set
#
# Pseudo filesystems
#CONFIG_PROC_FS=yCONFIG_PROC_KCORE=yCONFIG_PROC_SYSCTL=yCONFIG_PROC_PAGE_MONITOR=yCONFIG_SYSFS=yCONFIG_TMPFS=y
# CONFIG_TMPFS_POSIX_ACL is not set
# CONFIG_HUGETLBFS is not set
# CONFIG_HUGETLB_PAGE is not setCONFIG_CONFIGFS_FS=yCONFIG_MISC_FILESYSTEMS=y
# CONFIG_ADFS_FS is not set
# CONFIG_AFFS_FS is not set
# CONFIG_ECRYPT_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_HFSPLUS_FS is not set
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not setCONFIG_CRAMFS=y
# CONFIG_SQUASHFS is not set
# CONFIG_VXFS_FS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_OMFS_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not setCONFIG_ROMFS_FS=yCONFIG_ROMFS_BACKED_BY_BLOCK=y
# CONFIG_ROMFS_BACKED_BY_MTD is not set
# CONFIG_ROMFS_BACKED_BY_BOTH is not setCONFIG_ROMFS_ON_BLOCK=y
# CONFIG_SYSV_FS is not set
# CONFIG_UFS_FS is not set
# CONFIG_NILFS2_FS is not setCONFIG_NETWORK_FILESYSTEMS=yCONFIG_NFS_FS=yCONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not setCONFIG_NFS_V4=y
# CONFIG_NFS_V4_1 is not set
# CONFIG_NFSD is not setCONFIG_LOCKD=yCONFIG_LOCKD_V4=yCONFIG_NFS_COMMON=yCONFIG_SUNRPC=yCONFIG_SUNRPC_GSS=yCONFIG_RPCSEC_GSS_KRB5=yCONFIG_RPCSEC_GSS_SPKM3=y
# CONFIG_SMB_FS is not set
# CONFIG_CIFS is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
#
# Partition Types
#CONFIG_PARTITION_ADVANCED=y
# CONFIG_ACORN_PARTITION is not set
# CONFIG_OSF_PARTITION is not set
# CONFIG_AMIGA_PARTITION is not set
# CONFIG_ATARI_PARTITION is not set
# CONFIG_MAC_PARTITION is not setCONFIG_MSDOS_PARTITION=y
# CONFIG_BSD_DISKLABEL is not set
# CONFIG_MINIX_SUBPARTITION is not set
# CONFIG_SOLARIS_X86_PARTITION is not set
# CONFIG_UNIXWARE_DISKLABEL is not setCONFIG_LDM_PARTITION=y
# CONFIG_LDM_DEBUG is not setCONFIG_SGI_PARTITION=y
# CONFIG_ULTRIX_PARTITION is not set
# CONFIG_SUN_PARTITION is not set
# CONFIG_KARMA_PARTITION is not setCONFIG_EFI_PARTITION=y
# CONFIG_SYSV68_PARTITION is not setCONFIG_NLS=yCONFIG_NLS_DEFAULT="cp437"CONFIG_NLS_CODEPAGE_437=y
# CONFIG_NLS_CODEPAGE_737 is not set
# CONFIG_NLS_CODEPAGE_775 is not setCONFIG_NLS_CODEPAGE_850=y
# CONFIG_NLS_CODEPAGE_852 is not set
# CONFIG_NLS_CODEPAGE_855 is not set
# CONFIG_NLS_CODEPAGE_857 is not set
# CONFIG_NLS_CODEPAGE_860 is not set
# CONFIG_NLS_CODEPAGE_861 is not set
# CONFIG_NLS_CODEPAGE_862 is not set
# CONFIG_NLS_CODEPAGE_863 is not set
# CONFIG_NLS_CODEPAGE_864 is not set
# CONFIG_NLS_CODEPAGE_865 is not set
# CONFIG_NLS_CODEPAGE_866 is not set
# CONFIG_NLS_CODEPAGE_869 is not set
# CONFIG_NLS_CODEPAGE_936 is not set
# CONFIG_NLS_CODEPAGE_950 is not set
# CONFIG_NLS_CODEPAGE_932 is not set
# CONFIG_NLS_CODEPAGE_949 is not set
# CONFIG_NLS_CODEPAGE_874 is not set
# CONFIG_NLS_ISO8859_8 is not setCONFIG_NLS_CODEPAGE_1250=y
# CONFIG_NLS_CODEPAGE_1251 is not setCONFIG_NLS_ASCII=yCONFIG_NLS_ISO8859_1=y
# CONFIG_NLS_ISO8859_2 is not set
# CONFIG_NLS_ISO8859_3 is not set
# CONFIG_NLS_ISO8859_4 is not set
# CONFIG_NLS_ISO8859_5 is not set
# CONFIG_NLS_ISO8859_6 is not set
# CONFIG_NLS_ISO8859_7 is not set
# CONFIG_NLS_ISO8859_9 is not set
# CONFIG_NLS_ISO8859_13 is not set
# CONFIG_NLS_ISO8859_14 is not set
# CONFIG_NLS_ISO8859_15 is not set
# CONFIG_NLS_KOI8_R is not set
# CONFIG_NLS_KOI8_U is not setCONFIG_NLS_UTF8=y
# CONFIG_DLM is not set
#
# Kernel hacking
#CONFIG_TRACE_IRQFLAGS_SUPPORT=yCONFIG_PRINTK_TIME=yCONFIG_ENABLE_WARN_DEPRECATED=y
# CONFIG_ENABLE_MUST_CHECK is not setCONFIG_FRAME_WARN=2048CONFIG_MAGIC_SYSRQ=y
# CONFIG_UNUSED_SYMBOLS is not setCONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not setCONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_SHIRQ is not setCONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not setCONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0CONFIG_DETECT_HUNG_TASK=y
# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not setCONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0CONFIG_SCHED_DEBUG=y
# CONFIG_SCHEDSTATS is not set
# CONFIG_TIMER_STATS is not set
# CONFIG_DEBUG_OBJECTS is not set
# CONFIG_DEBUG_SLAB is not set
# CONFIG_DEBUG_KMEMLEAK is not setCONFIG_DEBUG_PREEMPT=y
# CONFIG_DEBUG_RT_MUTEXES is not set
# CONFIG_RT_MUTEX_TESTER is not setCONFIG_DEBUG_SPINLOCK=yCONFIG_DEBUG_MUTEXES=yCONFIG_DEBUG_LOCK_ALLOC=yCONFIG_PROVE_LOCKING=yCONFIG_LOCKDEP=y
# CONFIG_LOCK_STAT is not set
# CONFIG_DEBUG_LOCKDEP is not setCONFIG_TRACE_IRQFLAGS=yCONFIG_DEBUG_SPINLOCK_SLEEP=y
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not setCONFIG_STACKTRACE=y
# CONFIG_DEBUG_KOBJECT is not setCONFIG_DEBUG_BUGVERBOSE=yCONFIG_DEBUG_INFO=y
# CONFIG_DEBUG_VM is not set
# CONFIG_DEBUG_VIRTUAL is not set
# CONFIG_DEBUG_WRITECOUNT is not setCONFIG_DEBUG_MEMORY_INIT=y
# CONFIG_DEBUG_LIST is not set
# CONFIG_DEBUG_SG is not set
# CONFIG_DEBUG_NOTIFIERS is not setCONFIG_ARCH_WANT_FRAME_POINTERS=yCONFIG_FRAME_POINTER=y
# CONFIG_BOOT_PRINTK_DELAY is not set
# CONFIG_RCU_TORTURE_TEST is not setCONFIG_RCU_CPU_STALL_DETECTOR=yCONFIG_KPROBES_SANITY_TEST=y
# CONFIG_BACKTRACE_SELF_TEST is not set
# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
# CONFIG_LKDTM is not set
# CONFIG_FAULT_INJECTION is not set
# CONFIG_LATENCYTOP is not set
# CONFIG_SYSCTL_SYSCALL_CHECK is not set
# CONFIG_DEBUG_PAGEALLOC is not setCONFIG_USER_STACKTRACE_SUPPORT=yCONFIG_NOP_TRACER=yCONFIG_HAVE_FTRACE_NMI_ENTER=yCONFIG_HAVE_FUNCTION_TRACER=yCONFIG_HAVE_FUNCTION_GRAPH_TRACER=yCONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=yCONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=yCONFIG_HAVE_DYNAMIC_FTRACE=yCONFIG_HAVE_FTRACE_MCOUNT_RECORD=yCONFIG_HAVE_FTRACE_SYSCALLS=yCONFIG_RING_BUFFER=yCONFIG_FTRACE_NMI_ENTER=yCONFIG_EVENT_TRACING=yCONFIG_CONTEXT_SWITCH_TRACER=yCONFIG_TRACING=yCONFIG_GENERIC_TRACER=yCONFIG_TRACING_SUPPORT=yCONFIG_FTRACE=yCONFIG_FUNCTION_TRACER=yCONFIG_FUNCTION_GRAPH_TRACER=y
# CONFIG_IRQSOFF_TRACER is not set
# CONFIG_PREEMPT_TRACER is not set
# CONFIG_SYSPROF_TRACER is not set
# CONFIG_SCHED_TRACER is not set
# CONFIG_FTRACE_SYSCALLS is not set
# CONFIG_BOOT_TRACER is not setCONFIG_BRANCH_PROFILE_NONE=y
# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
# CONFIG_PROFILE_ALL_BRANCHES is not set
# CONFIG_POWER_TRACER is not set
# CONFIG_STACK_TRACER is not set
# CONFIG_KMEMTRACE is not set
# CONFIG_WORKQUEUE_TRACER is not set
# CONFIG_BLK_DEV_IO_TRACE is not setCONFIG_KPROBE_TRACER=yCONFIG_DYNAMIC_FTRACE=y
# CONFIG_FUNCTION_PROFILER is not setCONFIG_FTRACE_MCOUNT_RECORD=yCONFIG_FTRACE_SELFTEST=yCONFIG_FTRACE_STARTUP_TEST=y
# CONFIG_MMIOTRACE is not set
# CONFIG_RING_BUFFER_BENCHMARK is not set
# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
# CONFIG_DYNAMIC_DEBUG is not set
# CONFIG_DMA_API_DEBUG is not set
# CONFIG_SAMPLES is not setCONFIG_HAVE_ARCH_KGDB=y
# CONFIG_KGDB is not setCONFIG_HAVE_ARCH_KMEMCHECK=y
# CONFIG_STRICT_DEVMEM is not set
# CONFIG_X86_VERBOSE_BOOTUP is not setCONFIG_EARLY_PRINTK=y
# CONFIG_EARLY_PRINTK_DBGP is not set
# CONFIG_DEBUG_STACKOVERFLOW is not set
# CONFIG_DEBUG_STACK_USAGE is not set
# CONFIG_DEBUG_PER_CPU_MAPS is not set
# CONFIG_X86_PTDUMP is not setCONFIG_DEBUG_RODATA=yCONFIG_DEBUG_RODATA_TEST=y
# CONFIG_DEBUG_NX_TEST is not set
# CONFIG_4KSTACKS is not setCONFIG_DOUBLEFAULT=y
# CONFIG_IOMMU_STRESS is not setCONFIG_HAVE_MMIOTRACE_SUPPORT=yCONFIG_X86_DECODER_SELFTEST=yCONFIG_IO_DELAY_TYPE_0X80=0CONFIG_IO_DELAY_TYPE_0XED=1CONFIG_IO_DELAY_TYPE_UDELAY=2CONFIG_IO_DELAY_TYPE_NONE=3CONFIG_IO_DELAY_0X80=y
# CONFIG_IO_DELAY_0XED is not set
# CONFIG_IO_DELAY_UDELAY is not set
# CONFIG_IO_DELAY_NONE is not setCONFIG_DEFAULT_IO_DELAY_TYPE=0
# CONFIG_DEBUG_BOOT_PARAMS is not set
# CONFIG_CPA_DEBUG is not set
# CONFIG_OPTIMIZE_INLINING is not set
#
# Security options
#CONFIG_KEYS=y
# CONFIG_KEYS_DEBUG_PROC_KEYS is not set CONFIG_SECURITY=yCONFIG_SECURITYFS=yCONFIG_SECURITY_NETWORK=y
# CONFIG_SECURITY_NETWORK_XFRM is not set
# CONFIG_SECURITY_PATH is not set
# CONFIG_SECURITY_FILE_CAPABILITIES is not set CONFIG_SECURITY_SELINUX=y CONFIG_SECURITY_SELINUX_BOOTPARAM=y CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0 CONFIG_SECURITY_SELINUX_DISABLE=y CONFIG_SECURITY_SELINUX_DEVELOP=y CONFIG_SECURITY_SELINUX_AVC_STATS=y CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1
# CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set # CONFIG_SECURITY_TOMOYO is not set
# CONFIG_IMA is not setCONFIG_CRYPTO=y
#
# Crypto core or helper
#
# CONFIG_CRYPTO_FIPS is not setCONFIG_CRYPTO_ALGAPI=yCONFIG_CRYPTO_ALGAPI2=yCONFIG_CRYPTO_AEAD=yCONFIG_CRYPTO_AEAD2=yCONFIG_CRYPTO_BLKCIPHER=yCONFIG_CRYPTO_BLKCIPHER2=yCONFIG_CRYPTO_HASH=yCONFIG_CRYPTO_HASH2=yCONFIG_CRYPTO_RNG2=yCONFIG_CRYPTO_PCOMP=yCONFIG_CRYPTO_MANAGER=yCONFIG_CRYPTO_MANAGER2=yCONFIG_CRYPTO_GF128MUL=yCONFIG_CRYPTO_NULL=yCONFIG_CRYPTO_WORKQUEUE=y
# CONFIG_CRYPTO_CRYPTD is not setCONFIG_CRYPTO_AUTHENC=y
# CONFIG_CRYPTO_TEST is not set
#
# Authenticated Encryption with Associated Data
#
# CONFIG_CRYPTO_CCM is not set
# CONFIG_CRYPTO_GCM is not set
# CONFIG_CRYPTO_SEQIV is not set
#
# Block modes
#CONFIG_CRYPTO_CBC=y
# CONFIG_CRYPTO_CTR is not set
# CONFIG_CRYPTO_CTS is not setCONFIG_CRYPTO_ECB=yCONFIG_CRYPTO_LRW=y
# CONFIG_CRYPTO_PCBC is not set
# CONFIG_CRYPTO_XTS is not set
#
# Hash modes
#CONFIG_CRYPTO_HMAC=yCONFIG_CRYPTO_XCBC=y
#
# Digest
#CONFIG_CRYPTO_CRC32C=y
# CONFIG_CRYPTO_CRC32C_INTEL is not setCONFIG_CRYPTO_MD4=yCONFIG_CRYPTO_MD5=yCONFIG_CRYPTO_MICHAEL_MIC=y
# CONFIG_CRYPTO_RMD128 is not set
# CONFIG_CRYPTO_RMD160 is not set
# CONFIG_CRYPTO_RMD256 is not set
# CONFIG_CRYPTO_RMD320 is not setCONFIG_CRYPTO_SHA1=yCONFIG_CRYPTO_SHA256=yCONFIG_CRYPTO_SHA512=yCONFIG_CRYPTO_TGR192=yCONFIG_CRYPTO_WP512=y
#
# Ciphers
#CONFIG_CRYPTO_AES=yCONFIG_CRYPTO_AES_586=yCONFIG_CRYPTO_ANUBIS=yCONFIG_CRYPTO_ARC4=yCONFIG_CRYPTO_BLOWFISH=y
# CONFIG_CRYPTO_CAMELLIA is not setCONFIG_CRYPTO_CAST5=yCONFIG_CRYPTO_CAST6=yCONFIG_CRYPTO_DES=y
# CONFIG_CRYPTO_FCRYPT is not setCONFIG_CRYPTO_KHAZAD=y
# CONFIG_CRYPTO_SALSA20 is not set
# CONFIG_CRYPTO_SALSA20_586 is not set
# CONFIG_CRYPTO_SEED is not setCONFIG_CRYPTO_SERPENT=yCONFIG_CRYPTO_TEA=yCONFIG_CRYPTO_TWOFISH=yCONFIG_CRYPTO_TWOFISH_COMMON=yCONFIG_CRYPTO_TWOFISH_586=y
#
# Compression
#CONFIG_CRYPTO_DEFLATE=y
# CONFIG_CRYPTO_ZLIB is not set
# CONFIG_CRYPTO_LZO is not set
#
# Random Number Generation
#
# CONFIG_CRYPTO_ANSI_CPRNG is not setCONFIG_CRYPTO_HW=yCONFIG_CRYPTO_DEV_PADLOCK=yCONFIG_CRYPTO_DEV_PADLOCK_AES=yCONFIG_CRYPTO_DEV_PADLOCK_SHA=yCONFIG_CRYPTO_DEV_GEODE=y
# CONFIG_CRYPTO_DEV_HIFN_795X is not setCONFIG_HAVE_KVM=yCONFIG_HAVE_KVM_IRQCHIP=y
# CONFIG_VIRTUALIZATION is not setCONFIG_BINARY_PRINTF=y
#
# Library routines
#CONFIG_BITREVERSE=yCONFIG_GENERIC_FIND_FIRST_BIT=yCONFIG_GENERIC_FIND_NEXT_BIT=yCONFIG_GENERIC_FIND_LAST_BIT=yCONFIG_CRC_CCITT=yCONFIG_CRC16=y
# CONFIG_CRC_T10DIF is not setCONFIG_CRC_ITU_T=yCONFIG_CRC32=y
# CONFIG_CRC7 is not setCONFIG_LIBCRC32C=yCONFIG_AUDIT_GENERIC=yCONFIG_ZLIB_INFLATE=yCONFIG_ZLIB_DEFLATE=yCONFIG_DECOMPRESS_GZIP=yCONFIG_DECOMPRESS_BZIP2=yCONFIG_DECOMPRESS_LZMA=yCONFIG_HAS_IOMEM=yCONFIG_HAS_IOPORT=yCONFIG_HAS_DMA=yCONFIG_CHECK_SIGNATURE=yCONFIG_NLATTR=y
Re: [PATCH -tip v14 01/12] x86: instruction decoder API
Quoted 37 lines · Frederic Weisbecker
Quoted 23 lines · Masami Hiramatsu
Add x86 instruction decoder to arch-specific libraries. This decoder can decode x86 instructions used in kernel into prefix, opcode, modrm, sib, displacement and immediates. This can also show the length of instructions.
This version introduces instruction attributes for decoding instructions. The instruction attribute tables are generated from the opcode map file (x86-opcode-map.txt) by the generator script(gen-insn-attr-x86.awk).
Currently, the opcode maps are based on opcode maps in Intel(R) 64 and IA-32 Architectures Software Developers Manual Vol.2: Appendix.A, and consist of below two types of opcode tables.
1-byte/2-bytes/3-bytes opcodes, which has 256 elements, are written as below;
Table: table-name
Referrer: escaped-name
opcode: mnemonic|GrpXXX [operand1[,operand2...]] [(extra1)[,(extra2)...] [| 2nd-mnemonic ...]
(or)
opcode: escape # escaped-name
EndTableQuoted 9 lines
Group opcodes, which has 8 elements, are written as below;
GrpTable: GrpXXX
reg: mnemonic [operand1[,operand2...]] [(extra1)[,(extra2)...] [| 2nd-mnemonic ...] EndTableThese opcode maps include a few SSE and FP opcodes (for setup), because those opcodes are used in the kernel.
I'm getting the following build error on an old K7 box:
Quoted 7 lines
arch/x86/lib/inat.c: In function ‘inat_get_opcode_attribute’:arch/x86/lib/inat.c:29: erreur: ‘inat_primary_table’ undeclared (first use in this function)arch/x86/lib/inat.c:29: erreur: (Each undeclared identifier is reported only oncearch/x86/lib/inat.c:29: erreur: for each function it appears in.)I've attached my config. I haven't such problem on a dual x86-64 box.
Actually I have the same problem in x86-64
The content of my arch/x86/lib/inat-tables.c:
/* x86 opcode map generated from x86-opcode-map.txt */
/* Do not change this code. */
/* Table: one byte opcode */
/* Escape opcode map array */
const insn_attr_t const *inat_escape_tables[INAT_ESC_MAX + 1][INAT_LPREFIX_MAX + 1] = { };
/* Group opcode map array */
const insn_attr_t const *inat_group_tables[INAT_GRP_MAX + 1][INAT_LPREFIX_MAX + 1] = { };
I guess there is a problem with the generation of this file.
Re: [PATCH -tip v14 01/12] x86: instruction decoder API
Quoted 57 lines · Frederic Weisbecker
Quoted 37 lines · Frederic Weisbecker
Quoted 23 lines · Masami Hiramatsu
Add x86 instruction decoder to arch-specific libraries. This decoder can decode x86 instructions used in kernel into prefix, opcode, modrm, sib, displacement and immediates. This can also show the length of instructions.
This version introduces instruction attributes for decoding instructions. The instruction attribute tables are generated from the opcode map file (x86-opcode-map.txt) by the generator script(gen-insn-attr-x86.awk).
Currently, the opcode maps are based on opcode maps in Intel(R) 64 and IA-32 Architectures Software Developers Manual Vol.2: Appendix.A, and consist of below two types of opcode tables.
1-byte/2-bytes/3-bytes opcodes, which has 256 elements, are written as below;
Table: table-name
Referrer: escaped-name
opcode: mnemonic|GrpXXX [operand1[,operand2...]] [(extra1)[,(extra2)...] [| 2nd-mnemonic ...]
(or)
opcode: escape # escaped-name
EndTableQuoted 9 lines
Group opcodes, which has 8 elements, are written as below;
GrpTable: GrpXXX
reg: mnemonic [operand1[,operand2...]] [(extra1)[,(extra2)...] [| 2nd-mnemonic ...] EndTableThese opcode maps include a few SSE and FP opcodes (for setup), because those opcodes are used in the kernel.
I'm getting the following build error on an old K7 box:
Quoted 7 lines
arch/x86/lib/inat.c: In function ‘inat_get_opcode_attribute’:arch/x86/lib/inat.c:29: erreur: ‘inat_primary_table’ undeclared (first use in this function)arch/x86/lib/inat.c:29: erreur: (Each undeclared identifier is reported only oncearch/x86/lib/inat.c:29: erreur: for each function it appears in.)I've attached my config. I haven't such problem on a dual x86-64 box.
Actually I have the same problem in x86-64
The content of myarch/x86/lib/inat-tables.c:/* x86 opcode map generated from x86-opcode-map.txt */
/* Do not change this code. */
/* Table: one byte opcode */
/* Escape opcode map array */
constinsn_attr_tconst *inat_escape_tables[INAT_ESC_MAX + 1][INAT_LPREFIX_MAX + 1] = { };
Quoted 6 lines
/* Group opcode map array */
constinsn_attr_tconst *inat_group_tables[INAT_GRP_MAX + 1][INAT_LPREFIX_MAX + 1] = { };I guess there is a problem with the generation of this file.
Aah, you may use mawk on Ubuntu 9.04, right? If so, unfortunately, mawk is still under development.
http://invisible-island.net/mawk/CHANGES
Quoted 9 lines
20090727
add check/fix to prevent gsub from recurring to modify on a substring of the current line when the regular expression is anchored to the beginning of the line; fixes gawk's anchgsub testcase.add check for implicit concatenation mistaken for exponent; fixes gawk's hex testcase.
add character-classes to built-in regular expressions.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Look, this means we can't use char-class expressions like [:lower:] until this version...
And I've found another bug in mawk-1.3.3-20090728(the latest one). it almost works, but;
$ mawk 'BEGIN {printf("0x%x\n", 0)}'
0x1
$ gawk 'BEGIN {printf("0x%x\n", 0)}'
0x0This bug skips an array element index 0x0 in inat-tables.c :(
So, I recommend you to install gawk instead mawk until that supports all posix-awk features, since I don't think it is good idea to avoid all those bugs which depends on implementation (not specification).
Thank you,
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
Re: [PATCH -tip v14 01/12] x86: instruction decoder API
Quoted 63 lines · Masami Hiramatsu
Quoted 62 lines · Frederic Weisbecker
Quoted 37 lines · Frederic Weisbecker
Quoted 23 lines · Masami Hiramatsu
Add x86 instruction decoder to arch-specific libraries. This decoder can decode x86 instructions used in kernel into prefix, opcode, modrm, sib, displacement and immediates. This can also show the length of instructions.
This version introduces instruction attributes for decoding instructions. The instruction attribute tables are generated from the opcode map file (x86-opcode-map.txt) by the generator script(gen-insn-attr-x86.awk).
Currently, the opcode maps are based on opcode maps in Intel(R) 64 and IA-32 Architectures Software Developers Manual Vol.2: Appendix.A, and consist of below two types of opcode tables.
1-byte/2-bytes/3-bytes opcodes, which has 256 elements, are written as below;
Table: table-name
Referrer: escaped-name
opcode: mnemonic|GrpXXX [operand1[,operand2...]] [(extra1)[,(extra2)...] [| 2nd-mnemonic ...]
(or)
opcode: escape # escaped-name
EndTableQuoted 9 lines
Group opcodes, which has 8 elements, are written as below;
GrpTable: GrpXXX
reg: mnemonic [operand1[,operand2...]] [(extra1)[,(extra2)...] [| 2nd-mnemonic ...] EndTableThese opcode maps include a few SSE and FP opcodes (for setup), because those opcodes are used in the kernel.
I'm getting the following build error on an old K7 box:
Quoted 7 lines
arch/x86/lib/inat.c: In function ‘inat_get_opcode_attribute’:arch/x86/lib/inat.c:29: erreur: ‘inat_primary_table’ undeclared (first use in this function)arch/x86/lib/inat.c:29: erreur: (Each undeclared identifier is reported only oncearch/x86/lib/inat.c:29: erreur: for each function it appears in.)I've attached my config. I haven't such problem on a dual x86-64 box.
Actually I have the same problem in x86-64
The content of myarch/x86/lib/inat-tables.c:/* x86 opcode map generated from x86-opcode-map.txt */
/* Do not change this code. */
/* Table: one byte opcode */
/* Escape opcode map array */
constinsn_attr_tconst *inat_escape_tables[INAT_ESC_MAX + 1][INAT_LPREFIX_MAX + 1] = { };/* Group opcode map array */
constinsn_attr_tconst *inat_group_tables[INAT_GRP_MAX + 1][INAT_LPREFIX_MAX + 1] = { };
Quoted 6 lines
Quoted 1 line
I guess there is a problem with the generation of this file.
Aah, you may use mawk on Ubuntu 9.04, right? If so, unfortunately, mawk is still under development.
Aargh...
Quoted 10 lines
Quoted 9 lines
20090727
add check/fix to prevent gsub from recurring to modify on a substring of the current line when the regular expression is anchored to the beginning of the line; fixes gawk's anchgsub testcase.add check for implicit concatenation mistaken for exponent; fixes gawk's hex testcase.
add character-classes to built-in regular expressions.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Quoted 8 lines
Look, this means we can't use char-class expressions like [:lower:] until this version...
And I've found another bug in mawk-1.3.3-20090728(the latest one). it almost works, but;
$ mawk 'BEGIN {printf("0x%x\n", 0)}' 0x1
Ouch, indeed.
Quoted 5 lines
$ gawk 'BEGIN {printf("0x%x\n", 0)}' 0x0This bug skips an array element index
0x0ininat-tables.c:(
Quoted 7 lines
So, I recommend you to install gawk instead mawk until that supports all posix-awk features, since I don't think it is good idea to avoid all those bugs which depends on implementation (not specification).
Thank you,
Yeah, indeed. May be add a warning (or build error) in case the user uses mawk?
Anyway that works fine now with gawk, thanks!
All your patches build well :-)
Quoted 10 lines
Signature · 8 lines
-- Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
Re: [PATCH -tip v14 01/12] x86: instruction decoder API
Quoted 111 lines · Frederic Weisbecker
Quoted 63 lines · Masami Hiramatsu
Quoted 62 lines · Frederic Weisbecker
Quoted 37 lines · Frederic Weisbecker
Quoted 23 lines · Masami Hiramatsu
Add x86 instruction decoder to arch-specific libraries. This decoder can decode x86 instructions used in kernel into prefix, opcode, modrm, sib, displacement and immediates. This can also show the length of instructions.
This version introduces instruction attributes for decoding instructions. The instruction attribute tables are generated from the opcode map file (x86-opcode-map.txt) by the generator script(gen-insn-attr-x86.awk).
Currently, the opcode maps are based on opcode maps in Intel(R) 64 and IA-32 Architectures Software Developers Manual Vol.2: Appendix.A, and consist of below two types of opcode tables.
1-byte/2-bytes/3-bytes opcodes, which has 256 elements, are written as below;
Table: table-name Referrer: escaped-name opcode: mnemonic|GrpXXX [operand1[,operand2...]] [(extra1)[,(extra2)...] [| 2nd-mnemonic ...] (or) opcode: escape # escaped-name EndTableQuoted 9 lines
Group opcodes, which has 8 elements, are written as below;
GrpTable: GrpXXX reg: mnemonic [operand1[,operand2...]] [(extra1)[,(extra2)...] [| 2nd-mnemonic ...] EndTableThese opcode maps include a few SSE and FP opcodes (for setup), because those opcodes are used in the kernel.
I'm getting the following build error on an old K7 box:
Quoted 7 lines
arch/x86/lib/inat.c: In function ‘inat_get_opcode_attribute’:arch/x86/lib/inat.c:29: erreur: ‘inat_primary_table’ undeclared (first use in this function)arch/x86/lib/inat.c:29: erreur: (Each undeclared identifier is reported only oncearch/x86/lib/inat.c:29: erreur: for each function it appears in.)I've attached my config. I haven't such problem on a dual x86-64 box.
Actually I have the same problem in x86-64
The content of myarch/x86/lib/inat-tables.c:/* x86 opcode map generated from x86-opcode-map.txt */
/* Do not change this code. */
/* Table: one byte opcode */
/* Escape opcode map array */
constinsn_attr_tconst *inat_escape_tables[INAT_ESC_MAX + 1][INAT_LPREFIX_MAX + 1] = { };/* Group opcode map array */
constinsn_attr_tconst *inat_group_tables[INAT_GRP_MAX + 1][INAT_LPREFIX_MAX + 1] = { };Quoted 6 lines
Quoted 1 line
I guess there is a problem with the generation of this file.
Aah, you may use mawk on Ubuntu 9.04, right? If so, unfortunately, mawk is still under development.
Aargh...
Quoted 10 lines
Quoted 9 lines
20090727
add check/fix to prevent gsub from recurring to modify on a substring of the current line when the regular expression is anchored to the beginning of the line; fixes gawk's anchgsub testcase.add check for implicit concatenation mistaken for exponent; fixes gawk's hex testcase.
add character-classes to built-in regular expressions.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^Quoted 8 lines
Look, this means we can't use char-class expressions like [:lower:] until this version...
And I've found another bug in mawk-1.3.3-20090728(the latest one). it almost works, but;
$ mawk 'BEGIN {printf("0x%x\n", 0)}' 0x1Ouch, indeed.
Quoted 11 lines
$ gawk 'BEGIN {printf("0x%x\n", 0)}' 0x0This bug skips an array element index
0x0ininat-tables.c:(So, I recommend you to install gawk instead mawk until that supports all posix-awk features, since I don't think it is good idea to avoid all those bugs which depends on implementation (not specification).
Quoted 6 lines
Quoted 1 line
Thank you,
Yeah, indeed. May be add a warning (or build error) in case the user uses mawk?
Hmm, it is possible that mawk will fix those bugs and catch up soon, so, I think checking mawk is not a good idea.
(and since there will be other awk implementations, it's not fair.)
I think what all I can do now is reporting bugs to mawk and ubuntu people.:-)
Quoted 3 lines
Anyway that works fine now with gawk, thanks!
All your patches build well :-)
Thank you for testing!
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
Re: [PATCH -tip v14 01/12] x86: instruction decoder API
Quoted 119 lines · Masami Hiramatsu
Quoted 111 lines · Frederic Weisbecker
Quoted 63 lines · Masami Hiramatsu
Quoted 62 lines · Frederic Weisbecker
Quoted 37 lines · Frederic Weisbecker
Quoted 23 lines · Masami Hiramatsu
Add x86 instruction decoder to arch-specific libraries. This decoder can decode x86 instructions used in kernel into prefix, opcode, modrm, sib, displacement and immediates. This can also show the length of instructions.
This version introduces instruction attributes for decoding instructions. The instruction attribute tables are generated from the opcode map file (x86-opcode-map.txt) by the generator script(gen-insn-attr-x86.awk).
Currently, the opcode maps are based on opcode maps in Intel(R) 64 and IA-32 Architectures Software Developers Manual Vol.2: Appendix.A, and consist of below two types of opcode tables.
1-byte/2-bytes/3-bytes opcodes, which has 256 elements, are written as below;
Table: table-name Referrer: escaped-name opcode: mnemonic|GrpXXX [operand1[,operand2...]] [(extra1)[,(extra2)...] [| 2nd-mnemonic ...] (or) opcode: escape # escaped-name EndTableQuoted 9 lines
Group opcodes, which has 8 elements, are written as below;
GrpTable: GrpXXX reg: mnemonic [operand1[,operand2...]] [(extra1)[,(extra2)...] [| 2nd-mnemonic ...] EndTableThese opcode maps include a few SSE and FP opcodes (for setup), because those opcodes are used in the kernel.
I'm getting the following build error on an old K7 box:
Quoted 7 lines
arch/x86/lib/inat.c: In function ‘inat_get_opcode_attribute’:arch/x86/lib/inat.c:29: erreur: ‘inat_primary_table’ undeclared (first use in this function)arch/x86/lib/inat.c:29: erreur: (Each undeclared identifier is reported only oncearch/x86/lib/inat.c:29: erreur: for each function it appears in.)I've attached my config. I haven't such problem on a dual x86-64 box.
Actually I have the same problem in x86-64
The content of myarch/x86/lib/inat-tables.c:/* x86 opcode map generated from x86-opcode-map.txt */
/* Do not change this code. */
/* Table: one byte opcode */
/* Escape opcode map array */
constinsn_attr_tconst *inat_escape_tables[INAT_ESC_MAX + 1][INAT_LPREFIX_MAX + 1] = { };/* Group opcode map array */
constinsn_attr_tconst *inat_group_tables[INAT_GRP_MAX + 1][INAT_LPREFIX_MAX + 1] = { };Quoted 6 lines
Quoted 1 line
I guess there is a problem with the generation of this file.
Aah, you may use mawk on Ubuntu 9.04, right? If so, unfortunately, mawk is still under development.
Aargh...
Quoted 10 lines
Quoted 9 lines
20090727
add check/fix to prevent gsub from recurring to modify on a substring of the current line when the regular expression is anchored to the beginning of the line; fixes gawk's anchgsub testcase.add check for implicit concatenation mistaken for exponent; fixes gawk's hex testcase.
add character-classes to built-in regular expressions.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^Quoted 8 lines
Look, this means we can't use char-class expressions like [:lower:] until this version...
And I've found another bug in mawk-1.3.3-20090728(the latest one). it almost works, but;
$ mawk 'BEGIN {printf("0x%x\n", 0)}' 0x1Ouch, indeed.
Quoted 11 lines
$ gawk 'BEGIN {printf("0x%x\n", 0)}' 0x0This bug skips an array element index
0x0ininat-tables.c:(So, I recommend you to install gawk instead mawk until that supports all posix-awk features, since I don't think it is good idea to avoid all those bugs which depends on implementation (not specification).
Quoted 6 lines
Quoted 1 line
Thank you,
Yeah, indeed. May be add a warning (or build error) in case the user uses mawk?
Quoted 6 lines
Hmm, it is possible that mawk will fix those bugs and catch up soon, so, I think checking mawk is not a good idea.
(and since there will be other awk implementations, it's not fair.)I think what all I can do now is reporting bugs to mawk and ubuntu people.:-)
Yeah, but without your tip I couldn't be able to find the origin before some time.
And the kernel couldn't build anyway.
At least we should do something with this version of mawk.
Quoted 15 lines
Quoted 3 lines
Anyway that works fine now with gawk, thanks!
All your patches build well :-)Thank you for testing!
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
Re: [PATCH -tip v14 01/12] x86: instruction decoder API
Quoted 129 lines · Frederic Weisbecker
Quoted 119 lines · Masami Hiramatsu
Quoted 111 lines · Frederic Weisbecker
Quoted 63 lines · Masami Hiramatsu
Quoted 62 lines · Frederic Weisbecker
Quoted 37 lines · Frederic Weisbecker
Quoted 23 lines · Masami Hiramatsu
Add x86 instruction decoder to arch-specific libraries. This decoder can decode x86 instructions used in kernel into prefix, opcode, modrm, sib, displacement and immediates. This can also show the length of instructions.
This version introduces instruction attributes for decoding instructions. The instruction attribute tables are generated from the opcode map file (x86-opcode-map.txt) by the generator script(gen-insn-attr-x86.awk).
Currently, the opcode maps are based on opcode maps in Intel(R) 64 and IA-32 Architectures Software Developers Manual Vol.2: Appendix.A, and consist of below two types of opcode tables.
1-byte/2-bytes/3-bytes opcodes, which has 256 elements, are written as below;
Table: table-name Referrer: escaped-name opcode: mnemonic|GrpXXX [operand1[,operand2...]] [(extra1)[,(extra2)...] [| 2nd-mnemonic ...] (or) opcode: escape # escaped-name EndTableQuoted 9 lines
Group opcodes, which has 8 elements, are written as below;
GrpTable: GrpXXX reg: mnemonic [operand1[,operand2...]] [(extra1)[,(extra2)...] [| 2nd-mnemonic ...] EndTableThese opcode maps include a few SSE and FP opcodes (for setup), because those opcodes are used in the kernel.
I'm getting the following build error on an old K7 box:
Quoted 7 lines
arch/x86/lib/inat.c: In function ‘inat_get_opcode_attribute’:arch/x86/lib/inat.c:29: erreur: ‘inat_primary_table’ undeclared (first use in this function)arch/x86/lib/inat.c:29: erreur: (Each undeclared identifier is reported only oncearch/x86/lib/inat.c:29: erreur: for each function it appears in.)I've attached my config. I haven't such problem on a dual x86-64 box.
Actually I have the same problem in x86-64
The content of myarch/x86/lib/inat-tables.c:/* x86 opcode map generated from x86-opcode-map.txt */
/* Do not change this code. */
/* Table: one byte opcode */
/* Escape opcode map array */
constinsn_attr_tconst *inat_escape_tables[INAT_ESC_MAX + 1][INAT_LPREFIX_MAX + 1] = { };/* Group opcode map array */
constinsn_attr_tconst *inat_group_tables[INAT_GRP_MAX + 1][INAT_LPREFIX_MAX + 1] = { };Quoted 6 lines
Quoted 1 line
I guess there is a problem with the generation of this file.
Aah, you may use mawk on Ubuntu 9.04, right? If so, unfortunately, mawk is still under development.
Aargh...
Quoted 10 lines
Quoted 9 lines
20090727
add check/fix to prevent gsub from recurring to modify on a substring of the current line when the regular expression is anchored to the beginning of the line; fixes gawk's anchgsub testcase.add check for implicit concatenation mistaken for exponent; fixes gawk's hex testcase.
add character-classes to built-in regular expressions.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^Quoted 8 lines
Look, this means we can't use char-class expressions like [:lower:] until this version...
And I've found another bug in mawk-1.3.3-20090728(the latest one). it almost works, but;
$ mawk 'BEGIN {printf("0x%x\n", 0)}' 0x1Ouch, indeed.
Quoted 11 lines
$ gawk 'BEGIN {printf("0x%x\n", 0)}' 0x0This bug skips an array element index
0x0ininat-tables.c:(So, I recommend you to install gawk instead mawk until that supports all posix-awk features, since I don't think it is good idea to avoid all those bugs which depends on implementation (not specification).
Quoted 6 lines
Quoted 1 line
Thank you,
Yeah, indeed. May be add a warning (or build error) in case the user uses mawk?
Quoted 6 lines
Hmm, it is possible that mawk will fix those bugs and catch up soon, so, I think checking mawk is not a good idea.
(and since there will be other awk implementations, it's not fair.)I think what all I can do now is reporting bugs to mawk and ubuntu people.:-)
Quoted 5 lines
Yeah, but without your tip I couldn't be able to find the origin before some time.
And the kernel couldn't build anyway.At least we should do something with this version of mawk.
Hm, indeed.
Maybe, we can run additional sanity check script before using awk, like this;
---
res=echo a | $AWK '/[[:lower:]]+/{print "OK"}'
[ "$res" != "OK" ] && exit 1
res=$AWK 'BEGIN {printf("%x", 0)}'
[ "$res" != "0" ] && exit 1
exit 0
---
Thanks,
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
Re: [PATCH -tip v14 01/12] x86: instruction decoder API
Quoted 144 lines · Masami Hiramatsu
Quoted 129 lines · Frederic Weisbecker
Quoted 119 lines · Masami Hiramatsu
Quoted 111 lines · Frederic Weisbecker
Quoted 63 lines · Masami Hiramatsu
Quoted 62 lines · Frederic Weisbecker
Quoted 37 lines · Frederic Weisbecker
Quoted 23 lines · Masami Hiramatsu
Add x86 instruction decoder to arch-specific libraries. This decoder can decode x86 instructions used in kernel into prefix, opcode, modrm, sib, displacement and immediates. This can also show the length of instructions.
This version introduces instruction attributes for decoding instructions. The instruction attribute tables are generated from the opcode map file (x86-opcode-map.txt) by the generator script(gen-insn-attr-x86.awk).
Currently, the opcode maps are based on opcode maps in Intel(R) 64 and IA-32 Architectures Software Developers Manual Vol.2: Appendix.A, and consist of below two types of opcode tables.
1-byte/2-bytes/3-bytes opcodes, which has 256 elements, are written as below;
Table: table-name Referrer: escaped-name opcode: mnemonic|GrpXXX [operand1[,operand2...]] [(extra1)[,(extra2)...] [| 2nd-mnemonic ...] (or) opcode: escape # escaped-name EndTableQuoted 9 lines
Group opcodes, which has 8 elements, are written as below;
GrpTable: GrpXXX reg: mnemonic [operand1[,operand2...]] [(extra1)[,(extra2)...] [| 2nd-mnemonic ...] EndTableThese opcode maps include a few SSE and FP opcodes (for setup), because those opcodes are used in the kernel.
I'm getting the following build error on an old K7 box:
Quoted 7 lines
arch/x86/lib/inat.c: In function ‘inat_get_opcode_attribute’:arch/x86/lib/inat.c:29: erreur: ‘inat_primary_table’ undeclared (first use in this function)arch/x86/lib/inat.c:29: erreur: (Each undeclared identifier is reported only oncearch/x86/lib/inat.c:29: erreur: for each function it appears in.)I've attached my config. I haven't such problem on a dual x86-64 box.
Actually I have the same problem in x86-64
The content of myarch/x86/lib/inat-tables.c:/* x86 opcode map generated from x86-opcode-map.txt */
/* Do not change this code. */
/* Table: one byte opcode */
/* Escape opcode map array */
constinsn_attr_tconst *inat_escape_tables[INAT_ESC_MAX + 1][INAT_LPREFIX_MAX + 1] = { };/* Group opcode map array */
constinsn_attr_tconst *inat_group_tables[INAT_GRP_MAX + 1][INAT_LPREFIX_MAX + 1] = { };Quoted 6 lines
Quoted 1 line
I guess there is a problem with the generation of this file.
Aah, you may use mawk on Ubuntu 9.04, right? If so, unfortunately, mawk is still under development.
Aargh...
Quoted 10 lines
Quoted 9 lines
20090727
add check/fix to prevent gsub from recurring to modify on a substring of the current line when the regular expression is anchored to the beginning of the line; fixes gawk's anchgsub testcase.add check for implicit concatenation mistaken for exponent; fixes gawk's hex testcase.
add character-classes to built-in regular expressions.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^Quoted 8 lines
Look, this means we can't use char-class expressions like [:lower:] until this version...
And I've found another bug in mawk-1.3.3-20090728(the latest one). it almost works, but;
$ mawk 'BEGIN {printf("0x%x\n", 0)}' 0x1Ouch, indeed.
Quoted 11 lines
$ gawk 'BEGIN {printf("0x%x\n", 0)}' 0x0This bug skips an array element index
0x0ininat-tables.c:(So, I recommend you to install gawk instead mawk until that supports all posix-awk features, since I don't think it is good idea to avoid all those bugs which depends on implementation (not specification).
Quoted 6 lines
Quoted 1 line
Thank you,
Yeah, indeed. May be add a warning (or build error) in case the user uses mawk?
Quoted 6 lines
Hmm, it is possible that mawk will fix those bugs and catch up soon, so, I think checking mawk is not a good idea.
(and since there will be other awk implementations, it's not fair.)I think what all I can do now is reporting bugs to mawk and ubuntu people.:-)
Quoted 5 lines
Yeah, but without your tip I couldn't be able to find the origin before some time.
And the kernel couldn't build anyway.At least we should do something with this version of mawk.
Hm, indeed.
Maybe, we can run additional sanity check script before using awk, like this;---
res=echo a | $AWK '/[[:lower:]]+/{print "OK"}'
[ "$res" != "OK" ] && exit 1
Quoted 8 lines
res=
$AWK 'BEGIN {printf("%x", 0)}'
[ "$res" != "0" ] && exit 1exit 0
---Thanks,
Yeah, that looks good.
Thanks.
Re: [PATCH -tip v14 01/12] x86: instruction decoder API
In reply to Frederic WeisbeckerQuoted 35 lines · Frederic Weisbecker
Quoted 23 lines · Masami Hiramatsu
Add x86 instruction decoder to arch-specific libraries. This decoder can decode x86 instructions used in kernel into prefix, opcode, modrm, sib, displacement and immediates. This can also show the length of instructions.
This version introduces instruction attributes for decoding instructions. The instruction attribute tables are generated from the opcode map file (x86-opcode-map.txt) by the generator script(gen-insn-attr-x86.awk).
Currently, the opcode maps are based on opcode maps in Intel(R) 64 and IA-32 Architectures Software Developers Manual Vol.2: Appendix.A, and consist of below two types of opcode tables.
1-byte/2-bytes/3-bytes opcodes, which has 256 elements, are written as below;
Table: table-name
Referrer: escaped-name
opcode: mnemonic|GrpXXX [operand1[,operand2...]] [(extra1)[,(extra2)...] [| 2nd-mnemonic ...]
(or)
opcode: escape # escaped-name
EndTableQuoted 9 lines
Group opcodes, which has 8 elements, are written as below;
GrpTable: GrpXXX
reg: mnemonic [operand1[,operand2...]] [(extra1)[,(extra2)...] [| 2nd-mnemonic ...] EndTableThese opcode maps include a few SSE and FP opcodes (for setup), because those opcodes are used in the kernel.
Quoted 6 lines
I'm getting the following build error on an old K7 box:
arch/x86/lib/inat.c: In function ‘inat_get_opcode_attribute’:arch/x86/lib/inat.c:29: erreur: ‘inat_primary_table’ undeclared (first use in this function)arch/x86/lib/inat.c:29: erreur: (Each undeclared identifier is reported only oncearch/x86/lib/inat.c:29: erreur: for each function it appears in.)
Thanks for reporting!
Hmm, it seems that inat-tables.c is not correctly generated. Could you tell me which awk you used and send the inat-tables.c?
Thank you,
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
Re: [PATCH -tip v14 01/12] x86: instruction decoder API
Quoted 43 lines · Masami Hiramatsu
Quoted 35 lines · Frederic Weisbecker
Quoted 23 lines · Masami Hiramatsu
Add x86 instruction decoder to arch-specific libraries. This decoder can decode x86 instructions used in kernel into prefix, opcode, modrm, sib, displacement and immediates. This can also show the length of instructions.
This version introduces instruction attributes for decoding instructions. The instruction attribute tables are generated from the opcode map file (x86-opcode-map.txt) by the generator script(gen-insn-attr-x86.awk).
Currently, the opcode maps are based on opcode maps in Intel(R) 64 and IA-32 Architectures Software Developers Manual Vol.2: Appendix.A, and consist of below two types of opcode tables.
1-byte/2-bytes/3-bytes opcodes, which has 256 elements, are written as below;
Table: table-name
Referrer: escaped-name
opcode: mnemonic|GrpXXX [operand1[,operand2...]] [(extra1)[,(extra2)...] [| 2nd-mnemonic ...]
(or)
opcode: escape # escaped-name
EndTableQuoted 9 lines
Group opcodes, which has 8 elements, are written as below;
GrpTable: GrpXXX
reg: mnemonic [operand1[,operand2...]] [(extra1)[,(extra2)...] [| 2nd-mnemonic ...] EndTableThese opcode maps include a few SSE and FP opcodes (for setup), because those opcodes are used in the kernel.
Quoted 6 lines
I'm getting the following build error on an old K7 box:
arch/x86/lib/inat.c: In function ‘inat_get_opcode_attribute’:arch/x86/lib/inat.c:29: erreur: ‘inat_primary_table’ undeclared (first use in this function)arch/x86/lib/inat.c:29: erreur: (Each undeclared identifier is reported only oncearch/x86/lib/inat.c:29: erreur: for each function it appears in.)
Quoted 6 lines
Thanks for reporting!
Hmm, it seems thatinat-tables.cis not correctly generated. Could you tell me which awk you used and send theinat-tables.c?Thank you,
Sure:
$ awk -Wv mawk 1.3.3 Nov 1996, Copyright (C) Michael D. Brennan
compiled limits:
max NF 32767
sprintf buffer 2040
And I've sent you the content of inat_tables.c in the other answer :)
PATCH v14 2/12 x86: x86 instruction decoder build-time selftest
In reply to Masami HiramatsuAdd a user-space selftest of x86 instruction decoder at kernel build time. When CONFIG_X86_DECODER_SELFTEST=y, Kbuild builds a test harness of x86 instruction decoder and performs it after building vmlinux. The test compares the results of objdump and x86 instruction decoder code and check there are no differences.
---
arch/x86/Kconfig.debug | 9 +++ arch/x86/Makefile | 3 + arch/x86/tools/Makefile | 15 +++++ arch/x86/tools/distill.awk | 42 +++++++++++++++ arch/x86/tools/test_get_len.c | 113 +++++++++++++++++++++++++++++++++++++++++ 5 files changed, 182 insertions(+), 0 deletions(-) create mode 100644 arch/x86/tools/Makefile create mode 100644 arch/x86/tools/distill.awk create mode 100644 arch/x86/tools/test_get_len.c
arch/x86/Kconfig.debug +9 -0
@@ -186,6 +186,15 @@ config X86_DS_SELFTEST config HAVE_MMIOTRACE_SUPPORT def_bool y +config X86_DECODER_SELFTEST + bool "x86 instruction decoder selftest" + depends on DEBUG_KERNEL + ---help--- + Perform x86 instruction decoder selftests at build time. + This option is useful for checking the sanity of x86 instruction + decoder code. + If unsure, say "N". + # # IO delay types: #
arch/x86/Makefile +3 -0
@@ -154,6 +154,9 @@ all: bzImage KBUILD_IMAGE := $(boot)/bzImage bzImage: vmlinux +ifeq ($(CONFIG_X86_DECODER_SELFTEST),y) + $(Q)$(MAKE) $(build)=arch/x86/tools posttest +endif $(Q)$(MAKE) $(build)=$(boot) $(KBUILD_IMAGE) $(Q)mkdir -p $(objtree)/arch/$(UTS_MACHINE)/boot $(Q)ln -fsn ../../x86/boot/bzImage $(objtree)/arch/$(UTS_MACHINE)/boot/$@
arch/x86/tools/Makefile new file +15 -0
@@ -0,0 +1,15 @@ +PHONY += posttest +quiet_cmd_posttest = TEST $@ + cmd_posttest = $(OBJDUMP) -d $(objtree)/vmlinux | awk -f $(srctree)/arch/x86/tools/distill.awk | $(obj)/test_get_len + +posttest: $(obj)/test_get_len vmlinux + $(call cmd,posttest) + +hostprogs-y := test_get_len + +# -I needed for generated C source and C source which in the kernel tree. +HOSTCFLAGS_test_get_len.o := -Wall -I$(objtree)/arch/x86/lib/ -I$(srctree)/arch/x86/include/ -I$(srctree)/arch/x86/lib/ + +# Dependancies are also needed. +$(obj)/test_get_len.o: $(srctree)/arch/x86/lib/insn.c $(srctree)/arch/x86/lib/inat.c $(srctree)/arch/x86/include/asm/inat_types.h $(srctree)/arch/x86/include/asm/inat.h $(srctree)/arch/x86/include/asm/insn.h $(objtree)/arch/x86/lib/inat-tables.c +
arch/x86/tools/distill.awk new file +42 -0
42 lines not on this page · raw message
arch/x86/tools/test_get_len.c new file +113 -0
113 lines not on this page · raw message
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
PATCH v14 3/12 kprobes: checks probe address is instruction boudary on x86
In reply to Masami HiramatsuEnsure safeness of inserting kprobes by checking whether the specified address is at the first byte of a instruction on x86.
This is done by decoding probed function from its head to the probe point.
---
arch/x86/kernel/kprobes.c | 69 +++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 69 insertions(+), 0 deletions(-)
arch/x86/kernel/kprobes.c +69 -0
@@ -48,6 +48,7 @@#include <linux/preempt.h> #include <linux/module.h> #include <linux/kdebug.h> +#include <linux/kallsyms.h> #include <asm/cacheflush.h> #include <asm/desc.h>
@@ -55,6 +56,7 @@#include <asm/uaccess.h> #include <asm/alternative.h> #include <asm/debugreg.h> +#include <asm/insn.h> void jprobe_return_end (void );
@@ -245,6 +247,71 @@ retry: } } +/* Recover the probed instruction at addr for further analysis. */ +static int recover_probed_instruction (kprobe_opcode_t *buf,unsigned long addr) +{ +struct kprobe *kp; + kp =get_kprobe ((void *)addr); +if (!kp) +return -EINVAL ; + +/* +* Basically, kp->ainsn.insn has an original instruction. +* However, RIP-relative instruction can not do single-stepping +* at different place, fix_riprel() tweaks the displacement of +* that instruction. In that case, we can't recover the instruction +* from the kp->ainsn.insn. +* +* On the other hand, kp->opcode has a copy of the first byte of +* the probed instruction, which is overwritten by int3. And +* the instruction at kp->addr is not modified by kprobes except +* for the first byte, we can recover the original instruction +* from it and kp->opcode. +*/ +memcpy (buf, kp->addr,MAX_INSN_SIZE *sizeof (kprobe_opcode_t)); + buf[0 ] = kp->opcode; +return 0 ; +} + +/* Dummy buffers for kallsyms_lookup */ +static char __dummy_buf[KSYM_NAME_LEN ]; + +/* Check if paddr is at an instruction boundary */ +static int __kprobes can_probe (unsigned long paddr) +{ +int ret; +unsigned long addr, offset =0 ; +struct insn insn; +kprobe_opcode_t buf[MAX_INSN_SIZE ]; + +if (!kallsyms_lookup (paddr,NULL , &offset,NULL , __dummy_buf)) +return 0 ; + +/* Decode instructions */ + addr = paddr - offset; +while (addr < paddr) { +kernel_insn_init (&insn, (void *)addr); +insn_get_opcode (&insn); + +/* Check if the instruction has been modified. */ +if (insn.opcode.bytes[0 ] ==BREAKPOINT_INSTRUCTION ) { + ret =recover_probed_instruction (buf, addr); +if (ret) +/* +* Another debugging subsystem might insert +* this breakpoint. In that case, we can't +* recover it. +*/ +return 0 ; +kernel_insn_init (&insn, buf); + } +insn_get_length (&insn); + addr += insn.length; + } + +return (addr == paddr); +} +/* * Returns non-zero if opcode modifies the interrupt flag. */
@@ -360,6 +427,8 @@ static void __kprobes arch_copy_kprobe(struct kprobe *p)int __kprobes arch_prepare_kprobe (struct kprobe *p) { +if (!can_probe ((unsigned long )p->addr)) +return -EILSEQ ;/* insn: must be on special executable page on x86. */ p->ainsn.insn =get_insn_slot ();if (!p->ainsn.insn)
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
Re: [PATCH -tip v14 03/12] kprobes: checks probe address is instruction boudary on x86
Quoted 93 lines · Masami Hiramatsu
Ensure safeness of inserting kprobes by checking whether the specified address is at the first byte of a instruction on x86.
This is done by decoding probed function from its head to the probe point.Signed-off-by Masami Hiramatsu <[email protected]>Cc Avi Kivity <[email protected]>Cc Andi Kleen <[email protected]>Cc Christoph Hellwig <[email protected]>Cc Frank Ch. Eigler <[email protected]>Cc Frederic Weisbecker <[email protected]>Cc H. Peter Anvin <[email protected]>Cc Ingo Molnar <[email protected]>Cc Jason Baron <[email protected]>Cc Jim Keniston <[email protected]>Cc K.Prasad <[email protected]>Cc Lai Jiangshan <[email protected]>Cc Li Zefan <[email protected]>Cc Przemysław Pawełczyk <[email protected]>Cc Roland McGrath <[email protected]>Cc Sam Ravnborg <[email protected]>Cc Srikar Dronamraju <[email protected]>Cc Steven Rostedt <[email protected]>Cc Tom Zanussi <[email protected]>Cc Vegard Nossum <[email protected]>---
arch/x86/kernel/kprobes.c | 69 +++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 69 insertions(+), 0 deletions(-)arch/x86/kernel/kprobes.c +41
-0@@ -48,6 +48,7 @@#include <linux/preempt.h> #include <linux/module.h> #include <linux/kdebug.h> +#include <linux/kallsyms.h> #include <asm/cacheflush.h> #include <asm/desc.h> @@ -55,6 +56,7 @@#include <asm/uaccess.h> #include <asm/alternative.h> #include <asm/debugreg.h> +#include <asm/insn.h> void jprobe_return_end (void );@@ -245,6 +247,71 @@ retry: } } +/* Recover the probed instruction at addr for further analysis. */ +static int recover_probed_instruction (kprobe_opcode_t *buf,unsigned long addr) +{ +struct kprobe *kp; + kp =get_kprobe ((void *)addr); +if (!kp) +return -EINVAL ; + +/* +* Basically, kp->ainsn.insn has an original instruction. +* However, RIP-relative instruction can not do single-stepping +* at different place, fix_riprel() tweaks the displacement of +* that instruction. In that case, we can't recover the instruction +* from the kp->ainsn.insn. +* +* On the other hand, kp->opcode has a copy of the first byte of +* the probed instruction, which is overwritten by int3. And +* the instruction at kp->addr is not modified by kprobes except +* for the first byte, we can recover the original instruction +* from it and kp->opcode. +*/ +memcpy (buf, kp->addr,MAX_INSN_SIZE *sizeof (kprobe_opcode_t)); + buf[0 ] = kp->opcode; +return 0 ; +} + +/* Dummy buffers for kallsyms_lookup */ +static char __dummy_buf[KSYM_NAME_LEN ]; + +/* Check if paddr is at an instruction boundary */ +static int __kprobes can_probe (unsigned long paddr) +{ +int ret; +unsigned long addr, offset =0 ; +struct insn insn; +kprobe_opcode_t buf[MAX_INSN_SIZE ]; + +if (!kallsyms_lookup (paddr,NULL , &offset,NULL , __dummy_buf)) +return 0 ;
arch/x86/kernel/kprobes.c retry: · line 298
Quoted 10 lines
arch/x86/kernel/kprobes.c +10
-0+ +/* Decode instructions */ + addr = paddr - offset; +while (addr < paddr) { +kernel_insn_init (&insn, (void *)addr); +insn_get_opcode (&insn); + +/* Check if the instruction has been modified. */ +if (insn.opcode.bytes[0 ] ==BREAKPOINT_INSTRUCTION ) { + ret =recover_probed_instruction (buf, addr);
I'm confused about the reason of this recovering. Is it to remove kprobes behind the current setting one in the current function?
If such cleanup is needed for whatever reason, I wonder what happens to the corresponding kprobe structure, why isn't it using the arch_disarm_ helper to patch back?
(Questions that may prove my solid misunderstanding of the kprobes code ;-)
Frederic.
Re: [PATCH -tip v14 03/12] kprobes: checks probe address is instruction boudary on x86
Quoted 101 lines · Frederic Weisbecker
Quoted 100 lines · Masami Hiramatsu
Ensure safeness of inserting kprobes by checking whether the specified address is at the first byte of a instruction on x86.
This is done by decoding probed function from its head to the probe point.Signed-off-by Masami Hiramatsu <[email protected]>Cc Avi Kivity <[email protected]>Cc Andi Kleen <[email protected]>Cc Christoph Hellwig <[email protected]>Cc Frank Ch. Eigler <[email protected]>Cc Frederic Weisbecker <[email protected]>Cc H. Peter Anvin <[email protected]>Cc Ingo Molnar <[email protected]>Cc Jason Baron <[email protected]>Cc Jim Keniston <[email protected]>Cc K.Prasad <[email protected]>Cc Lai Jiangshan <[email protected]>Cc Li Zefan <[email protected]>Cc Przemysław Pawełczyk <[email protected]>Cc Roland McGrath <[email protected]>Cc Sam Ravnborg <[email protected]>Cc Srikar Dronamraju <[email protected]>Cc Steven Rostedt <[email protected]>Cc Tom Zanussi <[email protected]>Cc Vegard Nossum <[email protected]>---
arch/x86/kernel/kprobes.c | 69 +++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 69 insertions(+), 0 deletions(-)arch/x86/kernel/kprobes.c +48
-0@@ -48,6 +48,7 @@#include <linux/preempt.h> #include <linux/module.h> #include <linux/kdebug.h> +#include <linux/kallsyms.h> #include <asm/cacheflush.h> #include <asm/desc.h> @@ -55,6 +56,7 @@#include <asm/uaccess.h> #include <asm/alternative.h> #include <asm/debugreg.h> +#include <asm/insn.h> void jprobe_return_end (void );@@ -245,6 +247,71 @@ retry: } } +/* Recover the probed instruction at addr for further analysis. */ +static int recover_probed_instruction (kprobe_opcode_t *buf,unsigned long addr) +{ +struct kprobe *kp; + kp =get_kprobe ((void *)addr); +if (!kp) +return -EINVAL ; + +/* +* Basically, kp->ainsn.insn has an original instruction. +* However, RIP-relative instruction can not do single-stepping +* at different place, fix_riprel() tweaks the displacement of +* that instruction. In that case, we can't recover the instruction +* from the kp->ainsn.insn. +* +* On the other hand, kp->opcode has a copy of the first byte of +* the probed instruction, which is overwritten by int3. And +* the instruction at kp->addr is not modified by kprobes except +* for the first byte, we can recover the original instruction +* from it and kp->opcode. +*/ +memcpy (buf, kp->addr,MAX_INSN_SIZE *sizeof (kprobe_opcode_t)); + buf[0 ] = kp->opcode; +return 0 ; +} + +/* Dummy buffers for kallsyms_lookup */ +static char __dummy_buf[KSYM_NAME_LEN ]; + +/* Check if paddr is at an instruction boundary */ +static int __kprobes can_probe (unsigned long paddr) +{ +int ret; +unsigned long addr, offset =0 ; +struct insn insn; +kprobe_opcode_t buf[MAX_INSN_SIZE ]; + +if (!kallsyms_lookup (paddr,NULL , &offset,NULL , __dummy_buf)) +return 0 ; + +/* Decode instructions */ + addr = paddr - offset; +while (addr < paddr) { +kernel_insn_init (&insn, (void *)addr); +insn_get_opcode (&insn); +
Quoted 8 lines
arch/x86/kernel/kprobes.c retry: · line 298
Quoted 3 lines
arch/x86/kernel/kprobes.c +3
-0+/* Check if the instruction has been modified. */ +if (insn.opcode.bytes[0 ] ==BREAKPOINT_INSTRUCTION ) { + ret =recover_probed_instruction (buf, addr);I'm confused about the reason of this recovering. Is it to remove kprobes behind the current setting one in the current function?
No, it recovers just an instruction which is probed by a kprobe, because we need to know the first byte of this instruction for decoding it.
Perhaps we'd better to have more generic interface (text_peek?) for it because another subsystem (e.g. kgdb) may want to insert int3...
Thank you,
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
Re: [PATCH -tip v14 03/12] kprobes: checks probe address is instruction boudary on x86
Quoted 14 lines · Masami Hiramatsu
Quoted 4 lines · Frederic Weisbecker
Quoted 4 lines
arch/x86/kernel/kprobes.c +4
-0+while (addr < paddr) { +kernel_insn_init (&insn, (void *)addr); +insn_get_opcode (&insn); +Quoted 8 lines
arch/x86/kernel/kprobes.c retry: · line 298
Quoted 3 lines
arch/x86/kernel/kprobes.c +3
-0+/* Check if the instruction has been modified. */ +if (insn.opcode.bytes[0 ] ==BREAKPOINT_INSTRUCTION ) { + ret =recover_probed_instruction (buf, addr);I'm confused about the reason of this recovering. Is it to remove kprobes behind the current setting one in the current function?
Quoted 8 lines
No, it recovers just an instruction which is probed by a kprobe, because we need to know the first byte of this instruction for decoding it.
Perhaps we'd better to have more generic interface (
text_peek?) for it because another subsystem (e.g. kgdb) may want to insert int3...Thank you,
Aah, I see now, it's to keep a sane check of the instructions boundaries without int 3 artifacts in the middle.
But in that case, you should re-arm the breakpoint after your check, right?
Or may be you could do the check without repatching? May be by doing a copy of insn.opcode.bytes and replacing bytes[0] with what a random kprobe has stolen?
Re: [PATCH -tip v14 03/12] kprobes: checks probe address is instruction boudary on x86
Quoted 15 lines · Frederic Weisbecker
Quoted 14 lines · Masami Hiramatsu
Quoted 12 lines · Frederic Weisbecker
arch/x86/kernel/kprobes.c retry: · line 298
Quoted 7 lines
arch/x86/kernel/kprobes.c +7
-0+while (addr < paddr) { +kernel_insn_init (&insn, (void *)addr); +insn_get_opcode (&insn); + +/* Check if the instruction has been modified. */ +if (insn.opcode.bytes[0 ] ==BREAKPOINT_INSTRUCTION ) { + ret =recover_probed_instruction (buf, addr);I'm confused about the reason of this recovering. Is it to remove kprobes behind the current setting one in the current function?
Quoted 3 lines
Quoted 3 lines
No, it recovers just an instruction which is probed by a kprobe, because we need to know the first byte of this instruction for decoding it.
Ah, sorry, it was not accurate. the function recovers an instruction on the buffer(buf), not on the real kernel text. :)
Quoted 7 lines
Quoted 5 lines
Perhaps we'd better to have more generic interface (
text_peek?) for it because another subsystem (e.g. kgdb) may want to insert int3...Thank you,
Quoted 7 lines
Aah, I see now, it's to keep a sane check of the instructions boundaries without int 3 artifacts in the middle.
But in that case, you should re-arm the breakpoint after your check, right?
Or may be you could do the check without repatching?
Yes, it doesn't modify kernel text, just recover an original instruction from kernel text and backup byte on a buffer.
Quoted 2 lines
May be by doing a copy of insn.opcode.bytes and replacing bytes[0] with what a random kprobe has stolen?
Hm, no, this function is protected from other kprobes by kprobe_mutex.
Thank you,
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
Re: [PATCH -tip v14 03/12] kprobes: checks probe address is instruction boudary on x86
Quoted 16 lines · Masami Hiramatsu
Quoted 15 lines · Frederic Weisbecker
Quoted 14 lines · Masami Hiramatsu
Quoted 12 lines · Frederic Weisbecker
arch/x86/kernel/kprobes.c retry: · line 298
Quoted 7 lines
arch/x86/kernel/kprobes.c +7
-0+while (addr < paddr) { +kernel_insn_init (&insn, (void *)addr); +insn_get_opcode (&insn); + +/* Check if the instruction has been modified. */ +if (insn.opcode.bytes[0 ] ==BREAKPOINT_INSTRUCTION ) { + ret =recover_probed_instruction (buf, addr);I'm confused about the reason of this recovering. Is it to remove kprobes behind the current setting one in the current function?
Quoted 6 lines
Quoted 3 lines
Quoted 3 lines
No, it recovers just an instruction which is probed by a kprobe, because we need to know the first byte of this instruction for decoding it.
Ah, sorry, it was not accurate. the function recovers an instruction on the buffer(buf), not on the real kernel text. :)
Ah ok. I'll just add a small comment about that then, and apply it.
Quoted 10 lines
Quoted 10 lines
Quoted 5 lines
Perhaps we'd better to have more generic interface (
text_peek?) for it because another subsystem (e.g. kgdb) may want to insert int3...Thank you,
Aah, I see now, it's to keep a sane check of the instructions boundaries without int 3 artifacts in the middle.
Quoted 7 lines
Quoted 4 lines
But in that case, you should re-arm the breakpoint after your check, right?
Or may be you could do the check without repatching?
Yes, it doesn't modify kernel text, just recover an original instruction from kernel text and backup byte on a buffer.
Ok.
Quoted 6 lines
Quoted 2 lines
May be by doing a copy of insn.opcode.bytes and replacing bytes[0] with what a random kprobe has stolen?
Hm, no, this function is protected from other kprobes by
kprobe_mutex.Thank you,
Right, thanks!
Quoted 9 lines
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
PATCH v14 4/12 kprobes: cleanup fix_riprel() using insn decoder on x86
In reply to Masami HiramatsuCleanup fix_riprel() in arch/x86/kernel/kprobes.c by using x86 instruction decoder.
---
arch/x86/kernel/kprobes.c | 128 ++++++++------------------------------------- 1 files changed, 23 insertions(+), 105 deletions(-)
arch/x86/kernel/kprobes.c +23 -105
@@ -109,50 +109,6 @@ static const u32 twobyte_is_boostable[256 / 32] = {/* ----------------------------------------------- */ /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ }; -static const u32 onebyte_has_modrm[256 /32 ] = { -/* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ -/* ----------------------------------------------- */ -W (0x00 ,1 ,1 ,1 ,1 ,0 ,0 ,0 ,0 ,1 ,1 ,1 ,1 ,0 ,0 ,0 ,0 ) |/* 00 */ -W (0x10 ,1 ,1 ,1 ,1 ,0 ,0 ,0 ,0 ,1 ,1 ,1 ,1 ,0 ,0 ,0 ,0 ) ,/* 10 */ -W (0x20 ,1 ,1 ,1 ,1 ,0 ,0 ,0 ,0 ,1 ,1 ,1 ,1 ,0 ,0 ,0 ,0 ) |/* 20 */ -W (0x30 ,1 ,1 ,1 ,1 ,0 ,0 ,0 ,0 ,1 ,1 ,1 ,1 ,0 ,0 ,0 ,0 ) ,/* 30 */ -W (0x40 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ) |/* 40 */ -W (0x50 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ) ,/* 50 */ -W (0x60 ,0 ,0 ,1 ,1 ,0 ,0 ,0 ,0 ,0 ,1 ,0 ,1 ,0 ,0 ,0 ,0 ) |/* 60 */ -W (0x70 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ) ,/* 70 */ -W (0x80 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ) |/* 80 */ -W (0x90 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ) ,/* 90 */ -W (0xa0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ) |/* a0 */ -W (0xb0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ) ,/* b0 */ -W (0xc0 ,1 ,1 ,0 ,0 ,1 ,1 ,1 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ) |/* c0 */ -W (0xd0 ,1 ,1 ,1 ,1 ,0 ,0 ,0 ,0 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ) ,/* d0 */ -W (0xe0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ) |/* e0 */ -W (0xf0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,1 )/* f0 */ -/* ----------------------------------------------- */ -/* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ -}; -static const u32 twobyte_has_modrm[256 /32 ] = { -/* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ -/* ----------------------------------------------- */ -W (0x00 ,1 ,1 ,1 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,0 ,1 ) |/* 0f */ -W (0x10 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ) ,/* 1f */ -W (0x20 ,1 ,1 ,1 ,1 ,1 ,0 ,1 ,0 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ) |/* 2f */ -W (0x30 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ) ,/* 3f */ -W (0x40 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ) |/* 4f */ -W (0x50 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ) ,/* 5f */ -W (0x60 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ) |/* 6f */ -W (0x70 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,0 ,0 ,0 ,0 ,0 ,1 ,1 ,1 ,1 ) ,/* 7f */ -W (0x80 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ) |/* 8f */ -W (0x90 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ) ,/* 9f */ -W (0xa0 ,0 ,0 ,0 ,1 ,1 ,1 ,1 ,1 ,0 ,0 ,0 ,1 ,1 ,1 ,1 ,1 ) |/* af */ -W (0xb0 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,0 ,0 ,1 ,1 ,1 ,1 ,1 ,1 ) ,/* bf */ -W (0xc0 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ) |/* cf */ -W (0xd0 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ) ,/* df */ -W (0xe0 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ) |/* ef */ -W (0xf0 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,0 )/* ff */ -/* ----------------------------------------------- */ -/* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ -};#undef Wstruct kretprobe_blackpoint kretprobe_blacklist[] = {
@@ -345,68 +301,30 @@ static int __kprobes is_IF_modifier(kprobe_opcode_t *insn)static void __kprobes fix_riprel (struct kprobe *p) {#ifdef CONFIG_X86_64 -u8 *insn = p->ainsn.insn; -s64 disp; -int need_modrm; - -/* Skip legacy instruction prefixes. */ -while (1 ) { -switch (*insn) { -case 0x66 : -case 0x67 : -case 0x2e : -case 0x3e : -case 0x26 : -case 0x64 : -case 0x65 : -case 0x36 : -case 0xf0 : -case 0xf3 : -case 0xf2 : - ++insn; -continue ; - } -break ; - } +struct insn insn; +kernel_insn_init (&insn, p->ainsn.insn); -/* Skip REX instruction prefix. */ -if (is_REX_prefix (insn)) - ++insn; - -if (*insn ==0x0f ) { -/* Two-byte opcode. */ - ++insn; - need_modrm =test_bit (*insn, - (unsigned long *)twobyte_has_modrm); - }else -/* One-byte opcode. */ - need_modrm =test_bit (*insn, - (unsigned long *)onebyte_has_modrm); - -if (need_modrm) { -u8 modrm = *++insn; -if ((modrm &0xc7 ) ==0x05 ) { -/* %rip+disp32 addressing mode */ -/* Displacement follows ModRM byte. */ - ++insn; -/* -* The copied instruction uses the %rip-relative -* addressing mode. Adjust the displacement for the -* difference between the original location of this -* instruction and the location of the copy that will -* actually be run. The tricky bit here is making sure -* that the sign extension happens correctly in this -* calculation, since we need a signed 32-bit result to -* be sign-extended to 64 bits when it's added to the -* %rip value and yield the same 64-bit result that the -* sign-extension of the original signed 32-bit -* displacement would have given. -*/ - disp = (u8 *) p->addr + *((s32 *) insn) - - (u8 *) p->ainsn.insn; -BUG_ON ((s64 ) (s32 ) disp != disp);/* Sanity check. */ - *(s32 *)insn = (s32 ) disp; - } +if (insn_rip_relative (&insn)) { +s64 newdisp; +u8 *disp; +insn_get_displacement (&insn); +/* +* The copied instruction uses the %rip-relative addressing +* mode. Adjust the displacement for the difference between +* the original location of this instruction and the location +* of the copy that will actually be run. The tricky bit here +* is making sure that the sign extension happens correctly in +* this calculation, since we need a signed 32-bit result to +* be sign-extended to 64 bits when it's added to the %rip +* value and yield the same 64-bit result that the sign- +* extension of the original signed 32-bit displacement would +* have given. +*/ + newdisp = (u8 *) p->addr + (s64 ) insn.displacement.value - + (u8 *) p->ainsn.insn; +BUG_ON ((s64 ) (s32 ) newdisp != newdisp);/* Sanity check. */ + disp = (u8 *) p->ainsn.insn +insn_offset_displacement (&insn); + *(s32 *) disp = (s32 ) newdisp; }#endif }
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
PATCH v14 5/12 x86: add pt_regs register and stack access APIs
In reply to Masami HiramatsuAdd following APIs for accessing registers and stack entries from pt_regs. These APIs are required by kprobes-based event tracer on ftrace. Some other debugging tools might be able to use it too.
- regs_query_register_offset(const char *name)
Query the offset of "name" register.
- regs_query_register_name(unsigned int offset)
Query the name of register by its offset.
- regs_get_register(struct pt_regs *regs, unsigned int offset) Get the value of a register by its offset.
- regs_within_kernel_stack(struct pt_regs *regs, unsigned long addr) Check the address is in the kernel stack.
- regs_get_kernel_stack_nth(struct pt_regs *reg, unsigned int nth) Get Nth entry of the kernel stack. (N >= 0)
- regs_get_argument_nth(struct pt_regs *reg, unsigned int nth) Get Nth argument at function call. (N >= 0)
---
arch/x86/include/asm/ptrace.h | 62 +++++++++++++++++++++++ arch/x86/kernel/ptrace.c | 112 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 174 insertions(+), 0 deletions(-)
arch/x86/include/asm/ptrace.h +62 -0
@@ -7,6 +7,7 @@#ifdef __KERNEL__#include <asm/segment.h> +#include <asm/page_types.h> #endif #ifndef __ASSEMBLY__
@@ -216,6 +217,67 @@ static inline unsigned long user_stack_pointer(struct pt_regs *regs)return regs->sp; } +/* Query offset/name of register from its name/offset */ +extern int regs_query_register_offset (const char *name); +extern const char *regs_query_register_name (unsigned int offset); +#define MAX_REG_OFFSET (offsetof(struct pt_regs, ss)) + +/** +* regs_get_register() - get register value from its offset +* @regs: pt_regs from which register value is gotten. +* @offset: offset number of the register. +* +* regs_get_register returns the value of a register whose offset from @regs +* is @offset. The @offset is the offset of the register in struct pt_regs. +* If @offset is bigger than MAX_REG_OFFSET, this returns 0. +*/ +static inline unsigned long regs_get_register (struct pt_regs *regs, +unsigned int offset) +{ +if (unlikely (offset >MAX_REG_OFFSET )) +return 0 ; +return *(unsigned long *)((unsigned long )regs + offset); +} + +/** +* regs_within_kernel_stack() - check the address in the stack +* @regs: pt_regs which contains kernel stack pointer. +* @addr: address which is checked. +* +* regs_within_kenel_stack() checks @addr is within the kernel stack page(s). +* If @addr is within the kernel stack, it returns true. If not, returns false. +*/ +static inline int regs_within_kernel_stack (struct pt_regs *regs, +unsigned long addr) +{ +return ((addr & ~(THREAD_SIZE -1 )) == + (kernel_stack_pointer (regs) & ~(THREAD_SIZE -1 ))); +} + +/** +* regs_get_kernel_stack_nth() - get Nth entry of the stack +* @regs: pt_regs which contains kernel stack pointer. +* @n: stack entry number. +* +* regs_get_kernel_stack_nth() returns @n th entry of the kernel stack which +* is specifined by @regs. If the @n th entry is NOT in the kernel stack, +* this returns 0. +*/ +static inline unsigned long regs_get_kernel_stack_nth (struct pt_regs *regs, +unsigned int n) +{ +unsigned long *addr = (unsigned long *)kernel_stack_pointer (regs); + addr += n; +if (regs_within_kernel_stack (regs, (unsigned long )addr)) +return *addr; +else +return 0 ; +} + +/* Get Nth argument at function call */ +extern unsigned long regs_get_argument_nth (struct pt_regs *regs, +unsigned int n); +/* * These are defined as per linux/ptrace.h, which see. */
arch/x86/kernel/ptrace.c +112 -0
118 lines not on this page · raw message
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
PATCH v14 6/12 tracing: ftrace dynamic ftrace_event_call support
In reply to Masami HiramatsuAdd dynamic ftrace_event_call support to ftrace. Trace engines can adds new ftrace_event_call to ftrace on the fly. Each operator functions of the call takes a ftrace_event_call data structure as an argument, because these functions may be shared among several ftrace_event_calls.
Changes from v13:
- Define remove_subsystem_dir() always (revirt a2ca5e03), because trace_remove_event_call() uses it.
- Modify syscall tracer because of ftrace_event_call change.
---
include/linux/ftrace_event.h | 14 +++-- include/linux/syscalls.h | 4 + include/trace/ftrace.h | 19 +++---- include/trace/syscall.h | 8 +-- kernel/trace/trace_events.c | 119 +++++++++++++++++++++++++++++------------ kernel/trace/trace_export.c | 23 ++++---- kernel/trace/trace_syscalls.c | 16 +++--- 7 files changed, 125 insertions(+), 78 deletions(-)
include/linux/ftrace_event.h +8 -6
@@ -112,13 +112,13 @@ struct ftrace_event_call {struct dentry *dir;struct trace_event *event;int enabled; -int (*regfunc)(void *); -void (*unregfunc)(void *); +int (*regfunc)(struct ftrace_event_call *); +void (*unregfunc)(struct ftrace_event_call *);int id; -int (*raw_init)(void ); -int (*show_format)(struct ftrace_event_call *call, -struct trace_seq *s); -int (*define_fields)(void ); +int (*raw_init)(struct ftrace_event_call *); +int (*show_format)(struct ftrace_event_call *, +struct trace_seq *); +int (*define_fields)(struct ftrace_event_call *);struct list_head fields;int filter_active;struct event_filter *filter;
@@ -142,6 +142,8 @@ extern int filter_current_check_discard(struct ftrace_event_call *call,extern int trace_define_field (struct ftrace_event_call *call,char *type,char *name,int offset,int size,int is_signed); +extern int trace_add_event_call (struct ftrace_event_call *call); +extern void trace_remove_event_call (struct ftrace_event_call *call);#define is_signed_type (type) (((type)(-1)) < 0)
include/linux/syscalls.h +2 -2
@@ -165,7 +165,7 @@ static void prof_sysexit_disable_##sname(struct ftrace_event_call *event_call) \ struct trace_event enter_syscall_print_##sname = { \ .trace = print_syscall_enter, \ }; \ - static int init_enter_##sname(void) \ + static int init_enter_##sname(struct ftrace_event_call *call) \ { \ int num, id; \ num = syscall_name_to_nr("sys"#sname); \
@@ -201,7 +201,7 @@ static void prof_sysexit_disable_##sname(struct ftrace_event_call *event_call) \ struct trace_event exit_syscall_print_##sname = { \ .trace = print_syscall_exit, \ }; \ - static int init_exit_##sname(void) \ + static int init_exit_##sname(struct ftrace_event_call *call) \ { \ int num, id; \ num = syscall_name_to_nr("sys"#sname); \
include/trace/ftrace.h +9 -10
@@ -294,10 +294,9 @@ ftrace_raw_output_##call(struct trace_iterator *iter, int flags) \#undef TRACE_EVENT#define TRACE_EVENT (call, proto, args, tstruct, func, print) \ int \ -ftrace_define_fields_##call(void) \ +ftrace_define_fields_##call(struct ftrace_event_call *event_call) \ { \ struct ftrace_raw_##call field; \ - struct ftrace_event_call *event_call = &event_##call; \ int ret; \ \ __common_field(int, type, 1); \
@@ -411,7 +410,7 @@ static void ftrace_profile_disable_##call(struct ftrace_event_call *event_call)\* event_trace_printk(_RET_IP_, "<call>: " <fmt>); * } * -* static int ftrace_reg_event_<call>(void) +* static int ftrace_reg_event_<call>(struct ftrace_event_call *unused) * { * int ret; *
@@ -422,7 +421,7 @@ static void ftrace_profile_disable_##call(struct ftrace_event_call *event_call)\* return ret; * } * -* static void ftrace_unreg_event_<call>(void) +* static void ftrace_unreg_event_<call>(struct ftrace_event_call *unused) * { * unregister_trace_<call>(ftrace_event_<call>); * }
@@ -455,7 +454,7 @@ static void ftrace_profile_disable_##call(struct ftrace_event_call *event_call)\* trace_current_buffer_unlock_commit(event, irq_flags, pc); * } * -* static int ftrace_raw_reg_event_<call>(void) +* static int ftrace_raw_reg_event_<call>(struct ftrace_event_call *unused) * { * int ret; *
@@ -466,7 +465,7 @@ static void ftrace_profile_disable_##call(struct ftrace_event_call *event_call)\* return ret; * } * -* static void ftrace_unreg_event_<call>(void) +* static void ftrace_unreg_event_<call>(struct ftrace_event_call *unused) * { * unregister_trace_<call>(ftrace_raw_event_<call>); * }
@@ -475,7 +474,7 @@ static void ftrace_profile_disable_##call(struct ftrace_event_call *event_call)\* .trace = ftrace_raw_output_<call>, <-- stage 2 * }; * -* static int ftrace_raw_init_event_<call>(void) +* static int ftrace_raw_init_event_<call>(struct ftrace_event_call *unused) * { * int id; *
@@ -569,7 +568,7 @@ static void ftrace_raw_event_##call(proto) \trace_nowake_buffer_unlock_commit (event, irq_flags, pc); \ } \ \ -static int ftrace_raw_reg_event_##call(void *ptr) \ +static int ftrace_raw_reg_event_##call(struct ftrace_event_call *unused)\ { \ int ret; \ \
@@ -580,7 +579,7 @@ static int ftrace_raw_reg_event_##call(void *ptr) \return ret; \ } \ \ -static void ftrace_raw_unreg_event_##call(void *ptr) \ +static void ftrace_raw_unreg_event_##call(struct ftrace_event_call *unused)\ { \ unregister_trace_##call(ftrace_raw_event_##call); \ } \
@@ -589,7 +588,7 @@ static struct trace_event ftrace_event_type_##call = { \ .trace = ftrace_raw_output_##call, \ }; \ \ -static int ftrace_raw_init_event_##call(void) \ +static int ftrace_raw_init_event_##call(struct ftrace_event_call *unused)\ { \ int id; \ \
include/trace/syscall.h +4 -4
@@ -51,10 +51,10 @@ void set_syscall_enter_id(int num, int id);void set_syscall_exit_id (int num,int id);extern struct trace_event event_syscall_enter;extern struct trace_event event_syscall_exit; -extern int reg_event_syscall_enter (void *ptr); -extern void unreg_event_syscall_enter (void *ptr); -extern int reg_event_syscall_exit (void *ptr); -extern void unreg_event_syscall_exit (void *ptr); +extern int reg_event_syscall_enter (struct ftrace_event_call *call); +extern void unreg_event_syscall_enter (struct ftrace_event_call *call); +extern int reg_event_syscall_exit (struct ftrace_event_call *call); +extern void unreg_event_syscall_exit (struct ftrace_event_call *call);extern int ftrace_format_syscall (struct ftrace_event_call *call,struct trace_seq *s);enum print_line_t print_syscall_enter (struct trace_iterator *iter,int flags);
kernel/trace/trace_events.c +83 -36
182 lines not on this page · raw message
kernel/trace/trace_export.c +11 -12
@@ -117,10 +117,16 @@ ftrace_format_##call(struct ftrace_event_call *unused, \#define TRACE_FIELD_SPECIAL (type_item, item, len, cmd) \ cmd; +static int ftrace_raw_init_event (struct ftrace_event_call *event_call) +{ +INIT_LIST_HEAD (&event_call->fields); +init_preds (event_call); +return 0 ; +} +#undef TRACE_EVENT_FORMAT#define TRACE_EVENT_FORMAT (call, proto, args, fmt, tstruct, tpfmt) \ -int ftrace_define_fields_##call(void); \ -static int ftrace_raw_init_event_##call(void); \ +int ftrace_define_fields_##call(struct ftrace_event_call *c); \ \ struct ftrace_event_call __used \ __attribute__((__aligned__(4))) \
@@ -128,16 +134,10 @@ __attribute__((section("_ftrace_events"))) event_##call = { \ .name = #call, \ .id = proto, \ .system = __stringify(TRACE_SYSTEM), \ - .raw_init = ftrace_raw_init_event_##call, \ + .raw_init = ftrace_raw_init_event, \ .show_format = ftrace_format_##call, \ .define_fields = ftrace_define_fields_##call, \ -}; \ -static int ftrace_raw_init_event_##call(void) \ -{ \ - INIT_LIST_HEAD(&event_##call.fields); \ - init_preds(&event_##call); \ - return 0; \ -} \ +};#undef TRACE_EVENT_FORMAT_NOFILTER #define TRACE_EVENT_FORMAT_NOFILTER(call, proto, args, fmt, tstruct, \
@@ -184,9 +184,8 @@ __attribute__((section("_ftrace_events"))) event_##call = { \#undef TRACE_EVENT_FORMAT#define TRACE_EVENT_FORMAT (call, proto, args, fmt, tstruct, tpfmt) \ int \ -ftrace_define_fields_##call(void) \ +ftrace_define_fields_##call(struct ftrace_event_call *event_call) \ { \ - struct ftrace_event_call *event_call = &event_##call; \ struct args field; \ int ret; \ \
kernel/trace/trace_syscalls.c +8 -8
@@ -210,13 +210,13 @@ void ftrace_syscall_exit(struct pt_regs *regs, long ret)trace_wake_up (); } -int reg_event_syscall_enter (void *ptr) +int reg_event_syscall_enter (struct ftrace_event_call *call) {int ret =0 ;int num;char *name; - name = (char *)ptr; + name = (char *)call->data; num =syscall_name_to_nr (name);if (num <0 || num >=FTRACE_SYSCALL_MAX )return -ENOSYS ;
@@ -234,12 +234,12 @@ int reg_event_syscall_enter(void *ptr)return ret; } -void unreg_event_syscall_enter (void *ptr) +void unreg_event_syscall_enter (struct ftrace_event_call *call) {int num;char *name; - name = (char *)ptr; + name = (char *)call->data; num =syscall_name_to_nr (name);if (num <0 || num >=FTRACE_SYSCALL_MAX )return ;
@@ -251,13 +251,13 @@ void unreg_event_syscall_enter(void *ptr)mutex_unlock (&syscall_trace_lock); } -int reg_event_syscall_exit (void *ptr) +int reg_event_syscall_exit (struct ftrace_event_call *call) {int ret =0 ;int num;char *name; - name = (char *)ptr; + name = (char *)call->data; num =syscall_name_to_nr (name);if (num <0 || num >=FTRACE_SYSCALL_MAX )return -ENOSYS ;
@@ -275,12 +275,12 @@ int reg_event_syscall_exit(void *ptr)return ret; } -void unreg_event_syscall_exit (void *ptr) +void unreg_event_syscall_exit (struct ftrace_event_call *call) {int num;char *name; - name = (char *)ptr; + name = (char *)call->data; num =syscall_name_to_nr (name);if (num <0 || num >=FTRACE_SYSCALL_MAX )return ;
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
PATCH v14 7/12 tracing: Introduce TRACE_FIELD_ZERO() macro
In reply to Masami HiramatsuUse TRACE_FIELD_ZERO(type, item) instead of TRACE_FIELD_ZERO_CHAR(item). This also includes a fix of TRACE_ZERO_CHAR() macro.
---
kernel/trace/trace_event_types.h | 4 ++-- kernel/trace/trace_export.c | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-)
kernel/trace/trace_event_types.h +2 -2
@@ -109,7 +109,7 @@ TRACE_EVENT_FORMAT(bprint, TRACE_BPRINT, bprint_entry, ignore, TRACE_STRUCT( TRACE_FIELD(unsigned long, ip, ip) TRACE_FIELD(char *, fmt, fmt) - TRACE_FIELD_ZERO_CHAR(buf) + TRACE_FIELD_ZERO(char, buf) ), TP_RAW_FMT("%08lx (%d) fmt:%p %s") );
@@ -117,7 +117,7 @@ TRACE_EVENT_FORMAT(bprint, TRACE_BPRINT, bprint_entry, ignore,TRACE_EVENT_FORMAT (print,TRACE_PRINT , print_entry, ignore,TRACE_STRUCT ( TRACE_FIELD(unsigned long, ip, ip) -TRACE_FIELD_ZERO_CHAR (buf) +TRACE_FIELD_ZERO (char, buf) ),TP_RAW_FMT ("%08lx (%d) fmt:%p %s" ) );
kernel/trace/trace_export.c +8 -8
@@ -42,9 +42,9 @@ extern void __bad_type_size(void);if (!ret) \return 0 ; -#undef TRACE_FIELD_ZERO_CHAR -#define TRACE_FIELD_ZERO_CHAR (item) \ - ret = trace_seq_printf(s, "\tfield:char " #item ";\t" \ +#undef TRACE_FIELD_ZERO +#define TRACE_FIELD_ZERO (type, item) \ + ret = trace_seq_printf(s, "\tfield:" #type " " #item ";\t" \ "offset:%u;\tsize:0;\n", \ (unsigned int)offsetof(typeof(field), item)); \ if (!ret) \
@@ -92,9 +92,6 @@ ftrace_format_##call(struct ftrace_event_call *unused, \#include "trace_event_types.h" -#undef TRACE_ZERO_CHAR -#define TRACE_ZERO_CHAR (arg) -#undef TRACE_FIELD#define TRACE_FIELD (type, item, assign)\ entry->item = assign;
@@ -107,6 +104,9 @@ ftrace_format_##call(struct ftrace_event_call *unused, \#define TRACE_FIELD_SIGN (type, item, assign, is_signed) \ TRACE_FIELD(type, item, assign) +#undef TRACE_FIELD_ZERO +#define TRACE_FIELD_ZERO (type, item) +#undef TP_CMD #define TP_CMD(cmd...) cmd
@@ -178,8 +178,8 @@ __attribute__((section("_ftrace_events"))) event_##call = { \if (ret) \return ret; -#undef TRACE_FIELD_ZERO_CHAR -#define TRACE_FIELD_ZERO_CHAR (item) +#undef TRACE_FIELD_ZERO +#define TRACE_FIELD_ZERO (type, item)#undef TRACE_EVENT_FORMAT#define TRACE_EVENT_FORMAT (call, proto, args, fmt, tstruct, tpfmt) \
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
Re: [PATCH -tip v14 07/12] tracing: Introduce TRACE_FIELD_ZERO() macro
Quoted 2 lines · Masami Hiramatsu
Use
TRACE_FIELD_ZERO(type, item)instead ofTRACE_FIELD_ZERO_CHAR(item). This also includes a fix ofTRACE_ZERO_CHAR()macro.
I can't find what the fix is about (see below)
Quoted 78 lines
Signed-off-by Masami Hiramatsu <[email protected]>Cc Ananth N Mavinakayanahalli <[email protected]>Cc Avi Kivity <[email protected]>Cc Andi Kleen <[email protected]>Cc Christoph Hellwig <[email protected]>Cc Frank Ch. Eigler <[email protected]>Cc Frederic Weisbecker <[email protected]>Cc H. Peter Anvin <[email protected]>Cc Ingo Molnar <[email protected]>Cc Jason Baron <[email protected]>Cc Jim Keniston <[email protected]>Cc K.Prasad <[email protected]>Cc Lai Jiangshan <[email protected]>Cc Li Zefan <[email protected]>Cc Przemysław Pawełczyk <[email protected]>Cc Roland McGrath <[email protected]>Cc Sam Ravnborg <[email protected]>Cc Srikar Dronamraju <[email protected]>Cc Steven Rostedt <[email protected]>Cc Tom Zanussi <[email protected]>Cc Vegard Nossum <[email protected]>---
kernel/trace/trace_event_types.h | 4 ++-- kernel/trace/trace_export.c | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-)kernel/trace/trace_event_types.h +2
-2@@ -109,7 +109,7 @@ TRACE_EVENT_FORMAT(bprint, TRACE_BPRINT, bprint_entry, ignore, TRACE_STRUCT( TRACE_FIELD(unsigned long, ip, ip) TRACE_FIELD(char *, fmt, fmt) - TRACE_FIELD_ZERO_CHAR(buf) + TRACE_FIELD_ZERO(char, buf) ), TP_RAW_FMT("%08lx (%d) fmt:%p %s") );@@ -117,7 +117,7 @@ TRACE_EVENT_FORMAT(bprint, TRACE_BPRINT, bprint_entry, ignore,TRACE_EVENT_FORMAT (print,TRACE_PRINT , print_entry, ignore,TRACE_STRUCT ( TRACE_FIELD(unsigned long, ip, ip) -TRACE_FIELD_ZERO_CHAR (buf) +TRACE_FIELD_ZERO (char, buf) ),TP_RAW_FMT ("%08lx (%d) fmt:%p %s" ) );kernel/trace/trace_export.c +3
-6@@ -42,9 +42,9 @@ extern void __bad_type_size(void);if (!ret) \return 0 ; -#undef TRACE_FIELD_ZERO_CHAR -#define TRACE_FIELD_ZERO_CHAR (item) \ - ret = trace_seq_printf(s, "\tfield:char " #item ";\t" \ +#undef TRACE_FIELD_ZERO +#define TRACE_FIELD_ZERO (type, item) \ + ret = trace_seq_printf(s, "\tfield:" #type " " #item ";\t" \ "offset:%u;\tsize:0;\n", \ (unsigned int)offsetof(typeof(field), item)); \ if (!ret) \@@ -92,9 +92,6 @@ ftrace_format_##call(struct ftrace_event_call *unused, \#include "trace_event_types.h" -#undef TRACE_ZERO_CHAR -#define TRACE_ZERO_CHAR (arg) -#undef TRACE_FIELD#define TRACE_FIELD (type, item, assign)\ entry->item = assign;
kernel/trace/trace_export.c ftrace_format_##call(struct ftrace_event_call *unused, \ · line 109
Quoted 6 lines
kernel/trace/trace_export.c +3
-0@@ -107,6 +104,9 @@ ftrace_format_##call(struct ftrace_event_call *unused, \#define TRACE_FIELD_SIGN (type, item, assign, is_signed) \ TRACE_FIELD(type, item, assign) +#undef TRACE_FIELD_ZERO +#define TRACE_FIELD_ZERO (type, item) +
Is it about the above moving?
If so, could you just tell so that I can add something about it in the changelog.
Thanks.
Frederic.
Quoted 24 lines
kernel/trace/trace_export.c +2
-2#undef TP_CMD #define TP_CMD(cmd...) cmd@@ -178,8 +178,8 @@ __attribute__((section("_ftrace_events"))) event_##call = { \if (ret) \return ret; -#undef TRACE_FIELD_ZERO_CHAR -#define TRACE_FIELD_ZERO_CHAR (item) +#undef TRACE_FIELD_ZERO +#define TRACE_FIELD_ZERO (type, item)#undef TRACE_EVENT_FORMAT#define TRACE_EVENT_FORMAT (call, proto, args, fmt, tstruct, tpfmt) \Signature · 8 lines
-- Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
Re: [PATCH -tip v14 07/12] tracing: Introduce TRACE_FIELD_ZERO() macro
Quoted 6 lines · Frederic Weisbecker
Quoted 2 lines · Masami Hiramatsu
Use
TRACE_FIELD_ZERO(type, item)instead ofTRACE_FIELD_ZERO_CHAR(item). This also includes a fix ofTRACE_ZERO_CHAR()macro.I can't find what the fix is about (see below)
Ah, OK. This patch actually includes two parts.
One is introducing TRACE_FIELD_ZERO which is more generic than TRACE_FIELD_ZERO_CHAR, I think.
Another is a typo fix of TRACE_ZERO_CHAR.
Quoted 81 lines
Quoted 81 lines
Signed-off-by Masami Hiramatsu <[email protected]>Cc Ananth N Mavinakayanahalli <[email protected]>Cc Avi Kivity <[email protected]>Cc Andi Kleen <[email protected]>Cc Christoph Hellwig <[email protected]>Cc Frank Ch. Eigler <[email protected]>Cc Frederic Weisbecker <[email protected]>Cc H. Peter Anvin <[email protected]>Cc Ingo Molnar <[email protected]>Cc Jason Baron <[email protected]>Cc Jim Keniston <[email protected]>Cc K.Prasad <[email protected]>Cc Lai Jiangshan <[email protected]>Cc Li Zefan <[email protected]>Cc Przemysław Pawełczyk <[email protected]>Cc Roland McGrath <[email protected]>Cc Sam Ravnborg <[email protected]>Cc Srikar Dronamraju <[email protected]>Cc Steven Rostedt <[email protected]>Cc Tom Zanussi <[email protected]>Cc Vegard Nossum <[email protected]>---
kernel/trace/trace_event_types.h | 4 ++-- kernel/trace/trace_export.c | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-)kernel/trace/trace_event_types.h +2
-2@@ -109,7 +109,7 @@ TRACE_EVENT_FORMAT(bprint, TRACE_BPRINT, bprint_entry, ignore, TRACE_STRUCT( TRACE_FIELD(unsigned long, ip, ip) TRACE_FIELD(char *, fmt, fmt) - TRACE_FIELD_ZERO_CHAR(buf) + TRACE_FIELD_ZERO(char, buf) ), TP_RAW_FMT("%08lx (%d) fmt:%p %s") );@@ -117,7 +117,7 @@ TRACE_EVENT_FORMAT(bprint, TRACE_BPRINT, bprint_entry, ignore,TRACE_EVENT_FORMAT (print,TRACE_PRINT , print_entry, ignore,TRACE_STRUCT ( TRACE_FIELD(unsigned long, ip, ip) -TRACE_FIELD_ZERO_CHAR (buf) +TRACE_FIELD_ZERO (char, buf) ),TP_RAW_FMT ("%08lx (%d) fmt:%p %s" ) );kernel/trace/trace_export.c +3
-6@@ -42,9 +42,9 @@ extern void __bad_type_size(void);if (!ret) \return 0 ; -#undef TRACE_FIELD_ZERO_CHAR -#define TRACE_FIELD_ZERO_CHAR (item) \ - ret = trace_seq_printf(s, "\tfield:char " #item ";\t" \ +#undef TRACE_FIELD_ZERO +#define TRACE_FIELD_ZERO (type, item) \ + ret = trace_seq_printf(s, "\tfield:" #type " " #item ";\t" \ "offset:%u;\tsize:0;\n", \ (unsigned int)offsetof(typeof(field), item)); \ if (!ret) \@@ -92,9 +92,6 @@ ftrace_format_##call(struct ftrace_event_call *unused, \#include "trace_event_types.h" -#undef TRACE_ZERO_CHAR -#define TRACE_ZERO_CHAR (arg) -#undef TRACE_FIELD#define TRACE_FIELD (type, item, assign)\ entry->item = assign;@@ -107,6 +104,9 @@ ftrace_format_##call(struct ftrace_event_call *unused, \#define TRACE_FIELD_SIGN (type, item, assign, is_signed) \ TRACE_FIELD(type, item, assign)
Quoted 9 lines
kernel/trace/trace_export.c ftrace_format_##call(struct ftrace_event_call *unused, \ · line 109
Quoted 3 lines
kernel/trace/trace_export.c +3
-0+#undef TRACE_FIELD_ZERO +#define TRACE_FIELD_ZERO (type, item) +Is it about the above moving?
If so, could you just tell so that I can add something about it in the changelog.
No, I assume that TRACE_ZERO_CHAR is just a typo of TRACE_FIELD_ZERO_CHAR. (because I couldn't find any other TRACE_ZERO_CHAR)
BTW, this patch may not be needed after applying patch 10/12, since it removes ftrace event definitions of TRACE_KPROBE/KRETPROBE.
Perhaps, would I better merge and split those additional patches(and remove this change)?
(It also could make the incremental review hard...)
Thank you,
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
Re: [PATCH -tip v14 07/12] tracing: Introduce TRACE_FIELD_ZERO() macro
Quoted 6 lines · Masami Hiramatsu
Quoted 5 lines · Frederic Weisbecker
Quoted 2 lines · Masami Hiramatsu
Use
TRACE_FIELD_ZERO(type, item)instead ofTRACE_FIELD_ZERO_CHAR(item). This also includes a fix ofTRACE_ZERO_CHAR()macro.
Quoted 8 lines
Quoted 1 line
I can't find what the fix is about (see below)
Ah, OK. This patch actually includes two parts.
One is introducing
TRACE_FIELD_ZEROwhich is more generic thanTRACE_FIELD_ZERO_CHAR, I think.Another is a typo fix of
TRACE_ZERO_CHAR.
Ok.
Quoted 14 lines
Quoted 10 lines
kernel/trace/trace_export.c ftrace_format_##call(struct ftrace_event_call *unused, \ · line 109
Quoted 4 lines
kernel/trace/trace_export.c +3
-0+#undef TRACE_FIELD_ZERO +#define TRACE_FIELD_ZERO (type, item) +Is it about the above moving?
If so, could you just tell so that I can add something about it in the changelog.No, I assume that
TRACE_ZERO_CHARis just a typo ofTRACE_FIELD_ZERO_CHAR. (because I couldn't find any otherTRACE_ZERO_CHAR)
Quoted 9 lines
BTW, this patch may not be needed after applying patch 10/12, since it removes ftrace event definitions of TRACE_KPROBE/KRETPROBE.
Perhaps, would I better merge and split those additional patches(and remove this change)?
(It also could make the incremental review hard...)Thank you,
No let's keep it as is. It should be fine.
Thanks.
Quoted 9 lines
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
PATCH v14 8/12 tracing: add kprobe-based event tracer
In reply to Masami HiramatsuAdd kprobes-based event tracer on ftrace.
This tracer is similar to the events tracer which is based on Tracepoint infrastructure. Instead of Tracepoint, this tracer is based on kprobes (kprobe and kretprobe). It probes anywhere where kprobes can probe(this
means, all functions body except for __kprobes functions).
Similar to the events tracer, this tracer doesn't need to be activated via current_tracer, instead of that, just set probe points via /sys/kernel/debug/tracing/kprobe_events. And you can set filters on each probe events via /sys/kernel/debug/tracing/events/kprobes/<EVENT>/filter.
This tracer supports following probe arguments for each probe.
%REG : Fetch register REG sN : Fetch Nth entry of stack (N >= 0) sa : Fetch stack address. @ADDR : Fetch memory at ADDR (ADDR should be in kernel) @SYM[+|-offs] : Fetch memory at SYM +|- offs (SYM should be a data symbol) aN : Fetch function argument. (N >= 0) rv : Fetch return value. ra : Fetch return address.
+|-offs(FETCHARG) : fetch memory at FETCHARG +|- offs address.
See Documentation/trace/kprobetrace.txt for details.
Changes from v13:
- Support 'sa' for stack address.
- Use call->data instead of container_of() macro.
---
Documentation/trace/kprobetrace.txt | 139 ++++ kernel/trace/Kconfig | 12 kernel/trace/Makefile | 1 kernel/trace/trace.h | 29 + kernel/trace/trace_event_types.h | 18 + kernel/trace/trace_kprobe.c | 1205 +++++++++++++++++++++++++++++++++++ 6 files changed, 1404 insertions(+), 0 deletions(-) create mode 100644 Documentation/trace/kprobetrace.txt create mode 100644 kernel/trace/trace_kprobe.c
Documentation/trace/kprobetrace.txt new file +139 -0
@@ -0,0 +1,139 @@ + Kprobe-based Event Tracer + ========================= + + Documentation is written by Masami Hiramatsu + + +Overview +-------- +This tracer is similar to the events tracer which is based on Tracepoint +infrastructure. Instead of Tracepoint, this tracer is based on kprobes(kprobe +and kretprobe). It probes anywhere where kprobes can probe(this means, all +functions body except for __kprobes functions). + +Unlike the function tracer, this tracer can probe instructions inside of +kernel functions. It allows you to check which instruction has been executed. + +Unlike the Tracepoint based events tracer, this tracer can add and remove +probe points on the fly. + +Similar to the events tracer, this tracer doesn't need to be activated via +current_tracer, instead of that, just set probe points via +/sys/kernel/debug/tracing/kprobe_events. And you can set filters on each +probe events via /sys/kernel/debug/tracing/events/kprobes/<EVENT>/filter. + + +Synopsis of kprobe_events +------------------------- + p[:EVENT] SYMBOL[+offs|-offs]|MEMADDR [FETCHARGS] : Set a probe + r[:EVENT] SYMBOL[+0] [FETCHARGS] : Set a return probe + + EVENT : Event name. + SYMBOL[+offs|-offs] : Symbol+offset where the probe is inserted. + MEMADDR : Address where the probe is inserted. + + FETCHARGS : Arguments. + %REG : Fetch register REG + sN : Fetch Nth entry of stack (N >= 0) + sa : Fetch stack address. + @ADDR : Fetch memory at ADDR (ADDR should be in kernel) + @SYM[+|-offs] : Fetch memory at SYM +|- offs (SYM should be a data symbol) + aN : Fetch function argument. (N >= 0)(*) + rv : Fetch return value.(**) + ra : Fetch return address.(**) + +|-offs(FETCHARG) : fetch memory at FETCHARG +|- offs address.(***) + + (*) aN may not correct on asmlinkaged functions and at the middle of + function body. + (**) only for return probe. + (***) this is useful for fetching a field of data structures. + + +Per-Probe Event Filtering +------------------------- + Per-probe event filtering feature allows you to set different filter on each +probe and gives you what arguments will be shown in trace buffer. If an event +name is specified right after 'p:' or 'r:' in kprobe_events, the tracer adds +an event under tracing/events/kprobes/<EVENT>, at the directory you can see +'id', 'enabled', 'format' and 'filter'. + +enabled: + You can enable/disable the probe by writing 1 or 0 on it. + +format: + It shows the format of this probe event. It also shows aliases of arguments + which you specified to kprobe_events. + +filter: + You can write filtering rules of this event. And you can use both of aliase + names and field names for describing filters. + + +Usage examples +-------------- +To add a probe as a new event, write a new definition to kprobe_events +as below. + + echo p:myprobe do_sys_open a0 a1 a2 a3 > /sys/kernel/debug/tracing/kprobe_events + + This sets a kprobe on the top of do_sys_open() function with recording +1st to 4th arguments as "myprobe" event. + + echo r:myretprobe do_sys_open rv ra >> /sys/kernel/debug/tracing/kprobe_events + + This sets a kretprobe on the return point of do_sys_open() function with +recording return value and return address as "myretprobe" event. + You can see the format of these events via +/sys/kernel/debug/tracing/events/kprobes/<EVENT>/format. + + cat /sys/kernel/debug/tracing/events/kprobes/myprobe/format +name: myprobe +ID: 23 +format: + field:unsigned short common_type; offset:0; size:2; + field:unsigned char common_flags; offset:2; size:1; + field:unsigned char common_preempt_count; offset:3; size:1; + field:int common_pid; offset:4; size:4; + field:int common_tgid; offset:8; size:4; + + field: unsigned long ip; offset:16;tsize:8; + field: int nargs; offset:24;tsize:4; + field: unsigned long arg0; offset:32;tsize:8; + field: unsigned long arg1; offset:40;tsize:8; + field: unsigned long arg2; offset:48;tsize:8; + field: unsigned long arg3; offset:56;tsize:8; + + alias: a0; original: arg0; + alias: a1; original: arg1; + alias: a2; original: arg2; + alias: a3; original: arg3; + +print fmt: "%lx: 0x%lx 0x%lx 0x%lx 0x%lx", ip, arg0, arg1, arg2, arg3 + + + You can see that the event has 4 arguments and alias expressions +corresponding to it. + + echo > /sys/kernel/debug/tracing/kprobe_events + + This clears all probe points. and you can see the traced information via +/sys/kernel/debug/tracing/trace. + + cat /sys/kernel/debug/tracing/trace +# tracer: nop +# +# TASK-PID CPU# TIMESTAMP FUNCTION +# | | | | | + <...>-1447 [001] 1038282.286875: do_sys_open+0x0/0xd6: 0x3 0x7fffd1ec4440 0x8000 0x0 + <...>-1447 [001] 1038282.286878: sys_openat+0xc/0xe <- do_sys_open: 0xfffffffffffffffe 0xffffffff81367a3a + <...>-1447 [001] 1038282.286885: do_sys_open+0x0/0xd6: 0xffffff9c 0x40413c 0x8000 0x1b6 + <...>-1447 [001] 1038282.286915: sys_open+0x1b/0x1d <- do_sys_open: 0x3 0xffffffff81367a3a + <...>-1447 [001] 1038282.286969: do_sys_open+0x0/0xd6: 0xffffff9c 0x4041c6 0x98800 0x10 + <...>-1447 [001] 1038282.286976: sys_open+0x1b/0x1d <- do_sys_open: 0x3 0xffffffff81367a3a + + + Each line shows when the kernel hits a probe, and <- SYMBOL means kernel +returns from SYMBOL(e.g. "sys_open+0x1b/0x1d <- do_sys_open" means kernel +returns from do_sys_open to sys_open+0x1b). + +
kernel/trace/Kconfig +12 -0
@@ -445,6 +445,18 @@ config BLK_DEV_IO_TRACE If unsure, say N. +config KPROBE_TRACER + depends on KPROBES + depends on X86 + bool "Trace kprobes" + select TRACING + select GENERIC_TRACER + help + This tracer probes everywhere where kprobes can probe it, and + records various registers and memories specified by user. + This also allows you to trace kprobe probe points as a dynamic + defined events. It provides per-probe event filtering interface. + config DYNAMIC_FTRACE bool "enable/disable ftrace tracepoints dynamically" depends on FUNCTION_TRACER
kernel/trace/Makefile +1 -0
@@ -55,5 +55,6 @@ obj-$(CONFIG_FTRACE_SYSCALLS) += trace_syscalls.o obj-$(CONFIG_EVENT_PROFILE) += trace_event_profile.o obj-$(CONFIG_EVENT_TRACING) += trace_events_filter.o obj-$(CONFIG_KSYM_TRACER) += trace_ksym.o +obj-$(CONFIG_KPROBE_TRACER) += trace_kprobe.o libftrace-y := ftrace.o
kernel/trace/trace.h +29 -0
@@ -43,6 +43,8 @@ enum trace_type {TRACE_POWER ,TRACE_BLK ,TRACE_KSYM , +TRACE_KPROBE , +TRACE_KRETPROBE , __TRACE_LAST_TYPE, };
@@ -221,6 +223,29 @@ struct ksym_trace_entry {char cmd[TASK_COMM_LEN ]; }; +struct kprobe_trace_entry { +struct trace_entry ent; +unsigned long ip; +int nargs; +unsigned long args[]; +}; + +#define SIZEOF_KPROBE_TRACE_ENTRY (n) \ + (offsetof(struct kprobe_trace_entry, args) + \ + (sizeof(unsigned long) * (n))) + +struct kretprobe_trace_entry { +struct trace_entry ent; +unsigned long func; +unsigned long ret_ip; +int nargs; +unsigned long args[]; +}; + +#define SIZEOF_KRETPROBE_TRACE_ENTRY (n) \ + (offsetof(struct kretprobe_trace_entry, args) + \ + (sizeof(unsigned long) * (n))) +/* * trace_flag_type is an enumeration that holds different * states when a trace occurs. These are:
@@ -333,6 +358,10 @@ extern void __ftrace_bad_type(void); IF_ASSIGN(var, ent, struct kmemtrace_free_entry, \TRACE_KMEM_FREE ); \ IF_ASSIGN(var, ent, struct ksym_trace_entry, TRACE_KSYM);\ + IF_ASSIGN(var, ent, struct kprobe_trace_entry, \ +TRACE_KPROBE ); \ + IF_ASSIGN(var, ent, struct kretprobe_trace_entry, \ +TRACE_KRETPROBE ); \__ftrace_bad_type (); \ }while (0 )
kernel/trace/trace_event_types.h +18 -0
@@ -175,4 +175,22 @@ TRACE_EVENT_FORMAT(kmem_free, TRACE_KMEM_FREE, kmemtrace_free_entry, ignore,TP_RAW_FMT ("type:%u call_site:%lx ptr:%p" ) ); +TRACE_EVENT_FORMAT (kprobe,TRACE_KPROBE , kprobe_trace_entry, ignore, +TRACE_STRUCT ( + TRACE_FIELD(unsigned long, ip, ip) + TRACE_FIELD(int, nargs, nargs) + TRACE_FIELD_ZERO(unsigned long, args) + ), +TP_RAW_FMT ("%08lx: args:0x%lx ..." ) +); + +TRACE_EVENT_FORMAT (kretprobe,TRACE_KRETPROBE , kretprobe_trace_entry, ignore, +TRACE_STRUCT ( + TRACE_FIELD(unsigned long, func, func) + TRACE_FIELD(unsigned long, ret_ip, ret_ip) + TRACE_FIELD(int, nargs, nargs) + TRACE_FIELD_ZERO(unsigned long, args) + ), +TP_RAW_FMT ("%08lx <- %08lx: args:0x%lx ..." ) +);#undef TRACE_SYSTEM
kernel/trace/trace_kprobe.c new file +1205 -0
1,205 lines not on this page · raw message
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
Re: [PATCH -tip v14 08/12] tracing: add kprobe-based event tracer
Quoted 51 lines · Masami Hiramatsu
Add kprobes-based event tracer on ftrace.
This tracer is similar to the events tracer which is based on Tracepoint infrastructure. Instead of Tracepoint, this tracer is based on kprobes (kprobe and kretprobe). It probes anywhere where kprobes can probe(this
means, all functions body except for__kprobesfunctions).Similar to the events tracer, this tracer doesn't need to be activated via
current_tracer, instead of that, just set probe points via/sys/kernel/debug/tracing/kprobe_events. And you can set filters on each probe events via /sys/kernel/debug/tracing/events/kprobes/<EVENT>/filter.This tracer supports following probe arguments for each probe.
%REG : Fetch register REG sN : Fetch Nth entry of stack (N >= 0) sa : Fetch stack address. @ADDR : Fetch memory at ADDR (ADDR should be in kernel) @SYM[+|-offs] : Fetch memory at SYM +|- offs (SYM should be a data symbol) aN : Fetch function argument. (N >= 0) rv : Fetch return value. ra : Fetch return address.+|-offs(FETCHARG) : fetch memory at FETCHARG +|- offs address.
See
Documentation/trace/kprobetrace.txtfor details.Changes from v13:
- Support 'sa' for stack address.
- Usecall->datainstead ofcontainer_of()macro.Signed-off-by Masami Hiramatsu <[email protected]>Cc Avi Kivity <[email protected]>Cc Andi Kleen <[email protected]>Cc Christoph Hellwig <[email protected]>Cc Frank Ch. Eigler <[email protected]>Cc Frederic Weisbecker <[email protected]>Cc H. Peter Anvin <[email protected]>Cc Ingo Molnar <[email protected]>Cc Jason Baron <[email protected]>Cc Jim Keniston <[email protected]>Cc K.Prasad <[email protected]>Cc Lai Jiangshan <[email protected]>Cc Li Zefan <[email protected]>Cc Przemysław Pawełczyk <[email protected]>Cc Roland McGrath <[email protected]>Cc Sam Ravnborg <[email protected]>Cc Srikar Dronamraju <[email protected]>Cc Steven Rostedt <[email protected]>Cc Tom Zanussi <[email protected]>Cc Vegard Nossum <[email protected]>
Quoted 3 lines
---
Documentation/trace/kprobetrace.txt | 139 ++++
I'll probably split this commit to have the first version of the documentation as a separate patch in order to lighten this.
Frederic.
PATCH v14 9/12 tracing: Kprobe-tracer supports more than 6 arguments
In reply to Masami HiramatsuSupport up to 128 arguments for each kprobes event.
---
Documentation/trace/kprobetrace.txt | 2 +- kernel/trace/trace_kprobe.c | 21 +++++++++++++-------- 2 files changed, 14 insertions(+), 9 deletions(-)
Documentation/trace/kprobetrace.txt +1 -1
@@ -32,7 +32,7 @@ Synopsis of kprobe_events SYMBOL[+offs|-offs] : Symbol+offset where the probe is inserted. MEMADDR : Address where the probe is inserted. - FETCHARGS : Arguments. + FETCHARGS : Arguments. Each probe can have up to 128 args. %REG : Fetch register REG sN : Fetch Nth entry of stack (N >= 0) sa : Fetch stack address.
kernel/trace/trace_kprobe.c +13 -8
@@ -32,7 +32,7 @@#include "trace.h" #include "trace_output.h" -#define TRACE_KPROBE_ARGS 6 +#define MAX_TRACE_ARGS 128#define MAX_ARGSTR_LEN 63/* currently, trace_kprobe only supports X86. */
@@ -184,11 +184,15 @@ struct trace_probe {struct kretprobe rp; };const char *symbol;/* symbol name */ -unsigned int nr_args; -struct fetch_func args[TRACE_KPROBE_ARGS ];struct ftrace_event_call call; +unsigned int nr_args; +struct fetch_func args[]; }; +#define SIZEOF_TRACE_PROBE (n) \ + (offsetof(struct trace_probe, args) + \ + (sizeof(struct fetch_func) * (n))) +static int kprobe_trace_func (struct kprobe *kp,struct pt_regs *regs);static int kretprobe_trace_func (struct kretprobe_instance *ri,struct pt_regs *regs);
@@ -263,11 +267,11 @@ static DEFINE_MUTEX(probe_lock);static LIST_HEAD (probe_list);static struct trace_probe *alloc_trace_probe (const char *symbol, -const char *event) +const char *event,int nargs) {struct trace_probe *tp; - tp =kzalloc (sizeof (struct trace_probe ),GFP_KERNEL ); + tp =kzalloc (SIZEOF_TRACE_PROBE (nargs),GFP_KERNEL );if (!tp)return ERR_PTR (-ENOMEM );
@@ -573,9 +577,10 @@ static int create_trace_probe(int argc, char **argv)if (offset && is_return)return -EINVAL ; } + argc -=2 ; argv +=2 ;/* setup a probe */ - tp =alloc_trace_probe (symbol, event); + tp =alloc_trace_probe (symbol, event, argc);if (IS_ERR (tp))return PTR_ERR (tp);
@@ -594,8 +599,8 @@ static int create_trace_probe(int argc, char **argv) kp->addr = addr;/* parse arguments */ - argc -=2 ; argv +=2 ; ret =0 ; -for (i =0 ; i < argc && i <TRACE_KPROBE_ARGS ; i++) { + ret =0 ; +for (i =0 ; i < argc && i <MAX_TRACE_ARGS ; i++) {if (strlen (argv[i]) >MAX_ARGSTR_LEN ) {pr_info ("Argument%d(%s) is too long.\n" , i, argv[i]); ret = -ENOSPC ;
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
PATCH v14 10/12 tracing: Generate names for each kprobe event automatically
In reply to Masami HiramatsuGenerate names for each kprobe event based on the probe point, and remove generic k*probe event types because there is no user of those types.
---
Documentation/trace/kprobetrace.txt | 3 +- kernel/trace/trace_event_types.h | 18 ---------- kernel/trace/trace_kprobe.c | 64 ++++++++++++++++++----------------- 3 files changed, 35 insertions(+), 50 deletions(-)
Documentation/trace/kprobetrace.txt +2 -1
@@ -28,7 +28,8 @@ Synopsis of kprobe_events p[:EVENT] SYMBOL[+offs|-offs]|MEMADDR [FETCHARGS] : Set a probe r[:EVENT] SYMBOL[+0] [FETCHARGS] : Set a return probe - EVENT : Event name. + EVENT : Event name. If omitted, the event name is generated + based on SYMBOL+offs or MEMADDR. SYMBOL[+offs|-offs] : Symbol+offset where the probe is inserted. MEMADDR : Address where the probe is inserted.
kernel/trace/trace_event_types.h +0 -18
@@ -175,22 +175,4 @@ TRACE_EVENT_FORMAT(kmem_free, TRACE_KMEM_FREE, kmemtrace_free_entry, ignore,TP_RAW_FMT ("type:%u call_site:%lx ptr:%p" ) ); -TRACE_EVENT_FORMAT (kprobe,TRACE_KPROBE , kprobe_trace_entry, ignore, -TRACE_STRUCT ( - TRACE_FIELD(unsigned long, ip, ip) - TRACE_FIELD(int, nargs, nargs) - TRACE_FIELD_ZERO(unsigned long, args) - ), -TP_RAW_FMT ("%08lx: args:0x%lx ..." ) -); - -TRACE_EVENT_FORMAT (kretprobe,TRACE_KRETPROBE , kretprobe_trace_entry, ignore, -TRACE_STRUCT ( - TRACE_FIELD(unsigned long, func, func) - TRACE_FIELD(unsigned long, ret_ip, ret_ip) - TRACE_FIELD(int, nargs, nargs) - TRACE_FIELD_ZERO(unsigned long, args) - ), -TP_RAW_FMT ("%08lx <- %08lx: args:0x%lx ..." ) -);#undef TRACE_SYSTEM
kernel/trace/trace_kprobe.c +33 -31
118 lines not on this page · raw message
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
PATCH v14 11/12 tracing: Kprobe tracer assigns new event ids for each event
In reply to Masami HiramatsuAssigns new event ids for each kprobes event. This doesn't clear ring_buffer when unregistering each kprobe event. Thus, if you mind 'Unknown event' messages, clear the buffer manually after changing kprobe events.
---
kernel/trace/trace.h | 6 ----- kernel/trace/trace_kprobe.c | 51 +++++++++++++------------------------------ 2 files changed, 15 insertions(+), 42 deletions(-)
kernel/trace/trace.h +0 -6
@@ -43,8 +43,6 @@ enum trace_type {TRACE_POWER ,TRACE_BLK ,TRACE_KSYM , -TRACE_KPROBE , -TRACE_KRETPROBE , __TRACE_LAST_TYPE, };
@@ -358,10 +356,6 @@ extern void __ftrace_bad_type(void); IF_ASSIGN(var, ent, struct kmemtrace_free_entry, \TRACE_KMEM_FREE ); \ IF_ASSIGN(var, ent, struct ksym_trace_entry, TRACE_KSYM);\ - IF_ASSIGN(var, ent, struct kprobe_trace_entry, \ -TRACE_KPROBE ); \ - IF_ASSIGN(var, ent, struct kretprobe_trace_entry, \ -TRACE_KRETPROBE ); \__ftrace_bad_type (); \ }while (0 )
kernel/trace/trace_kprobe.c +15 -36
118 lines not on this page · raw message
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
PATCH v14 12/12 tracing: Add kprobes event profiling interface
In reply to Masami HiramatsuAdd profiling interaces for each kprobes event. This interface provides how many times each probe hit or missed.
---
Documentation/trace/kprobetrace.txt | 8 +++++++ kernel/trace/trace_kprobe.c | 43 +++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 0 deletions(-)
Documentation/trace/kprobetrace.txt +8 -0
@@ -70,6 +70,14 @@ filter: names and field names for describing filters. +Event Profiling +--------------- + You can check the total number of probe hits and probe miss-hits via +/sys/kernel/debug/tracing/kprobe_profile. + The first column is event name, the second is the number of probe hits, +the third is the number of probe miss-hits. + + Usage examples -------------- To add a probe as a new event, write a new definition to kprobe_events
kernel/trace/trace_kprobe.c +43 -0
70 lines not on this page · raw message
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
[TOOL] kprobestest : Kprobe stress test tool
In reply to Masami HiramatsuThis script tests kprobes to probe on all symbols in the kernel and finds symbols which must be blacklisted.
Usage
-----
kprobestest [-s SYMLIST] [-b BLACKLIST] [-w WHITELIST]
Run stress test. If SYMLIST file is specified, use it as an initial symbol list (This is useful for verifying white list after diagnosing all symbols).
kprobestest cleanup
Cleanup all lists
How to Work
-----------
This tool list up all symbols in the kernel via /proc/kallsyms, and sorts it into groups (each of them including 64 symbols in default). And then, it tests each group by using kprobe-tracer. If a kernel crash occurred, that group is moved into 'failed' dir. If the group passed the test, this script moves it into 'passed' dir and saves kprobe_profile into 'passed/profiles/'.
After testing all groups, all 'failed' groups are merged and sorted into smaller groups (divided by 4, in default). And those are tested again. This loop will be repeated until all group has just 1 symbol.
Finally, the script sorts all 'passed' symbols into 'tested', 'untested', and 'missed' based on profiles.
Note
----
- This script just gives us some clues to the blacklisted functions. In some cases, a combination of probe points will cause a problem, but each of them doesn't cause the problem alone.
Thank you,
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
#!/bin/bash
#
# kprobestest: Kprobes stress test tool
# Written by Masami Hiramatsu <[email protected]> #
# Usage:
# $ kprobestest [-s SYMLIST] [-b BLACKLIST] [-w WHITELIST]
# Run stress test. If SYMLIST file is specified, use it as # an initial symbol list (This is useful for verifying white list # after diagnosing all symbols).
#
# $ kprobestest cleanup
# Cleanup all lists
# Configurations
DEBUGFS=/sys/kernel/debug
INITNR=64
DIV=4
SYMFILE=syms.list
FAILFILE=black.list
function do_test () {
# Do some benchmark
for i in {1..4} ; do
sleep 0.5
echo -n "."
done
}
function usage () {
echo "Usage: kprobestest [cleanup] [-s SYMLIST] [-b BLACKLIST] [-w WHITELIST]" exit 0
}
function cleanup_test () {
echo "Cleanup all files"
rm -rf $SYMFILE failed passed testing unset
exit 0
}
# Parse arguments
WHITELIST=
BLACKLIST=
SYMLIST=
while [ "$1" ]; do
case $1 in
cleanup)
cleanup_test
;;
-s)
SYMLIST=$2
shift 1
;;
-b)
BLACKLIST=$2
shift 1
;;
-w)
WHITELIST=$2
shift 1
;;
*)
usage
;; esac
shift 1
done
# Show configurations
echo "Kprobe stress test starting."
[ -f "$BLACKLIST" ] && echo "Blacklist: $BLACKLIST" || BLACKLIST="" [ -f "$WHITELIST" ] && echo "Whitelist: $WHITELIST" || WHITELIST=""
[ -f "$SYMLIST" ] && echo "Symlist: $SYMLIST" || SYMLIST=""
function make_filter () {
local EXP=""
if [ -z "$WHITELIST" -a -z "$BLACKLIST" ]; then
echo "s/^$//g"
else
for i in `cat $WHITELIST $BLACKLIST` ;do
[ -z "$EXP" ] && EXP="^$i\$" || EXP="$EXP\\|^$i\$"
done ; EXP="s/$EXP//g"
echo $EXP fi
}
function list_allsyms () {
local sym
local out=1
for sym in sort /proc/kallsyms | egrep '[0-9a-f]+ [Tt] [^[]*$' | cut -d\ -f 3;do
[ $sym = "__kprobes_text_start" ] && out=0 && continue
[ $sym = "__kprobes_text_end" ] && out=1 && continue
[ $sym = "_etext" ] && break
[ $out -eq 1 ] && echo $sym done
}
function prep_testing () {
local i=0
local n=0
local NR=$1
local fname=
echo "Grouping symbols: $NR"
fname=printf "list-%03d.%d" $i $NR
cat $SYMFILE | while read ln; do
[ -z "$ln" ] && continue
echo "$ln" >> testing/$fname
n=$((n+1))
if [ $n -eq $NR ]; then
n=0
i=$((i+1))
fname=`printf "list-%03d.%d" $i $NR`
fi done
sync
}
function init_first () {
local EXP
EXP=make_filter
if [ -f "$SYMLIST" ]; then
cat $SYMLIST | sed $EXP > $SYMFILE
else
echo -n "Generating symbol list from /proc/kallsyms..." list_allsyms | sed $EXP > $SYMFILE
echo "done. " wc -l $SYMFILE | cut -f1 -d\ "symbols listed."
fi
mkdir -p testing failed unset passed passed/profiles prep_testing $INITNR
}
function get_max_nr () {
wc -l failed/list-* unset/list-* 2>/dev/null |\
awk '/^ *[0-9]+ .*list.*$/{ if (nr < $1) nr=$1 } BEGIN { nr=0 } END { print nr}'
}
function init_next () {
local NR
NR=get_max_nr
[ $NR -eq 0 ] && return 1
[ $NR -eq 1 ] && return 2
[ $NR -le $DIV ] && NR=1 || NR=expr $NR / $DIV
cat failed/* unset/* > $SYMFILE
rm failed/* unset/*
prep_testing $NR
return 0
}
# Initialize symbols
if [ ! -d testing ]; then
init_first
elif [ -z "ls testing/" ]; then
init_next
fi
function set_probes () {
local s
for s in cat $1; do
echo "p:$s" $s >> $DEBUGFS/tracing/kprobe_events [ $? -ne 0 ] && return -1
done
return 0
}
function clear_probes () {
echo > $DEBUGFS/tracing/kprobe_events
}
function save_profile () {
cat $DEBUGFS/tracing/kprobe_profile > passed/profiles/$1.prof
}
clear_probes
echo "Starting tests.."
RET=0
# Main loop
while [ $RET -eq 0 ]; do
for list in cd testing/; ls; do
echo -n $list
# Temporary moving list into failed.
mv testing/$list failed/
sync;sync
echo -n "sync.."
set_probes failed/$list
if [ $? -ne 0 ]; then
clear_probes
sync;sync
echo "can not set"
mv failed/$list unset/
sync;sync
else
do_test
save_profile $list
clear_probes
sync;sync
echo "done"
mv failed/$list passed/
sync;sync
fi
done
init_next
RET=$?
done
if [ $RET -eq 1 ];then
# No failed symbols
echo "no failed symbols found."
else
echo "found failed symbols:"
cat failed/* | tee $FAILFILE
rm failed/*
fi
function profile_symbols () {
local s h m
rm -f tested.list missed.list untested.list cat passed/profiles/*.prof | while read s h m ;do
if [ $h -ne 0 ]; then
echo $s >> tested.list
elif [ $m -ne 0 ]; then
echo $s >> missed.list
else
echo $s >> untested.list
fi
done
}
echo -n "Profiling symbols..."profile_symbols
echo done
echo tested: wc -l tested.list | cut -d\ -f1 symbols echo missed: wc -l missed.list | cut -d\ -f1 symbols echo untested: wc -l untested.list | cut -d\ -f1 symbols
Re: [TOOL] kprobestest : Kprobe stress test tool
Quoted 31 lines · Masami Hiramatsu
This script tests kprobes to probe on all symbols in the kernel and finds symbols which must be blacklisted.
Usage
-----
kprobestest [-s SYMLIST] [-b BLACKLIST] [-w WHITELIST]
Run stress test. If SYMLIST file is specified, use it as an initial symbol list (This is useful for verifying white list after diagnosing all symbols).kprobestest cleanup
Cleanup all listsHow to Work
-----------
This tool list up all symbols in the kernel via/proc/kallsyms, and sorts it into groups (each of them including 64 symbols in default). And then, it tests each group by using kprobe-tracer. If a kernel crash occurred, that group is moved into 'failed' dir. If the group passed the test, this script moves it into 'passed' dir and saveskprobe_profileinto 'passed/profiles/'.
After testing all groups, all 'failed' groups are merged and sorted into smaller groups (divided by 4, in default). And those are tested again. This loop will be repeated until all group has just 1 symbol.Finally, the script sorts all 'passed' symbols into 'tested', 'untested', and 'missed' based on profiles.
Quoted 8 lines
Note
----
- This script just gives us some clues to the blacklisted functions. In some cases, a combination of probe points will cause a problem, but each of them doesn't cause the problem alone.Thank you,
This script makes my x86-64 dual core easily and hardly locking-up on the 1st batch of symbols to test.
I have one sym list in the failed and unset directories:
int_very_carefulint_signalint_restore_reststub_clonestub_forkstub_vforkstub_sigaltstackstub_ioplptregscall_commonstub_execvestub_rt_sigreturnirq_entries_startcommon_interruptret_from_intrexit_intrretint_with_rescheduleretint_checkretint_swapgsretint_restore_argsrestore_argsirq_returnretint_carefulretint_signalretint_kernelirq_move_cleanup_interruptreboot_interruptapic_timer_interruptgeneric_interruptinvalidate_interrupt0invalidate_interrupt1invalidate_interrupt2invalidate_interrupt3invalidate_interrupt4invalidate_interrupt5invalidate_interrupt6invalidate_interrupt7threshold_interruptthermal_interruptmce_self_interruptcall_function_single_interruptcall_function_interruptreschedule_interrupterror_interruptspurious_interruptperf_pending_interruptdivide_error
overflow
boundsinvalid_opdevice_not_availabledouble_faultcoprocessor_segment_overruninvalid_TSSsegment_not_presentspurious_interrupt_bugcoprocessor_erroralignment_checksimd_coprocessor_errornative_load_gs_indexgs_changekernel_threadchild_ripkernel_execvecall_softirq
I don't have a crash log because I was running with X. But it also happened with other batch of symbols.
The problem is that I don't have any serial line in this box then I can't catch any crash log.
My K7 testbox also died in my arms this afternoon.
But I still have two other testboxes (one P2 and one P3), hopefully I could reproduce the problem in these boxes in which I can connect a serial line.
I've pushed your patches in the following git tree:
git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing.git \
tracing/kprobes
So you can send patches on top of this one.
Config in attachment:
#
# Automatically generated make config: don't edit # Linux kernel version: 2.6.31-rc5
# Thu Aug 20 19:35:39 2009
#CONFIG_64BIT=y
# CONFIG_X86_32 is not setCONFIG_X86_64=yCONFIG_X86=yCONFIG_OUTPUT_FORMAT="elf64-x86-64" CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig" CONFIG_GENERIC_TIME=yCONFIG_GENERIC_CMOS_UPDATE=y CONFIG_CLOCKSOURCE_WATCHDOG=y CONFIG_GENERIC_CLOCKEVENTS=y CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y CONFIG_LOCKDEP_SUPPORT=y CONFIG_STACKTRACE_SUPPORT=y CONFIG_HAVE_LATENCYTOP_SUPPORT=y CONFIG_FAST_CMPXCHG_LOCAL=yCONFIG_MMU=yCONFIG_ZONE_DMA=yCONFIG_GENERIC_ISA_DMA=yCONFIG_GENERIC_IOMAP=yCONFIG_GENERIC_BUG=y CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y CONFIG_GENERIC_HWEIGHT=y CONFIG_ARCH_MAY_HAVE_PC_FDC=y CONFIG_RWSEM_GENERIC_SPINLOCK=y
# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y CONFIG_GENERIC_CALIBRATE_DELAY=y CONFIG_GENERIC_TIME_VSYSCALL=y CONFIG_ARCH_HAS_CPU_RELAX=y CONFIG_ARCH_HAS_DEFAULT_IDLE=y CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y CONFIG_HAVE_SETUP_PER_CPU_AREA=y CONFIG_HAVE_DYNAMIC_PER_CPU_AREA=y CONFIG_HAVE_CPUMASK_OF_CPU_MAP=y CONFIG_ARCH_HIBERNATION_POSSIBLE=y CONFIG_ARCH_SUSPEND_POSSIBLE=yCONFIG_ZONE_DMA32=y CONFIG_ARCH_POPULATES_NODE_MAP=y CONFIG_AUDIT_ARCH=y CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y CONFIG_GENERIC_HARDIRQS=y CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y CONFIG_GENERIC_IRQ_PROBE=y CONFIG_GENERIC_PENDING_IRQ=y CONFIG_USE_GENERIC_SMP_HELPERS=y CONFIG_X86_64_SMP=yCONFIG_X86_HT=yCONFIG_X86_TRAMPOLINE=y
# CONFIG_KTIME_SCALAR is not set CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" CONFIG_CONSTRUCTORS=y
#
# General setup
#CONFIG_EXPERIMENTAL=yCONFIG_LOCK_KERNEL=yCONFIG_INIT_ENV_ARG_LIMIT=32CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not setCONFIG_HAVE_KERNEL_GZIP=yCONFIG_HAVE_KERNEL_BZIP2=yCONFIG_HAVE_KERNEL_LZMA=yCONFIG_KERNEL_GZIP=y
# CONFIG_KERNEL_BZIP2 is not set
# CONFIG_KERNEL_LZMA is not setCONFIG_SWAP=yCONFIG_SYSVIPC=yCONFIG_SYSVIPC_SYSCTL=yCONFIG_POSIX_MQUEUE=yCONFIG_POSIX_MQUEUE_SYSCTL=yCONFIG_BSD_PROCESS_ACCT=yCONFIG_BSD_PROCESS_ACCT_V3=yCONFIG_TASKSTATS=y
# CONFIG_TASK_DELAY_ACCT is not setCONFIG_TASK_XACCT=yCONFIG_TASK_IO_ACCOUNTING=yCONFIG_AUDIT=yCONFIG_AUDITSYSCALL=yCONFIG_AUDIT_TREE=y
#
# RCU Subsystem
#
# CONFIG_CLASSIC_RCU is not setCONFIG_TREE_RCU=y
# CONFIG_PREEMPT_RCU is not set
# CONFIG_RCU_TRACE is not setCONFIG_RCU_FANOUT=64
# CONFIG_RCU_FANOUT_EXACT is not set
# CONFIG_TREE_RCU_TRACE is not set
# CONFIG_PREEMPT_RCU_TRACE is not setCONFIG_IKCONFIG=yCONFIG_IKCONFIG_PROC=yCONFIG_LOG_BUF_SHIFT=17CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=yCONFIG_GROUP_SCHED=yCONFIG_FAIR_GROUP_SCHED=yCONFIG_RT_GROUP_SCHED=yCONFIG_USER_SCHED=y
# CONFIG_CGROUP_SCHED is not set
# CONFIG_CGROUPS is not set
# CONFIG_SYSFS_DEPRECATED_V2 is not setCONFIG_RELAY=yCONFIG_NAMESPACES=yCONFIG_UTS_NS=yCONFIG_IPC_NS=y
# CONFIG_USER_NS is not set
# CONFIG_PID_NS is not set
# CONFIG_NET_NS is not set
# CONFIG_BLK_DEV_INITRD is not set
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not setCONFIG_SYSCTL=yCONFIG_ANON_INODES=y
# CONFIG_EMBEDDED is not setCONFIG_UID16=yCONFIG_SYSCTL_SYSCALL=yCONFIG_KALLSYMS=yCONFIG_KALLSYMS_ALL=y
# CONFIG_KALLSYMS_EXTRA_PASS is not setCONFIG_HOTPLUG=yCONFIG_PRINTK=yCONFIG_BUG=yCONFIG_ELF_CORE=yCONFIG_PCSPKR_PLATFORM=yCONFIG_BASE_FULL=yCONFIG_FUTEX=yCONFIG_EPOLL=yCONFIG_SIGNALFD=yCONFIG_TIMERFD=yCONFIG_EVENTFD=yCONFIG_SHMEM=yCONFIG_AIO=yCONFIG_HAVE_PERF_COUNTERS=y
#
# Performance Counters
#CONFIG_PERF_COUNTERS=yCONFIG_EVENT_PROFILE=yCONFIG_VM_EVENT_COUNTERS=yCONFIG_PCI_QUIRKS=y
# CONFIG_STRIP_ASM_SYMS is not set
# CONFIG_COMPAT_BRK is not setCONFIG_SLAB=y
# CONFIG_SLUB is not set
# CONFIG_SLOB is not set
# CONFIG_PROFILING is not setCONFIG_TRACEPOINTS=yCONFIG_MARKERS=yCONFIG_HAVE_OPROFILE=yCONFIG_KPROBES=yCONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=yCONFIG_KRETPROBES=yCONFIG_HAVE_IOREMAP_PROT=yCONFIG_HAVE_KPROBES=yCONFIG_HAVE_KRETPROBES=yCONFIG_HAVE_ARCH_TRACEHOOK=yCONFIG_HAVE_DMA_ATTRS=yCONFIG_HAVE_DMA_API_DEBUG=y
#
# GCOV-based kernel profiling
#
# CONFIG_GCOV_KERNEL is not set
# CONFIG_SLOW_WORK is not set
# CONFIG_HAVE_GENERIC_DMA_COHERENT is not setCONFIG_SLABINFO=yCONFIG_RT_MUTEXES=yCONFIG_BASE_SMALL=0CONFIG_MODULES=y
# CONFIG_MODULE_FORCE_LOAD is not set
# CONFIG_MODULE_UNLOAD is not set
# CONFIG_MODVERSIONS is not set
# CONFIG_MODULE_SRCVERSION_ALL is not setCONFIG_STOP_MACHINE=yCONFIG_BLOCK=y
# CONFIG_BLK_DEV_BSG is not setCONFIG_BLK_DEV_INTEGRITY=yCONFIG_BLOCK_COMPAT=y
#
# IO Schedulers
#CONFIG_IOSCHED_NOOP=yCONFIG_IOSCHED_AS=yCONFIG_IOSCHED_DEADLINE=yCONFIG_IOSCHED_CFQ=y
# CONFIG_DEFAULT_AS is not set
# CONFIG_DEFAULT_DEADLINE is not setCONFIG_DEFAULT_CFQ=y
# CONFIG_DEFAULT_NOOP is not setCONFIG_DEFAULT_IOSCHED="cfq"CONFIG_FREEZER=y
#
# Processor type and features
#CONFIG_TICK_ONESHOT=yCONFIG_NO_HZ=yCONFIG_HIGH_RES_TIMERS=y CONFIG_GENERIC_CLOCKEVENTS_BUILD=y CONFIG_SMP=y
# CONFIG_SPARSE_IRQ is not set CONFIG_X86_MPPARSE=y
# CONFIG_X86_EXTENDED_PLATFORM is not set CONFIG_SCHED_OMIT_FRAME_POINTER=y
# CONFIG_PARAVIRT_GUEST is not set
# CONFIG_MEMTEST is not set
# CONFIG_M386 is not set
# CONFIG_M486 is not set
# CONFIG_M586 is not set
# CONFIG_M586TSC is not set
# CONFIG_M586MMX is not set
# CONFIG_M686 is not set
# CONFIG_MPENTIUMII is not set
# CONFIG_MPENTIUMIII is not set
# CONFIG_MPENTIUMM is not set
# CONFIG_MPENTIUM4 is not set
# CONFIG_MK6 is not set
# CONFIG_MK7 is not set
# CONFIG_MK8 is not set
# CONFIG_MCRUSOE is not set
# CONFIG_MEFFICEON is not set
# CONFIG_MWINCHIPC6 is not set
# CONFIG_MWINCHIP3D is not set
# CONFIG_MGEODEGX1 is not set
# CONFIG_MGEODE_LX is not set
# CONFIG_MCYRIXIII is not set
# CONFIG_MVIAC3_2 is not set
# CONFIG_MVIAC7 is not set
# CONFIG_MPSC is not setCONFIG_MCORE2=y
# CONFIG_GENERIC_CPU is not set CONFIG_X86_CPU=y CONFIG_X86_L1_CACHE_BYTES=64 CONFIG_X86_INTERNODE_CACHE_BYTES=64 CONFIG_X86_CMPXCHG=y CONFIG_X86_L1_CACHE_SHIFT=6 CONFIG_X86_WP_WORKS_OK=y CONFIG_X86_INTEL_USERCOPY=y CONFIG_X86_USE_PPRO_CHECKSUM=y CONFIG_X86_P6_NOP=yCONFIG_X86_TSC=yCONFIG_X86_CMPXCHG64=yCONFIG_X86_CMOV=y CONFIG_X86_MINIMUM_CPU_FAMILY=64 CONFIG_X86_DEBUGCTLMSR=y CONFIG_CPU_SUP_INTEL=yCONFIG_CPU_SUP_AMD=y CONFIG_CPU_SUP_CENTAUR=y
# CONFIG_X86_DS is not set CONFIG_HPET_TIMER=y CONFIG_HPET_EMULATE_RTC=yCONFIG_DMI=yCONFIG_GART_IOMMU=y
# CONFIG_CALGARY_IOMMU is not set
# CONFIG_AMD_IOMMU is not set CONFIG_SWIOTLB=yCONFIG_IOMMU_HELPER=y
# CONFIG_IOMMU_API is not set
# CONFIG_MAXSMP is not setCONFIG_NR_CPUS=2
# CONFIG_SCHED_SMT is not set CONFIG_SCHED_MC=y
# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT_VOLUNTARY is not set CONFIG_PREEMPT=yCONFIG_X86_LOCAL_APIC=yCONFIG_X86_IO_APIC=y
# CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS is not set CONFIG_X86_MCE=yCONFIG_X86_NEW_MCE=yCONFIG_X86_MCE_INTEL=y
# CONFIG_X86_MCE_AMD is not set CONFIG_X86_MCE_THRESHOLD=y
# CONFIG_X86_MCE_INJECT is not set CONFIG_X86_THERMAL_VECTOR=y
# CONFIG_I8K is not setCONFIG_MICROCODE=yCONFIG_MICROCODE_INTEL=y
# CONFIG_MICROCODE_AMD is not set CONFIG_MICROCODE_OLD_INTERFACE=y CONFIG_X86_MSR=yCONFIG_X86_CPUID=y
# CONFIG_X86_CPU_DEBUG is not set CONFIG_ARCH_PHYS_ADDR_T_64BIT=y CONFIG_DIRECT_GBPAGES=y
# CONFIG_NUMA is not set CONFIG_ARCH_SPARSEMEM_DEFAULT=y CONFIG_ARCH_SPARSEMEM_ENABLE=y CONFIG_ARCH_SELECT_MEMORY_MODEL=y CONFIG_SELECT_MEMORY_MODEL=y
# CONFIG_FLATMEM_MANUAL is not set
# CONFIG_DISCONTIGMEM_MANUAL is not set CONFIG_SPARSEMEM_MANUAL=yCONFIG_SPARSEMEM=y CONFIG_HAVE_MEMORY_PRESENT=y CONFIG_SPARSEMEM_EXTREME=y CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y CONFIG_SPARSEMEM_VMEMMAP=y
#
# Memory hotplug is currently incompatible with Software Suspend #CONFIG_PAGEFLAGS_EXTENDED=yCONFIG_SPLIT_PTLOCK_CPUS=4CONFIG_PHYS_ADDR_T_64BIT=yCONFIG_ZONE_DMA_FLAG=1CONFIG_BOUNCE=yCONFIG_VIRT_TO_BUS=yCONFIG_HAVE_MLOCK=yCONFIG_HAVE_MLOCKED_PAGE_BIT=y CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set CONFIG_X86_RESERVE_LOW_64K=yCONFIG_MTRR=yCONFIG_MTRR_SANITIZER=y CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=0 CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1 CONFIG_X86_PAT=yCONFIG_EFI=yCONFIG_SECCOMP=y
# CONFIG_CC_STACKPROTECTOR is not set
# CONFIG_HZ_100 is not setCONFIG_HZ_250=y
# CONFIG_HZ_300 is not set
# CONFIG_HZ_1000 is not setCONFIG_HZ=250CONFIG_SCHED_HRTICK=y
# CONFIG_KEXEC is not setCONFIG_CRASH_DUMP=yCONFIG_PHYSICAL_START=0x200000
# CONFIG_RELOCATABLE is not set CONFIG_PHYSICAL_ALIGN=0x1000000CONFIG_HOTPLUG_CPU=yCONFIG_COMPAT_VDSO=y
# CONFIG_CMDLINE_BOOL is not set CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
#
# Power management and ACPI options
#CONFIG_ARCH_HIBERNATION_HEADER=yCONFIG_PM=yCONFIG_PM_DEBUG=y
# CONFIG_PM_VERBOSE is not setCONFIG_CAN_PM_TRACE=yCONFIG_PM_TRACE=yCONFIG_PM_TRACE_RTC=yCONFIG_PM_SLEEP_SMP=yCONFIG_PM_SLEEP=yCONFIG_SUSPEND=yCONFIG_PM_TEST_SUSPEND=yCONFIG_SUSPEND_FREEZER=yCONFIG_HIBERNATION_NVS=yCONFIG_HIBERNATION=yCONFIG_PM_STD_PARTITION=""CONFIG_ACPI=yCONFIG_ACPI_SLEEP=yCONFIG_ACPI_PROCFS=yCONFIG_ACPI_PROCFS_POWER=yCONFIG_ACPI_SYSFS_POWER=yCONFIG_ACPI_PROC_EVENT=yCONFIG_ACPI_AC=yCONFIG_ACPI_BATTERY=yCONFIG_ACPI_BUTTON=yCONFIG_ACPI_VIDEO=yCONFIG_ACPI_FAN=yCONFIG_ACPI_DOCK=yCONFIG_ACPI_PROCESSOR=yCONFIG_ACPI_HOTPLUG_CPU=yCONFIG_ACPI_THERMAL=yCONFIG_ACPI_CUSTOM_DSDT_FILE=""
# CONFIG_ACPI_CUSTOM_DSDT is not setCONFIG_ACPI_BLACKLIST_YEAR=0
# CONFIG_ACPI_DEBUG is not setCONFIG_ACPI_PCI_SLOT=yCONFIG_X86_PM_TIMER=yCONFIG_ACPI_CONTAINER=yCONFIG_ACPI_SBS=y
#
# CPU Frequency scaling
#CONFIG_CPU_FREQ=yCONFIG_CPU_FREQ_TABLE=y
# CONFIG_CPU_FREQ_DEBUG is not set CONFIG_CPU_FREQ_STAT=y
# CONFIG_CPU_FREQ_STAT_DETAILS is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set CONFIG_CPU_FREQ_GOV_PERFORMANCE=y CONFIG_CPU_FREQ_GOV_POWERSAVE=y CONFIG_CPU_FREQ_GOV_USERSPACE=y CONFIG_CPU_FREQ_GOV_ONDEMAND=y CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
#
# CPUFreq processor drivers
#CONFIG_X86_ACPI_CPUFREQ=y
# CONFIG_X86_POWERNOW_K8 is not set
# CONFIG_X86_SPEEDSTEP_CENTRINO is not setCONFIG_X86_P4_CLOCKMOD=y
#
# shared options # CONFIG_X86_SPEEDSTEP_LIB=y CONFIG_CPU_IDLE=y CONFIG_CPU_IDLE_GOV_LADDER=y CONFIG_CPU_IDLE_GOV_MENU=y
#
# Memory power savings
#CONFIG_I7300_IDLE_IOAT_CHANNEL=yCONFIG_I7300_IDLE=y
#
# Bus options (PCI etc.)
#CONFIG_PCI=yCONFIG_PCI_DIRECT=yCONFIG_PCI_MMCONFIG=yCONFIG_PCI_DOMAINS=y
# CONFIG_DMAR is not set
# CONFIG_INTR_REMAP is not setCONFIG_PCIEPORTBUS=yCONFIG_HOTPLUG_PCI_PCIE=yCONFIG_PCIEAER=y
# CONFIG_PCIE_ECRC is not set
# CONFIG_PCIEAER_INJECT is not set
# CONFIG_PCIEASPM is not setCONFIG_ARCH_SUPPORTS_MSI=yCONFIG_PCI_MSI=yCONFIG_PCI_LEGACY=y
# CONFIG_PCI_DEBUG is not set
# CONFIG_PCI_STUB is not setCONFIG_HT_IRQ=y
# CONFIG_PCI_IOV is not setCONFIG_ISA_DMA_API=yCONFIG_K8_NB=yCONFIG_PCCARD=y
# CONFIG_PCMCIA_DEBUG is not setCONFIG_PCMCIA=yCONFIG_PCMCIA_LOAD_CIS=yCONFIG_PCMCIA_IOCTL=yCONFIG_CARDBUS=y
#
# PC-card bridges
#CONFIG_YENTA=yCONFIG_YENTA_O2=yCONFIG_YENTA_RICOH=yCONFIG_YENTA_TI=yCONFIG_YENTA_ENE_TUNE=yCONFIG_YENTA_TOSHIBA=yCONFIG_PD6729=yCONFIG_I82092=yCONFIG_PCCARD_NONSTATIC=yCONFIG_HOTPLUG_PCI=yCONFIG_HOTPLUG_PCI_FAKE=yCONFIG_HOTPLUG_PCI_ACPI=yCONFIG_HOTPLUG_PCI_ACPI_IBM=yCONFIG_HOTPLUG_PCI_CPCI=yCONFIG_HOTPLUG_PCI_CPCI_ZT5550=yCONFIG_HOTPLUG_PCI_CPCI_GENERIC=yCONFIG_HOTPLUG_PCI_SHPC=y
#
# Executable file formats / Emulations
#CONFIG_BINFMT_ELF=yCONFIG_COMPAT_BINFMT_ELF=y
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
# CONFIG_HAVE_AOUT is not setCONFIG_BINFMT_MISC=yCONFIG_IA32_EMULATION=yCONFIG_IA32_AOUT=yCONFIG_COMPAT=yCONFIG_COMPAT_FOR_U64_ALIGNMENT=yCONFIG_SYSVIPC_COMPAT=yCONFIG_NET=y
#
# Networking options
#CONFIG_PACKET=yCONFIG_PACKET_MMAP=yCONFIG_UNIX=yCONFIG_XFRM=yCONFIG_XFRM_USER=y
# CONFIG_XFRM_SUB_POLICY is not set
# CONFIG_XFRM_MIGRATE is not set
# CONFIG_XFRM_STATISTICS is not setCONFIG_XFRM_IPCOMP=yCONFIG_NET_KEY=y
# CONFIG_NET_KEY_MIGRATE is not setCONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not setCONFIG_IP_FIB_HASH=yCONFIG_IP_PNP=yCONFIG_IP_PNP_DHCP=y
# CONFIG_IP_PNP_BOOTP is not set
# CONFIG_IP_PNP_RARP is not setCONFIG_NET_IPIP=yCONFIG_NET_IPGRE=y
# CONFIG_ARPD is not setCONFIG_SYN_COOKIES=yCONFIG_INET_AH=yCONFIG_INET_ESP=yCONFIG_INET_IPCOMP=yCONFIG_INET_XFRM_TUNNEL=yCONFIG_INET_TUNNEL=yCONFIG_INET_XFRM_MODE_TRANSPORT=yCONFIG_INET_XFRM_MODE_TUNNEL=yCONFIG_INET_XFRM_MODE_BEET=yCONFIG_INET_LRO=yCONFIG_INET_DIAG=yCONFIG_INET_TCP_DIAG=yCONFIG_TCP_CONG_ADVANCED=yCONFIG_TCP_CONG_BIC=yCONFIG_TCP_CONG_CUBIC=yCONFIG_TCP_CONG_WESTWOOD=yCONFIG_TCP_CONG_HTCP=yCONFIG_TCP_CONG_HSTCP=yCONFIG_TCP_CONG_HYBLA=yCONFIG_TCP_CONG_VEGAS=yCONFIG_TCP_CONG_SCALABLE=yCONFIG_TCP_CONG_LP=yCONFIG_TCP_CONG_VENO=yCONFIG_TCP_CONG_YEAH=yCONFIG_TCP_CONG_ILLINOIS=y
# CONFIG_DEFAULT_BIC is not setCONFIG_DEFAULT_CUBIC=y
# CONFIG_DEFAULT_HTCP is not set
# CONFIG_DEFAULT_VEGAS is not set
# CONFIG_DEFAULT_WESTWOOD is not set
# CONFIG_DEFAULT_RENO is not setCONFIG_DEFAULT_TCP_CONG="cubic"CONFIG_TCP_MD5SIG=y
# CONFIG_IPV6 is not setCONFIG_NETLABEL=yCONFIG_NETWORK_SECMARK=y
# CONFIG_NETFILTER is not set
# CONFIG_IP_DCCP is not set
# CONFIG_IP_SCTP is not set
# CONFIG_TIPC is not set
# CONFIG_ATM is not set
# CONFIG_BRIDGE is not set
# CONFIG_NET_DSA is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
# CONFIG_LLC2 is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
# CONFIG_PHONET is not set
# CONFIG_IEEE802154 is not set
# CONFIG_NET_SCHED is not set
# CONFIG_DCB is not set
#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_NET_TCPPROBE is not set
# CONFIG_NET_DROP_MONITOR is not set
# CONFIG_HAMRADIO is not set
# CONFIG_CAN is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not setCONFIG_AF_RXRPC=y
# CONFIG_AF_RXRPC_DEBUG is not set
# CONFIG_RXKAD is not setCONFIG_WIRELESS=yCONFIG_CFG80211=y
# CONFIG_CFG80211_REG_DEBUG is not set
# CONFIG_CFG80211_DEBUGFS is not setCONFIG_WIRELESS_OLD_REGULATORY=yCONFIG_WIRELESS_EXT=yCONFIG_WIRELESS_EXT_SYSFS=yCONFIG_LIB80211=yCONFIG_LIB80211_CRYPT_WEP=yCONFIG_LIB80211_CRYPT_CCMP=yCONFIG_LIB80211_CRYPT_TKIP=yCONFIG_LIB80211_DEBUG=yCONFIG_MAC80211=yCONFIG_MAC80211_DEFAULT_PS=yCONFIG_MAC80211_DEFAULT_PS_VALUE=1
#
# Rate control algorithm selection
#CONFIG_MAC80211_RC_MINSTREL=y
# CONFIG_MAC80211_RC_DEFAULT_PID is not setCONFIG_MAC80211_RC_DEFAULT_MINSTREL=yCONFIG_MAC80211_RC_DEFAULT="minstrel"CONFIG_MAC80211_LEDS=y
# CONFIG_MAC80211_DEBUGFS is not set
# CONFIG_MAC80211_DEBUG_MENU is not set
# CONFIG_WIMAX is not set
# CONFIG_RFKILL is not set
# CONFIG_NET_9P is not set
#
# Device Drivers
#
#
# Generic Driver Options
#CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
# CONFIG_STANDALONE is not setCONFIG_PREVENT_FIRMWARE_BUILD=yCONFIG_FW_LOADER=y
# CONFIG_FIRMWARE_IN_KERNEL is not setCONFIG_EXTRA_FIRMWARE=""
# CONFIG_DEBUG_DRIVER is not set
# CONFIG_DEBUG_DEVRES is not set
# CONFIG_SYS_HYPERVISOR is not setCONFIG_CONNECTOR=yCONFIG_PROC_EVENTS=y
# CONFIG_MTD is not set
# CONFIG_PARPORT is not setCONFIG_PNP=yCONFIG_PNP_DEBUG_MESSAGES=y
#
# Protocols
#CONFIG_PNPACPI=yCONFIG_BLK_DEV=y
# CONFIG_BLK_DEV_FD is not set
# CONFIG_BLK_CPQ_DA is not set
# CONFIG_BLK_CPQ_CISS_DA is not set
# CONFIG_BLK_DEV_DAC960 is not set
# CONFIG_BLK_DEV_UMEM is not set
# CONFIG_BLK_DEV_COW_COMMON is not setCONFIG_BLK_DEV_LOOP=yCONFIG_BLK_DEV_CRYPTOLOOP=y
# CONFIG_BLK_DEV_NBD is not setCONFIG_BLK_DEV_SX8=yCONFIG_BLK_DEV_RAM=yCONFIG_BLK_DEV_RAM_COUNT=16CONFIG_BLK_DEV_RAM_SIZE=65536
# CONFIG_BLK_DEV_XIP is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
# CONFIG_BLK_DEV_HD is not set
# CONFIG_MISC_DEVICES is not set
# CONFIG_DELL_LAPTOP is not setCONFIG_HAVE_IDE=y
# CONFIG_IDE is not set
#
# SCSI device support
#
# CONFIG_RAID_ATTRS is not setCONFIG_SCSI=yCONFIG_SCSI_DMA=yCONFIG_SCSI_TGT=yCONFIG_SCSI_NETLINK=yCONFIG_SCSI_PROC_FS=y
#
# SCSI support type (disk, tape, CD-ROM)
#CONFIG_BLK_DEV_SD=y
# CONFIG_CHR_DEV_ST is not set
# CONFIG_CHR_DEV_OSST is not setCONFIG_BLK_DEV_SR=y
# CONFIG_BLK_DEV_SR_VENDOR is not setCONFIG_CHR_DEV_SG=y
# CONFIG_CHR_DEV_SCH is not set
# CONFIG_SCSI_MULTI_LUN is not set
# CONFIG_SCSI_CONSTANTS is not set
# CONFIG_SCSI_LOGGING is not set
# CONFIG_SCSI_SCAN_ASYNC is not setCONFIG_SCSI_WAIT_SCAN=m
#
# SCSI Transports
#CONFIG_SCSI_SPI_ATTRS=yCONFIG_SCSI_FC_ATTRS=yCONFIG_SCSI_FC_TGT_ATTRS=yCONFIG_SCSI_ISCSI_ATTRS=yCONFIG_SCSI_SAS_ATTRS=yCONFIG_SCSI_SAS_LIBSAS=yCONFIG_SCSI_SAS_ATA=yCONFIG_SCSI_SAS_HOST_SMP=y
# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not setCONFIG_SCSI_SRP_ATTRS=yCONFIG_SCSI_SRP_TGT_ATTRS=yCONFIG_SCSI_LOWLEVEL=y
# CONFIG_ISCSI_TCP is not set
# CONFIG_SCSI_BNX2_ISCSI is not set
# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
# CONFIG_SCSI_3W_9XXX is not set
# CONFIG_SCSI_ACARD is not set
# CONFIG_SCSI_AACRAID is not set
# CONFIG_SCSI_AIC7XXX is not set
# CONFIG_SCSI_AIC7XXX_OLD is not set
# CONFIG_SCSI_AIC79XX is not set
# CONFIG_SCSI_AIC94XX is not set
# CONFIG_SCSI_MVSAS is not set
# CONFIG_SCSI_DPT_I2O is not set
# CONFIG_SCSI_ADVANSYS is not set
# CONFIG_SCSI_ARCMSR is not set
# CONFIG_MEGARAID_NEWGEN is not set
# CONFIG_MEGARAID_LEGACY is not set
# CONFIG_MEGARAID_SAS is not set
# CONFIG_SCSI_MPT2SAS is not set
# CONFIG_SCSI_HPTIOP is not set
# CONFIG_SCSI_BUSLOGIC is not set
# CONFIG_LIBFC is not set
# CONFIG_LIBFCOE is not set
# CONFIG_FCOE is not set
# CONFIG_FCOE_FNIC is not set
# CONFIG_SCSI_DMX3191D is not set
# CONFIG_SCSI_EATA is not set
# CONFIG_SCSI_FUTURE_DOMAIN is not set
# CONFIG_SCSI_GDTH is not set
# CONFIG_SCSI_IPS is not set
# CONFIG_SCSI_INITIO is not set
# CONFIG_SCSI_INIA100 is not set
# CONFIG_SCSI_STEX is not set
# CONFIG_SCSI_SYM53C8XX_2 is not set
# CONFIG_SCSI_IPR is not set
# CONFIG_SCSI_QLOGIC_1280 is not set
# CONFIG_SCSI_QLA_FC is not set
# CONFIG_SCSI_QLA_ISCSI is not set
# CONFIG_SCSI_LPFC is not set
# CONFIG_SCSI_DC395x is not set
# CONFIG_SCSI_DC390T is not set
# CONFIG_SCSI_DEBUG is not set
# CONFIG_SCSI_SRP is not set
# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
# CONFIG_SCSI_DH is not set
# CONFIG_SCSI_OSD_INITIATOR is not setCONFIG_ATA=y
# CONFIG_ATA_NONSTANDARD is not setCONFIG_ATA_ACPI=yCONFIG_SATA_PMP=yCONFIG_SATA_AHCI=yCONFIG_SATA_SIL24=yCONFIG_ATA_SFF=y
# CONFIG_SATA_SVW is not setCONFIG_ATA_PIIX=y
# CONFIG_SATA_MV is not set
# CONFIG_SATA_NV is not set
# CONFIG_PDC_ADMA is not set
# CONFIG_SATA_QSTOR is not set
# CONFIG_SATA_PROMISE is not set
# CONFIG_SATA_SX4 is not set
# CONFIG_SATA_SIL is not set
# CONFIG_SATA_SIS is not set
# CONFIG_SATA_ULI is not set
# CONFIG_SATA_VIA is not set
# CONFIG_SATA_VITESSE is not set
# CONFIG_SATA_INIC162X is not set
# CONFIG_PATA_ACPI is not set
# CONFIG_PATA_ALI is not set
# CONFIG_PATA_AMD is not set
# CONFIG_PATA_ARTOP is not set
# CONFIG_PATA_ATIIXP is not set
# CONFIG_PATA_CMD640_PCI is not set
# CONFIG_PATA_CMD64X is not set
# CONFIG_PATA_CS5520 is not set
# CONFIG_PATA_CS5530 is not set
# CONFIG_PATA_CYPRESS is not set
# CONFIG_PATA_EFAR is not set
# CONFIG_ATA_GENERIC is not set
# CONFIG_PATA_HPT366 is not set
# CONFIG_PATA_HPT37X is not set
# CONFIG_PATA_HPT3X2N is not set
# CONFIG_PATA_HPT3X3 is not set
# CONFIG_PATA_IT821X is not set
# CONFIG_PATA_IT8213 is not set
# CONFIG_PATA_JMICRON is not set
# CONFIG_PATA_TRIFLEX is not set
# CONFIG_PATA_MARVELL is not set
# CONFIG_PATA_MPIIX is not set
# CONFIG_PATA_OLDPIIX is not set
# CONFIG_PATA_NETCELL is not set
# CONFIG_PATA_NINJA32 is not set
# CONFIG_PATA_NS87410 is not set
# CONFIG_PATA_NS87415 is not set
# CONFIG_PATA_OPTI is not set
# CONFIG_PATA_OPTIDMA is not set
# CONFIG_PATA_PCMCIA is not set
# CONFIG_PATA_PDC_OLD is not set
# CONFIG_PATA_RADISYS is not set
# CONFIG_PATA_RZ1000 is not set
# CONFIG_PATA_SC1200 is not set
# CONFIG_PATA_SERVERWORKS is not set
# CONFIG_PATA_PDC2027X is not set
# CONFIG_PATA_SIL680 is not set
# CONFIG_PATA_SIS is not set
# CONFIG_PATA_VIA is not set
# CONFIG_PATA_WINBOND is not set
# CONFIG_PATA_SCH is not set
# CONFIG_MD is not set
# CONFIG_FUSION is not set
#
# IEEE 1394 (FireWire) support
#
#
# You can enable one or both FireWire driver stacks. #
#
# See the help texts for more information.
#
# CONFIG_FIREWIRE is not setCONFIG_IEEE1394=yCONFIG_IEEE1394_OHCI1394=yCONFIG_IEEE1394_PCILYNX=yCONFIG_IEEE1394_SBP2=y
# CONFIG_IEEE1394_SBP2_PHYS_DMA is not setCONFIG_IEEE1394_ETH1394_ROM_ENTRY=yCONFIG_IEEE1394_ETH1394=yCONFIG_IEEE1394_RAWIO=yCONFIG_IEEE1394_VIDEO1394=yCONFIG_IEEE1394_DV1394=y
# CONFIG_IEEE1394_VERBOSEDEBUG is not set
# CONFIG_I2O is not set
# CONFIG_MACINTOSH_DRIVERS is not setCONFIG_NETDEVICES=yCONFIG_DUMMY=y
# CONFIG_BONDING is not set
# CONFIG_MACVLAN is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
# CONFIG_VETH is not set
# CONFIG_NET_SB1000 is not set
# CONFIG_ARCNET is not set
# CONFIG_NET_ETHERNET is not setCONFIG_MII=yCONFIG_NETDEV_1000=y
# CONFIG_ACENIC is not set
# CONFIG_DL2K is not set
# CONFIG_E1000 is not set
# CONFIG_E1000E is not set
# CONFIG_IP1000 is not set
# CONFIG_IGB is not set
# CONFIG_IGBVF is not set
# CONFIG_NS83820 is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not setCONFIG_R8169=y
# CONFIG_SIS190 is not set
# CONFIG_SKGE is not set
# CONFIG_SKY2 is not set
# CONFIG_VIA_VELOCITY is not set
# CONFIG_TIGON3 is not set
# CONFIG_BNX2 is not set
# CONFIG_CNIC is not set
# CONFIG_QLA3XXX is not set
# CONFIG_ATL1 is not set
# CONFIG_ATL1E is not set
# CONFIG_ATL1C is not set
# CONFIG_JME is not set
# CONFIG_NETDEV_10000 is not set
# CONFIG_TR is not set
#
# Wireless LAN
#
# CONFIG_WLAN_PRE80211 is not setCONFIG_WLAN_80211=y
# CONFIG_PCMCIA_RAYCS is not set
# CONFIG_LIBERTAS is not set
# CONFIG_LIBERTAS_THINFIRM is not set
# CONFIG_AIRO is not set
# CONFIG_ATMEL is not set
# CONFIG_AIRO_CS is not set
# CONFIG_PCMCIA_WL3501 is not set
# CONFIG_PRISM54 is not set
# CONFIG_RTL8180 is not set
# CONFIG_ADM8211 is not set
# CONFIG_MAC80211_HWSIM is not set
# CONFIG_MWL8K is not set
# CONFIG_P54_COMMON is not setCONFIG_ATH_COMMON=yCONFIG_ATH5K=y
# CONFIG_ATH5K_DEBUG is not set
# CONFIG_ATH9K is not set
# CONFIG_IPW2100 is not set
# CONFIG_IPW2200 is not set
# CONFIG_IWLWIFI is not setCONFIG_HOSTAP=y
# CONFIG_HOSTAP_FIRMWARE is not set
# CONFIG_HOSTAP_PLX is not set
# CONFIG_HOSTAP_PCI is not set
# CONFIG_HOSTAP_CS is not set
# CONFIG_B43 is not set
# CONFIG_B43LEGACY is not set
# CONFIG_RT2X00 is not set
# CONFIG_HERMES is not set
#
# Enable WiMAX (Networking options) to see the WiMAX drivers #
# CONFIG_NET_PCMCIA is not set
# CONFIG_WAN is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
# CONFIG_NET_FC is not set
# CONFIG_NETCONSOLE is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
# CONFIG_ISDN is not set
# CONFIG_PHONE is not set
#
# Input device support
#CONFIG_INPUT=yCONFIG_INPUT_FF_MEMLESS=yCONFIG_INPUT_POLLDEV=y
#
# Userland interfaces
#CONFIG_INPUT_MOUSEDEV=yCONFIG_INPUT_MOUSEDEV_PSAUX=yCONFIG_INPUT_MOUSEDEV_SCREEN_X=1024CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
# CONFIG_INPUT_JOYDEV is not setCONFIG_INPUT_EVDEV=y
# CONFIG_INPUT_EVBUG is not set
#
# Input Device Drivers
#CONFIG_INPUT_KEYBOARD=yCONFIG_KEYBOARD_ATKBD=yCONFIG_KEYBOARD_LKKBD=y
# CONFIG_KEYBOARD_LM8323 is not setCONFIG_KEYBOARD_NEWTON=yCONFIG_KEYBOARD_STOWAWAY=yCONFIG_KEYBOARD_SUNKBD=yCONFIG_KEYBOARD_XTKBD=yCONFIG_INPUT_MOUSE=yCONFIG_MOUSE_PS2=yCONFIG_MOUSE_PS2_ALPS=yCONFIG_MOUSE_PS2_LOGIPS2PP=yCONFIG_MOUSE_PS2_SYNAPTICS=yCONFIG_MOUSE_PS2_LIFEBOOK=yCONFIG_MOUSE_PS2_TRACKPOINT=y
# CONFIG_MOUSE_PS2_ELANTECH is not set
# CONFIG_MOUSE_PS2_TOUCHKIT is not setCONFIG_MOUSE_SERIAL=y
# CONFIG_MOUSE_VSXXXAA is not set
# CONFIG_MOUSE_SYNAPTICS_I2C is not set
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TABLET is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
# CONFIG_INPUT_MISC is not set
#
# Hardware I/O ports
#CONFIG_SERIO=yCONFIG_SERIO_I8042=yCONFIG_SERIO_SERPORT=yCONFIG_SERIO_CT82C710=y
# CONFIG_SERIO_PCIPS2 is not setCONFIG_SERIO_LIBPS2=yCONFIG_SERIO_RAW=y
# CONFIG_GAMEPORT is not set
#
# Character devices
#CONFIG_VT=yCONFIG_CONSOLE_TRANSLATIONS=yCONFIG_VT_CONSOLE=yCONFIG_HW_CONSOLE=yCONFIG_VT_HW_CONSOLE_BINDING=yCONFIG_DEVKMEM=yCONFIG_SERIAL_NONSTANDARD=y
# CONFIG_COMPUTONE is not set
# CONFIG_ROCKETPORT is not set
# CONFIG_CYCLADES is not set
# CONFIG_DIGIEPCA is not set
# CONFIG_MOXA_INTELLIO is not set
# CONFIG_MOXA_SMARTIO is not set
# CONFIG_ISI is not set
# CONFIG_SYNCLINK is not set
# CONFIG_SYNCLINKMP is not set
# CONFIG_SYNCLINK_GT is not set
# CONFIG_N_HDLC is not set
# CONFIG_RISCOM8 is not set
# CONFIG_SPECIALIX is not set
# CONFIG_SX is not set
# CONFIG_RIO is not set
# CONFIG_STALDRV is not set
# CONFIG_NOZOMI is not set
#
# Serial drivers
#CONFIG_SERIAL_8250=y
# CONFIG_SERIAL_8250_CONSOLE is not setCONFIG_FIX_EARLYCON_MEM=yCONFIG_SERIAL_8250_PCI=yCONFIG_SERIAL_8250_PNP=y
# CONFIG_SERIAL_8250_CS is not setCONFIG_SERIAL_8250_NR_UARTS=48CONFIG_SERIAL_8250_RUNTIME_UARTS=4
# CONFIG_SERIAL_8250_EXTENDED is not set
#
# Non-8250 serial port support
#CONFIG_SERIAL_CORE=y
# CONFIG_SERIAL_JSM is not setCONFIG_UNIX98_PTYS=y
# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not setCONFIG_LEGACY_PTYS=yCONFIG_LEGACY_PTY_COUNT=256
# CONFIG_IPMI_HANDLER is not setCONFIG_HW_RANDOM=y
# CONFIG_HW_RANDOM_TIMERIOMEM is not setCONFIG_HW_RANDOM_INTEL=y
# CONFIG_HW_RANDOM_AMD is not setCONFIG_HW_RANDOM_VIA=yCONFIG_NVRAM=y
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
#
# PCMCIA character devices
#
# CONFIG_SYNCLINK_CS is not set
# CONFIG_CARDMAN_4000 is not set
# CONFIG_CARDMAN_4040 is not set
# CONFIG_IPWIRELESS is not set
# CONFIG_MWAVE is not set
# CONFIG_PC8736x_GPIO is not setCONFIG_RAW_DRIVER=yCONFIG_MAX_RAW_DEVS=256CONFIG_HPET=y
# CONFIG_HPET_MMAP is not set
# CONFIG_HANGCHECK_TIMER is not set
# CONFIG_TCG_TPM is not set
# CONFIG_TELCLOCK is not setCONFIG_DEVPORT=yCONFIG_I2C=yCONFIG_I2C_BOARDINFO=y
# CONFIG_I2C_CHARDEV is not set
# CONFIG_I2C_HELPER_AUTO is not set
#
# I2C Algorithms
#CONFIG_I2C_ALGOBIT=yCONFIG_I2C_ALGOPCF=yCONFIG_I2C_ALGOPCA=y
#
# I2C Hardware Bus support
#
#
# PC SMBus host controller drivers
#
# CONFIG_I2C_ALI1535 is not set
# CONFIG_I2C_ALI1563 is not set
# CONFIG_I2C_ALI15X3 is not set
# CONFIG_I2C_AMD756 is not set
# CONFIG_I2C_AMD8111 is not setCONFIG_I2C_I801=y
# CONFIG_I2C_ISCH is not setCONFIG_I2C_PIIX4=yCONFIG_I2C_NFORCE2=y
# CONFIG_I2C_NFORCE2_S4985 is not set
# CONFIG_I2C_SIS5595 is not set
# CONFIG_I2C_SIS630 is not set
# CONFIG_I2C_SIS96X is not set
# CONFIG_I2C_VIA is not set
# CONFIG_I2C_VIAPRO is not set
#
# I2C system bus drivers (mostly embedded / system-on-chip) #CONFIG_I2C_OCORES=y
# CONFIG_I2C_SIMTEC is not set
#
# External I2C/SMBus adapter drivers
#
# CONFIG_I2C_PARPORT_LIGHT is not set
# CONFIG_I2C_TAOS_EVM is not set
#
# Graphics adapter I2C/DDC channel drivers
#
# CONFIG_I2C_VOODOO3 is not set
#
# Other I2C/SMBus bus drivers
#
# CONFIG_I2C_PCA_PLATFORM is not set
# CONFIG_I2C_STUB is not set
#
# Miscellaneous I2C Chip support
#
# CONFIG_DS1682 is not set
# CONFIG_SENSORS_PCF8574 is not set
# CONFIG_PCF8575 is not set
# CONFIG_SENSORS_PCA9539 is not set
# CONFIG_SENSORS_TSL2550 is not set
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not set
# CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_I2C_DEBUG_CHIP is not set
# CONFIG_SPI is not set
#
# PPS support
#
# CONFIG_PPS is not setCONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
# CONFIG_GPIOLIB is not setCONFIG_W1=y
# CONFIG_W1_CON is not set
#
# 1-wire Bus Masters
#
# CONFIG_W1_MASTER_MATROX is not set
# CONFIG_W1_MASTER_DS2482 is not set
#
# 1-wire Slaves
#
# CONFIG_W1_SLAVE_THERM is not set
# CONFIG_W1_SLAVE_SMEM is not set
# CONFIG_W1_SLAVE_DS2431 is not set
# CONFIG_W1_SLAVE_DS2433 is not setCONFIG_W1_SLAVE_DS2760=y
# CONFIG_W1_SLAVE_BQ27000 is not setCONFIG_POWER_SUPPLY=y
# CONFIG_POWER_SUPPLY_DEBUG is not set
# CONFIG_PDA_POWER is not setCONFIG_BATTERY_DS2760=y
# CONFIG_BATTERY_DS2782 is not set
CONFIG_BATTERY_BQ27x00=y
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_HWMON is not setCONFIG_THERMAL=yCONFIG_WATCHDOG=y
# CONFIG_WATCHDOG_NOWAYOUT is not set
#
# Watchdog Device Drivers
#
# CONFIG_SOFT_WATCHDOG is not set
# CONFIG_ACQUIRE_WDT is not set
# CONFIG_ADVANTECH_WDT is not set
# CONFIG_ALIM1535_WDT is not set
# CONFIG_ALIM7101_WDT is not set
# CONFIG_SC520_WDT is not set
# CONFIG_EUROTECH_WDT is not set
# CONFIG_IB700_WDT is not set
# CONFIG_IBMASR is not set
# CONFIG_WAFER_WDT is not setCONFIG_I6300ESB_WDT=yCONFIG_ITCO_WDT=yCONFIG_ITCO_VENDOR_SUPPORT=y
# CONFIG_IT8712F_WDT is not set
# CONFIG_IT87_WDT is not set
# CONFIG_HP_WATCHDOG is not set
# CONFIG_SC1200_WDT is not set
# CONFIG_PC87413_WDT is not set
# CONFIG_60XX_WDT is not set
# CONFIG_SBC8360_WDT is not set
# CONFIG_CPU5_WDT is not set
# CONFIG_SMSC_SCH311X_WDT is not set
# CONFIG_SMSC37B787_WDT is not set
# CONFIG_W83627HF_WDT is not set
# CONFIG_W83697HF_WDT is not set
# CONFIG_W83697UG_WDT is not set
# CONFIG_W83877F_WDT is not set
# CONFIG_W83977F_WDT is not set
# CONFIG_MACHZ_WDT is not set
# CONFIG_SBC_EPX_C3_WATCHDOG is not set
#
# PCI-based Watchdog Cards
#
# CONFIG_PCIPCWATCHDOG is not set
# CONFIG_WDTPCI is not setCONFIG_SSB_POSSIBLE=y
#
# Sonics Silicon Backplane
#
# CONFIG_SSB is not set
#
# Multifunction device drivers
#
# CONFIG_MFD_CORE is not set
# CONFIG_MFD_SM501 is not set
# CONFIG_HTC_PASIC3 is not set
# CONFIG_TWL4030_CORE is not set
# CONFIG_MFD_TMIO is not set
# CONFIG_PMIC_DA903X is not set
# CONFIG_MFD_WM8400 is not set
# CONFIG_MFD_WM8350_I2C is not set
# CONFIG_MFD_PCF50633 is not set
# CONFIG_AB3100_CORE is not set
# CONFIG_REGULATOR is not set
# CONFIG_MEDIA_SUPPORT is not set
#
# Graphics support
#CONFIG_AGP=yCONFIG_AGP_AMD64=yCONFIG_AGP_INTEL=y
# CONFIG_AGP_SIS is not set
# CONFIG_AGP_VIA is not setCONFIG_DRM=y
# CONFIG_DRM_TDFX is not set
# CONFIG_DRM_R128 is not set
# CONFIG_DRM_RADEON is not setCONFIG_DRM_I810=yCONFIG_DRM_I830=y
# CONFIG_DRM_I915 is not set
# CONFIG_DRM_MGA is not set
# CONFIG_DRM_SIS is not set
# CONFIG_DRM_VIA is not set
# CONFIG_DRM_SAVAGE is not setCONFIG_VGASTATE=yCONFIG_VIDEO_OUTPUT_CONTROL=yCONFIG_FB=yCONFIG_FIRMWARE_EDID=y
# CONFIG_FB_DDC is not set
# CONFIG_FB_BOOT_VESA_SUPPORT is not setCONFIG_FB_CFB_FILLRECT=yCONFIG_FB_CFB_COPYAREA=yCONFIG_FB_CFB_IMAGEBLIT=y
# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
# CONFIG_FB_SYS_FILLRECT is not set
# CONFIG_FB_SYS_COPYAREA is not set
# CONFIG_FB_SYS_IMAGEBLIT is not set
# CONFIG_FB_FOREIGN_ENDIAN is not set
# CONFIG_FB_SYS_FOPS is not set
# CONFIG_FB_SVGALIB is not set
# CONFIG_FB_MACMODES is not set
# CONFIG_FB_BACKLIGHT is not setCONFIG_FB_MODE_HELPERS=yCONFIG_FB_TILEBLITTING=y
#
# Frame buffer hardware drivers
#
# CONFIG_FB_CIRRUS is not set
# CONFIG_FB_PM2 is not set
# CONFIG_FB_CYBER2000 is not set
# CONFIG_FB_ARC is not set
# CONFIG_FB_ASILIANT is not set
# CONFIG_FB_IMSTT is not setCONFIG_FB_VGA16=yCONFIG_FB_UVESA=y
# CONFIG_FB_VESA is not set
# CONFIG_FB_EFI is not set
# CONFIG_FB_N411 is not set
# CONFIG_FB_HGA is not set
# CONFIG_FB_S1D13XXX is not set
# CONFIG_FB_NVIDIA is not set
# CONFIG_FB_RIVA is not setCONFIG_FB_LE80578=yCONFIG_FB_CARILLO_RANCH=y
# CONFIG_FB_MATROX is not set
# CONFIG_FB_RADEON is not set
# CONFIG_FB_ATY128 is not set
# CONFIG_FB_ATY is not set
# CONFIG_FB_S3 is not set
# CONFIG_FB_SAVAGE is not set
# CONFIG_FB_SIS is not set
# CONFIG_FB_VIA is not set
# CONFIG_FB_NEOMAGIC is not set
# CONFIG_FB_KYRO is not set
# CONFIG_FB_3DFX is not set
# CONFIG_FB_VOODOO1 is not set
# CONFIG_FB_VT8623 is not set
# CONFIG_FB_TRIDENT is not set
# CONFIG_FB_ARK is not set
# CONFIG_FB_PM3 is not set
# CONFIG_FB_CARMINE is not set
# CONFIG_FB_GEODE is not set
# CONFIG_FB_VIRTUAL is not set
# CONFIG_FB_METRONOME is not set
# CONFIG_FB_MB862XX is not set
# CONFIG_FB_BROADSHEET is not setCONFIG_BACKLIGHT_LCD_SUPPORT=yCONFIG_LCD_CLASS_DEVICE=y
# CONFIG_LCD_ILI9320 is not setCONFIG_LCD_PLATFORM=yCONFIG_BACKLIGHT_CLASS_DEVICE=yCONFIG_BACKLIGHT_GENERIC=yCONFIG_BACKLIGHT_PROGEAR=yCONFIG_BACKLIGHT_CARILLO_RANCH=yCONFIG_BACKLIGHT_MBP_NVIDIA=y
# CONFIG_BACKLIGHT_SAHARA is not set
#
# Display device support
#CONFIG_DISPLAY_SUPPORT=y
#
# Display hardware drivers
#
#
# Console display driver support
#CONFIG_VGA_CONSOLE=yCONFIG_VGACON_SOFT_SCROLLBACK=yCONFIG_VGACON_SOFT_SCROLLBACK_SIZE=64CONFIG_DUMMY_CONSOLE=yCONFIG_FRAMEBUFFER_CONSOLE=yCONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=yCONFIG_FRAMEBUFFER_CONSOLE_ROTATION=yCONFIG_FONTS=y
CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=y
# CONFIG_FONT_6x11 is not set
# CONFIG_FONT_7x14 is not set
# CONFIG_FONT_PEARL_8x8 is not set
# CONFIG_FONT_ACORN_8x8 is not set
# CONFIG_FONT_MINI_4x6 is not set
# CONFIG_FONT_SUN8x16 is not set
# CONFIG_FONT_SUN12x22 is not set
CONFIG_FONT_10x18=yCONFIG_LOGO=y
# CONFIG_LOGO_LINUX_MONO is not setCONFIG_LOGO_LINUX_VGA16=y
# CONFIG_LOGO_LINUX_CLUT224 is not setCONFIG_SOUND=yCONFIG_SOUND_OSS_CORE=yCONFIG_SND=yCONFIG_SND_TIMER=yCONFIG_SND_PCM=yCONFIG_SND_HWDEP=yCONFIG_SND_SEQUENCER=y
# CONFIG_SND_SEQ_DUMMY is not setCONFIG_SND_OSSEMUL=yCONFIG_SND_MIXER_OSS=yCONFIG_SND_PCM_OSS=yCONFIG_SND_PCM_OSS_PLUGINS=yCONFIG_SND_SEQUENCER_OSS=y
# CONFIG_SND_HRTIMER is not set
# CONFIG_SND_DYNAMIC_MINORS is not setCONFIG_SND_SUPPORT_OLD_API=yCONFIG_SND_VERBOSE_PROCFS=y
# CONFIG_SND_VERBOSE_PRINTK is not set
# CONFIG_SND_DEBUG is not setCONFIG_SND_VMASTER=y
# CONFIG_SND_RAWMIDI_SEQ is not set
# CONFIG_SND_OPL3_LIB_SEQ is not set
# CONFIG_SND_OPL4_LIB_SEQ is not set
# CONFIG_SND_SBAWE_SEQ is not set
# CONFIG_SND_EMU10K1_SEQ is not setCONFIG_SND_DRIVERS=y
# CONFIG_SND_PCSP is not set
# CONFIG_SND_DUMMY is not set
# CONFIG_SND_VIRMIDI is not set
# CONFIG_SND_MTPAV is not set
# CONFIG_SND_SERIAL_U16550 is not set
# CONFIG_SND_MPU401 is not setCONFIG_SND_PCI=y
# CONFIG_SND_AD1889 is not set
# CONFIG_SND_ALS300 is not set
# CONFIG_SND_ALS4000 is not set
# CONFIG_SND_ALI5451 is not set
# CONFIG_SND_ATIIXP is not set
# CONFIG_SND_ATIIXP_MODEM is not set
# CONFIG_SND_AU8810 is not set
# CONFIG_SND_AU8820 is not set
# CONFIG_SND_AU8830 is not set
# CONFIG_SND_AW2 is not set
# CONFIG_SND_AZT3328 is not set
# CONFIG_SND_BT87X is not set
# CONFIG_SND_CA0106 is not set
# CONFIG_SND_CMIPCI is not set
# CONFIG_SND_OXYGEN is not set
# CONFIG_SND_CS4281 is not set
# CONFIG_SND_CS46XX is not set
# CONFIG_SND_CS5530 is not set
# CONFIG_SND_CTXFI is not set
# CONFIG_SND_DARLA20 is not set
# CONFIG_SND_GINA20 is not set
# CONFIG_SND_LAYLA20 is not set
# CONFIG_SND_DARLA24 is not set
# CONFIG_SND_GINA24 is not set
# CONFIG_SND_LAYLA24 is not set
# CONFIG_SND_MONA is not set
# CONFIG_SND_MIA is not set
# CONFIG_SND_ECHO3G is not set
# CONFIG_SND_INDIGO is not set
# CONFIG_SND_INDIGOIO is not set
# CONFIG_SND_INDIGODJ is not set
# CONFIG_SND_INDIGOIOX is not set
# CONFIG_SND_INDIGODJX is not set
# CONFIG_SND_EMU10K1 is not set
# CONFIG_SND_EMU10K1X is not set
# CONFIG_SND_ENS1370 is not set
# CONFIG_SND_ENS1371 is not set
# CONFIG_SND_ES1938 is not set
# CONFIG_SND_ES1968 is not set
# CONFIG_SND_FM801 is not setCONFIG_SND_HDA_INTEL=yCONFIG_SND_HDA_HWDEP=y
# CONFIG_SND_HDA_RECONFIG is not set
# CONFIG_SND_HDA_INPUT_BEEP is not set
# CONFIG_SND_HDA_INPUT_JACK is not setCONFIG_SND_HDA_CODEC_REALTEK=yCONFIG_SND_HDA_CODEC_ANALOG=yCONFIG_SND_HDA_CODEC_SIGMATEL=yCONFIG_SND_HDA_CODEC_VIA=yCONFIG_SND_HDA_CODEC_ATIHDMI=yCONFIG_SND_HDA_CODEC_NVHDMI=yCONFIG_SND_HDA_CODEC_INTELHDMI=yCONFIG_SND_HDA_ELD=yCONFIG_SND_HDA_CODEC_CONEXANT=yCONFIG_SND_HDA_CODEC_CA0110=yCONFIG_SND_HDA_CODEC_CMEDIA=yCONFIG_SND_HDA_CODEC_SI3054=yCONFIG_SND_HDA_GENERIC=y
# CONFIG_SND_HDA_POWER_SAVE is not set
# CONFIG_SND_HDSP is not set
# CONFIG_SND_HDSPM is not set
# CONFIG_SND_HIFIER is not set
# CONFIG_SND_ICE1712 is not set
# CONFIG_SND_ICE1724 is not set
# CONFIG_SND_INTEL8X0 is not set
# CONFIG_SND_INTEL8X0M is not set
# CONFIG_SND_KORG1212 is not set
# CONFIG_SND_LX6464ES is not set
# CONFIG_SND_MAESTRO3 is not set
# CONFIG_SND_MIXART is not set
# CONFIG_SND_NM256 is not set
# CONFIG_SND_PCXHR is not set
# CONFIG_SND_RIPTIDE is not set
# CONFIG_SND_RME32 is not set
# CONFIG_SND_RME96 is not set
# CONFIG_SND_RME9652 is not set
# CONFIG_SND_SONICVIBES is not set
# CONFIG_SND_TRIDENT is not set
# CONFIG_SND_VIA82XX is not set
# CONFIG_SND_VIA82XX_MODEM is not set
# CONFIG_SND_VIRTUOSO is not set
# CONFIG_SND_VX222 is not set
# CONFIG_SND_YMFPCI is not set
# CONFIG_SND_PCMCIA is not set
# CONFIG_SND_SOC is not setCONFIG_SOUND_PRIME=yCONFIG_SOUND_OSS=y
# CONFIG_SOUND_TRACEINIT is not set
# CONFIG_SOUND_DMAP is not set
# CONFIG_SOUND_SSCAPE is not set
# CONFIG_SOUND_VMIDI is not set
# CONFIG_SOUND_TRIX is not set
# CONFIG_SOUND_MSS is not set
# CONFIG_SOUND_MPU401 is not set
# CONFIG_SOUND_PAS is not set
# CONFIG_SOUND_PSS is not set
# CONFIG_SOUND_SB is not set
# CONFIG_SOUND_YM3812 is not set
# CONFIG_SOUND_UART6850 is not set
# CONFIG_SOUND_AEDSP16 is not set
# CONFIG_HID_SUPPORT is not set
# CONFIG_USB_SUPPORT is not set
# CONFIG_UWB is not set
# CONFIG_MMC is not set
# CONFIG_MEMSTICK is not setCONFIG_NEW_LEDS=yCONFIG_LEDS_CLASS=y
#
# LED drivers
#
# CONFIG_LEDS_ALIX2 is not set
# CONFIG_LEDS_PCA9532 is not set
# CONFIG_LEDS_LP3944 is not set
# CONFIG_LEDS_CLEVO_MAIL is not set
# CONFIG_LEDS_PCA955X is not set
# CONFIG_LEDS_BD2802 is not set
#
# LED Triggers
#CONFIG_LEDS_TRIGGERS=y
# CONFIG_LEDS_TRIGGER_TIMER is not set
# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set
#
# iptables trigger is under Netfilter config (LED target) # # CONFIG_ACCESSIBILITY is not set # CONFIG_INFINIBAND is not set # CONFIG_EDAC is not set CONFIG_RTC_LIB=y CONFIG_RTC_CLASS=y CONFIG_RTC_HCTOSYS=y CONFIG_RTC_HCTOSYS_DEVICE="rtc0" # CONFIG_RTC_DEBUG is not set
#
# RTC interfaces
#CONFIG_RTC_INTF_SYSFS=yCONFIG_RTC_INTF_PROC=yCONFIG_RTC_INTF_DEV=yCONFIG_RTC_INTF_DEV_UIE_EMUL=yCONFIG_RTC_DRV_TEST=y
#
# I2C RTC drivers
#CONFIG_RTC_DRV_DS1307=yCONFIG_RTC_DRV_DS1374=yCONFIG_RTC_DRV_DS1672=y
# CONFIG_RTC_DRV_MAX6900 is not setCONFIG_RTC_DRV_RS5C372=yCONFIG_RTC_DRV_ISL1208=yCONFIG_RTC_DRV_X1205=yCONFIG_RTC_DRV_PCF8563=yCONFIG_RTC_DRV_PCF8583=yCONFIG_RTC_DRV_M41T80=yCONFIG_RTC_DRV_M41T80_WDT=y
# CONFIG_RTC_DRV_S35390A is not setCONFIG_RTC_DRV_FM3130=y
# CONFIG_RTC_DRV_RX8581 is not set
# CONFIG_RTC_DRV_RX8025 is not set
#
# SPI RTC drivers
#
#
# Platform RTC drivers
#CONFIG_RTC_DRV_CMOS=y
# CONFIG_RTC_DRV_DS1286 is not set
# CONFIG_RTC_DRV_DS1511 is not setCONFIG_RTC_DRV_DS1553=yCONFIG_RTC_DRV_DS1742=yCONFIG_RTC_DRV_STK17TA8=yCONFIG_RTC_DRV_M48T86=y
# CONFIG_RTC_DRV_M48T35 is not setCONFIG_RTC_DRV_M48T59=y
# CONFIG_RTC_DRV_BQ4802 is not setCONFIG_RTC_DRV_V3020=y
#
# on-CPU RTC drivers
#CONFIG_DMADEVICES=y
#
# DMA Devices
#CONFIG_INTEL_IOATDMA=yCONFIG_DMA_ENGINE=y
#
# DMA Clients
#CONFIG_NET_DMA=y
# CONFIG_ASYNC_TX_DMA is not set
# CONFIG_DMATEST is not setCONFIG_DCA=y
# CONFIG_AUXDISPLAY is not setCONFIG_UIO=yCONFIG_UIO_CIF=yCONFIG_UIO_PDRV=yCONFIG_UIO_PDRV_GENIRQ=yCONFIG_UIO_SMX=y
# CONFIG_UIO_AEC is not set
# CONFIG_UIO_SERCOS3 is not set
#
# TI VLYNQ
#
# CONFIG_STAGING is not setCONFIG_X86_PLATFORM_DEVICES=yCONFIG_ACER_WMI=y
# CONFIG_ASUS_LAPTOP is not set
# CONFIG_DELL_WMI is not setCONFIG_FUJITSU_LAPTOP=y
# CONFIG_FUJITSU_LAPTOP_DEBUG is not set
# CONFIG_HP_WMI is not set
# CONFIG_MSI_LAPTOP is not set
# CONFIG_PANASONIC_LAPTOP is not set
# CONFIG_COMPAL_LAPTOP is not set
# CONFIG_THINKPAD_ACPI is not set
# CONFIG_INTEL_MENLOW is not set
# CONFIG_EEEPC_LAPTOP is not setCONFIG_ACPI_WMI=y
# CONFIG_ACPI_ASUS is not set
# CONFIG_ACPI_TOSHIBA is not set
#
# Firmware Drivers
#CONFIG_EDD=yCONFIG_EDD_OFF=yCONFIG_FIRMWARE_MEMMAP=yCONFIG_EFI_VARS=yCONFIG_DELL_RBU=yCONFIG_DCDBAS=yCONFIG_DMIID=yCONFIG_ISCSI_IBFT_FIND=yCONFIG_ISCSI_IBFT=y
#
# File systems
#
# CONFIG_EXT2_FS is not set
# CONFIG_EXT3_FS is not set
# CONFIG_EXT4_FS is not setCONFIG_REISERFS_FS=yCONFIG_REISERFS_CHECK=y
# CONFIG_REISERFS_PROC_INFO is not setCONFIG_REISERFS_FS_XATTR=yCONFIG_REISERFS_FS_POSIX_ACL=yCONFIG_REISERFS_FS_SECURITY=y
# CONFIG_JFS_FS is not setCONFIG_FS_POSIX_ACL=y
# CONFIG_XFS_FS is not set
# CONFIG_GFS2_FS is not set
# CONFIG_OCFS2_FS is not set
# CONFIG_BTRFS_FS is not setCONFIG_FILE_LOCKING=yCONFIG_FSNOTIFY=yCONFIG_DNOTIFY=yCONFIG_INOTIFY=yCONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not setCONFIG_AUTOFS_FS=yCONFIG_AUTOFS4_FS=y
# CONFIG_FUSE_FS is not setCONFIG_GENERIC_ACL=y
#
# Caches
#
# CONFIG_FSCACHE is not set
#
# CD-ROM/DVD Filesystems
#CONFIG_ISO9660_FS=yCONFIG_JOLIET=yCONFIG_ZISOFS=yCONFIG_UDF_FS=yCONFIG_UDF_NLS=y
#
# DOS/FAT/NT Filesystems
#CONFIG_FAT_FS=y
# CONFIG_MSDOS_FS is not setCONFIG_VFAT_FS=yCONFIG_FAT_DEFAULT_CODEPAGE=437CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"CONFIG_NTFS_FS=y
# CONFIG_NTFS_DEBUG is not setCONFIG_NTFS_RW=y
#
# Pseudo filesystems
#CONFIG_PROC_FS=yCONFIG_PROC_KCORE=yCONFIG_PROC_VMCORE=yCONFIG_PROC_SYSCTL=yCONFIG_PROC_PAGE_MONITOR=yCONFIG_SYSFS=yCONFIG_TMPFS=yCONFIG_TMPFS_POSIX_ACL=yCONFIG_HUGETLBFS=yCONFIG_HUGETLB_PAGE=yCONFIG_CONFIGFS_FS=yCONFIG_MISC_FILESYSTEMS=y
# CONFIG_ADFS_FS is not set
# CONFIG_AFFS_FS is not set
# CONFIG_ECRYPT_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_HFSPLUS_FS is not set
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not setCONFIG_CRAMFS=y
# CONFIG_SQUASHFS is not set
# CONFIG_VXFS_FS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_OMFS_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not setCONFIG_ROMFS_FS=yCONFIG_ROMFS_BACKED_BY_BLOCK=y
# CONFIG_ROMFS_BACKED_BY_MTD is not set
# CONFIG_ROMFS_BACKED_BY_BOTH is not setCONFIG_ROMFS_ON_BLOCK=y
# CONFIG_SYSV_FS is not set
# CONFIG_UFS_FS is not set
# CONFIG_NILFS2_FS is not set
# CONFIG_NETWORK_FILESYSTEMS is not set
#
# Partition Types
#CONFIG_PARTITION_ADVANCED=yCONFIG_ACORN_PARTITION=y
# CONFIG_ACORN_PARTITION_CUMANA is not set
# CONFIG_ACORN_PARTITION_EESOX is not setCONFIG_ACORN_PARTITION_ICS=y
# CONFIG_ACORN_PARTITION_ADFS is not set
# CONFIG_ACORN_PARTITION_POWERTEC is not setCONFIG_ACORN_PARTITION_RISCIX=y
# CONFIG_OSF_PARTITION is not set
# CONFIG_AMIGA_PARTITION is not set
# CONFIG_ATARI_PARTITION is not set
# CONFIG_MAC_PARTITION is not setCONFIG_MSDOS_PARTITION=yCONFIG_BSD_DISKLABEL=y
# CONFIG_MINIX_SUBPARTITION is not set
# CONFIG_SOLARIS_X86_PARTITION is not set
# CONFIG_UNIXWARE_DISKLABEL is not setCONFIG_LDM_PARTITION=y
# CONFIG_LDM_DEBUG is not setCONFIG_SGI_PARTITION=y
# CONFIG_ULTRIX_PARTITION is not set
# CONFIG_SUN_PARTITION is not set
# CONFIG_KARMA_PARTITION is not setCONFIG_EFI_PARTITION=y
# CONFIG_SYSV68_PARTITION is not setCONFIG_NLS=yCONFIG_NLS_DEFAULT="cp437"CONFIG_NLS_CODEPAGE_437=y
# CONFIG_NLS_CODEPAGE_737 is not set
# CONFIG_NLS_CODEPAGE_775 is not setCONFIG_NLS_CODEPAGE_850=y
# CONFIG_NLS_CODEPAGE_852 is not set
# CONFIG_NLS_CODEPAGE_855 is not set
# CONFIG_NLS_CODEPAGE_857 is not set
# CONFIG_NLS_CODEPAGE_860 is not set
# CONFIG_NLS_CODEPAGE_861 is not set
# CONFIG_NLS_CODEPAGE_862 is not set
# CONFIG_NLS_CODEPAGE_863 is not set
# CONFIG_NLS_CODEPAGE_864 is not set
# CONFIG_NLS_CODEPAGE_865 is not set
# CONFIG_NLS_CODEPAGE_866 is not set
# CONFIG_NLS_CODEPAGE_869 is not set
# CONFIG_NLS_CODEPAGE_936 is not set
# CONFIG_NLS_CODEPAGE_950 is not set
# CONFIG_NLS_CODEPAGE_932 is not set
# CONFIG_NLS_CODEPAGE_949 is not set
# CONFIG_NLS_CODEPAGE_874 is not set
# CONFIG_NLS_ISO8859_8 is not set
# CONFIG_NLS_CODEPAGE_1250 is not set
# CONFIG_NLS_CODEPAGE_1251 is not setCONFIG_NLS_ASCII=yCONFIG_NLS_ISO8859_1=y
# CONFIG_NLS_ISO8859_2 is not set
# CONFIG_NLS_ISO8859_3 is not set
# CONFIG_NLS_ISO8859_4 is not set
# CONFIG_NLS_ISO8859_5 is not set
# CONFIG_NLS_ISO8859_6 is not set
# CONFIG_NLS_ISO8859_7 is not set
# CONFIG_NLS_ISO8859_9 is not set
# CONFIG_NLS_ISO8859_13 is not set
# CONFIG_NLS_ISO8859_14 is not setCONFIG_NLS_ISO8859_15=y
# CONFIG_NLS_KOI8_R is not set
# CONFIG_NLS_KOI8_U is not setCONFIG_NLS_UTF8=y
# CONFIG_DLM is not set
#
# Kernel hacking
#CONFIG_TRACE_IRQFLAGS_SUPPORT=yCONFIG_PRINTK_TIME=y
# CONFIG_ENABLE_WARN_DEPRECATED is not set
# CONFIG_ENABLE_MUST_CHECK is not setCONFIG_FRAME_WARN=2048
# CONFIG_MAGIC_SYSRQ is not setCONFIG_UNUSED_SYMBOLS=yCONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not setCONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_SHIRQ is not setCONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not setCONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0CONFIG_DETECT_HUNG_TASK=y
# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not setCONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
# CONFIG_SCHED_DEBUG is not set
# CONFIG_SCHEDSTATS is not set
# CONFIG_TIMER_STATS is not set
# CONFIG_DEBUG_OBJECTS is not set
# CONFIG_DEBUG_SLAB is not set
# CONFIG_DEBUG_KMEMLEAK is not setCONFIG_DEBUG_PREEMPT=y
# CONFIG_DEBUG_RT_MUTEXES is not set
# CONFIG_RT_MUTEX_TESTER is not setCONFIG_DEBUG_SPINLOCK=yCONFIG_DEBUG_MUTEXES=yCONFIG_DEBUG_LOCK_ALLOC=yCONFIG_PROVE_LOCKING=yCONFIG_LOCKDEP=y
# CONFIG_LOCK_STAT is not set
# CONFIG_DEBUG_LOCKDEP is not setCONFIG_TRACE_IRQFLAGS=yCONFIG_DEBUG_SPINLOCK_SLEEP=y
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not setCONFIG_STACKTRACE=y
# CONFIG_DEBUG_KOBJECT is not setCONFIG_DEBUG_BUGVERBOSE=y
# CONFIG_DEBUG_INFO is not set
# CONFIG_DEBUG_VM is not set
# CONFIG_DEBUG_VIRTUAL is not set
# CONFIG_DEBUG_WRITECOUNT is not setCONFIG_DEBUG_MEMORY_INIT=y
# CONFIG_DEBUG_LIST is not set
# CONFIG_DEBUG_SG is not set
# CONFIG_DEBUG_NOTIFIERS is not setCONFIG_ARCH_WANT_FRAME_POINTERS=yCONFIG_FRAME_POINTER=y
# CONFIG_BOOT_PRINTK_DELAY is not set
# CONFIG_RCU_TORTURE_TEST is not set
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
# CONFIG_KPROBES_SANITY_TEST is not set
# CONFIG_BACKTRACE_SELF_TEST is not set
# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
# CONFIG_LKDTM is not set
# CONFIG_FAULT_INJECTION is not set
# CONFIG_LATENCYTOP is not set
# CONFIG_SYSCTL_SYSCALL_CHECK is not set
# CONFIG_DEBUG_PAGEALLOC is not setCONFIG_USER_STACKTRACE_SUPPORT=yCONFIG_NOP_TRACER=yCONFIG_HAVE_FTRACE_NMI_ENTER=yCONFIG_HAVE_FUNCTION_TRACER=yCONFIG_HAVE_FUNCTION_GRAPH_TRACER=yCONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=yCONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=yCONFIG_HAVE_DYNAMIC_FTRACE=yCONFIG_HAVE_FTRACE_MCOUNT_RECORD=yCONFIG_HAVE_FTRACE_SYSCALLS=yCONFIG_TRACER_MAX_TRACE=yCONFIG_RING_BUFFER=yCONFIG_FTRACE_NMI_ENTER=yCONFIG_EVENT_TRACING=yCONFIG_CONTEXT_SWITCH_TRACER=yCONFIG_TRACING=yCONFIG_GENERIC_TRACER=yCONFIG_TRACING_SUPPORT=yCONFIG_FTRACE=yCONFIG_FUNCTION_TRACER=yCONFIG_FUNCTION_GRAPH_TRACER=yCONFIG_IRQSOFF_TRACER=yCONFIG_PREEMPT_TRACER=y
# CONFIG_SYSPROF_TRACER is not set
# CONFIG_SCHED_TRACER is not setCONFIG_FTRACE_SYSCALLS=y
# CONFIG_BOOT_TRACER is not setCONFIG_BRANCH_PROFILE_NONE=y
# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
# CONFIG_PROFILE_ALL_BRANCHES is not set
# CONFIG_POWER_TRACER is not set
# CONFIG_STACK_TRACER is not set
# CONFIG_KMEMTRACE is not set
# CONFIG_WORKQUEUE_TRACER is not set
# CONFIG_BLK_DEV_IO_TRACE is not setCONFIG_KPROBE_TRACER=yCONFIG_DYNAMIC_FTRACE=y
# CONFIG_FUNCTION_PROFILER is not setCONFIG_FTRACE_MCOUNT_RECORD=yCONFIG_FTRACE_SELFTEST=yCONFIG_FTRACE_STARTUP_TEST=y
# CONFIG_MMIOTRACE is not set
# CONFIG_RING_BUFFER_BENCHMARK is not set
# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
# CONFIG_DYNAMIC_DEBUG is not set
# CONFIG_DMA_API_DEBUG is not set
# CONFIG_SAMPLES is not setCONFIG_HAVE_ARCH_KGDB=y
# CONFIG_KGDB is not setCONFIG_HAVE_ARCH_KMEMCHECK=y
# CONFIG_STRICT_DEVMEM is not set
# CONFIG_X86_VERBOSE_BOOTUP is not setCONFIG_EARLY_PRINTK=y
# CONFIG_EARLY_PRINTK_DBGP is not set
# CONFIG_DEBUG_STACKOVERFLOW is not set
# CONFIG_DEBUG_STACK_USAGE is not set
# CONFIG_DEBUG_PER_CPU_MAPS is not set
# CONFIG_X86_PTDUMP is not setCONFIG_DEBUG_RODATA=yCONFIG_DEBUG_RODATA_TEST=y
# CONFIG_DEBUG_NX_TEST is not set
# CONFIG_IOMMU_DEBUG is not set
# CONFIG_IOMMU_STRESS is not setCONFIG_HAVE_MMIOTRACE_SUPPORT=yCONFIG_X86_DECODER_SELFTEST=yCONFIG_IO_DELAY_TYPE_0X80=0CONFIG_IO_DELAY_TYPE_0XED=1CONFIG_IO_DELAY_TYPE_UDELAY=2CONFIG_IO_DELAY_TYPE_NONE=3
# CONFIG_IO_DELAY_0X80 is not setCONFIG_IO_DELAY_0XED=y
# CONFIG_IO_DELAY_UDELAY is not set
# CONFIG_IO_DELAY_NONE is not setCONFIG_DEFAULT_IO_DELAY_TYPE=1
# CONFIG_DEBUG_BOOT_PARAMS is not set
# CONFIG_CPA_DEBUG is not set
# CONFIG_OPTIMIZE_INLINING is not set
#
# Security options
#CONFIG_KEYS=y
# CONFIG_KEYS_DEBUG_PROC_KEYS is not set CONFIG_SECURITY=y
# CONFIG_SECURITYFS is not set CONFIG_SECURITY_NETWORK=y
# CONFIG_SECURITY_NETWORK_XFRM is not set
# CONFIG_SECURITY_PATH is not set CONFIG_SECURITY_FILE_CAPABILITIES=y CONFIG_SECURITY_SELINUX=y CONFIG_SECURITY_SELINUX_BOOTPARAM=y CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0 CONFIG_SECURITY_SELINUX_DISABLE=y CONFIG_SECURITY_SELINUX_DEVELOP=y CONFIG_SECURITY_SELINUX_AVC_STATS=y CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1
# CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set CONFIG_SECURITY_SMACK=y
# CONFIG_SECURITY_TOMOYO is not set
# CONFIG_IMA is not setCONFIG_CRYPTO=y
#
# Crypto core or helper
#
# CONFIG_CRYPTO_FIPS is not setCONFIG_CRYPTO_ALGAPI=yCONFIG_CRYPTO_ALGAPI2=yCONFIG_CRYPTO_AEAD=yCONFIG_CRYPTO_AEAD2=yCONFIG_CRYPTO_BLKCIPHER=yCONFIG_CRYPTO_BLKCIPHER2=yCONFIG_CRYPTO_HASH=yCONFIG_CRYPTO_HASH2=yCONFIG_CRYPTO_RNG=yCONFIG_CRYPTO_RNG2=yCONFIG_CRYPTO_PCOMP=yCONFIG_CRYPTO_MANAGER=yCONFIG_CRYPTO_MANAGER2=yCONFIG_CRYPTO_GF128MUL=yCONFIG_CRYPTO_NULL=yCONFIG_CRYPTO_WORKQUEUE=yCONFIG_CRYPTO_CRYPTD=yCONFIG_CRYPTO_AUTHENC=y
# CONFIG_CRYPTO_TEST is not set
#
# Authenticated Encryption with Associated Data
#CONFIG_CRYPTO_CCM=yCONFIG_CRYPTO_GCM=yCONFIG_CRYPTO_SEQIV=y
#
# Block modes
#CONFIG_CRYPTO_CBC=yCONFIG_CRYPTO_CTR=yCONFIG_CRYPTO_CTS=yCONFIG_CRYPTO_ECB=yCONFIG_CRYPTO_LRW=yCONFIG_CRYPTO_PCBC=yCONFIG_CRYPTO_XTS=y
#
# Hash modes
#CONFIG_CRYPTO_HMAC=yCONFIG_CRYPTO_XCBC=y
#
# Digest
#CONFIG_CRYPTO_CRC32C=y
# CONFIG_CRYPTO_CRC32C_INTEL is not setCONFIG_CRYPTO_MD4=yCONFIG_CRYPTO_MD5=yCONFIG_CRYPTO_MICHAEL_MIC=yCONFIG_CRYPTO_RMD128=yCONFIG_CRYPTO_RMD160=yCONFIG_CRYPTO_RMD256=yCONFIG_CRYPTO_RMD320=yCONFIG_CRYPTO_SHA1=yCONFIG_CRYPTO_SHA256=yCONFIG_CRYPTO_SHA512=yCONFIG_CRYPTO_TGR192=yCONFIG_CRYPTO_WP512=y
#
# Ciphers
#CONFIG_CRYPTO_AES=yCONFIG_CRYPTO_AES_X86_64=y
# CONFIG_CRYPTO_AES_NI_INTEL is not setCONFIG_CRYPTO_ANUBIS=yCONFIG_CRYPTO_ARC4=yCONFIG_CRYPTO_BLOWFISH=yCONFIG_CRYPTO_CAMELLIA=yCONFIG_CRYPTO_CAST5=yCONFIG_CRYPTO_CAST6=yCONFIG_CRYPTO_DES=yCONFIG_CRYPTO_FCRYPT=yCONFIG_CRYPTO_KHAZAD=yCONFIG_CRYPTO_SALSA20=yCONFIG_CRYPTO_SALSA20_X86_64=yCONFIG_CRYPTO_SEED=yCONFIG_CRYPTO_SERPENT=yCONFIG_CRYPTO_TEA=yCONFIG_CRYPTO_TWOFISH=yCONFIG_CRYPTO_TWOFISH_COMMON=yCONFIG_CRYPTO_TWOFISH_X86_64=y
#
# Compression
#CONFIG_CRYPTO_DEFLATE=y
# CONFIG_CRYPTO_ZLIB is not setCONFIG_CRYPTO_LZO=y
#
# Random Number Generation
#
# CONFIG_CRYPTO_ANSI_CPRNG is not setCONFIG_CRYPTO_HW=y
# CONFIG_CRYPTO_DEV_PADLOCK is not setCONFIG_CRYPTO_DEV_HIFN_795X=yCONFIG_CRYPTO_DEV_HIFN_795X_RNG=yCONFIG_HAVE_KVM=yCONFIG_HAVE_KVM_IRQCHIP=y
# CONFIG_VIRTUALIZATION is not setCONFIG_BINARY_PRINTF=y
#
# Library routines
#CONFIG_BITREVERSE=yCONFIG_GENERIC_FIND_FIRST_BIT=yCONFIG_GENERIC_FIND_NEXT_BIT=yCONFIG_GENERIC_FIND_LAST_BIT=yCONFIG_CRC_CCITT=yCONFIG_CRC16=yCONFIG_CRC_T10DIF=yCONFIG_CRC_ITU_T=yCONFIG_CRC32=yCONFIG_CRC7=yCONFIG_LIBCRC32C=yCONFIG_ZLIB_INFLATE=yCONFIG_ZLIB_DEFLATE=yCONFIG_LZO_COMPRESS=yCONFIG_LZO_DECOMPRESS=yCONFIG_HAS_IOMEM=yCONFIG_HAS_IOPORT=yCONFIG_HAS_DMA=yCONFIG_NLATTR=y
Re: [TOOL] kprobestest : Kprobe stress test tool
Quoted 112 lines · Frederic Weisbecker
Quoted 31 lines · Masami Hiramatsu
This script tests kprobes to probe on all symbols in the kernel and finds symbols which must be blacklisted.
Usage
-----
kprobestest [-s SYMLIST] [-b BLACKLIST] [-w WHITELIST]
Run stress test. If SYMLIST file is specified, use it as an initial symbol list (This is useful for verifying white list after diagnosing all symbols).kprobestest cleanup
Cleanup all listsHow to Work
-----------
This tool list up all symbols in the kernel via/proc/kallsyms, and sorts it into groups (each of them including 64 symbols in default). And then, it tests each group by using kprobe-tracer. If a kernel crash occurred, that group is moved into 'failed' dir. If the group passed the test, this script moves it into 'passed' dir and saveskprobe_profileinto 'passed/profiles/'.
After testing all groups, all 'failed' groups are merged and sorted into smaller groups (divided by 4, in default). And those are tested again. This loop will be repeated until all group has just 1 symbol.Finally, the script sorts all 'passed' symbols into 'tested', 'untested', and 'missed' based on profiles.
Quoted 8 lines
Note
----
- This script just gives us some clues to the blacklisted functions. In some cases, a combination of probe points will cause a problem, but each of them doesn't cause the problem alone.Thank you,
This script makes my x86-64 dual core easily and hardly locking-up on the 1st batch of symbols to test.
I have one sym list in the failed and unset directories:
int_very_carefulint_signalint_restore_reststub_clonestub_forkstub_vforkstub_sigaltstackstub_ioplptregscall_commonstub_execvestub_rt_sigreturnirq_entries_startcommon_interruptret_from_intrexit_intrretint_with_rescheduleretint_checkretint_swapgsretint_restore_argsrestore_argsirq_returnretint_carefulretint_signalretint_kernelirq_move_cleanup_interruptreboot_interruptapic_timer_interruptgeneric_interruptinvalidate_interrupt0invalidate_interrupt1invalidate_interrupt2invalidate_interrupt3invalidate_interrupt4invalidate_interrupt5invalidate_interrupt6invalidate_interrupt7threshold_interruptthermal_interruptmce_self_interruptcall_function_single_interruptcall_function_interruptreschedule_interrupterror_interruptspurious_interruptperf_pending_interruptdivide_error
overflow
boundsinvalid_opdevice_not_availabledouble_faultcoprocessor_segment_overruninvalid_TSSsegment_not_presentspurious_interrupt_bugcoprocessor_erroralignment_checksimd_coprocessor_errornative_load_gs_indexgs_changekernel_threadchild_ripkernel_execvecall_softirq
Quoted 2 lines
I don't have a crash log because I was running with X. But it also happened with other batch of symbols.
Thank you for reporting, here, I also have a result tested on KVM@x86-64.
native_read_tscpnative_read_msr_safenative_read_msr_amd_safenative_write_msr_safevmalloc_faultspurious_faultsearch_exception_tablesnotify_dietrace_hardirqs_off_callerident_completelock_acquirelock_releasebad_addresssecondary_startup_64stack_startbad_addressrestore_argsirq_return
restoretrace_hardirqs_off_thunkinit_level4_pgtlevel3_ident_pgtlevel3_kernel_pgtlevel2_fixmap_pgt_textstartup_64level1_fixmap_pgtlevel2_ident_pgtlevel2_kernel_pgtlevel2_spare_pgtnative_get_debugregnative_set_debugregnative_set_iopl_masknative_load_sp0debug_show_all_locksdebug_check_no_locks_heldvalid_statemark_lockmark_held_lockslockdep_trace_alloctrace_softirqs_ontrace_hardirqs_on_caller__down_write__down_readtrace_hardirqs_on_thunklockdep_sys_exit_thunk
Most of them can be fixed just by adding __kprobes. Some of them which are already in the another section, kprobes should check the symbols are in the section.
Quoted 7 lines
The problem is that I don't have any serial line in this box then I can't catch any crash log.
My K7 testbox also died in my arms this afternoon.But I still have two other testboxes (one P2 and one P3), hopefully I could reproduce the problem in these boxes in which I can connect a serial line.
Thank you for helping me to find it!
Quoted 6 lines
I've pushed your patches in the following git tree:
git://git.kernel.org/pub/scm/linux/kernel/git/fgrederic/random-tracing.git\
tracing/kprobesSo you can send patches on top of this one.
Great! I've found another trivial bugs, so I'll fix those on it.
Thank you,
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
Re: [TOOL] kprobestest : Kprobe stress test tool
Quoted 166 lines · Masami Hiramatsu
Quoted 112 lines · Frederic Weisbecker
Quoted 31 lines · Masami Hiramatsu
This script tests kprobes to probe on all symbols in the kernel and finds symbols which must be blacklisted.
Usage
-----
kprobestest [-s SYMLIST] [-b BLACKLIST] [-w WHITELIST]
Run stress test. If SYMLIST file is specified, use it as an initial symbol list (This is useful for verifying white list after diagnosing all symbols).kprobestest cleanup
Cleanup all listsHow to Work
-----------
This tool list up all symbols in the kernel via/proc/kallsyms, and sorts it into groups (each of them including 64 symbols in default). And then, it tests each group by using kprobe-tracer. If a kernel crash occurred, that group is moved into 'failed' dir. If the group passed the test, this script moves it into 'passed' dir and saveskprobe_profileinto 'passed/profiles/'.
After testing all groups, all 'failed' groups are merged and sorted into smaller groups (divided by 4, in default). And those are tested again. This loop will be repeated until all group has just 1 symbol.Finally, the script sorts all 'passed' symbols into 'tested', 'untested', and 'missed' based on profiles.
Quoted 8 lines
Note
----
- This script just gives us some clues to the blacklisted functions. In some cases, a combination of probe points will cause a problem, but each of them doesn't cause the problem alone.Thank you,
This script makes my x86-64 dual core easily and hardly locking-up on the 1st batch of symbols to test.
I have one sym list in the failed and unset directories:
int_very_carefulint_signalint_restore_reststub_clonestub_forkstub_vforkstub_sigaltstackstub_ioplptregscall_commonstub_execvestub_rt_sigreturnirq_entries_startcommon_interruptret_from_intrexit_intrretint_with_rescheduleretint_checkretint_swapgsretint_restore_argsrestore_argsirq_returnretint_carefulretint_signalretint_kernelirq_move_cleanup_interruptreboot_interruptapic_timer_interruptgeneric_interruptinvalidate_interrupt0invalidate_interrupt1invalidate_interrupt2invalidate_interrupt3invalidate_interrupt4invalidate_interrupt5invalidate_interrupt6invalidate_interrupt7threshold_interruptthermal_interruptmce_self_interruptcall_function_single_interruptcall_function_interruptreschedule_interrupterror_interruptspurious_interruptperf_pending_interruptdivide_error
overflow
boundsinvalid_opdevice_not_availabledouble_faultcoprocessor_segment_overruninvalid_TSSsegment_not_presentspurious_interrupt_bugcoprocessor_erroralignment_checksimd_coprocessor_errornative_load_gs_indexgs_changekernel_threadchild_ripkernel_execvecall_softirqQuoted 2 lines
I don't have a crash log because I was running with X. But it also happened with other batch of symbols.
Thank you for reporting, here, I also have a result tested on KVM@x86-64.
native_read_tscpnative_read_msr_safenative_read_msr_amd_safenative_write_msr_safevmalloc_faultspurious_faultsearch_exception_tablesnotify_dietrace_hardirqs_off_callerident_completelock_acquirelock_releasebad_addresssecondary_startup_64stack_startbad_addressrestore_argsirq_return
restoretrace_hardirqs_off_thunkinit_level4_pgtlevel3_ident_pgtlevel3_kernel_pgtlevel2_fixmap_pgt_textstartup_64level1_fixmap_pgtlevel2_ident_pgtlevel2_kernel_pgtlevel2_spare_pgtnative_get_debugregnative_set_debugregnative_set_iopl_masknative_load_sp0debug_show_all_locksdebug_check_no_locks_heldvalid_statemark_lockmark_held_lockslockdep_trace_alloctrace_softirqs_ontrace_hardirqs_on_caller__down_write__down_readtrace_hardirqs_on_thunklockdep_sys_exit_thunk
Quoted 3 lines
Most of them can be fixed just by adding
__kprobes. Some of them which are already in the another section, kprobes should check the symbols are in the section.
You mean the blacklist?
I also fear that putting bad kprobed functions into the kprobe section or into the blacklist may hide some kprobe internal bugs.
Doing so is indeed mandatory for functions that trigger tracing recursion of things like that, but what if kprobe has an internal bug that only triggers while probe a certain class of function.
Ie: it would be nice to identify the reason of the crash for each culprit in these lists.
That may even help to find the others in advance.
Also kprobes seems to be a very fragile feature (that's what this selftest unearthes at least for me).
And it really needs a recursion detection that stops every kprobing while reaching a given threshold of recursion. Something that would dump the stack and the falling kprobe structure.
That would avoid such hard lockups and also help to identify the dangerous symbols to probe.
Quoted 10 lines
Quoted 7 lines
The problem is that I don't have any serial line in this box then I can't catch any crash log.
My K7 testbox also died in my arms this afternoon.But I still have two other testboxes (one P2 and one P3), hopefully I could reproduce the problem in these boxes in which I can connect a serial line.
Thank you for helping me to find it!
Quoted 8 lines
Quoted 6 lines
I've pushed your patches in the following git tree:
git://git.kernel.org/pub/scm/linux/kernel/git/fgrederic/random-tracing.git\
tracing/kprobesSo you can send patches on top of this one.
Great! I've found another trivial bugs, so I'll fix those on it.
Cool :)
Btw, here is the result of your stress test in a PIII (attaching the log and the config).
Thanks.
OK
[ 27.142635] Testing event sys_exit_statfs64: OK
[ 27.187959] Testing event sys_enter_fstatfs: OK
[ 27.226978] Testing event sys_exit_fstatfs: OK
[ 27.270002] Testing event sys_enter_fstatfs64: OK
[ 27.314587] Testing event sys_exit_fstatfs64: OK
[ 27.359533] Testing event sys_enter_truncate: OK
[ 27.402682] Testing event sys_exit_truncate: OK
[ 27.445919] Testing event sys_enter_ftruncate: OK
[ 27.488763] Testing event sys_exit_ftruncate: OK
[ 27.530554] Testing event sys_enter_faccessat: OK
[ 27.574843] Testing event sys_exit_faccessat: OK
[ 27.616588] Testing event sys_enter_access: OK
[ 27.657646] Testing event sys_exit_access: OK
[ 27.699855] Testing event sys_enter_chdir: OK
[ 27.741573] Testing event sys_exit_chdir: OK
[ 27.782602] Testing event sys_enter_fchdir: OK
[ 27.825604] Testing event sys_exit_fchdir: OK
[ 27.867749] Testing event sys_enter_chroot: OK
[ 27.909595] Testing event sys_exit_chroot: OK
[ 27.951918] Testing event sys_enter_fchmod: OK
[ 27.995038] Testing event sys_exit_fchmod: OK
[ 28.037746] Testing event sys_enter_fchmodat: OK
[ 28.082875] Testing event sys_exit_fchmodat: OK
[ 28.129681] Testing event sys_enter_chmod: OK
[ 28.170936] Testing event sys_exit_chmod: OK
[ 28.212776] Testing event sys_enter_chown: OK
[ 28.254988] Testing event sys_exit_chown: OK
[ 28.297914] Testing event sys_enter_fchownat: OK
[ 28.342243] Testing event sys_exit_fchownat: OK
[ 28.386476] Testing event sys_enter_lchown: OK
[ 28.430595] Testing event sys_exit_lchown: OK
[ 28.475580] Testing event sys_enter_fchown: OK
[ 28.521269] Testing event sys_exit_fchown: OK
[ 28.564734] Testing event sys_enter_open: OK
[ 28.604247] Testing event sys_exit_open: OK
[ 28.645710] Testing event sys_enter_openat: OK
[ 28.688794] Testing event sys_exit_openat: OK
[ 28.733025] Testing event sys_enter_creat: OK
[ 28.775947] Testing event sys_exit_creat: OK
[ 28.816721] Testing event sys_enter_close: OK
[ 28.861706] Testing event sys_exit_close: OK
[ 28.902667] Testing event sys_enter_vhangup: OK
[ 28.942483] Testing event sys_exit_vhangup: OK
[ 28.987654] Testing event sys_enter_swapoff: OK
[ 29.031911] Testing event sys_exit_swapoff: OK
[ 29.071700] Testing event sys_enter_swapon: OK
[ 29.115824] Testing event sys_exit_swapon: OK
[ 29.159915] Testing event sys_enter_msync: OK
[ 29.202985] Testing event sys_exit_msync: OK
[ 29.246718] Testing event sys_enter_mremap: OK
[ 29.285550] Testing event sys_exit_mremap: OK
[ 29.327651] Testing event sys_enter_mprotect: OK
[ 29.368910] Testing event sys_exit_mprotect: OK
[ 29.410794] Testing event sys_enter_brk: OK
[ 29.452636] Testing event sys_exit_brk: OK
[ 29.492673] Testing event sys_enter_munmap: OK
[ 29.533907] Testing event sys_exit_munmap: OK
[ 29.576043] Testing event sys_enter_mlock: OK
[ 29.619275] Testing event sys_exit_mlock: OK
[ 29.659011] Testing event sys_enter_munlock: OK
[ 29.703559] Testing event sys_exit_munlock: OK
[ 29.744707] Testing event sys_enter_mlockall: OK
[ 29.787751] Testing event sys_exit_mlockall: OK
[ 29.831013] Testing event sys_enter_munlockall: OK
[ 29.875831] Testing event sys_exit_munlockall: OK
[ 29.919530] Testing event sys_enter_mincore: OK
[ 29.962029] Testing event sys_exit_mincore: OK
[ 30.004544] Testing event sys_enter_madvise: OK
[ 30.049746] Testing event sys_exit_madvise: OK
[ 30.093578] Testing event sys_enter_remap_file_pages: OK
[ 30.139478] Testing event sys_exit_remap_file_pages: OK
[ 30.185559] Testing event kmalloc: OK
[ 30.226750] Testing event kmem_cache_alloc: OK
[ 30.272564] Testing event kmalloc_node: OK
[ 30.314626] Testing event kmem_cache_alloc_node: OK
[ 30.358878] Testing event kfree: OK
[ 30.401862] Testing event kmem_cache_free: OK
[ 30.440475] Testing event sys_enter_perf_counter_open: OK
[ 30.481611] Testing event sys_exit_perf_counter_open: OK
[ 30.526549] Testing event module_load: OK
[ 30.569608] Testing event module_free: OK
[ 30.612622] Testing event module_get: OK
[ 30.652680] Testing event module_put: OK
[ 30.695980] Testing event module_request: OK
[ 30.737422] Testing event sys_enter_init_module: OK
[ 30.779527] Testing event sys_exit_init_module: OK
[ 30.822585] Testing event sys_enter_chown16: OK
[ 30.867471] Testing event sys_exit_chown16: OK
[ 30.905476] Testing event sys_enter_lchown16: OK
[ 30.948682] Testing event sys_exit_lchown16: OK
[ 30.990618] Testing event sys_enter_fchown16: OK
[ 31.030808] Testing event sys_exit_fchown16: OK
[ 31.072602] Testing event sys_enter_setregid16: OK
[ 31.115728] Testing event sys_exit_setregid16: OK
[ 31.160673] Testing event sys_enter_setgid16: OK
[ 31.204548] Testing event sys_exit_setgid16: OK
[ 31.249937] Testing event sys_enter_setreuid16: OK
[ 31.294525] Testing event sys_exit_setreuid16: OK
[ 31.336709] Testing event sys_enter_setuid16: OK
[ 31.381560] Testing event sys_exit_setuid16: OK
[ 31.423488] Testing event sys_enter_setresuid16: OK
[ 31.467585] Testing event sys_exit_setresuid16: OK
[ 31.509617] Testing event sys_enter_getresuid16: OK
[ 31.555232] Testing event sys_exit_getresuid16: OK
[ 31.596500] Testing event sys_enter_setresgid16: OK
[ 31.641843] Testing event sys_exit_setresgid16: OK
[ 31.685586] Testing event sys_enter_getresgid16: OK
[ 31.730683] Testing event sys_exit_getresgid16: OK
[ 31.770459] Testing event sys_enter_setfsuid16: OK
[ 31.813967] Testing event sys_exit_setfsuid16: OK
[ 31.853727] Testing event sys_enter_setfsgid16: OK
[ 31.898479] Testing event sys_exit_setfsgid16: OK
[ 31.941642] Testing event sys_enter_getgroups16: OK
[ 31.983491] Testing event sys_exit_getgroups16: OK
[ 32.028007] Testing event sys_enter_setgroups16: OK
[ 32.072628] Testing event sys_exit_setgroups16: OK
[ 32.116613] Testing event sys_enter_getuid16: OK
[ 32.159635] Testing event sys_exit_getuid16: OK
[ 32.197544] Testing event sys_enter_geteuid16: OK
[ 32.240036] Testing event sys_exit_geteuid16: OK
[ 32.278560] Testing event sys_enter_getgid16: OK
[ 32.320993] Testing event sys_exit_getgid16: OK
[ 32.361697] Testing event sys_enter_getegid16:
[ 32.378936] CPA self-test:
[ 32.477878] OK
[ 32.491991] Testing event sys_exit_getegid16: OK
[ 32.602717] Testing event sys_enter_set_robust_list: OK
[ 32.743597] Testing event sys_exit_set_robust_list:
[ 32.839559] 4k 81920 large 0 gb 0 x 81920[c0000000-d3fff000] miss 0
[ 32.915256] OK
[ 32.930583] Testing event sys_enter_get_robust_list: OK
[ 33.045951] Testing event sys_exit_get_robust_list: OK
[ 33.204580] Testing event sys_enter_futex: OK
[ 33.345703] Testing event sys_exit_futex: OK
[ 33.476568] Testing event lock_acquire: OK
[ 33.628625] Testing event lock_release: OK
[ 33.768783] Testing event sys_enter_getgroups: OK
[ 33.918751] Testing event sys_exit_getgroups:
[ 34.017003] 4k 81920 large 0 gb 0 x 81920[c0000000-d3fff000] miss 0
[ 34.065503] OK
[ 34.081834] Testing event sys_enter_setgroups: OK
[ 34.212768] Testing event sys_exit_setgroups: OK
[ 34.356672] Testing event sys_enter_nanosleep: OK
[ 34.487031] Testing event sys_exit_nanosleep: OK
[ 34.633952] Testing event sys_enter_timer_create: OK
[ 34.776960] Testing event sys_exit_timer_create: OK
[ 34.929789] Testing event sys_enter_timer_gettime:
[ 35.020362] 4k 81920 large 0 gb 0 x 81920[c0000000-d3fff000] miss 0
[ 35.069388] OK
[ 35.085868] Testing event sys_exit_timer_gettime:
[ 35.104999] ok.
[ 35.150611] OK
[ 35.167607] Testing event sys_enter_timer_getoverrun: OK
[ 35.211843] Testing event sys_exit_timer_getoverrun: OK
[ 35.259749] Testing event sys_enter_timer_settime: OK
[ 35.304004] Testing event sys_exit_timer_settime: OK
[ 35.352782] Testing event sys_enter_timer_delete: OK
[ 35.398524] Testing event sys_exit_timer_delete: OK
[ 35.446671] Testing event sys_enter_clock_settime: OK
[ 35.492958] Testing event sys_exit_clock_settime: OK
[ 35.537986] Testing event sys_enter_clock_gettime: OK
[ 35.582921] Testing event sys_exit_clock_gettime: OK
[ 35.626984] Testing event sys_enter_clock_getres: OK
[ 35.674875] Testing event sys_exit_clock_getres: OK
[ 35.720896] Testing event sys_enter_clock_nanosleep: OK
[ 35.770898] Testing event sys_exit_clock_nanosleep: OK
[ 35.817258] Testing event workqueue_insertion: OK
[ 35.858622] Testing event workqueue_execution: OK
[ 35.901190] Testing event workqueue_creation: OK
[ 35.944711] Testing event workqueue_destruction: OK
[ 35.986782] Testing event sys_enter_setpriority: OK
[ 36.029502] Testing event sys_exit_setpriority: OK
[ 36.070499] Testing event sys_enter_getpriority: OK
[ 36.115951] Testing event sys_exit_getpriority: OK
[ 36.160676] Testing event sys_enter_reboot: OK
[ 36.206615] Testing event sys_exit_reboot: OK
[ 36.250623] Testing event sys_enter_setregid: OK
[ 36.296580] Testing event sys_exit_setregid: OK
[ 36.342940] Testing event sys_enter_setgid: OK
[ 36.387749] Testing event sys_exit_setgid: OK
[ 36.432591] Testing event sys_enter_setreuid: OK
[ 36.471886] Testing event sys_exit_setreuid: OK
[ 36.518195] Testing event sys_enter_setuid: OK
[ 36.561632] Testing event sys_exit_setuid: OK
[ 36.604637] Testing event sys_enter_setresuid: OK
[ 36.647584] Testing event sys_exit_setresuid: OK
[ 36.689557] Testing event sys_enter_getresuid: OK
[ 36.732857] Testing event sys_exit_getresuid: OK
[ 36.777527] Testing event sys_enter_setresgid: OK
[ 36.821695] Testing event sys_exit_setresgid: OK
[ 36.868427] Testing event sys_enter_getresgid: OK
[ 36.910726] Testing event sys_exit_getresgid: OK
[ 36.956472] Testing event sys_enter_setfsuid: OK
[ 36.998531] Testing event sys_exit_setfsuid: OK
[ 37.038516] Testing event sys_enter_setfsgid: OK
[ 37.082588] Testing event sys_exit_setfsgid: OK
[ 37.128669] Testing event sys_enter_times: OK
[ 37.169589] Testing event sys_exit_times: OK
[ 37.210609] Testing event sys_enter_setpgid: OK
[ 37.256432] Testing event sys_exit_setpgid: OK
[ 37.295733] Testing event sys_enter_getpgid: OK
[ 37.338647] Testing event sys_exit_getpgid: OK
[ 37.382030] Testing event sys_enter_getpgrp: OK
[ 37.423976] Testing event sys_exit_getpgrp: OK
[ 37.467543] Testing event sys_enter_getsid: OK
[ 37.506690] Testing event sys_exit_getsid: OK
[ 37.548901] Testing event sys_enter_setsid: OK
[ 37.593792] Testing event sys_exit_setsid: OK
[ 37.635765] Testing event sys_enter_newuname: OK
[ 37.679644] Testing event sys_exit_newuname: OK
[ 37.717989] Testing event sys_enter_sethostname: OK
[ 37.759599] Testing event sys_exit_sethostname: OK
[ 37.803889] Testing event sys_enter_setdomainname: OK
[ 37.846864] Testing event sys_exit_setdomainname: OK
[ 37.888711] Testing event sys_enter_getrlimit: OK
[ 37.933635] Testing event sys_exit_getrlimit: OK
[ 37.978495] Testing event sys_enter_old_getrlimit: OK
[ 38.018849] Testing event sys_exit_old_getrlimit: OK
[ 38.060570] Testing event sys_enter_setrlimit: OK
[ 38.104630] Testing event sys_exit_setrlimit: OK
[ 38.147586] Testing event sys_enter_getrusage: OK
[ 38.191245] Testing event sys_exit_getrusage: OK
[ 38.234666] Testing event sys_enter_umask: OK
[ 38.275547] Testing event sys_exit_umask: OK
[ 38.319949] Testing event sys_enter_prctl: OK
[ 38.362446] Testing event sys_exit_prctl: OK
[ 38.405921] Testing event sys_enter_getcpu: OK
[ 38.450592] Testing event sys_exit_getcpu: OK
[ 38.491572] Testing event sys_enter_restart_syscall: OK
[ 38.536583] Testing event sys_exit_restart_syscall: OK
[ 38.576624] Testing event sys_enter_rt_sigprocmask: OK
[ 38.619313] Testing event sys_exit_rt_sigprocmask: OK
[ 38.662598] Testing event sys_enter_rt_sigpending: OK
[ 38.705483] Testing event sys_exit_rt_sigpending: OK
[ 38.745517] Testing event sys_enter_rt_sigtimedwait: OK
[ 38.791583] Testing event sys_exit_rt_sigtimedwait: OK
[ 38.835411] Testing event sys_enter_kill: OK
[ 38.879690] Testing event sys_exit_kill: OK
[ 38.918644] Testing event sys_enter_tgkill: OK
[ 38.958704] Testing event sys_exit_tgkill: OK
[ 39.002616] Testing event sys_enter_tkill: OK
[ 39.047554] Testing event sys_exit_tkill: OK
[ 39.090608] Testing event sys_enter_rt_sigqueueinfo: OK
[ 39.132678] Testing event sys_exit_rt_sigqueueinfo: OK
[ 39.173778] Testing event sys_enter_rt_tgsigqueueinfo: OK
[ 39.220678] Testing event sys_exit_rt_tgsigqueueinfo: OK
[ 39.267470] Testing event sys_enter_sigpending: OK
[ 39.308412] Testing event sys_exit_sigpending: OK
[ 39.351565] Testing event sys_enter_sigprocmask: OK
[ 39.396604] Testing event sys_exit_sigprocmask: OK
[ 39.436656] Testing event sys_enter_rt_sigaction: OK
[ 39.476483] Testing event sys_exit_rt_sigaction: OK
[ 39.519540] Testing event sys_enter_sgetmask: OK
[ 39.561663] Testing event sys_exit_sgetmask: OK
[ 39.606633] Testing event sys_enter_ssetmask: OK
[ 39.649576] Testing event sys_exit_ssetmask: OK
[ 39.692684] Testing event sys_enter_signal: OK
[ 39.734519] Testing event sys_exit_signal: OK
[ 39.780667] Testing event sys_enter_pause: OK
[ 39.821613] Testing event sys_exit_pause: OK
[ 39.862797] Testing event sys_enter_rt_sigsuspend: OK
[ 39.908471] Testing event sys_exit_rt_sigsuspend: OK
[ 39.952872] Testing event sys_enter_alarm: OK
[ 39.996716] Testing event sys_exit_alarm: OK
[ 40.042637] Testing event sys_enter_getpid: OK
[ 40.081628] Testing event sys_exit_getpid: OK
[ 40.125611] Testing event sys_enter_getppid: OK
[ 40.170580] Testing event sys_exit_getppid: OK
[ 40.213456] Testing event sys_enter_getuid: OK
[ 40.256414] Testing event sys_exit_getuid: OK
[ 40.298851] Testing event sys_enter_geteuid: OK
[ 40.339461] Testing event sys_exit_geteuid: OK
[ 40.381834] Testing event sys_enter_getgid: OK
[ 40.426461] Testing event sys_exit_getgid: OK
[ 40.469706] Testing event sys_enter_getegid: OK
[ 40.514558] Testing event sys_exit_getegid: OK
[ 40.555865] Testing event sys_enter_gettid: OK
[ 40.601801] Testing event sys_exit_gettid: OK
[ 40.644944] Testing event sys_enter_sysinfo: OK
[ 40.689016] Testing event sys_exit_sysinfo: OK
[ 40.728574] Testing event sys_enter_ptrace: OK
[ 40.769825] Testing event sys_exit_ptrace: OK
[ 40.809680] Testing event sys_enter_capget: OK
[ 40.848842] Testing event sys_exit_capget: OK
[ 40.889825] Testing event sys_enter_capset: OK
[ 40.932001] Testing event sys_exit_capset: OK
[ 40.975689] Testing event sys_enter_sysctl: OK
[ 41.016711] Testing event sys_exit_sysctl: OK
[ 41.060690] Testing event irq_handler_entry: OK
[ 41.101488] Testing event irq_handler_exit: OK
[ 41.142010] Testing event softirq_entry: OK
[ 41.177944] Testing event softirq_exit: OK
[ 41.221677] Testing event sys_enter_time: OK
[ 41.262912] Testing event sys_exit_time: OK
[ 41.307704] Testing event sys_enter_stime: OK
[ 41.350475] Testing event sys_exit_stime: OK
[ 41.392771] Testing event sys_enter_gettimeofday: OK
[ 41.433808] Testing event sys_exit_gettimeofday: OK
[ 41.476034] Testing event sys_enter_settimeofday: OK
[ 41.515006] Testing event sys_exit_settimeofday: OK
[ 41.557600] Testing event sys_enter_adjtimex: OK
[ 41.597886] Testing event sys_exit_adjtimex: OK
[ 41.638864] Testing event sys_enter_getitimer: OK
[ 41.681640] Testing event sys_exit_getitimer: OK
[ 41.724422] Testing event sys_enter_setitimer: OK
[ 41.765938] Testing event sys_exit_setitimer: OK
[ 41.808676] Testing event sys_enter_exit: OK
[ 41.851598] Testing event sys_exit_exit: OK
[ 41.894570] Testing event sys_enter_exit_group: OK
[ 41.938560] Testing event sys_exit_exit_group: OK
[ 41.984729] Testing event sys_enter_waitid: OK
[ 42.031670] Testing event sys_exit_waitid: OK
[ 42.075672] Testing event sys_enter_wait4: OK
[ 42.119622] Testing event sys_exit_wait4: OK
[ 42.163023] Testing event sys_enter_waitpid: OK
[ 42.205463] Testing event sys_exit_waitpid: OK
[ 42.249611] Testing event sys_enter_syslog: OK
[ 42.290617] Testing event sys_exit_syslog: OK
[ 42.330578] Testing event sys_enter_personality: OK
[ 42.373670] Testing event sys_exit_personality: OK
[ 42.416804] Testing event sys_enter_set_tid_address: OK
[ 42.457665] Testing event sys_exit_set_tid_address: OK
[ 42.502450] Testing event sys_enter_unshare: OK
[ 42.545602] Testing event sys_exit_unshare: OK
[ 42.589524] Testing event sched_kthread_stop: OK
[ 42.628906] Testing event sched_kthread_stop_ret: OK
[ 42.672632] Testing event sched_wait_task: OK
[ 42.713422] Testing event sched_wakeup: OK
[ 42.756409] Testing event sched_wakeup_new: OK
[ 42.798609] Testing event sched_switch: OK
[ 42.835783] Testing event sched_migrate_task: OK
[ 42.877990] Testing event sched_process_free: OK
[ 42.921636] Testing event sched_process_exit: OK
[ 42.964600] Testing event sched_process_wait: OK
[ 43.007034] Testing event sched_process_fork: OK
[ 43.050646] Testing event sched_signal_send: OK
[ 43.095681] Testing event sys_enter_nice: OK
[ 43.138610] Testing event sys_exit_nice: OK
[ 43.180589] Testing event sys_enter_sched_setscheduler: OK
[ 43.226582] Testing event sys_exit_sched_setscheduler: OK
[ 43.272515] Testing event sys_enter_sched_setparam: OK
[ 43.313545] Testing event sys_exit_sched_setparam: OK
[ 43.354552] Testing event sys_enter_sched_getscheduler: OK
[ 43.397647] Testing event sys_exit_sched_getscheduler: OK
[ 43.441854] Testing event sys_enter_sched_getparam: OK
[ 43.487699] Testing event sys_exit_sched_getparam: OK
[ 43.532584] Testing event sys_enter_sched_setaffinity: OK
[ 43.573656] Testing event sys_exit_sched_setaffinity: OK
[ 43.618658] Testing event sys_enter_sched_getaffinity: OK
[ 43.663837] Testing event sys_exit_sched_getaffinity: OK
[ 43.709609] Testing event sys_enter_sched_yield: OK
[ 43.754992] Testing event sys_exit_sched_yield: OK
[ 43.799572] Testing event sys_enter_sched_get_priority_max: OK
[ 43.844644] Testing event sys_exit_sched_get_priority_max: OK
[ 43.891553] Testing event sys_enter_sched_get_priority_min: OK
[ 43.934920] Testing event sys_exit_sched_get_priority_min: OK
[ 43.979804] Testing event sys_enter_sched_rr_get_interval: OK
[ 44.023835] Testing event sys_exit_sched_rr_get_interval: OK
[ 44.069557] Running tests on trace event systems:
[ 44.087634] Testing event system skb: OK
[ 44.132522] Testing event system block: OK
[ 44.226016] Testing event system kmem: OK
[ 44.294719] Testing event system module: OK
[ 44.353811] Testing event system lockdep: OK
[ 44.430573] Testing event system workqueue: OK
[ 44.483525] Testing event system irq: OK
[ 44.544753] Testing event system sched: OK
[ 44.621484] Testing event system syscalls: OK
[ 45.376454] Running tests on all trace events:
[ 45.394816] Testing all events: OK
[ 46.777366] Testing kprobe tracing: OK
[ 46.821276] Magic number: 5:984:605
[ 46.828137] register_blkdev: cannot get major 3 for hd
[ 46.836948] rtc_cmos 00:03: setting system clock to 2009-08-20 23:36:06 UTC (1250811366)
[ 46.910568] kjournald starting. Commit interval 5 seconds
[ 46.923465] EXT3-fs: mounted filesystem with writeback data mode.
[ 46.934786] VFS: Mounted root (ext3 filesystem) readonly on device 3:1.
[ 46.945880] debug: unmapping init memory c0bdd000..c0c65000
[ 46.956939] Write protecting the kernel text: 5628k
[ 46.965405] Testing CPA: Reverting c0100000-c067f000
[ 46.975670] Testing CPA: write protecting again
[ 46.986605] Write protecting the kernel read-only data: 3460k
[ 46.996107] Testing CPA: undo c067f000-c09e0000
[ 47.005347] Testing CPA: write protecting again
[ 47.922602] grep used greatest stack depth: 1824 bytes left
[ 64.948752] udevd used greatest stack depth: 1676 bytes left
[ 549.382067] int3: 0000 [#1] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] ------------[ cut here ]------------
[ 549.382067] WARNING: at arch/x86/kernel/kprobes.c:499 kprobe_exceptions_notify+0x23f/0x662()
[ 549.382067] Hardware name: Deskpro EN Series
[ 549.382067] Modules linked in:
[ 549.382067] Pid: 3910, comm: kprobestest Tainted: G W 2.6.31-rc5-00546-g429839d #122
[ 549.382067] Call Trace:
[ 549.382067] [<c0165737>] warn_slowpath_common+0x93/0xc3
[ 549.382067] [<c0165779>] warn_slowpath_null+0x12/0x15
[ 549.382067] [<c067ab66>] kprobe_exceptions_notify+0x23f/0x662
[ 549.382067] [<c067bd2a>] notifier_call_chain+0x2b/0x7a
[ 549.382067] [<c067bdbc>] __atomic_notifier_call_chain+0x43/0xa9
[ 549.382067] [<c067bd79>] ? __atomic_notifier_call_chain+0x0/0xa9
[ 549.382067] [<c067be2e>] atomic_notifier_call_chain+0xc/0xe
[ 549.382067] [<c0193823>] notify_die+0x2d/0x2f
[ 549.382067] [<c067934d>] do_int3+0x1f/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c067007b>] ? pcwd_isa_probe+0x34e/0x662
[ 549.382067] [<c01265bd>] ? ret_from_exception+0x1/0x6
[ 549.382067] [<c012007b>] ? kvm_create_pit+0x73/0x22f
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c0230bd7>] ? __slab_alloc+0x3de/0x90f
[ 549.382067] [<c01e3c59>] ? time_hardirqs_off+0x3e/0x41
[ 549.382067] [<c023244e>] __kmalloc+0x167/0x22c
[ 549.382067] [<c01eaec2>] ? kzalloc+0x11/0x13
[ 549.382067] [<c01eaec2>] ? kzalloc+0x11/0x13
[ 549.382067] [<c01eaec2>] kzalloc+0x11/0x13
[ 549.382067] [<c01eaf4d>] init_preds+0x89/0xd1
[ 549.382067] [<c01edb9b>] probe_event_raw_init+0x11/0x15
[ 549.382067] [<c01e7182>] trace_add_event_call+0x5a/0x10e
[ 549.382067] [<c01ee17e>] command_trace_probe+0x5df/0x69c
[ 549.382067] [<c02126bc>] ? might_fault+0x81/0xc5
[ 549.382067] [<c03778c6>] ? __copy_from_user_ll+0x16/0xe8
[ 549.382067] [<c01ee3a4>] probes_write+0x169/0x1b3
[ 549.382067] [<c01ee23b>] ? probes_write+0x0/0x1b3
[ 549.382067] [<c023b437>] vfs_write+0x12f/0x16f
[ 549.382067] [<c023b56c>] sys_write+0x56/0x78
[ 549.382067] [<c01266a4>] sysenter_do_call+0x12/0x32
[ 549.382067] ---[ end trace 40c90e501f96d013 ]---
[ 549.382067] int3: 0000 [#2] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] ------------[ cut here ]------------
[ 549.382067] WARNING: at arch/x86/kernel/kprobes.c:499 kprobe_exceptions_notify+0x23f/0x662()
[ 549.382067] Hardware name: Deskpro EN Series
[ 549.382067] Modules linked in:
[ 549.382067] Pid: 3910, comm: kprobestest Tainted: G W 2.6.31-rc5-00546-g429839d #122
[ 549.382067] Call Trace:
[ 549.382067] [<c0165737>] warn_slowpath_common+0x93/0xc3
[ 549.382067] [<c0165779>] warn_slowpath_null+0x12/0x15
[ 549.382067] [<c067ab66>] kprobe_exceptions_notify+0x23f/0x662
[ 549.382067] [<c067bd2a>] notifier_call_chain+0x2b/0x7a
[ 549.382067] [<c067bdbc>] __atomic_notifier_call_chain+0x43/0xa9
[ 549.382067] [<c067bd79>] ? __atomic_notifier_call_chain+0x0/0xa9
[ 549.382067] [<c067be2e>] atomic_notifier_call_chain+0xc/0xe
[ 549.382067] [<c0193823>] notify_die+0x2d/0x2f
[ 549.382067] [<c067934d>] do_int3+0x1f/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c067007b>] ? pcwd_isa_probe+0x34e/0x662
[ 549.382067] [<c01265bd>] ? ret_from_exception+0x1/0x6
[ 549.382067] [<c012007b>] ? kvm_create_pit+0x73/0x22f
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c0230bd7>] ? __slab_alloc+0x3de/0x90f
[ 549.382067] [<c01e3c59>] ? time_hardirqs_off+0x3e/0x41
[ 549.382067] [<c023244e>] __kmalloc+0x167/0x22c
[ 549.382067] [<c01eaec2>] ? kzalloc+0x11/0x13
[ 549.382067] [<c01eaec2>] ? kzalloc+0x11/0x13
[ 549.382067] [<c01eaec2>] kzalloc+0x11/0x13
[ 549.382067] [<c01eaf4d>] init_preds+0x89/0xd1
[ 549.382067] [<c01edb9b>] probe_event_raw_init+0x11/0x15
[ 549.382067] [<c01e7182>] trace_add_event_call+0x5a/0x10e
[ 549.382067] [<c01ee17e>] command_trace_probe+0x5df/0x69c
[ 549.382067] [<c02126bc>] ? might_fault+0x81/0xc5
[ 549.382067] [<c03778c6>] ? __copy_from_user_ll+0x16/0xe8
[ 549.382067] [<c01ee3a4>] probes_write+0x169/0x1b3
[ 549.382067] [<c01ee23b>] ? probes_write+0x0/0x1b3
[ 549.382067] [<c023b437>] vfs_write+0x12f/0x16f
[ 549.382067] [<c023b56c>] sys_write+0x56/0x78
[ 549.382067] [<c01266a4>] sysenter_do_call+0x12/0x32
[ 549.382067] ---[ end trace 40c90e501f96d014 ]---
[ 549.382067] int3: 0000 [#3] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] ------------[ cut here ]------------
[ 549.382067] WARNING: at arch/x86/kernel/kprobes.c:499 kprobe_exceptions_notify+0x23f/0x662()
[ 549.382067] Hardware name: Deskpro EN Series
[ 549.382067] Modules linked in:
[ 549.382067] Pid: 3910, comm: kprobestest Tainted: G W 2.6.31-rc5-00546-g429839d #122
[ 549.382067] Call Trace:
[ 549.382067] [<c0165737>] warn_slowpath_common+0x93/0xc3
[ 549.382067] [<c0165779>] warn_slowpath_null+0x12/0x15
[ 549.382067] [<c067ab66>] kprobe_exceptions_notify+0x23f/0x662
[ 549.382067] [<c067bd2a>] notifier_call_chain+0x2b/0x7a
[ 549.382067] [<c067bdbc>] __atomic_notifier_call_chain+0x43/0xa9
[ 549.382067] [<c067bd79>] ? __atomic_notifier_call_chain+0x0/0xa9
[ 549.382067] [<c067be2e>] atomic_notifier_call_chain+0xc/0xe
[ 549.382067] [<c0193823>] notify_die+0x2d/0x2f
[ 549.382067] [<c067934d>] do_int3+0x1f/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c067007b>] ? pcwd_isa_probe+0x34e/0x662
[ 549.382067] [<c01265bd>] ? ret_from_exception+0x1/0x6
[ 549.382067] [<c012007b>] ? kvm_create_pit+0x73/0x22f
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c0230bd7>] ? __slab_alloc+0x3de/0x90f
[ 549.382067] [<c01e3c59>] ? time_hardirqs_off+0x3e/0x41
[ 549.382067] [<c023244e>] __kmalloc+0x167/0x22c
[ 549.382067] [<c01eaec2>] ? kzalloc+0x11/0x13
[ 549.382067] [<c01eaec2>] ? kzalloc+0x11/0x13
[ 549.382067] [<c01eaec2>] kzalloc+0x11/0x13
[ 549.382067] [<c01eaf4d>] init_preds+0x89/0xd1
[ 549.382067] [<c01edb9b>] probe_event_raw_init+0x11/0x15
[ 549.382067] [<c01e7182>] trace_add_event_call+0x5a/0x10e
[ 549.382067] [<c01ee17e>] command_trace_probe+0x5df/0x69c
[ 549.382067] [<c02126bc>] ? might_fault+0x81/0xc5
[ 549.382067] [<c03778c6>] ? __copy_from_user_ll+0x16/0xe8
[ 549.382067] [<c01ee3a4>] probes_write+0x169/0x1b3
[ 549.382067] [<c01ee23b>] ? probes_write+0x0/0x1b3
[ 549.382067] [<c023b437>] vfs_write+0x12f/0x16f
[ 549.382067] [<c023b56c>] sys_write+0x56/0x78
[ 549.382067] [<c01266a4>] sysenter_do_call+0x12/0x32
[ 549.382067] ---[ end trace 40c90e501f96d015 ]---
[ 549.382067] int3: 0000 [#4] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] ------------[ cut here ]------------
[ 549.382067] WARNING: at arch/x86/kernel/kprobes.c:499 kprobe_exceptions_notify+0x23f/0x662()
[ 549.382067] Hardware name: Deskpro EN Series
[ 549.382067] Modules linked in:
[ 549.382067] Pid: 3910, comm: kprobestest Tainted: G W 2.6.31-rc5-00546-g429839d #122
[ 549.382067] Call Trace:
[ 549.382067] [<c0165737>] warn_slowpath_common+0x93/0xc3
[ 549.382067] [<c0165779>] warn_slowpath_null+0x12/0x15
[ 549.382067] [<c067ab66>] kprobe_exceptions_notify+0x23f/0x662
[ 549.382067] [<c067bd2a>] notifier_call_chain+0x2b/0x7a
[ 549.382067] [<c067bdbc>] __atomic_notifier_call_chain+0x43/0xa9
[ 549.382067] [<c067bd79>] ? __atomic_notifier_call_chain+0x0/0xa9
[ 549.382067] [<c067be2e>] atomic_notifier_call_chain+0xc/0xe
[ 549.382067] [<c0193823>] notify_die+0x2d/0x2f
[ 549.382067] [<c067934d>] do_int3+0x1f/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c067007b>] ? pcwd_isa_probe+0x34e/0x662
[ 549.382067] [<c01265bd>] ? ret_from_exception+0x1/0x6
[ 549.382067] [<c012007b>] ? kvm_create_pit+0x73/0x22f
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c0230bd7>] ? __slab_alloc+0x3de/0x90f
[ 549.382067] [<c01e3c59>] ? time_hardirqs_off+0x3e/0x41
[ 549.382067] [<c023244e>] __kmalloc+0x167/0x22c
[ 549.382067] [<c01eaec2>] ? kzalloc+0x11/0x13
[ 549.382067] [<c01eaec2>] ? kzalloc+0x11/0x13
[ 549.382067] [<c01eaec2>] kzalloc+0x11/0x13
[ 549.382067] [<c01eaf4d>] init_preds+0x89/0xd1
[ 549.382067] [<c01edb9b>] probe_event_raw_init+0x11/0x15
[ 549.382067] [<c01e7182>] trace_add_event_call+0x5a/0x10e
[ 549.382067] [<c01ee17e>] command_trace_probe+0x5df/0x69c
[ 549.382067] [<c02126bc>] ? might_fault+0x81/0xc5
[ 549.382067] [<c03778c6>] ? __copy_from_user_ll+0x16/0xe8
[ 549.382067] [<c01ee3a4>] probes_write+0x169/0x1b3
[ 549.382067] [<c01ee23b>] ? probes_write+0x0/0x1b3
[ 549.382067] [<c023b437>] vfs_write+0x12f/0x16f
[ 549.382067] [<c023b56c>] sys_write+0x56/0x78
[ 549.382067] [<c01266a4>] sysenter_do_call+0x12/0x32
[ 549.382067] ---[ end trace 40c90e501f96d016 ]---
[ 549.382067] int3: 0000 [#5] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] ------------[ cut here ]------------
[ 549.382067] WARNING: at arch/x86/kernel/kprobes.c:499 kprobe_exceptions_notify+0x23f/0x662()
[ 549.382067] Hardware name: Deskpro EN Series
[ 549.382067] Modules linked in:
[ 549.382067] Pid: 3910, comm: kprobestest Tainted: G W 2.6.31-rc5-00546-g429839d #122
[ 549.382067] Call Trace:
[ 549.382067] [<c0165737>] warn_slowpath_common+0x93/0xc3
[ 549.382067] [<c0165779>] warn_slowpath_null+0x12/0x15
[ 549.382067] [<c067ab66>] kprobe_exceptions_notify+0x23f/0x662
[ 549.382067] [<c067bd2a>] notifier_call_chain+0x2b/0x7a
[ 549.382067] [<c067bdbc>] __atomic_notifier_call_chain+0x43/0xa9
[ 549.382067] [<c067bd79>] ? __atomic_notifier_call_chain+0x0/0xa9
[ 549.382067] [<c067be2e>] atomic_notifier_call_chain+0xc/0xe
[ 549.382067] [<c0193823>] notify_die+0x2d/0x2f
[ 549.382067] [<c067934d>] do_int3+0x1f/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c067007b>] ? pcwd_isa_probe+0x34e/0x662
[ 549.382067] [<c01265bd>] ? ret_from_exception+0x1/0x6
[ 549.382067] [<c012007b>] ? kvm_create_pit+0x73/0x22f
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c0230bd7>] ? __slab_alloc+0x3de/0x90f
[ 549.382067] [<c01e3c59>] ? time_hardirqs_off+0x3e/0x41
[ 549.382067] [<c023244e>] __kmalloc+0x167/0x22c
[ 549.382067] [<c01eaec2>] ? kzalloc+0x11/0x13
[ 549.382067] [<c01eaec2>] ? kzalloc+0x11/0x13
[ 549.382067] [<c01eaec2>] kzalloc+0x11/0x13
[ 549.382067] [<c01eaf4d>] init_preds+0x89/0xd1
[ 549.382067] [<c01edb9b>] probe_event_raw_init+0x11/0x15
[ 549.382067] [<c01e7182>] trace_add_event_call+0x5a/0x10e
[ 549.382067] [<c01ee17e>] command_trace_probe+0x5df/0x69c
[ 549.382067] [<c02126bc>] ? might_fault+0x81/0xc5
[ 549.382067] [<c03778c6>] ? __copy_from_user_ll+0x16/0xe8
[ 549.382067] [<c01ee3a4>] probes_write+0x169/0x1b3
[ 549.382067] [<c01ee23b>] ? probes_write+0x0/0x1b3
[ 549.382067] [<c023b437>] vfs_write+0x12f/0x16f
[ 549.382067] [<c023b56c>] sys_write+0x56/0x78
[ 549.382067] [<c01266a4>] sysenter_do_call+0x12/0x32
[ 549.382067] ---[ end trace 40c90e501f96d017 ]---
[ 549.382067] int3: 0000 [#6] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] ------------[ cut here ]------------
[ 549.382067] WARNING: at arch/x86/kernel/kprobes.c:499 kprobe_exceptions_notify+0x23f/0x662()
[ 549.382067] Hardware name: Deskpro EN Series
[ 549.382067] Modules linked in:
[ 549.382067] Pid: 3910, comm: kprobestest Tainted: G W 2.6.31-rc5-00546-g429839d #122
[ 549.382067] Call Trace:
[ 549.382067] [<c0165737>] warn_slowpath_common+0x93/0xc3
[ 549.382067] [<c0165779>] warn_slowpath_null+0x12/0x15
[ 549.382067] [<c067ab66>] kprobe_exceptions_notify+0x23f/0x662
[ 549.382067] [<c067bd2a>] notifier_call_chain+0x2b/0x7a
[ 549.382067] [<c067bdbc>] __atomic_notifier_call_chain+0x43/0xa9
[ 549.382067] [<c067bd79>] ? __atomic_notifier_call_chain+0x0/0xa9
[ 549.382067] [<c067be2e>] atomic_notifier_call_chain+0xc/0xe
[ 549.382067] [<c0193823>] notify_die+0x2d/0x2f
[ 549.382067] [<c067934d>] do_int3+0x1f/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c067007b>] ? pcwd_isa_probe+0x34e/0x662
[ 549.382067] [<c01265bd>] ? ret_from_exception+0x1/0x6
[ 549.382067] [<c012007b>] ? kvm_create_pit+0x73/0x22f
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c0230bd7>] ? __slab_alloc+0x3de/0x90f
[ 549.382067] [<c01e3c59>] ? time_hardirqs_off+0x3e/0x41
[ 549.382067] [<c023244e>] __kmalloc+0x167/0x22c
[ 549.382067] [<c01eaec2>] ? kzalloc+0x11/0x13
[ 549.382067] [<c01eaec2>] ? kzalloc+0x11/0x13
[ 549.382067] [<c01eaec2>] kzalloc+0x11/0x13
[ 549.382067] [<c01eaf4d>] init_preds+0x89/0xd1
[ 549.382067] [<c01edb9b>] probe_event_raw_init+0x11/0x15
[ 549.382067] [<c01e7182>] trace_add_event_call+0x5a/0x10e
[ 549.382067] [<c01ee17e>] command_trace_probe+0x5df/0x69c
[ 549.382067] [<c02126bc>] ? might_fault+0x81/0xc5
[ 549.382067] [<c03778c6>] ? __copy_from_user_ll+0x16/0xe8
[ 549.382067] [<c01ee3a4>] probes_write+0x169/0x1b3
[ 549.382067] [<c01ee23b>] ? probes_write+0x0/0x1b3
[ 549.382067] [<c023b437>] vfs_write+0x12f/0x16f
[ 549.382067] [<c023b56c>] sys_write+0x56/0x78
[ 549.382067] [<c01266a4>] sysenter_do_call+0x12/0x32
[ 549.382067] ---[ end trace 40c90e501f96d018 ]---
[ 549.382067] int3: 0000 [#7] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] ------------[ cut here ]------------
[ 549.382067] WARNING: at arch/x86/kernel/kprobes.c:499 kprobe_exceptions_notify+0x23f/0x662()
[ 549.382067] Hardware name: Deskpro EN Series
[ 549.382067] Modules linked in:
[ 549.382067] Pid: 3910, comm: kprobestest Tainted: G W 2.6.31-rc5-00546-g429839d #122
[ 549.382067] Call Trace:
[ 549.382067] [<c0165737>] warn_slowpath_common+0x93/0xc3
[ 549.382067] [<c0165779>] warn_slowpath_null+0x12/0x15
[ 549.382067] [<c067ab66>] kprobe_exceptions_notify+0x23f/0x662
[ 549.382067] [<c067bd2a>] notifier_call_chain+0x2b/0x7a
[ 549.382067] [<c067bdbc>] __atomic_notifier_call_chain+0x43/0xa9
[ 549.382067] [<c067bd79>] ? __atomic_notifier_call_chain+0x0/0xa9
[ 549.382067] [<c067be2e>] atomic_notifier_call_chain+0xc/0xe
[ 549.382067] [<c0193823>] notify_die+0x2d/0x2f
[ 549.382067] [<c067934d>] do_int3+0x1f/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c067007b>] ? pcwd_isa_probe+0x34e/0x662
[ 549.382067] [<c01265bd>] ? ret_from_exception+0x1/0x6
[ 549.382067] [<c012007b>] ? kvm_create_pit+0x73/0x22f
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c0230bd7>] ? __slab_alloc+0x3de/0x90f
[ 549.382067] [<c01e3c59>] ? time_hardirqs_off+0x3e/0x41
[ 549.382067] [<c023244e>] __kmalloc+0x167/0x22c
[ 549.382067] [<c01eaec2>] ? kzalloc+0x11/0x13
[ 549.382067] [<c01eaec2>] ? kzalloc+0x11/0x13
[ 549.382067] [<c01eaec2>] kzalloc+0x11/0x13
[ 549.382067] [<c01eaf4d>] init_preds+0x89/0xd1
[ 549.382067] [<c01edb9b>] probe_event_raw_init+0x11/0x15
[ 549.382067] [<c01e7182>] trace_add_event_call+0x5a/0x10e
[ 549.382067] [<c01ee17e>] command_trace_probe+0x5df/0x69c
[ 549.382067] [<c02126bc>] ? might_fault+0x81/0xc5
[ 549.382067] [<c03778c6>] ? __copy_from_user_ll+0x16/0xe8
[ 549.382067] [<c01ee3a4>] probes_write+0x169/0x1b3
[ 549.382067] [<c01ee23b>] ? probes_write+0x0/0x1b3
[ 549.382067] [<c023b437>] vfs_write+0x12f/0x16f
[ 549.382067] [<c023b56c>] sys_write+0x56/0x78
[ 549.382067] [<c01266a4>] sysenter_do_call+0x12/0x32
[ 549.382067] ---[ end trace 40c90e501f96d019 ]---
[ 549.382067] int3: 0000 [#8] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] ------------[ cut here ]------------
[ 549.382067] WARNING: at arch/x86/kernel/kprobes.c:499 kprobe_exceptions_notify+0x23f/0x662()
[ 549.382067] Hardware name: Deskpro EN Series
[ 549.382067] Modules linked in:
[ 549.382067] Pid: 3910, comm: kprobestest Tainted: G W 2.6.31-rc5-00546-g429839d #122
[ 549.382067] Call Trace:
[ 549.382067] [<c0165737>] warn_slowpath_common+0x93/0xc3
[ 549.382067] [<c0165779>] warn_slowpath_null+0x12/0x15
[ 549.382067] [<c067ab66>] kprobe_exceptions_notify+0x23f/0x662
[ 549.382067] [<c067bd2a>] notifier_call_chain+0x2b/0x7a
[ 549.382067] [<c067bdbc>] __atomic_notifier_call_chain+0x43/0xa9
[ 549.382067] [<c067bd79>] ? __atomic_notifier_call_chain+0x0/0xa9
[ 549.382067] [<c067be2e>] atomic_notifier_call_chain+0xc/0xe
[ 549.382067] [<c0193823>] notify_die+0x2d/0x2f
[ 549.382067] [<c067934d>] do_int3+0x1f/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c067007b>] ? pcwd_isa_probe+0x34e/0x662
[ 549.382067] [<c01265bd>] ? ret_from_exception+0x1/0x6
[ 549.382067] [<c012007b>] ? kvm_create_pit+0x73/0x22f
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c0230bd7>] ? __slab_alloc+0x3de/0x90f
[ 549.382067] [<c01e3c59>] ? time_hardirqs_off+0x3e/0x41
[ 549.382067] [<c023244e>] __kmalloc+0x167/0x22c
[ 549.382067] [<c01eaec2>] ? kzalloc+0x11/0x13
[ 549.382067] [<c01eaec2>] ? kzalloc+0x11/0x13
[ 549.382067] [<c01eaec2>] kzalloc+0x11/0x13
[ 549.382067] [<c01eaf4d>] init_preds+0x89/0xd1
[ 549.382067] [<c01edb9b>] probe_event_raw_init+0x11/0x15
[ 549.382067] [<c01e7182>] trace_add_event_call+0x5a/0x10e
[ 549.382067] [<c01ee17e>] command_trace_probe+0x5df/0x69c
[ 549.382067] [<c02126bc>] ? might_fault+0x81/0xc5
[ 549.382067] [<c03778c6>] ? __copy_from_user_ll+0x16/0xe8
[ 549.382067] [<c01ee3a4>] probes_write+0x169/0x1b3
[ 549.382067] [<c01ee23b>] ? probes_write+0x0/0x1b3
[ 549.382067] [<c023b437>] vfs_write+0x12f/0x16f
[ 549.382067] [<c023b56c>] sys_write+0x56/0x78
[ 549.382067] [<c01266a4>] sysenter_do_call+0x12/0x32
[ 549.382067] ---[ end trace 40c90e501f96d01a ]---
[ 549.382067] int3: 0000 [#9] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] ------------[ cut here ]------------
[ 549.382067] WARNING: at arch/x86/kernel/kprobes.c:499 kprobe_exceptions_notify+0x23f/0x662()
[ 549.382067] Hardware name: Deskpro EN Series
[ 549.382067] Modules linked in:
[ 549.382067] Pid: 3910, comm: kprobestest Tainted: G W 2.6.31-rc5-00546-g429839d #122
[ 549.382067] Call Trace:
[ 549.382067] [<c0165737>] warn_slowpath_common+0x93/0xc3
[ 549.382067] [<c0165779>] warn_slowpath_null+0x12/0x15
[ 549.382067] [<c067ab66>] kprobe_exceptions_notify+0x23f/0x662
[ 549.382067] [<c067bd2a>] notifier_call_chain+0x2b/0x7a
[ 549.382067] [<c067bdbc>] __atomic_notifier_call_chain+0x43/0xa9
[ 549.382067] [<c067bd79>] ? __atomic_notifier_call_chain+0x0/0xa9
[ 549.382067] [<c067be2e>] atomic_notifier_call_chain+0xc/0xe
[ 549.382067] [<c0193823>] notify_die+0x2d/0x2f
[ 549.382067] [<c067934d>] do_int3+0x1f/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c067007b>] ? pcwd_isa_probe+0x34e/0x662
[ 549.382067] [<c01265bd>] ? ret_from_exception+0x1/0x6
[ 549.382067] [<c012007b>] ? kvm_create_pit+0x73/0x22f
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c0230bd7>] ? __slab_alloc+0x3de/0x90f
[ 549.382067] [<c01e3c59>] ? time_hardirqs_off+0x3e/0x41
[ 549.382067] [<c023244e>] __kmalloc+0x167/0x22c
[ 549.382067] [<c01eaec2>] ? kzalloc+0x11/0x13
[ 549.382067] [<c01eaec2>] ? kzalloc+0x11/0x13
[ 549.382067] [<c01eaec2>] kzalloc+0x11/0x13
[ 549.382067] [<c01eaf4d>] init_preds+0x89/0xd1
[ 549.382067] [<c01edb9b>] probe_event_raw_init+0x11/0x15
[ 549.382067] [<c01e7182>] trace_add_event_call+0x5a/0x10e
[ 549.382067] [<c01ee17e>] command_trace_probe+0x5df/0x69c
[ 549.382067] [<c02126bc>] ? might_fault+0x81/0xc5
[ 549.382067] [<c03778c6>] ? __copy_from_user_ll+0x16/0xe8
[ 549.382067] [<c01ee3a4>] probes_write+0x169/0x1b3
[ 549.382067] [<c01ee23b>] ? probes_write+0x0/0x1b3
[ 549.382067] [<c023b437>] vfs_write+0x12f/0x16f
[ 549.382067] [<c023b56c>] sys_write+0x56/0x78
[ 549.382067] [<c01266a4>] sysenter_do_call+0x12/0x32
[ 549.382067] ---[ end trace 40c90e501f96d01b ]---
[ 549.382067] int3: 0000 [#10] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] ------------[ cut here ]------------
[ 549.382067] WARNING: at arch/x86/kernel/kprobes.c:499 kprobe_exceptions_notify+0x23f/0x662()
[ 549.382067] Hardware name: Deskpro EN Series
[ 549.382067] Modules linked in:
[ 549.382067] Pid: 3910, comm: kprobestest Tainted: G W 2.6.31-rc5-00546-g429839d #122
[ 549.382067] Call Trace:
[ 549.382067] [<c0165737>] warn_slowpath_common+0x93/0xc3
[ 549.382067] [<c0165779>] warn_slowpath_null+0x12/0x15
[ 549.382067] [<c067ab66>] kprobe_exceptions_notify+0x23f/0x662
[ 549.382067] [<c067bd2a>] notifier_call_chain+0x2b/0x7a
[ 549.382067] [<c067bdbc>] __atomic_notifier_call_chain+0x43/0xa9
[ 549.382067] [<c067bd79>] ? __atomic_notifier_call_chain+0x0/0xa9
[ 549.382067] [<c067be2e>] atomic_notifier_call_chain+0xc/0xe
[ 549.382067] [<c0193823>] notify_die+0x2d/0x2f
[ 549.382067] [<c067934d>] do_int3+0x1f/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c067007b>] ? pcwd_isa_probe+0x34e/0x662
[ 549.382067] [<c01265bd>] ? ret_from_exception+0x1/0x6
[ 549.382067] [<c012007b>] ? kvm_create_pit+0x73/0x22f
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c0230bd7>] ? __slab_alloc+0x3de/0x90f
[ 549.382067] [<c01e3c59>] ? time_hardirqs_off+0x3e/0x41
[ 549.382067] [<c023244e>] __kmalloc+0x167/0x22c
[ 549.382067] [<c01eaec2>] ? kzalloc+0x11/0x13
[ 549.382067] [<c01eaec2>] ? kzalloc+0x11/0x13
[ 549.382067] [<c01eaec2>] kzalloc+0x11/0x13
[ 549.382067] [<c01eaf4d>] init_preds+0x89/0xd1
[ 549.382067] [<c01edb9b>] probe_event_raw_init+0x11/0x15
[ 549.382067] [<c01e7182>] trace_add_event_call+0x5a/0x10e
[ 549.382067] [<c01ee17e>] command_trace_probe+0x5df/0x69c
[ 549.382067] [<c02126bc>] ? might_fault+0x81/0xc5
[ 549.382067] [<c03778c6>] ? __copy_from_user_ll+0x16/0xe8
[ 549.382067] [<c01ee3a4>] probes_write+0x169/0x1b3
[ 549.382067] [<c01ee23b>] ? probes_write+0x0/0x1b3
[ 549.382067] [<c023b437>] vfs_write+0x12f/0x16f
[ 549.382067] [<c023b56c>] sys_write+0x56/0x78
[ 549.382067] [<c01266a4>] sysenter_do_call+0x12/0x32
[ 549.382067] ---[ end trace 40c90e501f96d01c ]---
[ 549.382067] int3: 0000 [#11] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] ------------[ cut here ]------------
[ 549.382067] WARNING: at arch/x86/kernel/kprobes.c:499 kprobe_exceptions_notify+0x23f/0x662()
[ 549.382067] Hardware name: Deskpro EN Series
[ 549.382067] Modules linked in:
[ 549.382067] Pid: 3910, comm: kprobestest Tainted: G W 2.6.31-rc5-00546-g429839d #122
[ 549.382067] Call Trace:
[ 549.382067] [<c0165737>] warn_slowpath_common+0x93/0xc3
[ 549.382067] [<c0165779>] warn_slowpath_null+0x12/0x15
[ 549.382067] [<c067ab66>] kprobe_exceptions_notify+0x23f/0x662
[ 549.382067] [<c067bd2a>] notifier_call_chain+0x2b/0x7a
[ 549.382067] [<c067bdbc>] __atomic_notifier_call_chain+0x43/0xa9
[ 549.382067] [<c067bd79>] ? __atomic_notifier_call_chain+0x0/0xa9
[ 549.382067] [<c067be2e>] atomic_notifier_call_chain+0xc/0xe
[ 549.382067] [<c0193823>] notify_die+0x2d/0x2f
[ 549.382067] [<c067934d>] do_int3+0x1f/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c067007b>] ? pcwd_isa_probe+0x34e/0x662
[ 549.382067] [<c01265bd>] ? ret_from_exception+0x1/0x6
[ 549.382067] [<c012007b>] ? kvm_create_pit+0x73/0x22f
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c0230bd7>] ? __slab_alloc+0x3de/0x90f
[ 549.382067] [<c01e3c59>] ? time_hardirqs_off+0x3e/0x41
[ 549.382067] [<c023244e>] __kmalloc+0x167/0x22c
[ 549.382067] [<c01eaec2>] ? kzalloc+0x11/0x13
[ 549.382067] [<c01eaec2>] ? kzalloc+0x11/0x13
[ 549.382067] [<c01eaec2>] kzalloc+0x11/0x13
[ 549.382067] [<c01eaf4d>] init_preds+0x89/0xd1
[ 549.382067] [<c01edb9b>] probe_event_raw_init+0x11/0x15
[ 549.382067] [<c01e7182>] trace_add_event_call+0x5a/0x10e
[ 549.382067] [<c01ee17e>] command_trace_probe+0x5df/0x69c
[ 549.382067] [<c02126bc>] ? might_fault+0x81/0xc5
[ 549.382067] [<c03778c6>] ? __copy_from_user_ll+0x16/0xe8
[ 549.382067] [<c01ee3a4>] probes_write+0x169/0x1b3
[ 549.382067] [<c01ee23b>] ? probes_write+0x0/0x1b3
[ 549.382067] [<c023b437>] vfs_write+0x12f/0x16f
[ 549.382067] [<c023b56c>] sys_write+0x56/0x78
[ 549.382067] [<c01266a4>] sysenter_do_call+0x12/0x32
[ 549.382067] <IRQ>
[ 549.382067] BUG: unable to handle kernel NULL pointer dereference at 00000004
[ 549.382067] IP: [<c01265c2>] ret_from_intr+0x0/0x7
[ 549.382067] *pdpt = 000000000eae9001 *pde = 0000000000000000
[ 549.382067] Thread overran stack, or stack corrupted
[ 549.382067] Oops: 0000 [#12] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] ------------[ cut here ]------------
[ 549.382067] WARNING: at arch/x86/kernel/kprobes.c:499 kprobe_exceptions_notify+0x23f/0x662()
[ 549.382067] Hardware name: Deskpro EN Series
[ 549.382067] Modules linked in:
[ 549.382067] Pid: 3910, comm: kprobestest Tainted: G W 2.6.31-rc5-00546-g429839d #122
[ 549.382067] Call Trace:
[ 549.382067] [<c0165737>] warn_slowpath_common+0x93/0xc3
[ 549.382067] [<c0165779>] warn_slowpath_null+0x12/0x15
[ 549.382067] [<c067ab66>] kprobe_exceptions_notify+0x23f/0x662
[ 549.382067] [<c067bd2a>] notifier_call_chain+0x2b/0x7a
[ 549.382067] [<c067bdbc>] __atomic_notifier_call_chain+0x43/0xa9
[ 549.382067] [<c067bd79>] ? __atomic_notifier_call_chain+0x0/0xa9
[ 549.382067] [<c067be2e>] atomic_notifier_call_chain+0xc/0xe
[ 549.382067] [<c0193823>] notify_die+0x2d/0x2f
[ 549.382067] [<c067934d>] do_int3+0x1f/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c067007b>] ? pcwd_isa_probe+0x34e/0x662
[ 549.382067] [<c01265bd>] ? ret_from_exception+0x1/0x6
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c014aa83>] no_context+0x1cc/0x20b
[ 549.382067] [<c014ac89>] __bad_area_nosemaphore+0x1c7/0x1cf
[ 549.382067] [<c06762c3>] ? preempt_schedule+0x35/0x70
[ 549.382067] [<c01e3b42>] ? start_critical_timing+0x33/0x10c
[ 549.382067] [<c019ff31>] ? trace_hardirqs_off+0xb/0xd
[ 549.382067] [<c01e3b42>] ? start_critical_timing+0x33/0x10c
[ 549.382067] [<c019ff31>] ? trace_hardirqs_off+0xb/0xd
[ 549.382067] [<c019ff31>] ? trace_hardirqs_off+0xb/0xd
[ 549.382067] [<c067875f>] ? _spin_unlock_irqrestore+0x4a/0xa2
[ 549.382067] [<c01e3c59>] ? time_hardirqs_off+0x3e/0x41
[ 549.382067] [<c067a8c3>] ? kprobe_fault_handler+0x98/0xfc
[ 549.382067] [<c014aca3>] bad_area_nosemaphore+0x12/0x15
[ 549.382067] [<c067b66b>] do_page_fault+0x30c/0x6b8
[ 549.382067] [<c067b35f>] ? do_page_fault+0x0/0x6b8
[ 549.382067] [<c0678ffb>] error_code+0x63/0x68
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c0120000>] ? kvm_pit_reset+0x5e/0x66
[ 549.382067] [<c067b35f>] ? do_page_fault+0x0/0x6b8
[ 549.382067] [<c01265c2>] ? ret_from_intr+0x0/0x7
[ 549.382067] [<c01289f7>] dump_trace+0xe8/0x13d
[ 549.382067] [<c0129886>] show_trace_log_lvl+0x38/0x43
[ 549.382067] [<c01298a6>] show_trace+0x15/0x19
[ 549.382067] [<c0675426>] dump_stack+0x5b/0x65
[ 549.382067] [<c0165737>] warn_slowpath_common+0x93/0xc3
[ 549.382067] [<c0165779>] warn_slowpath_null+0x12/0x15
[ 549.382067] [<c067ab66>] kprobe_exceptions_notify+0x23f/0x662
[ 549.382067] [<c067bd2a>] notifier_call_chain+0x2b/0x7a
[ 549.382067] [<c067bdbc>] __atomic_notifier_call_chain+0x43/0xa9
[ 549.382067] [<c067bd79>] ? __atomic_notifier_call_chain+0x0/0xa9
[ 549.382067] [<c067be2e>] atomic_notifier_call_chain+0xc/0xe
[ 549.382067] [<c0193823>] notify_die+0x2d/0x2f
[ 549.382067] [<c067934d>] do_int3+0x1f/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c01250ed>] ? __show_regs+0x1/0x1fd
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c0129804>] die+0x5e/0x8c
[ 549.382067] [<c06792a3>] do_trap+0xf9/0x12c
[ 549.382067] [<c067938c>] do_int3+0x5e/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c067007b>] ? pcwd_isa_probe+0x34e/0x662
[ 549.382067] [<c01265bd>] ? ret_from_exception+0x1/0x6
[ 549.382067] [<c012007b>] ? kvm_create_pit+0x73/0x22f
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c0230bd7>] ? __slab_alloc+0x3de/0x90f
[ 549.382067] [<c01e3c59>] ? time_hardirqs_off+0x3e/0x41
[ 549.382067] [<c023244e>] __kmalloc+0x167/0x22c
[ 549.382067] [<c01eaec2>] ? kzalloc+0x11/0x13
[ 549.382067] [<c01eaec2>] ? kzalloc+0x11/0x13
[ 549.382067] [<c01eaec2>] kzalloc+0x11/0x13
[ 549.382067] [<c01eaf4d>] init_preds+0x89/0xd1
[ 549.382067] [<c01edb9b>] probe_event_raw_init+0x11/0x15
[ 549.382067] [<c01e7182>] trace_add_event_call+0x5a/0x10e
[ 549.382067] [<c01ee17e>] command_trace_probe+0x5df/0x69c
[ 549.382067] [<c02126bc>] ? might_fault+0x81/0xc5
[ 549.382067] [<c03778c6>] ? __copy_from_user_ll+0x16/0xe8
[ 549.382067] [<c01ee3a4>] probes_write+0x169/0x1b3
[ 549.382067] [<c01ee23b>] ? probes_write+0x0/0x1b3
[ 549.382067] [<c023b437>] vfs_write+0x12f/0x16f
[ 549.382067] [<c023b56c>] sys_write+0x56/0x78
[ 549.382067] [<c01266a4>] sysenter_do_call+0x12/0x32
[ 549.382067] <IRQ>
[ 549.382067] BUG: unable to handle kernel NULL pointer dereference at 00000f46
[ 549.382067] IP: [<c01250ec>] __show_regs+0x0/0x1fd
[ 549.382067] *pdpt = 000000000eae9001 *pde = 0000000000000000
[ 549.382067] Thread overran stack, or stack corrupted
[ 549.382067] Oops: 0000 [#13] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] ------------[ cut here ]------------
[ 549.382067] WARNING: at arch/x86/kernel/kprobes.c:499 kprobe_exceptions_notify+0x23f/0x662()
[ 549.382067] Hardware name: Deskpro EN Series
[ 549.382067] Modules linked in:
[ 549.382067] Pid: 3910, comm: kprobestest Tainted: G W 2.6.31-rc5-00546-g429839d #122
[ 549.382067] Call Trace:
[ 549.382067] [<c0165737>] warn_slowpath_common+0x93/0xc3
[ 549.382067] [<c0165779>] warn_slowpath_null+0x12/0x15
[ 549.382067] [<c067ab66>] kprobe_exceptions_notify+0x23f/0x662
[ 549.382067] [<c067bd2a>] notifier_call_chain+0x2b/0x7a
[ 549.382067] [<c067bdbc>] __atomic_notifier_call_chain+0x43/0xa9
[ 549.382067] [<c067bd79>] ? __atomic_notifier_call_chain+0x0/0xa9
[ 549.382067] [<c067be2e>] atomic_notifier_call_chain+0xc/0xe
[ 549.382067] [<c0193823>] notify_die+0x2d/0x2f
[ 549.382067] [<c067934d>] do_int3+0x1f/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c067007b>] ? pcwd_isa_probe+0x34e/0x662
[ 549.382067] [<c01265bd>] ? ret_from_exception+0x1/0x6
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c014aa83>] no_context+0x1cc/0x20b
[ 549.382067] [<c014ac89>] __bad_area_nosemaphore+0x1c7/0x1cf
[ 549.382067] [<c037c5a1>] ? _raw_spin_unlock+0xd0/0x10a
[ 549.382067] [<c01e3b42>] ? start_critical_timing+0x33/0x10c
[ 549.382067] [<c019ff31>] ? trace_hardirqs_off+0xb/0xd
[ 549.382067] [<c01e3b42>] ? start_critical_timing+0x33/0x10c
[ 549.382067] [<c019ff31>] ? trace_hardirqs_off+0xb/0xd
[ 549.382067] [<c019ff31>] ? trace_hardirqs_off+0xb/0xd
[ 549.382067] [<c067875f>] ? _spin_unlock_irqrestore+0x4a/0xa2
[ 549.382067] [<c01e3c59>] ? time_hardirqs_off+0x3e/0x41
[ 549.382067] [<c067a8c3>] ? kprobe_fault_handler+0x98/0xfc
[ 549.382067] [<c014aca3>] bad_area_nosemaphore+0x12/0x15
[ 549.382067] [<c067b66b>] do_page_fault+0x30c/0x6b8
[ 549.382067] [<c067b35f>] ? do_page_fault+0x0/0x6b8
[ 549.382067] [<c0678ffb>] error_code+0x63/0x68
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c0120000>] ? kvm_pit_reset+0x5e/0x66
[ 549.382067] [<c067b35f>] ? do_page_fault+0x0/0x6b8
[ 549.382067] [<c01250ec>] ? __show_regs+0x0/0x1fd
[ 549.382067] [<c01289f7>] dump_trace+0xe8/0x13d
[ 549.382067] [<c0129886>] show_trace_log_lvl+0x38/0x43
[ 549.382067] ---[ end trace 40c90e501f96d01d ]---
[ 549.382067] int3: 0000 [#14] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#15] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#16] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#17] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#18] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#19] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#20] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#21] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#22] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#23] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#24] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#25] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#26] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#27] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#28] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#29] PREEMPT DEBUG_PAGEALLOC<1>[ 549.382067] BUG: unable to handle kernel paging request at 59ad5ec0
[ 549.382067] IP: [<c01250ec>] __show_regs+0x0/0x1fd
[ 549.382067] *pdpt = 000000000ead9001 *pde = 0000000000000000
[ 549.382067] Thread overran stack, or stack corrupted
[ 549.382067] Oops: 0002 [#30] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] ------------[ cut here ]------------
[ 549.382067] WARNING: at arch/x86/kernel/kprobes.c:499 kprobe_exceptions_notify+0x23f/0x662()
[ 549.382067] Hardware name: Deskpro EN Series
[ 549.382067] Modules linked in:
[ 549.382067] Pid: 3910, comm: kprobestest Tainted: G W 2.6.31-rc5-00546-g429839d #122
[ 549.382067] Call Trace:
[ 549.382067] [<c0165737>] warn_slowpath_common+0x93/0xc3
[ 549.382067] [<c0165779>] warn_slowpath_null+0x12/0x15
[ 549.382067] [<c067ab66>] kprobe_exceptions_notify+0x23f/0x662
[ 549.382067] [<c01ddc29>] ? trace_current_buffer_lock_reserve+0x15/0x17
[ 549.382067] [<c067bd2a>] notifier_call_chain+0x2b/0x7a
[ 549.382067] [<c067bdbc>] __atomic_notifier_call_chain+0x43/0xa9
[ 549.382067] [<c067bd79>] ? __atomic_notifier_call_chain+0x0/0xa9
[ 549.382067] [<c067be2e>] atomic_notifier_call_chain+0xc/0xe
[ 549.382067] [<c0193823>] notify_die+0x2d/0x2f
[ 549.382067] [<c067934d>] do_int3+0x1f/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c067007b>] ? pcwd_isa_probe+0x34e/0x662
[ 549.382067] [<c01265bd>] ? ret_from_exception+0x1/0x6
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c014aa83>] no_context+0x1cc/0x20b
[ 549.382067] [<c014ac89>] __bad_area_nosemaphore+0x1c7/0x1cf
[ 549.382067] [<c03a15eb>] ? bit_clear+0x6c/0x75
[ 549.382067] [<c067a8c3>] ? kprobe_fault_handler+0x98/0xfc
[ 549.382067] [<c014aca3>] bad_area_nosemaphore+0x12/0x15
[ 549.382067] [<c067b66b>] do_page_fault+0x30c/0x6b8
[ 549.382067] [<c067b35f>] ? do_page_fault+0x0/0x6b8
[ 549.382067] [<c0678ffb>] error_code+0x63/0x68
[ 549.382067] ---[ end trace 40c90e501f96d01e ]---
[ 549.382067] int3: 0000 [#31] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#32] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#33] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#34] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#35] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#36] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#37] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#38] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#39] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#40] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#41] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#42] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#43] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#44] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#45] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#46] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#47] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] BUG: unable to handle kernel paging request at 2ec01930
[ 549.382067] IP: [<c01250ec>] __show_regs+0x0/0x1fd
[ 549.382067] *pdpt = 000000000eae9001 *pde = 0000000000000000
[ 549.382067] Thread overran stack, or stack corrupted
[ 549.382067] Oops: 0000 [#48] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] ------------[ cut here ]------------
[ 549.382067] WARNING: at arch/x86/kernel/kprobes.c:499 kprobe_exceptions_notify+0x23f/0x662()
[ 549.382067] Hardware name: Deskpro EN Series
[ 549.382067] Modules linked in:
[ 549.382067] Pid: 3910, comm: kprobestest Tainted: G W 2.6.31-rc5-00546-g429839d #122
[ 549.382067] Call Trace:
[ 549.382067] [<c0165737>] warn_slowpath_common+0x93/0xc3
[ 549.382067] [<c0165779>] warn_slowpath_null+0x12/0x15
[ 549.382067] [<c067ab66>] kprobe_exceptions_notify+0x23f/0x662
[ 549.382067] [<c01ddc29>] ? trace_current_buffer_lock_reserve+0x15/0x17
[ 549.382067] [<c067bd2a>] notifier_call_chain+0x2b/0x7a
[ 549.382067] [<c067bdbc>] __atomic_notifier_call_chain+0x43/0xa9
[ 549.382067] [<c067bd79>] ? __atomic_notifier_call_chain+0x0/0xa9
[ 549.382067] [<c067be2e>] atomic_notifier_call_chain+0xc/0xe
[ 549.382067] [<c0193823>] notify_die+0x2d/0x2f
[ 549.382067] [<c067934d>] do_int3+0x1f/0x6f
[ 549.382067] [<c067919a>] int3+0x2e/0x34
[ 549.382067] [<c067007b>] ? pcwd_isa_probe+0x34e/0x662
[ 549.382067] [<c01265bd>] ? ret_from_exception+0x1/0x6
[ 549.382067] [<c01a007b>] ? print_lock_dependencies+0xa6/0x1ab
[ 549.382067] [<c0128732>] ? show_registers+0x20/0x1fd
[ 549.382067] [<c0679bbf>] __die+0x92/0xf6
[ 549.382067] [<c014aa83>] no_context+0x1cc/0x20b
[ 549.382067] [<c014ac89>] __bad_area_nosemaphore+0x1c7/0x1cf
[ 549.382067] [<c067a8c3>] ? kprobe_fault_handler+0x98/0xfc
[ 549.382067] [<c014aca3>] bad_area_nosemaphore+0x12/0x15
[ 549.382067] [<c067b66b>] do_page_fault+0x30c/0x6b8
[ 549.382067] [<c067b35f>] ? do_page_fault+0x0/0x6b8
[ 549.382067] [<c0678ffb>] error_code+0x63/0x68
[ 549.382067] ---[ end trace 40c90e501f96d01f ]---
[ 549.382067] int3: 0000 [#49] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#50] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#51] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#52] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#53] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#54] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#55] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#56] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#57] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#58] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#59] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#60] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#61] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#62] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#63] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#64] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
[ 549.382067] Modules linked in:
[ 549.382067] int3: 0000 [#65] PREEMPT DEBUG_PAGEALLOC
[ 549.382067] last sysfs file: /sys/block/ram9/range
#
# Automatically generated make config: don't edit # Linux kernel version: 2.6.31-rc5
# Thu Aug 20 22:40:03 2009
#
# CONFIG_64BIT is not setCONFIG_X86_32=y
# CONFIG_X86_64 is not setCONFIG_X86=yCONFIG_OUTPUT_FORMAT="elf32-i386" CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig" CONFIG_GENERIC_TIME=yCONFIG_GENERIC_CMOS_UPDATE=y CONFIG_CLOCKSOURCE_WATCHDOG=y CONFIG_GENERIC_CLOCKEVENTS=y CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y CONFIG_LOCKDEP_SUPPORT=y CONFIG_STACKTRACE_SUPPORT=y CONFIG_HAVE_LATENCYTOP_SUPPORT=y CONFIG_FAST_CMPXCHG_LOCAL=yCONFIG_MMU=yCONFIG_ZONE_DMA=yCONFIG_GENERIC_ISA_DMA=yCONFIG_GENERIC_IOMAP=yCONFIG_GENERIC_BUG=yCONFIG_GENERIC_HWEIGHT=y CONFIG_ARCH_MAY_HAVE_PC_FDC=y
# CONFIG_RWSEM_GENERIC_SPINLOCK is not set CONFIG_RWSEM_XCHGADD_ALGORITHM=y CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y CONFIG_GENERIC_CALIBRATE_DELAY=y
# CONFIG_GENERIC_TIME_VSYSCALL is not set CONFIG_ARCH_HAS_CPU_RELAX=y CONFIG_ARCH_HAS_DEFAULT_IDLE=y CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y CONFIG_HAVE_SETUP_PER_CPU_AREA=y CONFIG_HAVE_DYNAMIC_PER_CPU_AREA=y
# CONFIG_HAVE_CPUMASK_OF_CPU_MAP is not set CONFIG_ARCH_HIBERNATION_POSSIBLE=y CONFIG_ARCH_SUSPEND_POSSIBLE=y
# CONFIG_ZONE_DMA32 is not set CONFIG_ARCH_POPULATES_NODE_MAP=y
# CONFIG_AUDIT_ARCH is not set CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y CONFIG_GENERIC_HARDIRQS=y CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y CONFIG_GENERIC_IRQ_PROBE=yCONFIG_X86_32_LAZY_GS=yCONFIG_KTIME_SCALAR=y CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" CONFIG_CONSTRUCTORS=y
#
# General setup
#CONFIG_EXPERIMENTAL=yCONFIG_BROKEN_ON_SMP=yCONFIG_LOCK_KERNEL=yCONFIG_INIT_ENV_ARG_LIMIT=32CONFIG_LOCALVERSION=""CONFIG_LOCALVERSION_AUTO=yCONFIG_HAVE_KERNEL_GZIP=yCONFIG_HAVE_KERNEL_BZIP2=yCONFIG_HAVE_KERNEL_LZMA=yCONFIG_KERNEL_GZIP=y
# CONFIG_KERNEL_BZIP2 is not set
# CONFIG_KERNEL_LZMA is not setCONFIG_SWAP=yCONFIG_SYSVIPC=yCONFIG_SYSVIPC_SYSCTL=yCONFIG_POSIX_MQUEUE=yCONFIG_POSIX_MQUEUE_SYSCTL=y
# CONFIG_BSD_PROCESS_ACCT is not set
# CONFIG_TASKSTATS is not setCONFIG_AUDIT=yCONFIG_AUDITSYSCALL=yCONFIG_AUDIT_TREE=y
#
# RCU Subsystem
#CONFIG_CLASSIC_RCU=y
# CONFIG_TREE_RCU is not set
# CONFIG_PREEMPT_RCU is not set
# CONFIG_TREE_RCU_TRACE is not set
# CONFIG_PREEMPT_RCU_TRACE is not setCONFIG_IKCONFIG=y
# CONFIG_IKCONFIG_PROC is not setCONFIG_LOG_BUF_SHIFT=21CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
# CONFIG_GROUP_SCHED is not setCONFIG_CGROUPS=y
# CONFIG_CGROUP_DEBUG is not setCONFIG_CGROUP_NS=yCONFIG_CGROUP_FREEZER=y
# CONFIG_CGROUP_DEVICE is not setCONFIG_CPUSETS=yCONFIG_PROC_PID_CPUSET=y
# CONFIG_CGROUP_CPUACCT is not set
# CONFIG_RESOURCE_COUNTERS is not setCONFIG_SYSFS_DEPRECATED=yCONFIG_SYSFS_DEPRECATED_V2=yCONFIG_RELAY=yCONFIG_NAMESPACES=yCONFIG_UTS_NS=yCONFIG_IPC_NS=yCONFIG_USER_NS=yCONFIG_PID_NS=yCONFIG_NET_NS=y
# CONFIG_BLK_DEV_INITRD is not setCONFIG_CC_OPTIMIZE_FOR_SIZE=yCONFIG_SYSCTL=yCONFIG_ANON_INODES=y
# CONFIG_EMBEDDED is not setCONFIG_UID16=yCONFIG_SYSCTL_SYSCALL=yCONFIG_KALLSYMS=yCONFIG_KALLSYMS_ALL=y
# CONFIG_KALLSYMS_EXTRA_PASS is not setCONFIG_HOTPLUG=yCONFIG_PRINTK=yCONFIG_BUG=yCONFIG_ELF_CORE=yCONFIG_PCSPKR_PLATFORM=yCONFIG_BASE_FULL=yCONFIG_FUTEX=yCONFIG_EPOLL=yCONFIG_SIGNALFD=yCONFIG_TIMERFD=yCONFIG_EVENTFD=yCONFIG_SHMEM=yCONFIG_AIO=yCONFIG_HAVE_PERF_COUNTERS=y
#
# Performance Counters
#CONFIG_PERF_COUNTERS=yCONFIG_EVENT_PROFILE=yCONFIG_VM_EVENT_COUNTERS=yCONFIG_PCI_QUIRKS=yCONFIG_SLUB_DEBUG=y
# CONFIG_STRIP_ASM_SYMS is not set
# CONFIG_COMPAT_BRK is not set
# CONFIG_SLAB is not setCONFIG_SLUB=y
# CONFIG_SLOB is not setCONFIG_PROFILING=yCONFIG_TRACEPOINTS=yCONFIG_MARKERS=y
# CONFIG_OPROFILE is not setCONFIG_HAVE_OPROFILE=yCONFIG_KPROBES=yCONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=yCONFIG_KRETPROBES=yCONFIG_HAVE_IOREMAP_PROT=yCONFIG_HAVE_KPROBES=yCONFIG_HAVE_KRETPROBES=yCONFIG_HAVE_ARCH_TRACEHOOK=yCONFIG_HAVE_DMA_ATTRS=yCONFIG_HAVE_DMA_API_DEBUG=y
#
# GCOV-based kernel profiling
#
# CONFIG_GCOV_KERNEL is not set
# CONFIG_SLOW_WORK is not setCONFIG_HAVE_GENERIC_DMA_COHERENT=yCONFIG_SLABINFO=yCONFIG_RT_MUTEXES=yCONFIG_BASE_SMALL=0CONFIG_MODULES=y
# CONFIG_MODULE_FORCE_LOAD is not set
# CONFIG_MODULE_UNLOAD is not set
# CONFIG_MODVERSIONS is not set
# CONFIG_MODULE_SRCVERSION_ALL is not setCONFIG_BLOCK=yCONFIG_LBDAF=yCONFIG_BLK_DEV_BSG=yCONFIG_BLK_DEV_INTEGRITY=y
#
# IO Schedulers
#CONFIG_IOSCHED_NOOP=y
# CONFIG_IOSCHED_AS is not set
# CONFIG_IOSCHED_DEADLINE is not setCONFIG_IOSCHED_CFQ=y
# CONFIG_DEFAULT_AS is not set
# CONFIG_DEFAULT_DEADLINE is not setCONFIG_DEFAULT_CFQ=y
# CONFIG_DEFAULT_NOOP is not setCONFIG_DEFAULT_IOSCHED="cfq"CONFIG_PREEMPT_NOTIFIERS=yCONFIG_FREEZER=y
#
# Processor type and features
#CONFIG_TICK_ONESHOT=yCONFIG_NO_HZ=yCONFIG_HIGH_RES_TIMERS=yCONFIG_GENERIC_CLOCKEVENTS_BUILD=y
# CONFIG_SMP is not setCONFIG_SPARSE_IRQ=yCONFIG_X86_MPPARSE=y
# CONFIG_X86_EXTENDED_PLATFORM is not set
# CONFIG_SCHED_OMIT_FRAME_POINTER is not set
# CONFIG_PARAVIRT_GUEST is not setCONFIG_MEMTEST=y
# CONFIG_M386 is not set
# CONFIG_M486 is not set
# CONFIG_M586 is not set
# CONFIG_M586TSC is not set
# CONFIG_M586MMX is not set
# CONFIG_M686 is not set
# CONFIG_MPENTIUMII is not setCONFIG_MPENTIUMIII=y
# CONFIG_MPENTIUMM is not set
# CONFIG_MPENTIUM4 is not set
# CONFIG_MK6 is not set
# CONFIG_MK7 is not set
# CONFIG_MK8 is not set
# CONFIG_MCRUSOE is not set
# CONFIG_MEFFICEON is not set
# CONFIG_MWINCHIPC6 is not set
# CONFIG_MWINCHIP3D is not set
# CONFIG_MGEODEGX1 is not set
# CONFIG_MGEODE_LX is not set
# CONFIG_MCYRIXIII is not set
# CONFIG_MVIAC3_2 is not set
# CONFIG_MVIAC7 is not set
# CONFIG_MPSC is not set
# CONFIG_MCORE2 is not set
# CONFIG_GENERIC_CPU is not set
# CONFIG_X86_GENERIC is not setCONFIG_X86_CPU=yCONFIG_X86_L1_CACHE_BYTES=64CONFIG_X86_INTERNODE_CACHE_BYTES=64CONFIG_X86_CMPXCHG=yCONFIG_X86_L1_CACHE_SHIFT=5CONFIG_X86_XADD=yCONFIG_X86_WP_WORKS_OK=yCONFIG_X86_INVLPG=yCONFIG_X86_BSWAP=yCONFIG_X86_POPAD_OK=yCONFIG_X86_INTEL_USERCOPY=yCONFIG_X86_USE_PPRO_CHECKSUM=yCONFIG_X86_TSC=yCONFIG_X86_CMPXCHG64=yCONFIG_X86_CMOV=yCONFIG_X86_MINIMUM_CPU_FAMILY=4CONFIG_X86_DEBUGCTLMSR=yCONFIG_CPU_SUP_INTEL=yCONFIG_CPU_SUP_CYRIX_32=yCONFIG_CPU_SUP_AMD=yCONFIG_CPU_SUP_CENTAUR=yCONFIG_CPU_SUP_TRANSMETA_32=yCONFIG_CPU_SUP_UMC_32=y
# CONFIG_X86_DS is not setCONFIG_HPET_TIMER=yCONFIG_HPET_EMULATE_RTC=yCONFIG_DMI=y
# CONFIG_IOMMU_HELPER is not set
# CONFIG_IOMMU_API is not setCONFIG_NR_CPUS=1
# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT_VOLUNTARY is not setCONFIG_PREEMPT=yCONFIG_X86_UP_APIC=yCONFIG_X86_UP_IOAPIC=yCONFIG_X86_LOCAL_APIC=yCONFIG_X86_IO_APIC=yCONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=yCONFIG_X86_MCE=y
# CONFIG_X86_OLD_MCE is not setCONFIG_X86_NEW_MCE=yCONFIG_X86_MCE_INTEL=yCONFIG_X86_MCE_AMD=y
# CONFIG_X86_ANCIENT_MCE is not setCONFIG_X86_MCE_THRESHOLD=y
# CONFIG_X86_MCE_INJECT is not setCONFIG_X86_THERMAL_VECTOR=yCONFIG_VM86=y
# CONFIG_TOSHIBA is not set
# CONFIG_I8K is not setCONFIG_X86_REBOOTFIXUPS=yCONFIG_MICROCODE=yCONFIG_MICROCODE_INTEL=yCONFIG_MICROCODE_AMD=yCONFIG_MICROCODE_OLD_INTERFACE=yCONFIG_X86_MSR=y
# CONFIG_X86_CPUID is not set
# CONFIG_X86_CPU_DEBUG is not set
# CONFIG_NOHIGHMEM is not set
# CONFIG_HIGHMEM4G is not setCONFIG_HIGHMEM64G=yCONFIG_PAGE_OFFSET=0xC0000000CONFIG_HIGHMEM=yCONFIG_X86_PAE=yCONFIG_ARCH_PHYS_ADDR_T_64BIT=yCONFIG_ARCH_FLATMEM_ENABLE=yCONFIG_ARCH_SPARSEMEM_ENABLE=yCONFIG_ARCH_SELECT_MEMORY_MODEL=yCONFIG_SELECT_MEMORY_MODEL=yCONFIG_FLATMEM_MANUAL=y
# CONFIG_DISCONTIGMEM_MANUAL is not set
# CONFIG_SPARSEMEM_MANUAL is not setCONFIG_FLATMEM=yCONFIG_FLAT_NODE_MEM_MAP=yCONFIG_SPARSEMEM_STATIC=yCONFIG_PAGEFLAGS_EXTENDED=yCONFIG_SPLIT_PTLOCK_CPUS=4CONFIG_PHYS_ADDR_T_64BIT=yCONFIG_ZONE_DMA_FLAG=1CONFIG_BOUNCE=yCONFIG_VIRT_TO_BUS=yCONFIG_HAVE_MLOCK=yCONFIG_HAVE_MLOCKED_PAGE_BIT=yCONFIG_MMU_NOTIFIER=yCONFIG_DEFAULT_MMAP_MIN_ADDR=4096CONFIG_HIGHPTE=y
# CONFIG_X86_CHECK_BIOS_CORRUPTION is not setCONFIG_X86_RESERVE_LOW_64K=yCONFIG_MATH_EMULATION=yCONFIG_MTRR=yCONFIG_MTRR_SANITIZER=yCONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=0CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1
# CONFIG_X86_PAT is not setCONFIG_EFI=yCONFIG_SECCOMP=y
# CONFIG_CC_STACKPROTECTOR is not set
# CONFIG_HZ_100 is not set
# CONFIG_HZ_250 is not set
# CONFIG_HZ_300 is not setCONFIG_HZ_1000=yCONFIG_HZ=1000CONFIG_SCHED_HRTICK=y
# CONFIG_KEXEC is not setCONFIG_CRASH_DUMP=yCONFIG_PHYSICAL_START=0x100000CONFIG_RELOCATABLE=yCONFIG_X86_NEED_RELOCS=yCONFIG_PHYSICAL_ALIGN=0x100000CONFIG_COMPAT_VDSO=yCONFIG_CMDLINE_BOOL=yCONFIG_CMDLINE=""
# CONFIG_CMDLINE_OVERRIDE is not setCONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
#
# Power management and ACPI options
#CONFIG_PM=yCONFIG_PM_DEBUG=yCONFIG_PM_VERBOSE=yCONFIG_CAN_PM_TRACE=yCONFIG_PM_TRACE=yCONFIG_PM_TRACE_RTC=yCONFIG_PM_SLEEP=yCONFIG_SUSPEND=y
# CONFIG_PM_TEST_SUSPEND is not setCONFIG_SUSPEND_FREEZER=y
# CONFIG_HIBERNATION is not setCONFIG_ACPI=yCONFIG_ACPI_SLEEP=yCONFIG_ACPI_PROCFS=yCONFIG_ACPI_PROCFS_POWER=yCONFIG_ACPI_SYSFS_POWER=y
# CONFIG_ACPI_PROC_EVENT is not setCONFIG_ACPI_AC=y
# CONFIG_ACPI_BATTERY is not setCONFIG_ACPI_BUTTON=yCONFIG_ACPI_VIDEO=yCONFIG_ACPI_FAN=yCONFIG_ACPI_DOCK=y
# CONFIG_ACPI_PROCESSOR is not set
# CONFIG_ACPI_CUSTOM_DSDT is not setCONFIG_ACPI_BLACKLIST_YEAR=0CONFIG_ACPI_DEBUG=yCONFIG_ACPI_DEBUG_FUNC_TRACE=yCONFIG_ACPI_PCI_SLOT=yCONFIG_X86_PM_TIMER=yCONFIG_ACPI_CONTAINER=yCONFIG_ACPI_SBS=yCONFIG_X86_APM_BOOT=yCONFIG_APM=yCONFIG_APM_IGNORE_USER_SUSPEND=yCONFIG_APM_DO_ENABLE=y
# CONFIG_APM_CPU_IDLE is not set
# CONFIG_APM_DISPLAY_BLANK is not set
# CONFIG_APM_ALLOW_INTS is not set
#
# CPU Frequency scaling
#CONFIG_CPU_FREQ=yCONFIG_CPU_FREQ_TABLE=y CONFIG_CPU_FREQ_DEBUG=y CONFIG_CPU_FREQ_STAT=y CONFIG_CPU_FREQ_STAT_DETAILS=y CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
# CONFIG_CPU_FREQ_GOV_USERSPACE is not set CONFIG_CPU_FREQ_GOV_ONDEMAND=y CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
#
# CPUFreq processor drivers
#CONFIG_X86_POWERNOW_K6=yCONFIG_X86_POWERNOW_K7=y
# CONFIG_X86_GX_SUSPMOD is not setCONFIG_X86_SPEEDSTEP_CENTRINO=yCONFIG_X86_SPEEDSTEP_CENTRINO_TABLE=yCONFIG_X86_SPEEDSTEP_ICH=y
# CONFIG_X86_SPEEDSTEP_SMI is not set
# CONFIG_X86_P4_CLOCKMOD is not setCONFIG_X86_CPUFREQ_NFORCE2=yCONFIG_X86_LONGRUN=yCONFIG_X86_E_POWERSAVER=y
#
# shared options # CONFIG_X86_SPEEDSTEP_LIB=y CONFIG_X86_SPEEDSTEP_RELAXED_CAP_CHECK=y CONFIG_CPU_IDLE=y CONFIG_CPU_IDLE_GOV_LADDER=y CONFIG_CPU_IDLE_GOV_MENU=y
#
# Bus options (PCI etc.)
#CONFIG_PCI=y
# CONFIG_PCI_GOBIOS is not set
# CONFIG_PCI_GOMMCONFIG is not set
# CONFIG_PCI_GODIRECT is not set
# CONFIG_PCI_GOOLPC is not setCONFIG_PCI_GOANY=yCONFIG_PCI_BIOS=yCONFIG_PCI_DIRECT=yCONFIG_PCI_MMCONFIG=yCONFIG_PCI_DOMAINS=y
# CONFIG_PCIEPORTBUS is not setCONFIG_ARCH_SUPPORTS_MSI=y
# CONFIG_PCI_MSI is not setCONFIG_PCI_LEGACY=y
# CONFIG_PCI_DEBUG is not setCONFIG_PCI_STUB=yCONFIG_HT_IRQ=y
# CONFIG_PCI_IOV is not setCONFIG_ISA_DMA_API=yCONFIG_ISA=yCONFIG_EISA=y
# CONFIG_EISA_VLB_PRIMING is not setCONFIG_EISA_PCI_EISA=yCONFIG_EISA_VIRTUAL_ROOT=yCONFIG_EISA_NAMES=y
# CONFIG_MCA is not set
# CONFIG_SCx200 is not set
# CONFIG_OLPC is not set
# CONFIG_PCCARD is not set
# CONFIG_HOTPLUG_PCI is not set
#
# Executable file formats / Emulations
#CONFIG_BINFMT_ELF=yCONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=yCONFIG_HAVE_AOUT=y
# CONFIG_BINFMT_AOUT is not set
# CONFIG_BINFMT_MISC is not setCONFIG_HAVE_ATOMIC_IOMAP=yCONFIG_NET=y
#
# Networking options
#CONFIG_PACKET=yCONFIG_PACKET_MMAP=yCONFIG_UNIX=yCONFIG_XFRM=yCONFIG_XFRM_USER=yCONFIG_XFRM_SUB_POLICY=yCONFIG_XFRM_MIGRATE=y
# CONFIG_XFRM_STATISTICS is not set
# CONFIG_NET_KEY is not setCONFIG_INET=y
# CONFIG_IP_MULTICAST is not setCONFIG_IP_ADVANCED_ROUTER=yCONFIG_ASK_IP_FIB_HASH=y
# CONFIG_IP_FIB_TRIE is not setCONFIG_IP_FIB_HASH=yCONFIG_IP_MULTIPLE_TABLES=yCONFIG_IP_ROUTE_MULTIPATH=yCONFIG_IP_ROUTE_VERBOSE=yCONFIG_IP_PNP=yCONFIG_IP_PNP_DHCP=yCONFIG_IP_PNP_BOOTP=yCONFIG_IP_PNP_RARP=yCONFIG_NET_IPIP=yCONFIG_NET_IPGRE=yCONFIG_ARPD=y
# CONFIG_SYN_COOKIES is not setCONFIG_INET_AH=yCONFIG_INET_ESP=y
# CONFIG_INET_IPCOMP is not set
# CONFIG_INET_XFRM_TUNNEL is not setCONFIG_INET_TUNNEL=yCONFIG_INET_XFRM_MODE_TRANSPORT=y
# CONFIG_INET_XFRM_MODE_TUNNEL is not setCONFIG_INET_XFRM_MODE_BEET=yCONFIG_INET_LRO=yCONFIG_INET_DIAG=yCONFIG_INET_TCP_DIAG=yCONFIG_TCP_CONG_ADVANCED=yCONFIG_TCP_CONG_BIC=yCONFIG_TCP_CONG_CUBIC=y
# CONFIG_TCP_CONG_WESTWOOD is not setCONFIG_TCP_CONG_HTCP=yCONFIG_TCP_CONG_HSTCP=yCONFIG_TCP_CONG_HYBLA=yCONFIG_TCP_CONG_VEGAS=yCONFIG_TCP_CONG_SCALABLE=yCONFIG_TCP_CONG_LP=y
# CONFIG_TCP_CONG_VENO is not setCONFIG_TCP_CONG_YEAH=yCONFIG_TCP_CONG_ILLINOIS=y
# CONFIG_DEFAULT_BIC is not setCONFIG_DEFAULT_CUBIC=y
# CONFIG_DEFAULT_HTCP is not set
# CONFIG_DEFAULT_VEGAS is not set
# CONFIG_DEFAULT_WESTWOOD is not set
# CONFIG_DEFAULT_RENO is not setCONFIG_DEFAULT_TCP_CONG="cubic"CONFIG_TCP_MD5SIG=y
# CONFIG_IPV6 is not setCONFIG_NETLABEL=yCONFIG_NETWORK_SECMARK=y
# CONFIG_NETFILTER is not set
# CONFIG_IP_DCCP is not setCONFIG_IP_SCTP=yCONFIG_SCTP_DBG_MSG=yCONFIG_SCTP_DBG_OBJCNT=y
# CONFIG_SCTP_HMAC_NONE is not set
# CONFIG_SCTP_HMAC_SHA1 is not setCONFIG_SCTP_HMAC_MD5=y
# CONFIG_TIPC is not set
# CONFIG_ATM is not set
# CONFIG_BRIDGE is not set
# CONFIG_NET_DSA is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
# CONFIG_LLC2 is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
# CONFIG_PHONET is not set
# CONFIG_IEEE802154 is not set
# CONFIG_NET_SCHED is not set
# CONFIG_DCB is not set
#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_NET_TCPPROBE is not set
# CONFIG_NET_DROP_MONITOR is not set
# CONFIG_HAMRADIO is not set
# CONFIG_CAN is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
# CONFIG_AF_RXRPC is not setCONFIG_FIB_RULES=y
# CONFIG_WIRELESS is not set
# CONFIG_WIMAX is not setCONFIG_RFKILL=yCONFIG_RFKILL_LEDS=yCONFIG_RFKILL_INPUT=y
# CONFIG_NET_9P is not set
#
# Device Drivers
#
#
# Generic Driver Options
#CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"CONFIG_STANDALONE=yCONFIG_PREVENT_FIRMWARE_BUILD=yCONFIG_FW_LOADER=yCONFIG_FIRMWARE_IN_KERNEL=yCONFIG_EXTRA_FIRMWARE=""
# CONFIG_DEBUG_DRIVER is not setCONFIG_DEBUG_DEVRES=y
# CONFIG_SYS_HYPERVISOR is not set
# CONFIG_CONNECTOR is not set
# CONFIG_MTD is not set
# CONFIG_PARPORT is not setCONFIG_PNP=yCONFIG_PNP_DEBUG_MESSAGES=y
#
# Protocols
#CONFIG_ISAPNP=y
# CONFIG_PNPBIOS is not setCONFIG_PNPACPI=yCONFIG_BLK_DEV=y
# CONFIG_BLK_DEV_FD is not set
# CONFIG_BLK_DEV_XD is not set
# CONFIG_BLK_CPQ_DA is not set
# CONFIG_BLK_CPQ_CISS_DA is not set
# CONFIG_BLK_DEV_DAC960 is not set
# CONFIG_BLK_DEV_UMEM is not set
# CONFIG_BLK_DEV_COW_COMMON is not setCONFIG_BLK_DEV_LOOP=y
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
# CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_SX8 is not setCONFIG_BLK_DEV_RAM=yCONFIG_BLK_DEV_RAM_COUNT=16CONFIG_BLK_DEV_RAM_SIZE=4096CONFIG_BLK_DEV_XIP=y
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
# CONFIG_VIRTIO_BLK is not setCONFIG_BLK_DEV_HD=y
# CONFIG_MISC_DEVICES is not setCONFIG_HAVE_IDE=yCONFIG_IDE=y
#
# Please see Documentation/ide/ide.txt for help/info on IDE drives #CONFIG_IDE_XFER_MODE=y
# CONFIG_BLK_DEV_IDE_SATA is not setCONFIG_IDE_GD=yCONFIG_IDE_GD_ATA=y
# CONFIG_IDE_GD_ATAPI is not set
# CONFIG_BLK_DEV_IDECD is not set
# CONFIG_BLK_DEV_IDETAPE is not set
# CONFIG_BLK_DEV_IDEACPI is not set
# CONFIG_IDE_TASK_IOCTL is not setCONFIG_IDE_PROC_FS=y
#
# IDE chipset support/bugfixes
#
# CONFIG_IDE_GENERIC is not set
# CONFIG_BLK_DEV_PLATFORM is not set
# CONFIG_BLK_DEV_CMD640 is not set
# CONFIG_BLK_DEV_IDEPNP is not setCONFIG_BLK_DEV_IDEDMA_SFF=y
#
# PCI IDE chipsets support
#CONFIG_BLK_DEV_IDEPCI=yCONFIG_IDEPCI_PCIBUS_ORDER=y
# CONFIG_BLK_DEV_GENERIC is not set
# CONFIG_BLK_DEV_OPTI621 is not set
# CONFIG_BLK_DEV_RZ1000 is not setCONFIG_BLK_DEV_IDEDMA_PCI=y
# CONFIG_BLK_DEV_AEC62XX is not set
# CONFIG_BLK_DEV_ALI15X3 is not set
# CONFIG_BLK_DEV_AMD74XX is not set
# CONFIG_BLK_DEV_ATIIXP is not set
# CONFIG_BLK_DEV_CMD64X is not set
# CONFIG_BLK_DEV_TRIFLEX is not set
# CONFIG_BLK_DEV_CS5520 is not set
# CONFIG_BLK_DEV_CS5530 is not set
# CONFIG_BLK_DEV_CS5535 is not set
# CONFIG_BLK_DEV_CS5536 is not set
# CONFIG_BLK_DEV_HPT366 is not set
# CONFIG_BLK_DEV_JMICRON is not set
# CONFIG_BLK_DEV_SC1200 is not setCONFIG_BLK_DEV_PIIX=y
# CONFIG_BLK_DEV_IT8172 is not set
# CONFIG_BLK_DEV_IT8213 is not set
# CONFIG_BLK_DEV_IT821X is not set
# CONFIG_BLK_DEV_NS87415 is not set
# CONFIG_BLK_DEV_PDC202XX_OLD is not set
# CONFIG_BLK_DEV_PDC202XX_NEW is not set
# CONFIG_BLK_DEV_SVWKS is not set
# CONFIG_BLK_DEV_SIIMAGE is not set
# CONFIG_BLK_DEV_SIS5513 is not set
# CONFIG_BLK_DEV_SLC90E66 is not set
# CONFIG_BLK_DEV_TRM290 is not set
# CONFIG_BLK_DEV_VIA82CXXX is not set
# CONFIG_BLK_DEV_TC86C001 is not set
#
# Other IDE chipsets support
#
#
# Note: most of these also require special kernel boot parameters #
# CONFIG_BLK_DEV_4DRIVES is not set
# CONFIG_BLK_DEV_ALI14XX is not set
# CONFIG_BLK_DEV_DTC2278 is not set
# CONFIG_BLK_DEV_HT6560B is not set
# CONFIG_BLK_DEV_QD65XX is not set
# CONFIG_BLK_DEV_UMC8672 is not set CONFIG_BLK_DEV_IDEDMA=y
#
# SCSI device support
#CONFIG_RAID_ATTRS=yCONFIG_SCSI=yCONFIG_SCSI_DMA=y
# CONFIG_SCSI_TGT is not setCONFIG_SCSI_NETLINK=yCONFIG_SCSI_PROC_FS=y
#
# SCSI support type (disk, tape, CD-ROM)
#CONFIG_BLK_DEV_SD=yCONFIG_CHR_DEV_ST=y
# CONFIG_CHR_DEV_OSST is not setCONFIG_BLK_DEV_SR=y
# CONFIG_BLK_DEV_SR_VENDOR is not setCONFIG_CHR_DEV_SG=yCONFIG_CHR_DEV_SCH=yCONFIG_SCSI_MULTI_LUN=yCONFIG_SCSI_CONSTANTS=y
# CONFIG_SCSI_LOGGING is not setCONFIG_SCSI_SCAN_ASYNC=yCONFIG_SCSI_WAIT_SCAN=m
#
# SCSI Transports
#CONFIG_SCSI_SPI_ATTRS=yCONFIG_SCSI_FC_ATTRS=y
# CONFIG_SCSI_ISCSI_ATTRS is not setCONFIG_SCSI_SAS_ATTRS=yCONFIG_SCSI_SAS_LIBSAS=y
# CONFIG_SCSI_SAS_HOST_SMP is not setCONFIG_SCSI_SAS_LIBSAS_DEBUG=yCONFIG_SCSI_SRP_ATTRS=y
# CONFIG_SCSI_LOWLEVEL is not setCONFIG_SCSI_DH=yCONFIG_SCSI_DH_RDAC=yCONFIG_SCSI_DH_HP_SW=yCONFIG_SCSI_DH_EMC=yCONFIG_SCSI_DH_ALUA=y
# CONFIG_SCSI_OSD_INITIATOR is not set
# CONFIG_ATA is not set
# CONFIG_MD is not set
# CONFIG_FUSION is not set
#
# IEEE 1394 (FireWire) support
#
#
# You can enable one or both FireWire driver stacks. #
#
# See the help texts for more information. #
# CONFIG_FIREWIRE is not set
# CONFIG_IEEE1394 is not set
# CONFIG_I2O is not set
# CONFIG_MACINTOSH_DRIVERS is not set CONFIG_NETDEVICES=y
# CONFIG_DUMMY is not set
# CONFIG_BONDING is not set
# CONFIG_MACVLAN is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
# CONFIG_VETH is not set
# CONFIG_NET_SB1000 is not set
# CONFIG_ARCNET is not set
# CONFIG_PHYLIB is not set CONFIG_NET_ETHERNET=yCONFIG_MII=y
# CONFIG_HAPPYMEAL is not set
# CONFIG_SUNGEM is not set
# CONFIG_CASSINI is not set
# CONFIG_NET_VENDOR_3COM is not set
# CONFIG_LANCE is not set
# CONFIG_NET_VENDOR_SMC is not set
# CONFIG_ETHOC is not set
# CONFIG_NET_VENDOR_RACAL is not set
# CONFIG_DNET is not set
# CONFIG_NET_TULIP is not set
# CONFIG_AT1700 is not set
# CONFIG_DEPCA is not set
# CONFIG_HP100 is not set
# CONFIG_NET_ISA is not set
# CONFIG_IBM_NEW_EMAC_ZMII is not set
# CONFIG_IBM_NEW_EMAC_RGMII is not set
# CONFIG_IBM_NEW_EMAC_TAH is not set
# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set # CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set # CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set # CONFIG_NET_PCI is not set
# CONFIG_B44 is not set
# CONFIG_CS89x0 is not set
# CONFIG_KS8842 is not set
# CONFIG_ATL2 is not set
# CONFIG_NETDEV_1000 is not set
# CONFIG_NETDEV_10000 is not set
# CONFIG_TR is not set
#
# Wireless LAN
#
# CONFIG_WLAN_PRE80211 is not set
# CONFIG_WLAN_80211 is not set
#
# Enable WiMAX (Networking options) to see the WiMAX drivers #
# CONFIG_WAN is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
# CONFIG_NET_FC is not set
# CONFIG_NETCONSOLE is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
# CONFIG_VIRTIO_NET is not set
# CONFIG_ISDN is not set
# CONFIG_PHONE is not set
#
# Input device support
#CONFIG_INPUT=y
# CONFIG_INPUT_FF_MEMLESS is not setCONFIG_INPUT_POLLDEV=y
#
# Userland interfaces
#CONFIG_INPUT_MOUSEDEV=y
# CONFIG_INPUT_MOUSEDEV_PSAUX is not setCONFIG_INPUT_MOUSEDEV_SCREEN_X=1024CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
# CONFIG_INPUT_JOYDEV is not setCONFIG_INPUT_EVDEV=y
# CONFIG_INPUT_EVBUG is not set
#
# Input Device Drivers
#CONFIG_INPUT_KEYBOARD=yCONFIG_KEYBOARD_ATKBD=yCONFIG_KEYBOARD_LKKBD=y
# CONFIG_KEYBOARD_LM8323 is not setCONFIG_KEYBOARD_NEWTON=yCONFIG_KEYBOARD_STOWAWAY=y
# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_INPUT_MOUSE is not set
# CONFIG_INPUT_JOYSTICK is not setCONFIG_INPUT_TABLET=y
# CONFIG_INPUT_TOUCHSCREEN is not setCONFIG_INPUT_MISC=yCONFIG_INPUT_PCSPKR=y
# CONFIG_INPUT_APANEL is not setCONFIG_INPUT_WISTRON_BTNS=yCONFIG_INPUT_ATLAS_BTNS=yCONFIG_INPUT_UINPUT=y
#
# Hardware I/O ports
#CONFIG_SERIO=yCONFIG_SERIO_I8042=y
# CONFIG_SERIO_SERPORT is not set
# CONFIG_SERIO_CT82C710 is not setCONFIG_SERIO_PCIPS2=yCONFIG_SERIO_LIBPS2=y
# CONFIG_SERIO_RAW is not setCONFIG_GAMEPORT=y
# CONFIG_GAMEPORT_NS558 is not setCONFIG_GAMEPORT_L4=yCONFIG_GAMEPORT_EMU10K1=yCONFIG_GAMEPORT_FM801=y
#
# Character devices
#CONFIG_VT=yCONFIG_CONSOLE_TRANSLATIONS=yCONFIG_VT_CONSOLE=yCONFIG_HW_CONSOLE=y
# CONFIG_VT_HW_CONSOLE_BINDING is not setCONFIG_DEVKMEM=y
# CONFIG_SERIAL_NONSTANDARD is not set
# CONFIG_NOZOMI is not set
#
# Serial drivers
#
# CONFIG_SERIAL_8250 is not setCONFIG_FIX_EARLYCON_MEM=y
#
# Non-8250 serial port support
#
# CONFIG_SERIAL_JSM is not setCONFIG_UNIX98_PTYS=y
# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
# CONFIG_LEGACY_PTYS is not set
# CONFIG_VIRTIO_CONSOLE is not setCONFIG_IPMI_HANDLER=y
# CONFIG_IPMI_PANIC_EVENT is not setCONFIG_IPMI_DEVICE_INTERFACE=yCONFIG_IPMI_SI=y
# CONFIG_IPMI_WATCHDOG is not setCONFIG_IPMI_POWEROFF=yCONFIG_HW_RANDOM=y
# CONFIG_HW_RANDOM_TIMERIOMEM is not setCONFIG_HW_RANDOM_INTEL=y
# CONFIG_HW_RANDOM_AMD is not setCONFIG_HW_RANDOM_GEODE=y
# CONFIG_HW_RANDOM_VIA is not set
# CONFIG_HW_RANDOM_VIRTIO is not set
# CONFIG_NVRAM is not setCONFIG_DTLK=y
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
# CONFIG_SONYPI is not set
# CONFIG_MWAVE is not set
# CONFIG_PC8736x_GPIO is not set
# CONFIG_NSC_GPIO is not set
# CONFIG_CS5535_GPIO is not setCONFIG_RAW_DRIVER=yCONFIG_MAX_RAW_DEVS=256CONFIG_HPET=yCONFIG_HPET_MMAP=y
# CONFIG_HANGCHECK_TIMER is not set
# CONFIG_TCG_TPM is not set
# CONFIG_TELCLOCK is not setCONFIG_DEVPORT=yCONFIG_I2C=yCONFIG_I2C_BOARDINFO=yCONFIG_I2C_CHARDEV=y
# CONFIG_I2C_HELPER_AUTO is not set
#
# I2C Algorithms
#CONFIG_I2C_ALGOBIT=yCONFIG_I2C_ALGOPCF=yCONFIG_I2C_ALGOPCA=y
#
# I2C Hardware Bus support
#
#
# PC SMBus host controller drivers
#CONFIG_I2C_ALI1535=y
# CONFIG_I2C_ALI1563 is not setCONFIG_I2C_ALI15X3=yCONFIG_I2C_AMD756=y
# CONFIG_I2C_AMD756_S4882 is not set
# CONFIG_I2C_AMD8111 is not set
# CONFIG_I2C_I801 is not setCONFIG_I2C_ISCH=y
# CONFIG_I2C_PIIX4 is not setCONFIG_I2C_NFORCE2=y
# CONFIG_I2C_NFORCE2_S4985 is not setCONFIG_I2C_SIS5595=y
# CONFIG_I2C_SIS630 is not setCONFIG_I2C_SIS96X=yCONFIG_I2C_VIA=y
# CONFIG_I2C_VIAPRO is not set
#
# I2C system bus drivers (mostly embedded / system-on-chip) #CONFIG_I2C_OCORES=yCONFIG_I2C_SIMTEC=y
#
# External I2C/SMBus adapter drivers
#CONFIG_I2C_PARPORT_LIGHT=y
# CONFIG_I2C_TAOS_EVM is not set
#
# Graphics adapter I2C/DDC channel drivers
#
# CONFIG_I2C_VOODOO3 is not set
#
# Other I2C/SMBus bus drivers
#
# CONFIG_I2C_ELEKTOR is not set
# CONFIG_I2C_PCA_ISA is not setCONFIG_I2C_PCA_PLATFORM=y
# CONFIG_I2C_STUB is not set
CONFIG_SCx200_ACB=y
#
# Miscellaneous I2C Chip support
#
# CONFIG_DS1682 is not setCONFIG_SENSORS_PCF8574=y
# CONFIG_PCF8575 is not setCONFIG_SENSORS_PCA9539=y
# CONFIG_SENSORS_TSL2550 is not setCONFIG_I2C_DEBUG_CORE=yCONFIG_I2C_DEBUG_ALGO=yCONFIG_I2C_DEBUG_BUS=yCONFIG_I2C_DEBUG_CHIP=y
# CONFIG_SPI is not set
#
# PPS support
#
# CONFIG_PPS is not setCONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
# CONFIG_GPIOLIB is not set
# CONFIG_W1 is not setCONFIG_POWER_SUPPLY=y
# CONFIG_POWER_SUPPLY_DEBUG is not setCONFIG_PDA_POWER=y
# CONFIG_BATTERY_DS2760 is not set
# CONFIG_BATTERY_DS2782 is not set
CONFIG_BATTERY_BQ27x00=y
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_HWMON is not setCONFIG_THERMAL=yCONFIG_WATCHDOG=y
# CONFIG_WATCHDOG_NOWAYOUT is not set
#
# Watchdog Device Drivers
#CONFIG_SOFT_WATCHDOG=yCONFIG_ACQUIRE_WDT=yCONFIG_ADVANTECH_WDT=yCONFIG_ALIM1535_WDT=yCONFIG_ALIM7101_WDT=yCONFIG_SC520_WDT=yCONFIG_EUROTECH_WDT=yCONFIG_IB700_WDT=yCONFIG_IBMASR=yCONFIG_WAFER_WDT=yCONFIG_I6300ESB_WDT=yCONFIG_ITCO_WDT=yCONFIG_ITCO_VENDOR_SUPPORT=yCONFIG_IT8712F_WDT=yCONFIG_IT87_WDT=yCONFIG_HP_WATCHDOG=yCONFIG_SC1200_WDT=yCONFIG_PC87413_WDT=yCONFIG_60XX_WDT=yCONFIG_SBC8360_WDT=yCONFIG_SBC7240_WDT=yCONFIG_CPU5_WDT=yCONFIG_SMSC_SCH311X_WDT=yCONFIG_SMSC37B787_WDT=yCONFIG_W83627HF_WDT=yCONFIG_W83697HF_WDT=yCONFIG_W83697UG_WDT=yCONFIG_W83877F_WDT=yCONFIG_W83977F_WDT=yCONFIG_MACHZ_WDT=yCONFIG_SBC_EPX_C3_WATCHDOG=y
#
# ISA-based Watchdog Cards
#CONFIG_PCWATCHDOG=yCONFIG_MIXCOMWD=yCONFIG_WDT=y
#
# PCI-based Watchdog Cards
#CONFIG_PCIPCWATCHDOG=yCONFIG_WDTPCI=yCONFIG_SSB_POSSIBLE=y
#
# Sonics Silicon Backplane
#
# CONFIG_SSB is not set
#
# Multifunction device drivers
#
# CONFIG_MFD_CORE is not set
# CONFIG_MFD_SM501 is not set
# CONFIG_HTC_PASIC3 is not set
# CONFIG_TWL4030_CORE is not set
# CONFIG_MFD_TMIO is not set
# CONFIG_PMIC_DA903X is not set
# CONFIG_MFD_WM8400 is not set
# CONFIG_MFD_WM8350_I2C is not set
# CONFIG_MFD_PCF50633 is not set
# CONFIG_AB3100_CORE is not set
# CONFIG_REGULATOR is not set
# CONFIG_MEDIA_SUPPORT is not set
#
# Graphics support
#
# CONFIG_AGP is not setCONFIG_DRM=yCONFIG_DRM_TDFX=y
# CONFIG_DRM_R128 is not setCONFIG_DRM_RADEON=y
# CONFIG_DRM_MGA is not setCONFIG_DRM_VIA=y
# CONFIG_DRM_SAVAGE is not setCONFIG_VGASTATE=yCONFIG_VIDEO_OUTPUT_CONTROL=yCONFIG_FB=yCONFIG_FIRMWARE_EDID=yCONFIG_FB_DDC=yCONFIG_FB_BOOT_VESA_SUPPORT=yCONFIG_FB_CFB_FILLRECT=yCONFIG_FB_CFB_COPYAREA=yCONFIG_FB_CFB_IMAGEBLIT=y
# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not setCONFIG_FB_SYS_FILLRECT=yCONFIG_FB_SYS_COPYAREA=yCONFIG_FB_SYS_IMAGEBLIT=yCONFIG_FB_FOREIGN_ENDIAN=yCONFIG_FB_BOTH_ENDIAN=y
# CONFIG_FB_BIG_ENDIAN is not set
# CONFIG_FB_LITTLE_ENDIAN is not setCONFIG_FB_SYS_FOPS=yCONFIG_FB_DEFERRED_IO=yCONFIG_FB_SVGALIB=y
# CONFIG_FB_MACMODES is not setCONFIG_FB_BACKLIGHT=yCONFIG_FB_MODE_HELPERS=yCONFIG_FB_TILEBLITTING=y
#
# Frame buffer hardware drivers
#
# CONFIG_FB_CIRRUS is not setCONFIG_FB_PM2=yCONFIG_FB_PM2_FIFO_DISCONNECT=yCONFIG_FB_CYBER2000=y
# CONFIG_FB_ARC is not set
# CONFIG_FB_ASILIANT is not setCONFIG_FB_IMSTT=y
# CONFIG_FB_VGA16 is not set
# CONFIG_FB_VESA is not setCONFIG_FB_EFI=y
# CONFIG_FB_N411 is not set
# CONFIG_FB_HGA is not setCONFIG_FB_S1D13XXX=yCONFIG_FB_NVIDIA=yCONFIG_FB_NVIDIA_I2C=y
# CONFIG_FB_NVIDIA_DEBUG is not setCONFIG_FB_NVIDIA_BACKLIGHT=yCONFIG_FB_RIVA=yCONFIG_FB_RIVA_I2C=y
# CONFIG_FB_RIVA_DEBUG is not setCONFIG_FB_RIVA_BACKLIGHT=y
# CONFIG_FB_LE80578 is not setCONFIG_FB_MATROX=y
# CONFIG_FB_MATROX_MILLENIUM is not set
# CONFIG_FB_MATROX_MYSTIQUE is not setCONFIG_FB_MATROX_G=yCONFIG_FB_MATROX_I2C=yCONFIG_FB_MATROX_MAVEN=yCONFIG_FB_MATROX_MULTIHEAD=y
# CONFIG_FB_RADEON is not set
# CONFIG_FB_ATY128 is not setCONFIG_FB_ATY=yCONFIG_FB_ATY_CT=yCONFIG_FB_ATY_GENERIC_LCD=yCONFIG_FB_ATY_GX=yCONFIG_FB_ATY_BACKLIGHT=yCONFIG_FB_S3=yCONFIG_FB_SAVAGE=yCONFIG_FB_SAVAGE_I2C=yCONFIG_FB_SAVAGE_ACCEL=yCONFIG_FB_SIS=y
# CONFIG_FB_SIS_300 is not setCONFIG_FB_SIS_315=y
# CONFIG_FB_VIA is not setCONFIG_FB_NEOMAGIC=yCONFIG_FB_KYRO=y
# CONFIG_FB_3DFX is not setCONFIG_FB_VOODOO1=y
# CONFIG_FB_VT8623 is not setCONFIG_FB_TRIDENT=yCONFIG_FB_ARK=yCONFIG_FB_PM3=y
# CONFIG_FB_CARMINE is not setCONFIG_FB_GEODE=y
# CONFIG_FB_GEODE_LX is not setCONFIG_FB_GEODE_GX=yCONFIG_FB_GEODE_GX1=y
# CONFIG_FB_VIRTUAL is not setCONFIG_FB_METRONOME=yCONFIG_FB_MB862XX=y
# CONFIG_FB_MB862XX_PCI_GDC is not set
# CONFIG_FB_BROADSHEET is not setCONFIG_BACKLIGHT_LCD_SUPPORT=yCONFIG_LCD_CLASS_DEVICE=y
# CONFIG_LCD_ILI9320 is not setCONFIG_LCD_PLATFORM=yCONFIG_BACKLIGHT_CLASS_DEVICE=yCONFIG_BACKLIGHT_GENERIC=y
# CONFIG_BACKLIGHT_PROGEAR is not setCONFIG_BACKLIGHT_MBP_NVIDIA=yCONFIG_BACKLIGHT_SAHARA=y
#
# Display device support
#CONFIG_DISPLAY_SUPPORT=y
#
# Display hardware drivers
#
#
# Console display driver support
#CONFIG_VGA_CONSOLE=y CONFIG_VGACON_SOFT_SCROLLBACK=y CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=64
# CONFIG_MDA_CONSOLE is not set CONFIG_DUMMY_CONSOLE=y CONFIG_FRAMEBUFFER_CONSOLE=y
# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set # CONFIG_FONTS is not set
CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=y
# CONFIG_LOGO is not set
# CONFIG_SOUND is not set
# CONFIG_HID_SUPPORT is not set
# CONFIG_USB_SUPPORT is not set
# CONFIG_UWB is not set
# CONFIG_MMC is not set
# CONFIG_MEMSTICK is not set CONFIG_NEW_LEDS=yCONFIG_LEDS_CLASS=y
#
# LED drivers
#
# CONFIG_LEDS_ALIX2 is not setCONFIG_LEDS_PCA9532=y
# CONFIG_LEDS_LP3944 is not set
# CONFIG_LEDS_CLEVO_MAIL is not set
# CONFIG_LEDS_PCA955X is not set
# CONFIG_LEDS_BD2802 is not set
#
# LED Triggers
#CONFIG_LEDS_TRIGGERS=y
# CONFIG_LEDS_TRIGGER_TIMER is not set
# CONFIG_LEDS_TRIGGER_IDE_DISK is not setCONFIG_LEDS_TRIGGER_HEARTBEAT=y
# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set
#
# iptables trigger is under Netfilter config (LED target) # # CONFIG_ACCESSIBILITY is not set # CONFIG_INFINIBAND is not set # CONFIG_EDAC is not set CONFIG_RTC_LIB=y CONFIG_RTC_CLASS=y CONFIG_RTC_HCTOSYS=y CONFIG_RTC_HCTOSYS_DEVICE="rtc0" # CONFIG_RTC_DEBUG is not set
#
# RTC interfaces
#CONFIG_RTC_INTF_SYSFS=yCONFIG_RTC_INTF_PROC=yCONFIG_RTC_INTF_DEV=y
# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
# CONFIG_RTC_DRV_TEST is not set
#
# I2C RTC drivers
#
# CONFIG_RTC_DRV_DS1307 is not set
# CONFIG_RTC_DRV_DS1374 is not set
# CONFIG_RTC_DRV_DS1672 is not set
# CONFIG_RTC_DRV_MAX6900 is not set
# CONFIG_RTC_DRV_RS5C372 is not set
# CONFIG_RTC_DRV_ISL1208 is not set
# CONFIG_RTC_DRV_X1205 is not set
# CONFIG_RTC_DRV_PCF8563 is not set
# CONFIG_RTC_DRV_PCF8583 is not set
# CONFIG_RTC_DRV_M41T80 is not set
# CONFIG_RTC_DRV_S35390A is not set
# CONFIG_RTC_DRV_FM3130 is not set
# CONFIG_RTC_DRV_RX8581 is not set
# CONFIG_RTC_DRV_RX8025 is not set
#
# SPI RTC drivers
#
#
# Platform RTC drivers
#CONFIG_RTC_DRV_CMOS=y
# CONFIG_RTC_DRV_DS1286 is not set
# CONFIG_RTC_DRV_DS1511 is not set
# CONFIG_RTC_DRV_DS1553 is not set
# CONFIG_RTC_DRV_DS1742 is not set
# CONFIG_RTC_DRV_STK17TA8 is not set
# CONFIG_RTC_DRV_M48T86 is not set
# CONFIG_RTC_DRV_M48T35 is not set
# CONFIG_RTC_DRV_M48T59 is not set
# CONFIG_RTC_DRV_BQ4802 is not set
# CONFIG_RTC_DRV_V3020 is not set
#
# on-CPU RTC drivers
#CONFIG_DMADEVICES=y
#
# DMA Devices
#CONFIG_INTEL_IOATDMA=yCONFIG_DMA_ENGINE=y
#
# DMA Clients
#CONFIG_NET_DMA=y
# CONFIG_DMATEST is not setCONFIG_DCA=y
# CONFIG_AUXDISPLAY is not set
# CONFIG_UIO is not set
#
# TI VLYNQ
#
# CONFIG_STAGING is not set
# CONFIG_X86_PLATFORM_DEVICES is not set
#
# Firmware Drivers
#
# CONFIG_EDD is not setCONFIG_FIRMWARE_MEMMAP=yCONFIG_EFI_VARS=yCONFIG_DELL_RBU=y
# CONFIG_DCDBAS is not setCONFIG_DMIID=yCONFIG_ISCSI_IBFT_FIND=y
# CONFIG_ISCSI_IBFT is not set
#
# File systems
#
# CONFIG_EXT2_FS is not setCONFIG_EXT3_FS=y
# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not setCONFIG_EXT3_FS_XATTR=yCONFIG_EXT3_FS_POSIX_ACL=yCONFIG_EXT3_FS_SECURITY=y
# CONFIG_EXT4_FS is not setCONFIG_JBD=y
# CONFIG_JBD_DEBUG is not setCONFIG_FS_MBCACHE=yCONFIG_REISERFS_FS=yCONFIG_REISERFS_CHECK=y
# CONFIG_REISERFS_PROC_INFO is not setCONFIG_REISERFS_FS_XATTR=yCONFIG_REISERFS_FS_POSIX_ACL=yCONFIG_REISERFS_FS_SECURITY=y
# CONFIG_JFS_FS is not setCONFIG_FS_POSIX_ACL=y
# CONFIG_XFS_FS is not set
# CONFIG_GFS2_FS is not set
# CONFIG_OCFS2_FS is not set
# CONFIG_BTRFS_FS is not setCONFIG_FILE_LOCKING=yCONFIG_FSNOTIFY=yCONFIG_DNOTIFY=yCONFIG_INOTIFY=yCONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not setCONFIG_AUTOFS_FS=y
# CONFIG_AUTOFS4_FS is not set
# CONFIG_FUSE_FS is not set
#
# Caches
#
# CONFIG_FSCACHE is not set
#
# CD-ROM/DVD Filesystems
#
# CONFIG_ISO9660_FS is not set
# CONFIG_UDF_FS is not set
#
# DOS/FAT/NT Filesystems
#
# CONFIG_MSDOS_FS is not set
# CONFIG_VFAT_FS is not set
# CONFIG_NTFS_FS is not set
#
# Pseudo filesystems
#CONFIG_PROC_FS=yCONFIG_PROC_KCORE=yCONFIG_PROC_VMCORE=yCONFIG_PROC_SYSCTL=yCONFIG_PROC_PAGE_MONITOR=yCONFIG_SYSFS=yCONFIG_TMPFS=y
# CONFIG_TMPFS_POSIX_ACL is not set
# CONFIG_HUGETLBFS is not set
# CONFIG_HUGETLB_PAGE is not setCONFIG_CONFIGFS_FS=yCONFIG_MISC_FILESYSTEMS=y
# CONFIG_ADFS_FS is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_HFSPLUS_FS is not set
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not setCONFIG_CRAMFS=y
# CONFIG_SQUASHFS is not set
# CONFIG_VXFS_FS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_OMFS_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not setCONFIG_ROMFS_FS=yCONFIG_ROMFS_BACKED_BY_BLOCK=y
# CONFIG_ROMFS_BACKED_BY_MTD is not set
# CONFIG_ROMFS_BACKED_BY_BOTH is not setCONFIG_ROMFS_ON_BLOCK=y
# CONFIG_SYSV_FS is not set
# CONFIG_UFS_FS is not set
# CONFIG_NILFS2_FS is not set
# CONFIG_NETWORK_FILESYSTEMS is not set
#
# Partition Types
#CONFIG_PARTITION_ADVANCED=yCONFIG_ACORN_PARTITION=yCONFIG_ACORN_PARTITION_CUMANA=y
# CONFIG_ACORN_PARTITION_EESOX is not setCONFIG_ACORN_PARTITION_ICS=yCONFIG_ACORN_PARTITION_ADFS=y
# CONFIG_ACORN_PARTITION_POWERTEC is not set
# CONFIG_ACORN_PARTITION_RISCIX is not set
# CONFIG_OSF_PARTITION is not setCONFIG_AMIGA_PARTITION=yCONFIG_ATARI_PARTITION=yCONFIG_MAC_PARTITION=yCONFIG_MSDOS_PARTITION=yCONFIG_BSD_DISKLABEL=yCONFIG_MINIX_SUBPARTITION=yCONFIG_SOLARIS_X86_PARTITION=y
# CONFIG_UNIXWARE_DISKLABEL is not setCONFIG_LDM_PARTITION=yCONFIG_LDM_DEBUG=yCONFIG_SGI_PARTITION=y
# CONFIG_ULTRIX_PARTITION is not set
# CONFIG_SUN_PARTITION is not setCONFIG_KARMA_PARTITION=yCONFIG_EFI_PARTITION=yCONFIG_SYSV68_PARTITION=yCONFIG_NLS=yCONFIG_NLS_DEFAULT="iso8859-1"CONFIG_NLS_CODEPAGE_437=y
# CONFIG_NLS_CODEPAGE_737 is not set
# CONFIG_NLS_CODEPAGE_775 is not setCONFIG_NLS_CODEPAGE_850=y
# CONFIG_NLS_CODEPAGE_852 is not set
# CONFIG_NLS_CODEPAGE_855 is not set
# CONFIG_NLS_CODEPAGE_857 is not set
# CONFIG_NLS_CODEPAGE_860 is not set
# CONFIG_NLS_CODEPAGE_861 is not set
# CONFIG_NLS_CODEPAGE_862 is not set
# CONFIG_NLS_CODEPAGE_863 is not set
# CONFIG_NLS_CODEPAGE_864 is not set
# CONFIG_NLS_CODEPAGE_865 is not set
# CONFIG_NLS_CODEPAGE_866 is not set
# CONFIG_NLS_CODEPAGE_869 is not set
# CONFIG_NLS_CODEPAGE_936 is not set
# CONFIG_NLS_CODEPAGE_950 is not set
# CONFIG_NLS_CODEPAGE_932 is not set
# CONFIG_NLS_CODEPAGE_949 is not set
# CONFIG_NLS_CODEPAGE_874 is not setCONFIG_NLS_ISO8859_8=y
# CONFIG_NLS_CODEPAGE_1250 is not set
# CONFIG_NLS_CODEPAGE_1251 is not setCONFIG_NLS_ASCII=yCONFIG_NLS_ISO8859_1=y
# CONFIG_NLS_ISO8859_2 is not set
# CONFIG_NLS_ISO8859_3 is not set
# CONFIG_NLS_ISO8859_4 is not set
# CONFIG_NLS_ISO8859_5 is not set
# CONFIG_NLS_ISO8859_6 is not set
# CONFIG_NLS_ISO8859_7 is not set
# CONFIG_NLS_ISO8859_9 is not set
# CONFIG_NLS_ISO8859_13 is not set
# CONFIG_NLS_ISO8859_14 is not set
# CONFIG_NLS_ISO8859_15 is not set
# CONFIG_NLS_KOI8_R is not set
# CONFIG_NLS_KOI8_U is not setCONFIG_NLS_UTF8=y
# CONFIG_DLM is not set
#
# Kernel hacking
#CONFIG_TRACE_IRQFLAGS_SUPPORT=yCONFIG_PRINTK_TIME=y
# CONFIG_ENABLE_WARN_DEPRECATED is not setCONFIG_ENABLE_MUST_CHECK=yCONFIG_FRAME_WARN=1024CONFIG_MAGIC_SYSRQ=y
# CONFIG_UNUSED_SYMBOLS is not setCONFIG_DEBUG_FS=yCONFIG_HEADERS_CHECK=yCONFIG_DEBUG_KERNEL=yCONFIG_DEBUG_SHIRQ=yCONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not setCONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0CONFIG_DETECT_HUNG_TASK=y
# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not setCONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0CONFIG_SCHED_DEBUG=yCONFIG_SCHEDSTATS=yCONFIG_TIMER_STATS=y
# CONFIG_DEBUG_OBJECTS is not setCONFIG_SLUB_DEBUG_ON=y
# CONFIG_SLUB_STATS is not set
# CONFIG_DEBUG_KMEMLEAK is not setCONFIG_DEBUG_PREEMPT=yCONFIG_DEBUG_RT_MUTEXES=yCONFIG_DEBUG_PI_LIST=yCONFIG_RT_MUTEX_TESTER=yCONFIG_DEBUG_SPINLOCK=yCONFIG_DEBUG_MUTEXES=yCONFIG_DEBUG_LOCK_ALLOC=yCONFIG_PROVE_LOCKING=yCONFIG_LOCKDEP=y
# CONFIG_LOCK_STAT is not set
# CONFIG_DEBUG_LOCKDEP is not setCONFIG_TRACE_IRQFLAGS=yCONFIG_DEBUG_SPINLOCK_SLEEP=y
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not setCONFIG_STACKTRACE=y
# CONFIG_DEBUG_KOBJECT is not setCONFIG_DEBUG_HIGHMEM=yCONFIG_DEBUG_BUGVERBOSE=yCONFIG_DEBUG_INFO=y
# CONFIG_DEBUG_VM is not setCONFIG_DEBUG_VIRTUAL=yCONFIG_DEBUG_WRITECOUNT=yCONFIG_DEBUG_MEMORY_INIT=yCONFIG_DEBUG_LIST=yCONFIG_DEBUG_SG=y
# CONFIG_DEBUG_NOTIFIERS is not setCONFIG_ARCH_WANT_FRAME_POINTERS=yCONFIG_FRAME_POINTER=yCONFIG_BOOT_PRINTK_DELAY=y
# CONFIG_RCU_TORTURE_TEST is not setCONFIG_RCU_CPU_STALL_DETECTOR=y
# CONFIG_KPROBES_SANITY_TEST is not set
# CONFIG_BACKTRACE_SELF_TEST is not set
# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
# CONFIG_LKDTM is not set
# CONFIG_FAULT_INJECTION is not setCONFIG_LATENCYTOP=y
# CONFIG_SYSCTL_SYSCALL_CHECK is not setCONFIG_DEBUG_PAGEALLOC=yCONFIG_USER_STACKTRACE_SUPPORT=yCONFIG_NOP_TRACER=yCONFIG_HAVE_FTRACE_NMI_ENTER=yCONFIG_HAVE_FUNCTION_TRACER=yCONFIG_HAVE_FUNCTION_GRAPH_TRACER=yCONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=yCONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=yCONFIG_HAVE_DYNAMIC_FTRACE=yCONFIG_HAVE_FTRACE_MCOUNT_RECORD=yCONFIG_HAVE_FTRACE_SYSCALLS=yCONFIG_TRACER_MAX_TRACE=yCONFIG_RING_BUFFER=yCONFIG_FTRACE_NMI_ENTER=yCONFIG_EVENT_TRACING=yCONFIG_CONTEXT_SWITCH_TRACER=yCONFIG_TRACING=yCONFIG_GENERIC_TRACER=yCONFIG_TRACING_SUPPORT=yCONFIG_FTRACE=yCONFIG_FUNCTION_TRACER=yCONFIG_IRQSOFF_TRACER=y
# CONFIG_PREEMPT_TRACER is not set
# CONFIG_SYSPROF_TRACER is not setCONFIG_SCHED_TRACER=yCONFIG_FTRACE_SYSCALLS=y
# CONFIG_BOOT_TRACER is not setCONFIG_TRACE_BRANCH_PROFILING=y
# CONFIG_BRANCH_PROFILE_NONE is not set
# CONFIG_PROFILE_ANNOTATED_BRANCHES is not setCONFIG_PROFILE_ALL_BRANCHES=y
# CONFIG_BRANCH_TRACER is not setCONFIG_POWER_TRACER=yCONFIG_STACK_TRACER=y
# CONFIG_KMEMTRACE is not set
# CONFIG_WORKQUEUE_TRACER is not set
# CONFIG_BLK_DEV_IO_TRACE is not setCONFIG_KPROBE_TRACER=yCONFIG_DYNAMIC_FTRACE=y
# CONFIG_FUNCTION_PROFILER is not setCONFIG_FTRACE_MCOUNT_RECORD=yCONFIG_FTRACE_SELFTEST=yCONFIG_FTRACE_STARTUP_TEST=y
# CONFIG_MMIOTRACE is not set
# CONFIG_RING_BUFFER_BENCHMARK is not setCONFIG_PROVIDE_OHCI1394_DMA_INIT=yCONFIG_BUILD_DOCSRC=y
# CONFIG_DYNAMIC_DEBUG is not set
# CONFIG_DMA_API_DEBUG is not set
# CONFIG_SAMPLES is not setCONFIG_HAVE_ARCH_KGDB=y
# CONFIG_KGDB is not setCONFIG_HAVE_ARCH_KMEMCHECK=y
# CONFIG_STRICT_DEVMEM is not set
# CONFIG_X86_VERBOSE_BOOTUP is not setCONFIG_EARLY_PRINTK=y
# CONFIG_EARLY_PRINTK_DBGP is not set
# CONFIG_DEBUG_STACKOVERFLOW is not setCONFIG_DEBUG_STACK_USAGE=yCONFIG_X86_PTDUMP=yCONFIG_DEBUG_RODATA=y
# CONFIG_DEBUG_RODATA_TEST is not set
# CONFIG_DEBUG_NX_TEST is not setCONFIG_4KSTACKS=yCONFIG_DOUBLEFAULT=y
# CONFIG_IOMMU_STRESS is not setCONFIG_HAVE_MMIOTRACE_SUPPORT=y
# CONFIG_X86_DECODER_SELFTEST is not setCONFIG_IO_DELAY_TYPE_0X80=0CONFIG_IO_DELAY_TYPE_0XED=1CONFIG_IO_DELAY_TYPE_UDELAY=2CONFIG_IO_DELAY_TYPE_NONE=3CONFIG_IO_DELAY_0X80=y
# CONFIG_IO_DELAY_0XED is not set
# CONFIG_IO_DELAY_UDELAY is not set
# CONFIG_IO_DELAY_NONE is not setCONFIG_DEFAULT_IO_DELAY_TYPE=0CONFIG_DEBUG_BOOT_PARAMS=yCONFIG_CPA_DEBUG=yCONFIG_OPTIMIZE_INLINING=y
#
# Security options
#
# CONFIG_KEYS is not setCONFIG_SECURITY=y
# CONFIG_SECURITYFS is not setCONFIG_SECURITY_NETWORK=yCONFIG_SECURITY_NETWORK_XFRM=yCONFIG_SECURITY_PATH=y
# CONFIG_SECURITY_FILE_CAPABILITIES is not set
# CONFIG_SECURITY_SELINUX is not set
# CONFIG_SECURITY_SMACK is not set
# CONFIG_SECURITY_TOMOYO is not set
# CONFIG_IMA is not setCONFIG_CRYPTO=y
#
# Crypto core or helper
#CONFIG_CRYPTO_FIPS=yCONFIG_CRYPTO_ALGAPI=yCONFIG_CRYPTO_ALGAPI2=yCONFIG_CRYPTO_AEAD=yCONFIG_CRYPTO_AEAD2=yCONFIG_CRYPTO_BLKCIPHER=yCONFIG_CRYPTO_BLKCIPHER2=yCONFIG_CRYPTO_HASH=yCONFIG_CRYPTO_HASH2=yCONFIG_CRYPTO_RNG=yCONFIG_CRYPTO_RNG2=yCONFIG_CRYPTO_PCOMP=yCONFIG_CRYPTO_MANAGER=yCONFIG_CRYPTO_MANAGER2=yCONFIG_CRYPTO_GF128MUL=y
# CONFIG_CRYPTO_NULL is not setCONFIG_CRYPTO_WORKQUEUE=yCONFIG_CRYPTO_CRYPTD=yCONFIG_CRYPTO_AUTHENC=y
# CONFIG_CRYPTO_TEST is not set
#
# Authenticated Encryption with Associated Data
#CONFIG_CRYPTO_CCM=yCONFIG_CRYPTO_GCM=yCONFIG_CRYPTO_SEQIV=y
#
# Block modes
#CONFIG_CRYPTO_CBC=yCONFIG_CRYPTO_CTR=yCONFIG_CRYPTO_CTS=yCONFIG_CRYPTO_ECB=y
# CONFIG_CRYPTO_LRW is not set
# CONFIG_CRYPTO_PCBC is not set
# CONFIG_CRYPTO_XTS is not set
#
# Hash modes
#CONFIG_CRYPTO_HMAC=y
# CONFIG_CRYPTO_XCBC is not set
#
# Digest
#CONFIG_CRYPTO_CRC32C=yCONFIG_CRYPTO_CRC32C_INTEL=y
# CONFIG_CRYPTO_MD4 is not setCONFIG_CRYPTO_MD5=yCONFIG_CRYPTO_MICHAEL_MIC=yCONFIG_CRYPTO_RMD128=y
# CONFIG_CRYPTO_RMD160 is not setCONFIG_CRYPTO_RMD256=yCONFIG_CRYPTO_RMD320=yCONFIG_CRYPTO_SHA1=y
# CONFIG_CRYPTO_SHA256 is not set
# CONFIG_CRYPTO_SHA512 is not setCONFIG_CRYPTO_TGR192=yCONFIG_CRYPTO_WP512=y
#
# Ciphers
#CONFIG_CRYPTO_AES=y
# CONFIG_CRYPTO_AES_586 is not setCONFIG_CRYPTO_ANUBIS=yCONFIG_CRYPTO_ARC4=yCONFIG_CRYPTO_BLOWFISH=y
# CONFIG_CRYPTO_CAMELLIA is not setCONFIG_CRYPTO_CAST5=yCONFIG_CRYPTO_CAST6=yCONFIG_CRYPTO_DES=yCONFIG_CRYPTO_FCRYPT=yCONFIG_CRYPTO_KHAZAD=yCONFIG_CRYPTO_SALSA20=yCONFIG_CRYPTO_SALSA20_586=yCONFIG_CRYPTO_SEED=yCONFIG_CRYPTO_SERPENT=yCONFIG_CRYPTO_TEA=y
# CONFIG_CRYPTO_TWOFISH is not setCONFIG_CRYPTO_TWOFISH_COMMON=yCONFIG_CRYPTO_TWOFISH_586=y
#
# Compression
#
# CONFIG_CRYPTO_DEFLATE is not set
# CONFIG_CRYPTO_ZLIB is not set
# CONFIG_CRYPTO_LZO is not set
#
# Random Number Generation
#
# CONFIG_CRYPTO_ANSI_CPRNG is not set
# CONFIG_CRYPTO_HW is not setCONFIG_HAVE_KVM=yCONFIG_HAVE_KVM_IRQCHIP=yCONFIG_VIRTUALIZATION=yCONFIG_KVM=y
# CONFIG_KVM_INTEL is not setCONFIG_KVM_AMD=yCONFIG_KVM_TRACE=y
# CONFIG_LGUEST is not setCONFIG_VIRTIO=yCONFIG_VIRTIO_RING=y
# CONFIG_VIRTIO_PCI is not setCONFIG_VIRTIO_BALLOON=yCONFIG_BINARY_PRINTF=y
#
# Library routines
#CONFIG_BITREVERSE=yCONFIG_GENERIC_FIND_FIRST_BIT=yCONFIG_GENERIC_FIND_NEXT_BIT=yCONFIG_GENERIC_FIND_LAST_BIT=yCONFIG_CRC_CCITT=yCONFIG_CRC16=yCONFIG_CRC_T10DIF=yCONFIG_CRC_ITU_T=yCONFIG_CRC32=y
# CONFIG_CRC7 is not setCONFIG_LIBCRC32C=yCONFIG_AUDIT_GENERIC=yCONFIG_ZLIB_INFLATE=yCONFIG_HAS_IOMEM=yCONFIG_HAS_IOPORT=yCONFIG_HAS_DMA=yCONFIG_CHECK_SIGNATURE=yCONFIG_NLATTR=y
Re: [TOOL] kprobestest : Kprobe stress test tool
Quoted 10 lines · Frederic Weisbecker
Quoted 3 lines
Most of them can be fixed just by adding
__kprobes. Some of them which are already in the another section, kprobes should check the symbols are in the section.You mean the blacklist?
I also fear that putting bad kprobed functions into the kprobe section or into the blacklist may hide some kprobe internal bugs.
Quoted 8 lines
Doing so is indeed mandatory for functions that trigger tracing recursion of things like that, but what if kprobe has an internal bug that only triggers while probe a certain class of function.
Ie: it would be nice to identify the reason of the crash for each culprit in these lists.
That may even help to find the others in advance.
Indeed, actually I've found some bugs while making jump-optimization patches by using this stress test.
But some of them are obviously what we just forget to add __kprobes, since those will be called from kprobes int3 handling functions.
And also, many lock-related code has been changed. I think kprobes should use raw_*_lock, or prohibit to probe lock monitoring functions like lockdep, because it will cause recursive call.
Quoted 6 lines
Also kprobes seems to be a very fragile feature (that's what this selftest unearthes at least for me).
And it really needs a recursion detection that stops every kprobing while reaching a given threshold of recursion. Something that would dump the stack and the falling kprobe structure.
Hmm, kprobes already has recursion detection(kp->nmiss), so maybe, we can check it.
Quoted 21 lines
That would avoid such hard lockups and also help to identify the dangerous symbols to probe.
Quoted 15 lines
Quoted 7 lines
The problem is that I don't have any serial line in this box then I can't catch any crash log.
My K7 testbox also died in my arms this afternoon.But I still have two other testboxes (one P2 and one P3), hopefully I could reproduce the problem in these boxes in which I can connect a serial line.
Thank you for helping me to find it!
Quoted 5 lines
I've pushed your patches in the following git tree:
git://git.kernel.org/pub/scm/linux/kernel/git/fgrederic/random-tracing.git\
tracing/kprobes
Quoted 8 lines
Quoted 3 lines
Quoted 1 line
So you can send patches on top of this one.
Great! I've found another trivial bugs, so I'll fix those on it.
Cool :)
Btw, here is the result of your stress test in a PIII (attaching the log and the config).
Thanks, I'll check that.
Thank you,
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
PATCH 1/4 x86: Fix x86 instruction decoder selftest to check only .text
In reply to Frederic WeisbeckerFix x86 instruction decoder selftest to check only .text because other sections (e.g. .notes) will have random bytes which don't need to be checked.
---
arch/x86/tools/Makefile | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
arch/x86/tools/Makefile +1 -1
@@ -1,6 +1,6 @@ PHONY += posttest quiet_cmd_posttest = TEST $@ - cmd_posttest = $(OBJDUMP) -d $(objtree)/vmlinux | awk -f $(srctree)/arch/x86/tools/distill.awk | $(obj)/test_get_len + cmd_posttest = $(OBJDUMP) -d -j .text $(objtree)/vmlinux | awk -f $(srctree)/arch/x86/tools/distill.awk | $(obj)/test_get_len posttest: $(obj)/test_get_len vmlinux $(call cmd,posttest)
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
Re: [PATCH tracing/kprobes 1/4] x86: Fix x86 instruction decoder selftest to check only .text
Quoted 2 lines · Masami Hiramatsu
Fix x86 instruction decoder selftest to check only .text because other sections (e.g. .notes) will have random bytes which don't need to be checked.
Applied these 4 patches in
git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing.git \
tracing/kprobes
Thanks!
PATCH 2/4 x86: Check awk features before generating inat-tables.c
In reply to Frederic WeisbeckerCheck some awk features which old mawk doesn't support.
---
arch/x86/tools/gen-insn-attr-x86.awk | 20 ++++++++++++++++++++ 1 files changed, 20 insertions(+), 0 deletions(-)
arch/x86/tools/gen-insn-attr-x86.awk +20 -0
@@ -4,7 +4,25 @@ # # Usage: awk -f gen-insn-attr-x86.awk x86-opcode-map.txt > inat-tables.c +# Awk implementation sanity check +function check_awk_implement() { + if (!match("abc", "[[:lower:]]+")) + return "Your awk doesn't support charactor-class." + if (sprintf("%x", 0) != "0") + return "Your awk has a printf-format problem." + return "" +} + BEGIN { + # Implementation error checking + awkchecked = check_awk_implement() + if (awkchecked != "") { + print "Error: " awkchecked > "/dev/stderr" + print "Please try to use gawk." > "/dev/stderr" + exit 1 + } + + # Setup generating tables print "/* x86 opcode map generated from x86-opcode-map.txt */" print "/* Do not change this code. */" ggid = 1
@@ -293,6 +311,8 @@ function convert_operands(opnd, i,imm,mod) } END { + if (awkchecked != "") + exit 1 # print escape opcode map's array print "/* Escape opcode map array */" print "const insn_attr_t const *inat_escape_tables[INAT_ESC_MAX + 1]" \
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
PATCH 3/4 tracing/kprobes: Fix format typo in trace_kprobes
In reply to Frederic WeisbeckerFix a format typo in kprobe-tracer.
Currently, it shows 'tsize' in format;
$ cat /debug/tracing/events/kprobes/event/format
...
field: unsigned long ip; offset:16;tsize:8;
field: int nargs; offset:24;tsize:4;
...This should be '\tsize';
$ cat /debug/tracing/events/kprobes/event/format
...
field: unsigned long ip; offset:16; size:8;
field: int nargs; offset:24; size:4;
...---
kernel/trace/trace_kprobe.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
kernel/trace/trace_kprobe.c +1 -1
@@ -1069,7 +1069,7 @@ static int __probe_event_show_format(struct trace_seq *s,#define SHOW_FIELD (type, item, name) \ do { \ ret = trace_seq_printf(s, "\tfield: " #type " %s;\t" \ - "offset:%u;tsize:%u;\n", name, \ + "offset:%u;\tsize:%u;\n", name, \ (unsigned int)offsetof(typeof(field), item),\ (unsigned int)sizeof(type)); \ if (!ret) \
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
PATCH 4/4 tracing/kprobes: Change trace_arg to probe_arg
In reply to Frederic WeisbeckerChange trace_arg_string() and parse_trace_arg() to probe_arg_string() and parse_probe_arg(), since those are kprobe-tracer local functions.
---
kernel/trace/trace_kprobe.c | 18 +++++++++--------- 1 files changed, 9 insertions(+), 9 deletions(-)
kernel/trace/trace_kprobe.c +9 -9
@@ -220,7 +220,7 @@ static __kprobes void *probe_address(struct trace_probe *tp)return (probe_is_return (tp)) ? tp->rp.kp.addr : tp->kp.addr; } -static int trace_arg_string (char *buf,size_t n,struct fetch_func *ff) +static int probe_arg_string (char *buf,size_t n,struct fetch_func *ff) {int ret = -EINVAL ;
@@ -250,7 +250,7 @@ static int trace_arg_string(char *buf, size_t n, struct fetch_func *ff)if (ret >= n) goto end; l += ret; - ret =trace_arg_string (buf + l, n - l, &id->orig); + ret =probe_arg_string (buf + l, n - l, &id->orig);if (ret <0 ) goto end; l += ret;
@@ -408,7 +408,7 @@ static int split_symbol_offset(char *symbol, long *offset)#define PARAM_MAX_ARGS 16#define PARAM_MAX_STACK (THREAD_SIZE / sizeof(unsigned long)) -static int parse_trace_arg (char *arg,struct fetch_func *ff,int is_return) +static int parse_probe_arg (char *arg,struct fetch_func *ff,int is_return) {int ret =0 ;unsigned long param;
@@ -499,7 +499,7 @@ static int parse_trace_arg(char *arg, struct fetch_func *ff, int is_return)if (!id)return -ENOMEM ; id->offset = offset; - ret =parse_trace_arg (arg, &id->orig, is_return); + ret =parse_probe_arg (arg, &id->orig, is_return);if (ret)kfree (id);else {
@@ -617,7 +617,7 @@ static int create_trace_probe(int argc, char **argv) ret = -ENOSPC ; goto error; } - ret =parse_trace_arg (argv[i], &tp->args[i], is_return); + ret =parse_probe_arg (argv[i], &tp->args[i], is_return);if (ret) goto error; }
@@ -680,7 +680,7 @@ static int probes_seq_show(struct seq_file *m, void *v)seq_printf (m," 0x%p" ,probe_address (tp));for (i =0 ; i < tp->nr_args; i++) { - ret =trace_arg_string (buf,MAX_ARGSTR_LEN , &tp->args[i]); + ret =probe_arg_string (buf,MAX_ARGSTR_LEN , &tp->args[i]);if (ret <0 ) {pr_warning ("Argument%d decoding error(%d).\n" , i, ret);return ret;
@@ -996,7 +996,7 @@ static int kprobe_event_define_fields(struct ftrace_event_call *event_call)sprintf (buf,"arg%d" , i); DEFINE_FIELD(unsigned long, args[i], buf, 0);/* Set argument string as an alias field */ - ret =trace_arg_string (buf,MAX_ARGSTR_LEN , &tp->args[i]); + ret =probe_arg_string (buf,MAX_ARGSTR_LEN , &tp->args[i]);if (ret <0 )return ret; DEFINE_FIELD(unsigned long, args[i], buf, 0);
@@ -1023,7 +1023,7 @@ static int kretprobe_event_define_fields(struct ftrace_event_call *event_call)sprintf (buf,"arg%d" , i); DEFINE_FIELD(unsigned long, args[i], buf, 0);/* Set argument string as an alias field */ - ret =trace_arg_string (buf,MAX_ARGSTR_LEN , &tp->args[i]); + ret =probe_arg_string (buf,MAX_ARGSTR_LEN , &tp->args[i]);if (ret <0 )return ret; DEFINE_FIELD(unsigned long, args[i], buf, 0);
@@ -1040,7 +1040,7 @@ static int __probe_event_show_format(struct trace_seq *s,/* Show aliases */ for (i = 0; i < tp->nr_args; i++) { - ret = trace_arg_string(buf, MAX_ARGSTR_LEN, &tp->args[i]); + ret = probe_arg_string(buf, MAX_ARGSTR_LEN, &tp->args[i]); if (ret < 0) return ret; if (!trace_seq_printf(s, "\talias: %s;\toriginal: arg%d;\n",
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
[TOOL] c2kpe: C expression to kprobe event format converter
In reply to Masami HiramatsuThis program converts probe point in C expression to kprobe event format for kprobe-based event tracer. This helps to define kprobes events by C source line number or function name, and local variable name. Currently, this supports only x86(32/64) kernels.
Compile
--------
Before compilation, please install libelf and libdwarf development packages.
(e.g. elfutils-libelf-devel and libdwarf-devel on Fedora)
$ gcc -Wall -lelf -ldwarf c2kpe.c -o c2kpe
Synopsis
--------
$ c2kpe [options] FUNCTION[+OFFS][@SRC] [VAR [VAR ...]] or $ c2kpe [options] @SRC:LINE [VAR [VAR ...]]
FUNCTION: Probing function name.
OFFS: Offset in bytes.
SRC: Source file path.
LINE: Line number
VAR: Local variable name.
options:
-r KREL Kernel release version (e.g. 2.6.31-rc5)
-m DEBUGINFO Dwarf-format binary file (vmlinux or kmodule)
Example
-------
$ c2kpe sys_read fd buf count sys_read+0 %di %si %dx
$ c2kpe @mm/filemap.c:339 inode pos sync_page_range+125 -48(%bp) %r14
Example with kprobe-tracer
--------------------------
Since C expression may be converted multiple results, I recommend to use readline.
$ c2kpe sys_read fd buf count | while read i; do \ echo "p $i" > $DEBUGFS/tracing/kprobe_events ;\ done
Note
----
- This requires a kernel compiled with CONFIG_DEBUG_INFO.
- Specifying @SRC speeds up c2kpe, because we can skip CUs which don't include specified SRC file.
- c2kpe doesn't check whether the offset byte is correctly on the instruction boundary. I recommend you to use @SRC:LINE expression for tracing function body.
- This tool doesn't search kmodule file. You need to specify kmodule file if you want to probe it.
TODO
----
- Fix bugs.
- Support multiple probepoints from stdin.
- Better kmodule support.
- Use elfutils-libdw?
- Merge into trace-cmd or perf-tools?
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
/*
* c2kpe : C expression to kprobe event converter
*
* Written by Masami Hiramatsu <[email protected]>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
*/
#include <sys/utsname.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <stdio.h>
#include <unistd.h>
#include <getopt.h>
#include <stdlib.h>
#include <string.h>
#include <libdwarf/dwarf.h>
#include <libdwarf/libdwarf.h>
/* Default vmlinux search paths */
#define NR_SEARCH_PATH 2
const char *default_search_path[NR_SEARCH_PATH] = {
"/lib/modules/%s/build/vmlinux", /* Custom build kernel */
"/usr/lib/debug/lib/modules/%s/vmlinux", /* Red Hat debuginfo */
};
#define _stringify(n) #n
#define stringify(n) _stringify(n)
#ifdef DEBUG
#define debug(fmt ...) \
fprintf(stderr, "DBG(" __FILE__ ":" stringify(__LINE__) "): " fmt)#else
#define debug(fmt ...) do {} while (0)
#endif
#define ERR_IF(cnd) \
do { if (cnd) { \
fprintf(stderr, "Error (" __FILE__ ":" stringify(__LINE__) \
"): " stringify(cnd) "\n"); \
exit(1); \
}} while (0)#define MAX_PATH_LEN 256
/* Dwarf_Die Linkage to parent Die */
struct die_link {
struct die_link *parent; /* Parent die */
Dwarf_Die die; /* Current die */
};#define X86_32_MAX_REGS 8
const char *x86_32_regs_table[X86_32_MAX_REGS] = {
"%ax",
"%cx",
"%dx",
"%bx",
"sa", /* Stack address */
"%bp",
"%si",
"%di",
};#define X86_64_MAX_REGS 16
const char *x86_64_regs_table[X86_64_MAX_REGS] = {
"%ax",
"%dx",
"%cx",
"%bx",
"%si",
"%di",
"%bp",
"%sp",
"%r8",
"%r9",
"%r10",
"%r11",
"%r12",
"%r13",
"%r14",
"%r15",
};/* TODO: switching by dwarf address size */
#ifdef __x86_64__
#define ARCH_MAX_REGS X86_64_MAX_REGS
#define arch_regs_table x86_64_regs_table
#else
#define ARCH_MAX_REGS X86_32_MAX_REGS
#define arch_regs_table x86_32_regs_table
#endif
/* Return architecture dependent register string */ static inline const char *get_arch_regstr(unsigned int n)
{
return (n <= ARCH_MAX_REGS) ? arch_regs_table[n] : NULL;
}struct probe_finder {
/* Inputs */
char *file; /* File name */
int line; /* Line number */
char *function; /* Function name */
int offset; /* Offset bytes */
Dwarf_Addr addr; /* Address */
int nr_args; /* Number of arguments */
char **args; /* Arguments */
/* Working area */
Dwarf_Addr cu_base; /* Current CU base address */
Dwarf_Locdesc fbloc; /* Location of Current Frame Base */
Dwarf_Unsigned fno; /* File number */
Dwarf_Off inl_offs; /* Inline offset */
const char *var; /* Current variable name */
/* Output */
int found; /* Number of found probe points */
};
/* Find a probe point */
static void find_probepoint(struct probe_finder *pf);
/* Session management structure */
static struct {
char *kver;
char *modpath;
int maxprobe;
struct probe_finder finder;
Dwarf_Debug dbg;
Dwarf_Error err;
int nfound;
} session;static void usage(const char *msg)
{
if (msg)
printf("%s\n\n", msg);
printf("c2kpe: C expression to kprobe event converter\n");
printf("Usage: c2kpe [-r KREL] [-m mod|vmlinux] FUNC|SRC [ARG...]\n");
printf(" FUNC:\tFUNCNAME[+OFFS_BYTE][@SRCPATH]\n");
printf(" SRC:\t@SRCPATH:LINE\n");
printf(" ARG:\tLocal variable name\n");
/* TODO: @global, $vars, $params */
exit(0);
}static void semantic_error(const char *msg)
{
fprintf(stderr, "Semantic error: %s\n", msg);
exit(1);
}static void parse_probe_point(int argc, char *argv[], struct probe_finder *pf)
{
char *arg;
char *ptr;
arg = argv[0];
if (arg[0] == '@') {
/* Source Line */
arg++;
ptr = strchr(arg, ':');
if (!ptr || ptr[1] == '\0')
semantic_error("Line number is required.");
*ptr++ = '\0';
pf->file = arg;
if (strlen(arg) == 0)
semantic_error("No file name.");
pf->line = atoi(ptr);
debug("file:%s line:%d\n", pf->file, pf->line);
} else {
/* Function name */
pf->function = arg;
ptr = strchr(arg, '+');
if (ptr) {
if (ptr[1] == '\0' || ptr[1] == '@')
semantic_error("Offset is required.");
*ptr++ = '\0';
pf->offset = atoi(ptr);
arg = ptr;
}
ptr = strchr(arg, '@');
if (ptr) {
*ptr++ = '\0';
pf->file = ptr;
}
debug("fname:%s file:%s offset:%d\n",
pf->function, pf->file, pf->offset);
}
pf->nr_args = argc - 1;
if (pf->nr_args > 0)
pf->args = &argv[1];
debug("%d arguments\n", pf->nr_args);
}static void parse_args(int argc, char *argv[])
{
int opt;
if (argc < 1)
usage("Need a probe point.");
while ((opt = getopt(argc, argv, "r:m:n:")) != -1) {
switch (opt) {
case 'r':
session.kver = optarg;
break;
case 'm':
session.modpath = optarg;
break;
case 'n':
session.maxprobe = atoi(optarg);
break;
default:
usage("Unexpected option found.");
}
}
if (optind >= argc)
usage("Need a probe point.");
parse_probe_point(argc - optind, &argv[optind], &session.finder);
}static int open_default_vmlinux(const char *kver)
{
struct utsname uts;
char fname[MAX_PATH_LEN];
int fd, ret, i;
if (!kver) {
ret = uname(&uts);
if (ret) {
debug("uname() failed.\n");
return -errno;
}
kver = uts.release;
}
for (i = 0; i < NR_SEARCH_PATH; i++) {
ret = snprintf(fname, MAX_PATH_LEN,
default_search_path[i], kver);
if (ret >= MAX_PATH_LEN || ret < 0) {
debug("Filename(%d,%s) is too long.\n", i, uts.release);
errno = E2BIG;
return -E2BIG;
}
debug("try to open %s\n", fname);
fd = open(fname, O_RDONLY);
if (fd >= 0)
break;
}
return fd;
}int main(int argc, char *argv[])
{
int fd, ret;
parse_args(argc, argv);
if (session.modpath)
fd = open(session.modpath, O_RDONLY);
else
fd = open_default_vmlinux(session.kver);
if (fd < 0) {
perror("file open");
exit(1);
}
/* TODO: handle errors */
ret = dwarf_init(fd, DW_DLC_READ, 0, 0, &session.dbg, &session.err);
if (ret != DW_DLV_OK) {
fprintf(stderr, "Failed to call dwarf_init(). "
"Maybe, not a dwarf file?\n");
exit(1);
}
find_probepoint(&session.finder);
ret = dwarf_finish(session.dbg, &session.err);
ERR_IF(ret != DW_DLV_OK);
close(fd);
return 0;
}/*---------------------
* Dwarf Analysys Part
*---------------------*/
/*
* Compare the tail of two strings.
* Return 0 if whole of either string is same as another's tail part. */
static int strtailcmp(const char *s1, const char *s2)
{
int i1 = strlen(s1);
int i2 = strlen(s2);
while (--i1 > 0 && --i2 > 0) {
if (s1[i1] != s2[i2])
return s1[i1] - s2[i2];
}
return 0;
}/* Find the fileno of the target file. */
static Dwarf_Unsigned die_get_fileno(Dwarf_Die cu_die, const char *fname)
{
Dwarf_Signed cnt, i;
Dwarf_Unsigned found = 0;
char **srcs;
int ret;
if (!fname)
return 0;
ret = dwarf_srcfiles(cu_die, &srcs, &cnt, &session.err);
if (ret == DW_DLV_OK) {
for (i = 0; i < cnt && !found; i++) {
if (strtailcmp(srcs[i], fname) == 0)
found = i + 1;
dwarf_dealloc(session.dbg, srcs[i], DW_DLA_STRING);
}
for (;i < cnt; i++)
dwarf_dealloc(session.dbg, srcs[i], DW_DLA_STRING);
dwarf_dealloc(session.dbg, srcs, DW_DLA_LIST);
}
if (found) debug("found fno: %d\n", (int)found);
return found;
}/* Compare diename and tname */
static int die_compare_name(Dwarf_Die die, const char *tname)
{
char *name;
int ret;
ret = dwarf_diename(die, &name, &session.err);
ERR_IF(ret == DW_DLV_ERROR);
if (ret == DW_DLV_OK) {
//debug("diename: %s\n", name);
ret = strcmp(tname, name);
dwarf_dealloc(session.dbg, name, DW_DLA_STRING);
} else
ret = -1;
return ret;
}/* Check the address is in the subprogram(function). */ static int die_within_subprogram(Dwarf_Die sp_die, Dwarf_Addr addr,
Dwarf_Signed *offs)
{
Dwarf_Addr lopc, hipc;
int ret;
ret = dwarf_lowpc(sp_die, &lopc, &session.err);
ERR_IF(ret == DW_DLV_ERROR);
if (ret == DW_DLV_NO_ENTRY)
return 0;
ret = dwarf_highpc(sp_die, &hipc, &session.err);
ERR_IF(ret != DW_DLV_OK);
if (lopc <= addr && addr < hipc) {
*offs = addr - lopc;
return 1;
} else
return 0;
}/* Check the die is inlined function */
static Dwarf_Bool die_inlined_subprogram(Dwarf_Die die)
{
/* TODO: check strictly */
Dwarf_Bool inl;
int ret;
ret = dwarf_hasattr(die, DW_AT_inline, &inl, &session.err);
ERR_IF(ret == DW_DLV_ERROR);
return inl;
}/* Get the offset of abstruct_origin */
static Dwarf_Off die_get_abstract_origin(Dwarf_Die die)
{
Dwarf_Attribute attr;
Dwarf_Off cu_offs;
int ret;
ret = dwarf_attr(die, DW_AT_abstract_origin, &attr, &session.err);
ERR_IF(ret != DW_DLV_OK);
ret = dwarf_formref(attr, &cu_offs, &session.err);
ERR_IF(ret != DW_DLV_OK);
dwarf_dealloc(session.dbg, attr, DW_DLA_ATTR);
return cu_offs;
}/* Get entry pc(or low pc, 1st entry of ranges) of the die */ static Dwarf_Addr die_get_entrypc(Dwarf_Die die)
{
Dwarf_Attribute attr;
Dwarf_Addr addr;
Dwarf_Off offs;
Dwarf_Ranges *ranges;
Dwarf_Signed cnt;
int ret;
/* Try to get entry pc */
ret = dwarf_attr(die, DW_AT_entry_pc, &attr, &session.err);
ERR_IF(ret == DW_DLV_ERROR);
if (ret == DW_DLV_OK) {
ret = dwarf_formaddr(attr, &addr, &session.err);
ERR_IF(ret != DW_DLV_OK);
dwarf_dealloc(session.dbg, attr, DW_DLA_ATTR);
return addr;
}
/* Try to get low pc */
ret = dwarf_lowpc(die, &addr, &session.err);
ERR_IF(ret == DW_DLV_ERROR);
if (ret == DW_DLV_OK)
return addr;
/* Try to get ranges */
ret = dwarf_attr(die, DW_AT_ranges, &attr, &session.err);
ERR_IF(ret != DW_DLV_OK);
ret = dwarf_formref(attr, &offs, &session.err);
ERR_IF(ret != DW_DLV_OK);
ret = dwarf_get_ranges(session.dbg, offs, &ranges, &cnt, NULL,
&session.err);
ERR_IF(ret != DW_DLV_OK);
addr = ranges[0].dwr_addr1;
dwarf_ranges_dealloc(session.dbg, ranges, cnt);
return addr;
}/*
* Search a Die from Die tree.
* Note: cur_link->die should be deallocated in this function. */
static int __search_die_tree(struct die_link *cur_link,
int (*die_cb)(struct die_link *, void *),
void *data)
{
Dwarf_Die new_die;
struct die_link link;
int ret;
if (!die_cb)
return 0;
/* Check current die */
while (!(ret = die_cb(cur_link, data))) {
/* Check child die */
ret = dwarf_child(cur_link->die, &new_die, &session.err);
ERR_IF(ret == DW_DLV_ERROR);
if (ret == DW_DLV_OK) {
link.parent = cur_link;
link.die = new_die;
ret = __search_die_tree(&link, die_cb, data);
if (ret)
break;
}
/* Move to next sibling */
ret = dwarf_siblingof(session.dbg, cur_link->die, &new_die,
&session.err);
ERR_IF(ret == DW_DLV_ERROR);
dwarf_dealloc(session.dbg, cur_link->die, DW_DLA_DIE);
cur_link->die = new_die;
if (ret == DW_DLV_NO_ENTRY)
return 0;
}
dwarf_dealloc(session.dbg, cur_link->die, DW_DLA_DIE);
return ret;
}/* Search a die in its children's die tree */ static int search_die_from_children(Dwarf_Die parent_die,
int (*die_cb)(struct die_link *, void *),
void *data)
{
struct die_link link;
int ret;
link.parent = NULL;
ret = dwarf_child(parent_die, &link.die, &session.err);
ERR_IF(ret == DW_DLV_ERROR);
if (ret == DW_DLV_OK)
return __search_die_tree(&link, die_cb, data);
else
return 0;
}/* Find a locdesc corresponding to the address */
static int attr_get_locdesc(Dwarf_Attribute attr, Dwarf_Locdesc *desc,
Dwarf_Addr addr)
{
Dwarf_Signed lcnt;
Dwarf_Locdesc **llbuf;
int ret, i;
ret = dwarf_loclist_n(attr, &llbuf, &lcnt, &session.err);
ERR_IF(ret != DW_DLV_OK);
ret = DW_DLV_NO_ENTRY;
for (i = 0; i < lcnt; ++i) {
if (llbuf[i]->ld_lopc <= addr &&
llbuf[i]->ld_hipc > addr ) {
memcpy(desc, llbuf[i], sizeof(Dwarf_Locdesc));
desc->ld_s =
malloc(sizeof(Dwarf_Loc) * llbuf[i]->ld_cents);
ERR_IF(desc->ld_s == NULL);
memcpy(desc->ld_s, llbuf[i]->ld_s,
sizeof(Dwarf_Loc) * llbuf[i]->ld_cents);
ret = DW_DLV_OK;
break;
}
dwarf_dealloc(session.dbg, llbuf[i]->ld_s, DW_DLA_LOC_BLOCK);
dwarf_dealloc(session.dbg, llbuf[i], DW_DLA_LOCDESC);
}
/* Releasing loop */
for (; i < lcnt; ++i) {
dwarf_dealloc(session.dbg, llbuf[i]->ld_s, DW_DLA_LOC_BLOCK);
dwarf_dealloc(session.dbg, llbuf[i], DW_DLA_LOCDESC);
}
dwarf_dealloc(session.dbg, llbuf, DW_DLA_LIST);
return ret;
}/*---------------------------------
* Probe finder related functions
*-------------------------------*/
/* Show a location */
static void show_location(Dwarf_Loc *loc, struct probe_finder *pf)
{
Dwarf_Small op;
Dwarf_Unsigned regn;
Dwarf_Signed offs;
int deref = 0;
const char *regs;
op = loc->lr_atom;
/* If this is based on frame buffer, set the offset */
if (op == DW_OP_fbreg) {
deref = 1;
offs = (Dwarf_Signed)loc->lr_number;
op = pf->fbloc.ld_s[0].lr_atom;
loc = &pf->fbloc.ld_s[0];
} else
offs = 0;
if (op >= DW_OP_breg0 && op <= DW_OP_breg31) {
regn = op - DW_OP_breg0;
offs += (Dwarf_Signed)loc->lr_number;
deref = 1;
} else if (op >= DW_OP_reg0 && op <= DW_OP_reg31) {
regn = op - DW_OP_reg0;
} else if (op == DW_OP_bregx) {
regn = loc->lr_number;
offs += (Dwarf_Signed)loc->lr_number2;
deref = 1;
} else if (op == DW_OP_regx) {
regn = loc->lr_number;
} else {
fprintf(stderr, "Error: Dwarf_OP %d is not supported.\n", op);
exit(1);
}
regs = get_arch_regstr(regn);
if (!regs) {
fprintf(stderr,
"Error: %lld exceeds max register number.\n", regn);
exit(1);
}
if (deref)
printf(" %+lld(%s)", offs, regs);
else
printf(" %s", regs);
}/* Show a variables in kprobe event format */
static void show_variable(Dwarf_Die vr_die, struct probe_finder *pf)
{
Dwarf_Attribute attr;
Dwarf_Locdesc ld;
int ret;
ret = dwarf_attr(vr_die, DW_AT_location, &attr, &session.err);
ERR_IF(ret != DW_DLV_OK);
ret = attr_get_locdesc(attr, &ld, (pf->addr - pf->cu_base));
ERR_IF(ret != DW_DLV_OK);
/* TODO? */
if (ld.ld_cents != 1) {
fprintf(stderr, "This variable type is not supported.\n");
exit(1);
}
show_location(&ld.ld_s[0], pf);
free(ld.ld_s);
dwarf_dealloc(session.dbg, attr, DW_DLA_ATTR);
}static int variable_callback(struct die_link *link, void *data)
{
struct probe_finder *pf = (struct probe_finder *)data;
Dwarf_Half tag;
int ret;
ret = dwarf_tag(link->die, &tag, &session.err);
ERR_IF(ret == DW_DLV_ERROR);
if ((tag == DW_TAG_formal_parameter ||
tag == DW_TAG_variable) &&
(die_compare_name(link->die, pf->var) == 0)) {
show_variable(link->die, pf);
return 1;
}
/* TODO: Support struct members */
return 0;
}/* Find a variable in a subprogram die */
static void find_variable(const char *var, Dwarf_Die sp_die,
struct probe_finder *pf)
{
int ret;
debug("Searching %s variable in context.\n", var);
pf->var = var;
/* Search child die for local variables and parameters. */
ret = search_die_from_children(sp_die, variable_callback, pf);
if (!ret) {
fprintf(stderr, "\nFailed to find %s in this function.\n", var);
exit(1);
}
}/* Get a frame base on the address */
static void get_current_frame_base(Dwarf_Die sp_die, struct probe_finder *pf)
{
Dwarf_Attribute attr;
int ret;
ret = dwarf_attr(sp_die, DW_AT_frame_base, &attr, &session.err);
ERR_IF(ret != DW_DLV_OK);
ret = attr_get_locdesc(attr, &pf->fbloc, (pf->addr - pf->cu_base));
ERR_IF(ret != DW_DLV_OK);
dwarf_dealloc(session.dbg, attr, DW_DLA_ATTR);
}static void free_current_frame_base(struct probe_finder *pf)
{
free(pf->fbloc.ld_s);
memset(&pf->fbloc, 0, sizeof(Dwarf_Locdesc));
}/* Show a probe point to stdout */
static void show_probepoint(Dwarf_Die sp_die, Dwarf_Signed offs,
struct probe_finder *pf)
{
char *name;
int ret, i;
ret = dwarf_diename(sp_die, &name, &session.err);
ERR_IF(ret == DW_DLV_ERROR);
if (ret == DW_DLV_OK) {
printf("%s%+d", name, (int)offs);
dwarf_dealloc(session.dbg, name, DW_DLA_STRING);
} else {
/* This function has no name. */
printf("0x%llx", pf->addr);
}
get_current_frame_base(sp_die, pf);
for (i = 0; i < pf->nr_args; i++)
find_variable(pf->args[i], sp_die, pf);
free_current_frame_base(pf);
printf("\n");
pf->found++;
}static int probeaddr_callback(struct die_link *link, void *data)
{
struct probe_finder *pf = (struct probe_finder *)data;
Dwarf_Half tag;
Dwarf_Signed offs;
int ret;
ret = dwarf_tag(link->die, &tag, &session.err);
ERR_IF(ret == DW_DLV_ERROR);
if (tag == DW_TAG_subprogram &&
die_within_subprogram(link->die, pf->addr, &offs)) {
show_probepoint(link->die, offs, pf);
return 1;
}
return 0;
}/* Find probe point from its line number */
static void find_by_line(Dwarf_Die cu_die, struct probe_finder *pf)
{
Dwarf_Signed cnt, i;
Dwarf_Line *lines;
Dwarf_Unsigned lineno = 0;
Dwarf_Addr addr;
Dwarf_Unsigned fno;
int ret;
ret = dwarf_srclines(cu_die, &lines, &cnt, &session.err);
ERR_IF(ret != DW_DLV_OK);
for (i = 0; i < cnt; i++) {
ret = dwarf_line_srcfileno(lines[i], &fno, &session.err);
ERR_IF(ret != DW_DLV_OK);
if (fno != pf->fno)
continue;
ret = dwarf_lineno(lines[i], &lineno, &session.err);
ERR_IF(ret != DW_DLV_OK);
if (lineno != pf->line)
continue;
ret = dwarf_lineaddr(lines[i], &addr, &session.err);
ERR_IF(ret != DW_DLV_OK);
debug("Probe point found: 0x%llx\n", addr);
pf->addr = addr;
/* Search a real subprogram including this line, */
ret = search_die_from_children(cu_die, probeaddr_callback, pf);
if (ret == 0) {
fprintf(stderr,
"Probe point is not found in subprograms.\n");
exit(1);
}
/* Continuing, because target line might be inlined. */
}
dwarf_srclines_dealloc(session.dbg, lines, cnt);
}/* Search function from function name */
static int probefunc_callback(struct die_link *link, void *data)
{
struct probe_finder *pf = (struct probe_finder *)data;
struct die_link *lk;
Dwarf_Signed offs;
Dwarf_Half tag;
int ret;
ret = dwarf_tag(link->die, &tag, &session.err);
ERR_IF(ret == DW_DLV_ERROR);
if (tag == DW_TAG_subprogram) {
if (die_compare_name(link->die, pf->function) == 0) {
if (die_inlined_subprogram(link->die)) {
/* Inlined function, save it. */
ret = dwarf_die_CU_offset(link->die,
&pf->inl_offs,
&session.err);
ERR_IF(ret != DW_DLV_OK);
debug("inline definition offset %lld\n",
pf->inl_offs);
return 0;
}
dwarf_lowpc(link->die, &pf->addr, &session.err);
pf->addr += pf->offset;
/* TODO: Check the address in this function */
show_probepoint(link->die, pf->offset, pf);
/* Continue to search */
}
} else if (tag == DW_TAG_inlined_subroutine && pf->inl_offs) {
if (die_get_abstract_origin(link->die) == pf->inl_offs) {
pf->addr = die_get_entrypc(link->die);
pf->addr += pf->offset;
debug("found inline addr: 0x%llx\n", pf->addr);
/* Inlined function. Get a real subprogram */
for (lk = link->parent; lk != NULL; lk = lk->parent) {
tag = 0;
dwarf_tag(lk->die, &tag, &session.err);
ERR_IF(ret == DW_DLV_ERROR);
if (tag == DW_TAG_subprogram &&
!die_inlined_subprogram(lk->die))
goto found;
}
fprintf(stderr, "Failed to find real subprogram.\n");
exit(1);
found:
ret = die_within_subprogram(lk->die, pf->addr, &offs);
ERR_IF(!ret);
show_probepoint(lk->die, offs, pf);
/* Continue to search */
}
}
return 0;
}static void find_by_func(Dwarf_Die cu_die, struct probe_finder *pf)
{
search_die_from_children(cu_die, probefunc_callback, pf);
}static void find_probepoint(struct probe_finder *pf)
{
Dwarf_Unsigned cuh_len = 0;
Dwarf_Half vstamp = 0;
Dwarf_Unsigned abbrev = 0;
Dwarf_Half addr_size = 0;
Dwarf_Unsigned next_cuh = 0;
Dwarf_Die cu_die = 0;
int cu_number = 0, ret;
pf->found = 0;
while (++cu_number) {
/* Search CU (Compilation Unit) */
ret = dwarf_next_cu_header(session.dbg, &cuh_len, &vstamp,
&abbrev, &addr_size, &next_cuh, &session.err);
ERR_IF(ret == DW_DLV_ERROR);
if (ret == DW_DLV_NO_ENTRY)
break;
/* Get the DIE(Debugging Information Entry) of this CU */
ret = dwarf_siblingof(session.dbg, 0, &cu_die, &session.err);
ERR_IF(ret != DW_DLV_OK);
/* Check if target file is included. */
if (pf->file)
pf->fno = die_get_fileno(cu_die, pf->file);
if (!pf->file || pf->fno) {
/* Save CU base address (for frame_base) */
ret = dwarf_lowpc(cu_die, &pf->cu_base, &session.err);
ERR_IF(ret == DW_DLV_ERROR);
if (ret == DW_DLV_NO_ENTRY)
pf->cu_base = 0;
if (pf->line)
find_by_line(cu_die, pf);
if (pf->function)
find_by_func(cu_die, pf);
}
dwarf_dealloc(session.dbg, cu_die, DW_DLA_DIE);
}
if (pf->found == 0) {
fprintf(stderr, "Probe point is not found.\n");
exit(1);
}
}Re: [TOOL] c2kpe: C expression to kprobe event format converter
You rock, this is awesome! I'm a bit busy right now, but I'll play around with it ASAP and will see how well it works for me.
Re: [TOOL] c2kpe: C expression to kprobe event format converter
In reply to Masami HiramatsuQuoted 11 lines · Masami Hiramatsu
This program converts probe point in C expression to kprobe event format for kprobe-based event tracer. This helps to define kprobes events by C source line number or function name, and local variable name. Currently, this supports only x86(32/64) kernels.
Compile
--------
Before compilation, please install libelf and libdwarf development packages.
(e.g. elfutils-libelf-devel and libdwarf-devel on Fedora)
This may probably need a specific libdwarf version?
c2kpe.c: In function ‘die_get_entrypc’:
c2kpe.c:422: erreur: ‘Dwarf_Ranges’ undeclared (first use in this function) c2kpe.c:422: erreur: (Each undeclared identifier is reported only once c2kpe.c:422: erreur: for each function it appears in.)
c2kpe.c:422: erreur: ‘ranges’ undeclared (first use in this function) c2kpe.c:447: attention : implicit declaration of function ‘dwarf_get_ranges’ c2kpe.c:451: attention : implicit declaration of function ‘dwarf_ranges_dealloc’
Quoted 7 lines
TODO
----
- Fix bugs.
- Support multiple probepoints from stdin.
- Better kmodule support.
- Use elfutils-libdw?
- Merge into trace-cmd or perf-tools?
Yeah definetly, that would be a veeery interesting thing to have. I've played with kprobe ftrace to debug something this evening.
It's very cool to be able to put dynamic tracepoints in desired places.
But...
I firstly needed to put random trace_printk() in some places to observe some variables values. And then I thought about the kprobes tracer and realized I could do that without the need of rebuilding my kernel. Then I've played with it and indeed it works well and it's useful, but at the cost of reading objdump based assembly code to find the places where I could find my variables values. And after two or three probes in such conditions, I've become tired of that, then I wanted to try this tool.
While I cannot yet because of this build error, I can imagine the power of such facility from perf.
We could have a perf probe that creates a kprobe event in debugfs (default enable = 0) and which then rely on perf record for the actual recording.
Then we could analyse it through perf trace.
Let's imagine a simple example:
int foo(int arg1, int arg2)
{
int var1;
var1 = arg1;
var1 *= arg2;
var1 -= arg1;------> insert a probe here (file bar.c : line 60)
var1 ^= ... return var1; }
./perf kprobe --file bar.c:60 --action "arg1=%d","arg2=%d","var1=%d" -- ls -R / ./perf trace
arg1=1 arg2=1 var1=0 arg1=2 arg2=2 var1=2 etc..
You may want to sort by field:
./perf trace -s arg1 --order desc
arg1=1
|
------- arg2=1 var=1
|
------- arg2=2 var=1
arg1=2
|
------- arg2=1 var=0
|
------- [...]./perf trace -s arg1,arg2 --order asc
arg1=1
|
------- arg2=1
|
--------- var1=0
|
--------- var1=....
arg2=...
|Ok the latter is a bad example because var1 will always have only one value for a given arg1 and arg2. But I guess you see the point.
You won't have to care about the perf trace part, it's already implemented and I'll soon handle the sorting part.
All we need is the perf kprobes that translate a C level probing expression to a /debug/tracing/kprobe_events compliant thing. And then just call perf record with the new created event as an argument.
Frederic.
Re: [TOOL] c2kpe: C expression to kprobe event format converter
Quoted 16 lines · Frederic Weisbecker
Quoted 11 lines · Masami Hiramatsu
This program converts probe point in C expression to kprobe event format for kprobe-based event tracer. This helps to define kprobes events by C source line number or function name, and local variable name. Currently, this supports only x86(32/64) kernels.
Compile
--------
Before compilation, please install libelf and libdwarf development packages.
(e.g. elfutils-libelf-devel and libdwarf-devel on Fedora)This may probably need a specific libdwarf version?
Quoted 7 lines
c2kpe.c: In function ‘die_get_entrypc’:
c2kpe.c:422: erreur: ‘Dwarf_Ranges’ undeclared (first use in this function) c2kpe.c:422: erreur: (Each undeclared identifier is reported only once c2kpe.c:422: erreur: for each function it appears in.)
c2kpe.c:422: erreur: ‘ranges’ undeclared (first use in this function) c2kpe.c:447: attention : implicit declaration of function ‘dwarf_get_ranges’ c2kpe.c:451: attention : implicit declaration of function ‘dwarf_ranges_dealloc’
Aah, sure, it should be compiled with libdwarf newer than 20090324. You can find it in http://reality.sgiweb.org/davea/dwarf.html
BTW, libdwarf and libdw (which is the yet another implementation of dwarf library) are still under development, e.g. libdwarf doesn't support gcc-4.4.1(very new) and only the latest libdw(0.142) can support it. So, perhaps I might better port it on libdw, even that is less documented...:(
Quoted 43 lines
Quoted 7 lines
TODO
----
- Fix bugs.
- Support multiple probepoints from stdin.
- Better kmodule support.
- Use elfutils-libdw?
- Merge into trace-cmd or perf-tools?Yeah definetly, that would be a veeery interesting thing to have. I've played with kprobe ftrace to debug something this evening.
It's very cool to be able to put dynamic tracepoints in desired places.
But...
I firstly needed to put randomtrace_printk()in some places to observe some variables values. And then I thought about the kprobes tracer and realized I could do that without the need of rebuilding my kernel. Then I've played with it and indeed it works well and it's useful, but at the cost of reading objdump based assembly code to find the places where I could find my variables values. And after two or three probes in such conditions, I've become tired of that, then I wanted to try this tool.While I cannot yet because of this build error, I can imagine the power of such facility from perf.
We could have a perf probe that creates a kprobe event in debugfs (default enable = 0) and which then rely on perf record for the actual recording.
Then we could analyse it through perf trace.
Let's imagine a simple example:int
foo(int arg1, int arg2){ int var1; var1 = arg1; var1 *= arg2; var1 -= arg1;
Quoted 8 lines
------> insert a probe here (file
bar.c: line 60)var1 ^= ... return var1; }./perf kprobe --file bar.c:60 --action "arg1=%d","arg2=%d","var1=%d" -- ls -R /
I recommend it should be separated from record, like below:
# set new event ./perf kprobe --add kprobe:event1 --file bar.c:60 --action "arg1=%d","arg2=%d","var1=%d" # record new event ./perf record -e kprobe:event1 -a -R -- ls -R /
This will allow us to focus on one thing -- convert C to kprobe-tracer. And also, it can be listed as like as tracepoint events.
Quoted 34 lines
./perf trace
arg1=1 arg2=1 var1=0 arg1=2 arg2=2 var1=2 etc..You may want to sort by field:
./perf trace -s arg1 --order desc
arg1=1 | ------- arg2=1 var=1 | ------- arg2=2 var=1 arg1=2 | ------- arg2=1 var=0 | ------- [...]./perf trace -s arg1,arg2 --order asc
arg1=1 | ------- arg2=1 | --------- var1=0 | --------- var1=.... arg2=... |Ok the latter is a bad example because var1 will always have only one value for a given arg1 and arg2. But I guess you see the point.
Quoted 7 lines
You won't have to care about the perf trace part, it's already implemented and I'll soon handle the sorting part.
All we need is the perf kprobes that translate a C level probing expression to a /debug/tracing/kprobe_events compliant thing. And then just call perf record with the new created event as an argument.
Indeed, that's what I imagine.
Thank you,
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
Re: [TOOL] c2kpe: C expression to kprobe event format converter
Quoted 25 lines · Masami Hiramatsu
Quoted 16 lines · Frederic Weisbecker
Quoted 11 lines · Masami Hiramatsu
This program converts probe point in C expression to kprobe event format for kprobe-based event tracer. This helps to define kprobes events by C source line number or function name, and local variable name. Currently, this supports only x86(32/64) kernels.
Compile
--------
Before compilation, please install libelf and libdwarf development packages.
(e.g. elfutils-libelf-devel and libdwarf-devel on Fedora)This may probably need a specific libdwarf version?
Quoted 7 lines
c2kpe.c: In function ‘die_get_entrypc’:
c2kpe.c:422: erreur: ‘Dwarf_Ranges’ undeclared (first use in this function) c2kpe.c:422: erreur: (Each undeclared identifier is reported only once c2kpe.c:422: erreur: for each function it appears in.)
c2kpe.c:422: erreur: ‘ranges’ undeclared (first use in this function) c2kpe.c:447: attention : implicit declaration of function ‘dwarf_get_ranges’ c2kpe.c:451: attention : implicit declaration of function ‘dwarf_ranges_dealloc’
Quoted 2 lines
Aah, sure, it should be compiled with libdwarf newer than 20090324. You can find it in http://reality.sgiweb.org/davea/dwarf.html
Ah ok.
Quoted 5 lines
BTW, libdwarf and libdw (which is the yet another implementation of dwarf library) are still under development, e.g. libdwarf doesn't support gcc-4.4.1(very new) and only the latest libdw(0.142) can support it. So, perhaps I might better port it on libdw, even that is less documented...:(
May be let's continue with libdwarf for now and we'll see if support for libdw is required later.
Quoted 50 lines
Quoted 50 lines
Quoted 7 lines
TODO
----
- Fix bugs.
- Support multiple probepoints from stdin.
- Better kmodule support.
- Use elfutils-libdw?
- Merge into trace-cmd or perf-tools?Yeah definetly, that would be a veeery interesting thing to have. I've played with kprobe ftrace to debug something this evening.
It's very cool to be able to put dynamic tracepoints in desired places.
But...
I firstly needed to put randomtrace_printk()in some places to observe some variables values. And then I thought about the kprobes tracer and realized I could do that without the need of rebuilding my kernel. Then I've played with it and indeed it works well and it's useful, but at the cost of reading objdump based assembly code to find the places where I could find my variables values. And after two or three probes in such conditions, I've become tired of that, then I wanted to try this tool.While I cannot yet because of this build error, I can imagine the power of such facility from perf.
We could have a perf probe that creates a kprobe event in debugfs (default enable = 0) and which then rely on perf record for the actual recording.
Then we could analyse it through perf trace.
Let's imagine a simple example:int
foo(int arg1, int arg2){ int var1; var1 = arg1; var1 *= arg2; var1 -= arg1;------> insert a probe here (file
bar.c: line 60)var1 ^= ... return var1; }
Quoted 8 lines
Quoted 1 line
./perf kprobe --file bar.c:60 --action "arg1=%d","arg2=%d","var1=%d" -- ls -R /
I recommend it should be separated from record, like below:
# set new event ./perf kprobe --add kprobe:event1 --file bar.c:60 --action "arg1=%d","arg2=%d","var1=%d" # record new event ./perf record -e kprobe:event1 -a -R -- ls -R /
That indeed solves the command line overkill, but that also breaks a bit the workflow :)
Well, I guess we can start simple in the beginning and follow the above mockup which is indeed better decoupled.
And if something more intuitive comes in mind later, then we can still change it.
Quoted 2 lines
This will allow us to focus on one thing -- convert C to kprobe-tracer. And also, it can be listed as like as tracepoint events.
Yeah.
Quoted 37 lines
Quoted 37 lines
./perf trace
arg1=1 arg2=1 var1=0 arg1=2 arg2=2 var1=2 etc..You may want to sort by field:
./perf trace -s arg1 --order desc
arg1=1 | ------- arg2=1 var=1 | ------- arg2=2 var=1 arg1=2 | ------- arg2=1 var=0 | ------- [...]./perf trace -s arg1,arg2 --order asc
arg1=1 | ------- arg2=1 | --------- var1=0 | --------- var1=.... arg2=... |Ok the latter is a bad example because var1 will always have only one value for a given arg1 and arg2. But I guess you see the point.
You won't have to care about the perf trace part, it's already implemented and I'll soon handle the sorting part.
Quoted 6 lines
Quoted 4 lines
All we need is the perf kprobes that translate a C level probing expression to a /debug/tracing/kprobe_events compliant thing. And then just call perf record with the new created event as an argument.
Indeed, that's what I imagine.
Cool, thanks!
Quoted 11 lines
Thank you,
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]