tracing/kprobes: Add dynamic tracepoints + instruction decoder
Subsystems (9)
Ingo,
This is the kprobes tracing pile of patches. I've tested it successfully by setting some kprobes through debugfs by hand.
It brings no known regressions.
However, the stress test provided by Masami have revealed some unstable points. Some symbols are unsafe to probe and raise probing recursion.
I've added a tiny patch in the series that helps identifying the kprobe that has raised such situation.
For example it has learned me today that it's unsafe to trace ret_from_exception() (obviously: it's on the int 3 handler path).
Anyway, we have all the tools to debug that and easily find the fragile points to probe. It's then just a matter of investigation and stress tests now.
And because the pile of patches becomes big enough, I've thought it could be time to do a pull request for -tip for it to have a private branch and get fixes over the time.
Tell me if that's a problem and we can delay the pull request until we fix the recursive points problems.
Thanks,
Frederic.
The following changes since commit 35dce1a99d010f3d738af4ce1b9b77302fdfe69c:
Ingo Molnar (1):
Merge branch 'tracing/core' of git://git.kernel.org/.../frederic/random-tracing into tracing/core
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing.git
tracing/kprobes
Frederic Weisbecker (1):
tracing/kprobes: Dump the culprit kprobe in case of kprobe recursion
Masami Hiramatsu (17):
x86: Instruction decoder API
x86: X86 instruction decoder build-time selftest
kprobes: Checks probe address is instruction boudary on x86
kprobes: Cleanup fix_riprel() using insn decoder on x86
x86: Add pt_regs register and stack access APIs
tracing: Ftrace dynamic ftrace_event_call support
tracing: Introduce TRACE_FIELD_ZERO() macro
tracing: Add kprobe-based event tracer
tracing: Add kprobe-based event tracer documentation
tracing: Kprobe-tracer supports more than 6 arguments
tracing: Generate names for each kprobe event automatically
tracing: Kprobe tracer assigns new event ids for each event
tracing: Add kprobes event profiling interface
x86: Fix x86 instruction decoder selftest to check only .text
x86: Check awk features before generating inat-tables.c tracing/kprobes: Fix format typo in trace_kprobes tracing/kprobes: Change trace_arg to probe_arg
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 | 209 +++--- 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 | 334 +++++++++ arch/x86/tools/test_get_len.c | 113 ++++ include/linux/ftrace_event.h | 19 +- include/linux/kprobes.h | 2 + include/linux/syscalls.h | 4 +- include/trace/ftrace.h | 16 +- include/trace/syscall.h | 11 +- kernel/kprobes.c | 7 + kernel/trace/Kconfig | 12 + kernel/trace/Makefile | 1 + kernel/trace/trace.h | 24 + kernel/trace/trace_event_types.h | 4 +- kernel/trace/trace_events.c | 121 +++- kernel/trace/trace_export.c | 34 +- kernel/trace/trace_kprobe.c | 1231 ++++++++++++++++++++++++++++++++++ kernel/trace/trace_syscalls.c | 20 +- 31 files changed, 3991 insertions(+), 196 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
PATCH 1/18 x86: Instruction decoder API
From: Masami Hiramatsu <[email protected]>
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.
LKML-Reference: <[email protected]>
--- 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 · 1 line
1.6.2.3
PATCH 2/18 x86: X86 instruction decoder build-time selftest
In reply to Frederic WeisbeckerFrom: Masami Hiramatsu <[email protected]>
Add 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.
LKML-Reference: <[email protected]>
--- 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 · 1 line
1.6.2.3
PATCH 3/18 kprobes: Checks probe address is instruction boudary on x86
In reply to Frederic WeisbeckerFrom: Masami Hiramatsu <[email protected]>
Ensure safeness of inserting kprobes by checking whether the specified address is at the first byte of an instruction on x86.
This is done by decoding probed function from its head to the probe point.
LKML-Reference: <[email protected]>
--- arch/x86/kernel/kprobes.c | 73 +++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 73 insertions(+), 0 deletions(-)
arch/x86/kernel/kprobes.c +73 -0
@@ -48,12 +48,14 @@#include <linux/preempt.h> #include <linux/module.h> #include <linux/kdebug.h> +#include <linux/kallsyms.h> #include <asm/cacheflush.h> #include <asm/desc.h> #include <asm/pgtable.h> #include <asm/uaccess.h> #include <asm/alternative.h> +#include <asm/insn.h> void jprobe_return_end (void );
@@ -244,6 +246,75 @@ 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 by another +* kprobe, in which case we replace the breakpoint by the +* original instruction in our buffer. +*/ +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. */
@@ -359,6 +430,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 · 1 line
1.6.2.3
PATCH 4/18 kprobes: Cleanup fix_riprel() using insn decoder on x86
In reply to Frederic WeisbeckerFrom: Masami Hiramatsu <[email protected]>
Cleanup fix_riprel() in arch/x86/kernel/kprobes.c by using the new x86 instruction decoder instead of using comparisons with raw ad hoc numeric opcodes.
LKML-Reference: <[email protected]>
--- arch/x86/kernel/kprobes.c | 128 ++++++++------------------------------------- 1 files changed, 23 insertions(+), 105 deletions(-)
arch/x86/kernel/kprobes.c +23 -105
@@ -108,50 +108,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[] = {
@@ -348,68 +304,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 · 1 line
1.6.2.3
PATCH 5/18 x86: Add pt_regs register and stack access APIs
In reply to Frederic WeisbeckerFrom: Masami Hiramatsu <[email protected]>
Add 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)
LKML-Reference: <[email protected]>
--- 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 · 1 line
1.6.2.3
PATCH 6/18 tracing: Ftrace dynamic ftrace_event_call support
In reply to Frederic WeisbeckerFrom: Masami Hiramatsu <[email protected]>
Add dynamic ftrace_event_call support to ftrace. Trace engines can add new ftrace_event_call to ftrace on the fly. Each operator function of the call takes an 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.
[[email protected]: Fixed conflict against latest tracing/core]
LKML-Reference: <[email protected]>
--- include/linux/ftrace_event.h | 19 ++++--- include/linux/syscalls.h | 4 +- include/trace/ftrace.h | 16 +++--- include/trace/syscall.h | 11 +++-- kernel/trace/trace_events.c | 121 ++++++++++++++++++++++++++++------------- kernel/trace/trace_export.c | 18 +++--- kernel/trace/trace_syscalls.c | 20 ++++---- 7 files changed, 130 insertions(+), 79 deletions(-)
include/linux/ftrace_event.h +10 -9
@@ -112,12 +112,12 @@ 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 (*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;
@@ -147,11 +147,12 @@ enum { FILTER_PTR_STRING, }; -extern int trace_define_field (struct ftrace_event_call *call, -const char *type,const char *name, -int offset,int size,int is_signed, -int filter_type);extern int trace_define_common_fields (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, +int filter_type); +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); \
@@ -202,7 +202,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 +8 -8
@@ -434,7 +434,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; *
@@ -445,7 +445,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>); * }
@@ -478,7 +478,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; *
@@ -489,7 +489,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>); * }
@@ -498,7 +498,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; *
@@ -592,7 +592,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; \ \
@@ -603,7 +603,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); \ } \
@@ -612,7 +612,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 +7 -4
@@ -39,16 +39,19 @@ 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 syscall_enter_format (struct ftrace_event_call *call,struct trace_seq *s);extern int syscall_exit_format (struct ftrace_event_call *call,struct trace_seq *s);extern int syscall_enter_define_fields (struct ftrace_event_call *call);extern int syscall_exit_define_fields (struct ftrace_event_call *call); +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);enum print_line_t print_syscall_exit (struct trace_iterator *iter,int flags);#endif
kernel/trace/trace_events.c +84 -37
184 lines not on this page · raw message
kernel/trace/trace_export.c +9 -9
@@ -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(struct ftrace_event_call *event_call); \ -static int ftrace_raw_init_event_##call(void); \ \ 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, \
kernel/trace/trace_syscalls.c +10 -10
@@ -193,8 +193,8 @@ int syscall_enter_define_fields(struct ftrace_event_call *call)return ret;for (i =0 ; i < meta->nb_args; i++) { - ret =trace_define_field (call, meta->types[i], - meta->args[i], offset, + ret =trace_define_field (call, (char *)meta->types[i], + (char *)meta->args[i], offset,sizeof (unsigned long ),0 ,FILTER_OTHER ); offset +=sizeof (unsigned long );
@@ -277,13 +277,13 @@ void ftrace_syscall_exit(struct pt_regs *regs, long ret)trace_current_buffer_unlock_commit (event,0 ,0 ); } -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 ;
@@ -301,12 +301,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 ;
@@ -318,13 +318,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 ;
@@ -342,12 +342,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 · 1 line
1.6.2.3
Re: [PATCH 06/18] tracing: Ftrace dynamic ftrace_event_call support
kernel/trace/trace_events.c DEFINE_MUTEX(event_mutex); · line 32
Quoted 5 lines
kernel/trace/trace_events.c +2
-2-int trace_define_field (struct ftrace_event_call *call,const char *type, -const char *name,int offset,int size,int is_signed, +int trace_define_field (struct ftrace_event_call *call,char *type, +char *name,int offset,int size,int is_signed,int filter_type)
I don't see why you remove "const"?
Quoted 5 lines
{
kernel/trace/trace_events.c +0
-0struct ftrace_event_field *field;@@ -92,9 +92,7 @@ int trace_define_common_fields(struct ftrace_event_call *call) }EXPORT_SYMBOL_GPL (trace_define_common_fields);
...
kernel/trace/trace_syscalls.c int syscall_enter_define_fields(struct ftrace_event_call *call) · line 197
Quoted 5 lines
kernel/trace/trace_syscalls.c +2
-2for (i =0 ; i < meta->nb_args; i++) { - ret = trace_define_field(call, meta->types[i], - meta->args[i], offset, + ret = trace_define_field(call, (char *)meta->types[i], + (char *)meta->args[i], offset,
This is not good..
Quoted 6 lines
kernel/trace/trace_syscalls.c +0
-0sizeof (unsigned long ),0 , FILTER_OTHER); offset +=sizeof (unsigned long );@@ -277,13 +277,13 @@ void ftrace_syscall_exit(struct pt_regs *regs, long ret)trace_current_buffer_unlock_commit (event,0 ,0 ); }
...
kernel/trace/trace_syscalls.c void unreg_event_syscall_enter(void *ptr) · line 327
Quoted 9 lines
kernel/trace/trace_syscalls.c +2
-2-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;
nitpick: implicit cast is fine.
Quoted 5 lines
kernel/trace/trace_syscalls.c +0
-0num =syscall_name_to_nr (name);if (num <0 || num >=FTRACE_SYSCALL_MAX )return -ENOSYS ;@@ -342,12 +342,12 @@ int reg_event_syscall_exit(void *ptr)return ret;
kernel/trace/trace_syscalls.c int reg_event_syscall_exit(void *ptr) · line 350
Quoted 10 lines
kernel/trace/trace_syscalls.c +2
-2} -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;
ditto
Quoted 3 lines
kernel/trace/trace_syscalls.c +0
-0num =syscall_name_to_nr (name);if (num <0 || num >=FTRACE_SYSCALL_MAX )return ;
Re: [PATCH 06/18] tracing: Ftrace dynamic ftrace_event_call support
Quoted 7 lines · Li Zefan
kernel/trace/trace_events.c DEFINE_MUTEX(event_mutex); · line 32
Quoted 5 lines
kernel/trace/trace_events.c +2
-2-int trace_define_field (struct ftrace_event_call *call,const char *type, -const char *name,int offset,int size,int is_signed, +int trace_define_field (struct ftrace_event_call *call,char *type, +char *name,int offset,int size,int is_signed,int filter_type)I don't see why you remove "const"?
Because kprobes uses dynamically allocated strings as names. That said, I should turn it back to const, it's indeed more sane. I don't remember exactly the reason of this. I had to resolve several conflicts between Masami's patchset and tracing/core, but I did wrong in this part, indeed.
Quoted 8 lines
Quoted 5 lines
{
kernel/trace/trace_events.c +0
-0struct ftrace_event_field *field;@@ -92,9 +92,7 @@ int trace_define_common_fields(struct ftrace_event_call *call) }EXPORT_SYMBOL_GPL (trace_define_common_fields);...
Quoted 7 lines
kernel/trace/trace_syscalls.c int syscall_enter_define_fields(struct ftrace_event_call *call) · line 197
Quoted 5 lines
kernel/trace/trace_syscalls.c +2
-2for (i =0 ; i < meta->nb_args; i++) { - ret = trace_define_field(call, meta->types[i], - meta->args[i], offset, + ret = trace_define_field(call, (char *)meta->types[i], + (char *)meta->args[i], offset,This is not good..
Yeah.
Quoted 35 lines
Quoted 7 lines
kernel/trace/trace_syscalls.c +0
-0sizeof (unsigned long ),0 , FILTER_OTHER); offset +=sizeof (unsigned long );@@ -277,13 +277,13 @@ void ftrace_syscall_exit(struct pt_regs *regs, long ret)trace_current_buffer_unlock_commit (event,0 ,0 ); }...
kernel/trace/trace_syscalls.c void unreg_event_syscall_enter(void *ptr) · line 327
Quoted 9 lines
kernel/trace/trace_syscalls.c +2
-2-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;nitpick: implicit cast is fine.
Quoted 13 lines
kernel/trace/trace_syscalls.c +1
-1num =syscall_name_to_nr (name);if (num <0 || num >=FTRACE_SYSCALL_MAX )return -ENOSYS ;@@ -342,12 +342,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;
Quoted 4 lines
Review int reg_event_syscall_exit(void *ptr) · line 350
Quoted 2 lines
(quoted diff) +1
-1- name = (char *)ptr; + name = (char *)call->data;ditto
Ok, I'll send a delta patch to fix these.
Thanks.
Quoted 4 lines
Quoted 4 lines
kernel/trace/trace_syscalls.c +0
-0num =syscall_name_to_nr (name);if (num <0 || num >=FTRACE_SYSCALL_MAX )return ;
Re: [PATCH 06/18] tracing: Ftrace dynamic ftrace_event_call support
Quoted 11 lines · Frederic Weisbecker
Quoted 7 lines · Li Zefan
kernel/trace/trace_events.c DEFINE_MUTEX(event_mutex); · line 32
Quoted 5 lines
kernel/trace/trace_events.c +2
-2-int trace_define_field (struct ftrace_event_call *call,const char *type, -const char *name,int offset,int size,int is_signed, +int trace_define_field (struct ftrace_event_call *call,char *type, +char *name,int offset,int size,int is_signed,int filter_type)I don't see why you remove "const"?
Quoted 5 lines
Because kprobes uses dynamically allocated strings as names. That said, I should turn it back to const, it's indeed more sane. I don't remember exactly the reason of this. I had to resolve several conflicts between Masami's patchset and tracing/core, but I did wrong in this part, indeed.
Ah, it should be a regression. My patches were based on an old ftrace which used char * instead of const char *, before Li enhanced it.
Thank you for pointing it out!
Quoted 74 lines
Quoted 11 lines
Quoted 8 lines
{ struct ftrace_event_field *field;kernel/trace/trace_events.c +0
-0@@ -92,9 +92,7 @@ int trace_define_common_fields(struct ftrace_event_call *call) }EXPORT_SYMBOL_GPL (trace_define_common_fields);...
Quoted 7 lines
kernel/trace/trace_syscalls.c int syscall_enter_define_fields(struct ftrace_event_call *call) · line 197
Quoted 5 lines
for (i = 0; i< meta->nb_args; i++) {kernel/trace/trace_syscalls.c +2
-2- ret = trace_define_field(call, meta->types[i], - meta->args[i], offset, + ret = trace_define_field(call, (char *)meta->types[i], + (char *)meta->args[i], offset,This is not good..
Yeah.
Quoted 35 lines
Quoted 7 lines
sizeof(unsigned long), 0, FILTER_OTHER); offset += sizeof(unsigned long);kernel/trace/trace_syscalls.c +0
-0@@ -277,13 +277,13 @@ void ftrace_syscall_exit(struct pt_regs *regs, long ret)trace_current_buffer_unlock_commit (event,0 ,0 ); }...
kernel/trace/trace_syscalls.c void unreg_event_syscall_enter(void *ptr) · line 327
Quoted 9 lines
kernel/trace/trace_syscalls.c +2
-2-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;nitpick: implicit cast is fine.
Quoted 13 lines
num = syscall_name_to_nr(name); if (num< 0 || num>= FTRACE_SYSCALL_MAX) return -ENOSYS;kernel/trace/trace_syscalls.c +1
-1@@ -342,12 +342,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;Quoted 4 lines
Review int reg_event_syscall_exit(void *ptr) · line 350
Quoted 2 lines
(quoted diff) +1
-1- name = (char *)ptr; + name = (char *)call->data;ditto
Ok, I'll send a delta patch to fix these.
Thanks.
Quoted 4 lines
Quoted 4 lines
kernel/trace/trace_syscalls.c +0
-0num =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 7/18 tracing: Introduce TRACE_FIELD_ZERO() macro
In reply to Frederic WeisbeckerFrom: Masami Hiramatsu <[email protected]>
Use TRACE_FIELD_ZERO(type, item) instead of TRACE_FIELD_ZERO_CHAR(item). This also includes a typo fix of TRACE_ZERO_CHAR() macro.
LKML-Reference: <[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 +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
@@ -180,8 +180,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 · 1 line
1.6.2.3
PATCH 8/18 tracing: Add kprobe-based event tracer
In reply to Frederic WeisbeckerFrom: Masami Hiramatsu <[email protected]>
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 __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 in the next patch for details.
Changes from v13:
- Support 'sa' for stack address.
- Use call->data instead of container_of() macro.
[[email protected]: Fixed conflict against latest tracing/core]
LKML-Reference: <[email protected]>
--- kernel/trace/Kconfig | 12 + kernel/trace/Makefile | 1 + kernel/trace/trace.h | 30 + kernel/trace/trace_event_types.h | 18 + kernel/trace/trace_kprobe.c | 1202 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 1263 insertions(+), 0 deletions(-) create mode 100644 kernel/trace/trace_kprobe.c
kernel/trace/Kconfig +12 -0
@@ -411,6 +411,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
@@ -54,5 +54,6 @@ obj-$(CONFIG_EVENT_TRACING) += trace_export.o 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_KPROBE_TRACER) += trace_kprobe.o libftrace-y := ftrace.o
kernel/trace/trace.h +30 -0
@@ -38,6 +38,8 @@ enum trace_type {TRACE_KMEM_FREE ,TRACE_POWER ,TRACE_BLK , +TRACE_KPROBE , +TRACE_KRETPROBE , __TRACE_LAST_TYPE, };
@@ -205,6 +207,30 @@ struct syscall_trace_exit {unsigned long ret; }; +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
@@ -317,6 +343,10 @@ extern void __ftrace_bad_type(void); TRACE_KMEM_ALLOC); \ IF_ASSIGN(var, ent, struct kmemtrace_free_entry, \TRACE_KMEM_FREE ); \ + 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 +1202 -0
1,202 lines not on this page · raw message
Signature · 1 line
1.6.2.3
Re: [PATCH 08/18] tracing: Add kprobe-based event tracer
Quoted 10 lines · Frederic Weisbecker
From: Masami Hiramatsu <[email protected]>
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).
Quoted 5 lines
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.
ok, one observation here: this should seemlessly merge into /debug/tracing/events/ and provide a record format descriptor in 'format' to allow the automated fetching of the results of the probe. The PERF_SAMPLE_RAW gateway should work as well.
That way tooling that knows about /debug/tracing/events/ will automatically work with kprobes events as well. We can profile based on kprobes, etc. etc.
The _setting_ of the probe is still a separate channel - but if existing installed probes are merged into existing tooling that's a big step forward in terms of utility.
Ingo
Re: [PATCH 08/18] tracing: Add kprobe-based event tracer
Quoted 28 lines · Ingo Molnar
Quoted 10 lines · Frederic Weisbecker
From: Masami Hiramatsu <[email protected]>
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).Quoted 5 lines
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.ok, one observation here: this should seemlessly merge into /debug/tracing/events/ and provide a record format descriptor in 'format' to allow the automated fetching of the results of the probe. The
PERF_SAMPLE_RAWgateway should work as well.That way tooling that knows about /debug/tracing/events/ will automatically work with kprobes events as well. We can profile based on kprobes, etc. etc.
Quoted 5 lines
The _setting_ of the probe is still a separate channel - but if existing installed probes are merged into existing tooling that's a big step forward in terms of utility.
Ingo
It does already :)
But I've split out this patch that initially embeded the documentation. If you look at the 9/10 patch, you can see how look like the format files for kprobes.
Re: [PATCH 08/18] tracing: Add kprobe-based event tracer
Quoted 33 lines · Frederic Weisbecker
Quoted 32 lines · Ingo Molnar
Quoted 10 lines · Frederic Weisbecker
From: Masami Hiramatsu<[email protected]>
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).Quoted 5 lines
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.ok, one observation here: this should seemlessly merge into /debug/tracing/events/ and provide a record format descriptor in 'format' to allow the automated fetching of the results of the probe. The
PERF_SAMPLE_RAWgateway should work as well.That way tooling that knows about /debug/tracing/events/ will automatically work with kprobes events as well. We can profile based on kprobes, etc. etc.
The _setting_ of the probe is still a separate channel - but if existing installed probes are merged into existing tooling that's a big step forward in terms of utility.
Quoted 8 lines
Quoted 1 line
Ingo
It does already :)
But I've split out this patch that initially embeded the documentation. If you look at the 9/10 patch, you can see how look like the format files for kprobes.
As far as I've tested, it just requires two changes for perf-tools.
- Support CONFIG_PROFILE_EVENT(profile_enable/disable) on kprobe-tracer.
- Ignore 'alias' tag(which is a special tag in kprobes event) while parsing format file.
Thank you,
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
PATCH 9/18 tracing: Add kprobe-based event tracer documentation
In reply to Frederic WeisbeckerFrom: Masami Hiramatsu <[email protected]>
Add the documentation to use the kprobe based event tracer.
[[email protected]: Split tracer and its Documentation in two patchs]
LKML-Reference: <[email protected]>
--- Documentation/trace/kprobetrace.txt | 139 +++++++++++++++++++++++++++++++++++ 1 files changed, 139 insertions(+), 0 deletions(-) create mode 100644 Documentation/trace/kprobetrace.txt
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). + +
Signature · 1 line
1.6.2.3
PATCH 10/18 tracing: Kprobe-tracer supports more than 6 arguments
In reply to Frederic WeisbeckerFrom: Masami Hiramatsu <[email protected]>
Support up to 128 arguments to fetch for each kprobes event.
LKML-Reference: <[email protected]>
--- 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 · 1 line
1.6.2.3
PATCH 11/18 tracing: Generate names for each kprobe event automatically
In reply to Frederic WeisbeckerFrom: Masami Hiramatsu <[email protected]>
Generate names for each kprobe event based on the probe point. (SYMBOL+offs or MEMADDR).
Also remove generic k*probe event types because there is no user of those types.
LKML-Reference: <[email protected]>
--- 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 · 1 line
1.6.2.3
PATCH 12/18 tracing: Kprobe tracer assigns new event ids for each event
In reply to Frederic WeisbeckerFrom: Masami Hiramatsu <[email protected]>
Assign 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.
LKML-Reference: <[email protected]>
--- kernel/trace/trace.h | 6 ----- kernel/trace/trace_kprobe.c | 51 ++++++++++++------------------------------ 2 files changed, 15 insertions(+), 42 deletions(-)
kernel/trace/trace.h +0 -6
@@ -38,8 +38,6 @@ enum trace_type {TRACE_KMEM_FREE ,TRACE_POWER ,TRACE_BLK , -TRACE_KPROBE , -TRACE_KRETPROBE , __TRACE_LAST_TYPE, };
@@ -343,10 +341,6 @@ extern void __ftrace_bad_type(void); TRACE_KMEM_ALLOC); \ IF_ASSIGN(var, ent, struct kmemtrace_free_entry, \TRACE_KMEM_FREE ); \ - 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 · 1 line
1.6.2.3
PATCH 13/18 tracing: Add kprobes event profiling interface
In reply to Frederic WeisbeckerFrom: Masami Hiramatsu <[email protected]>
Add profiling interfaces for each kprobes event. This interface provides how many times each probe hit or missed.
LKML-Reference: <[email protected]>
--- 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 · 1 line
1.6.2.3
PATCH 14/18 x86: Fix x86 instruction decoder selftest to check only .text
In reply to Frederic WeisbeckerFrom: Masami Hiramatsu <[email protected]>
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.
LKML-Reference: <[email protected]>
--- 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 · 1 line
1.6.2.3
PATCH 15/18 x86: Check awk features before generating inat-tables.c
In reply to Frederic WeisbeckerFrom: Masami Hiramatsu <[email protected]>
Check some awk mandatory features to generate inat-tables.c that old mawk doesn't support.
LKML-Reference: <[email protected]>
--- 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 · 1 line
1.6.2.3
PATCH 16/18 tracing/kprobes: Fix format typo in trace_kprobes
In reply to Frederic WeisbeckerFrom: Masami Hiramatsu <[email protected]>
Fix 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;
...LKML-Reference: <[email protected]>
--- kernel/trace/trace_kprobe.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
kernel/trace/trace_kprobe.c +1 -1
@@ -1070,7 +1070,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 · 1 line
1.6.2.3
PATCH 17/18 tracing/kprobes: Change trace_arg to probe_arg
In reply to Frederic WeisbeckerFrom: Masami Hiramatsu <[email protected]>
Change trace_arg_string() and parse_trace_arg() to probe_arg_string() and parse_probe_arg(), since those are kprobe-tracer local functions.
LKML-Reference: <[email protected]>
--- 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;
@@ -997,7 +997,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);
@@ -1024,7 +1024,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);
@@ -1041,7 +1041,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 · 1 line
1.6.2.3
PATCH 18/18 tracing/kprobes: Dump the culprit kprobe in case of kprobe recursion
In reply to Frederic WeisbeckerKprobes can enter into a probing recursion, ie: a kprobe that does an endless loop because one of its core mechanism function used during probing is also probed itself.
This patch helps pinpointing the kprobe that raised such recursion by dumping it and raising a BUG instead of a warning (we also disarm the kprobe to try avoiding recursion in BUG itself). Having a BUG instead of a warning stops the stacktrace in the right place and doesn't pollute the logs with hundreds of traces that eventually end up in a stack overflow.
--- arch/x86/kernel/kprobes.c | 8 ++++++-- include/linux/kprobes.h | 2 ++ kernel/kprobes.c | 7 +++++++ 3 files changed, 15 insertions(+), 2 deletions(-)
arch/x86/kernel/kprobes.c +6 -2
@@ -490,9 +490,13 @@ static int __kprobes reenter_kprobe(struct kprobe *p, struct pt_regs *regs,/* A probe has been hit in the codepath leading up * to, or just after, single-stepping of a probed * instruction. This entire codepath should strictly -* reside in .kprobes.text section. Raise a warning -* to highlight this peculiar case. +* reside in .kprobes.text section. +* Raise a BUG or we'll continue in an endless +* reentering loop and eventually a stack overflow. */ +arch_disarm_kprobe (p); +dump_kprobe (p); +BUG (); }default :/* impossible cases */
include/linux/kprobes.h +2 -0
@@ -296,6 +296,8 @@ void recycle_rp_inst(struct kretprobe_instance *ri, struct hlist_head *head);int disable_kprobe (struct kprobe *kp);int enable_kprobe (struct kprobe *kp); +void dump_kprobe (struct kprobe *kp); +#else /* !CONFIG_KPROBES: */ static inline int kprobes_built_in (void )
kernel/kprobes.c +7 -0
@@ -1141,6 +1141,13 @@ static void __kprobes kill_kprobe(struct kprobe *p)arch_remove_kprobe (p); } +void __kprobes dump_kprobe (struct kprobe *kp) +{ +printk (KERN_WARNING "Dumping kprobe:\n" ); +printk (KERN_WARNING "Name: %s\nAddress: %p\nOffset: %x\n" , + kp->symbol_name, kp->addr, kp->offset); +} +/* Module notifier call back, checking kprobes on the module */ static int __kprobes kprobes_module_callback (struct notifier_block *nb,unsigned long val,void *data)
Signature · 1 line
1.6.2.3
Re: [PATCH 18/18] tracing/kprobes: Dump the culprit kprobe in case of kprobe recursion
Hi Frederic,
Quoted 10 lines · Frederic Weisbecker
Kprobes can enter into a probing recursion, ie: a kprobe that does an endless loop because one of its core mechanism function used during probing is also probed itself.
This patch helps pinpointing the kprobe that raised such recursion by dumping it and raising a BUG instead of a warning (we also disarm the kprobe to try avoiding recursion in BUG itself). Having a BUG instead of a warning stops the stacktrace in the right place and doesn't pollute the logs with hundreds of traces that eventually end up in a stack overflow.
Thanks, but I also found similar bug cases.
arch/x86/kernel/kprobes.c static int __kprobes reenter_kprobe(struct kprobe *p, struct pt_regs *regs,
Quoted 15 lines
Signed-off-by Frederic Weisbecker<[email protected]>Cc Masami Hiramatsu<[email protected]>Cc Ananth N Mavinakayanahalli<[email protected]>--- arch/x86/kernel/kprobes.c | 8 ++++++-- include/linux/kprobes.h | 2 ++ kernel/kprobes.c | 7 +++++++ 3 files changed, 15 insertions(+), 2 deletions(-)arch/x86/kernel/kprobes.c +0
-0@@ -490,9 +490,13 @@ static int __kprobes reenter_kprobe(struct kprobe *p, struct pt_regs *regs,
Before this, kprobes checks p != kprobe_running(), but it's a meaningless branch. Hitting a kprobe while KPROBES_HIT_SS always treated as unrecoverable.
Quoted 33 lines
arch/x86/kernel/kprobes.c +6
-2/* A probe has been hit in the codepath leading up * to, or just after, single-stepping of a probed * instruction. This entire codepath should strictly -* reside in .kprobes.text section. Raise a warning -* to highlight this peculiar case. +* reside in .kprobes.text section. +* Raise a BUG or we'll continue in an endless +* reentering loop and eventually a stack overflow. */ +arch_disarm_kprobe (p); +dump_kprobe (p); +BUG (); }default :/* impossible cases */ include/linux/kprobes.h +2
-0@@ -296,6 +296,8 @@ void recycle_rp_inst(struct kretprobe_instance *ri, struct hlist_head *head);int disable_kprobe (struct kprobe *kp);int enable_kprobe (struct kprobe *kp); +void dump_kprobe (struct kprobe *kp); +#else /* !CONFIG_KPROBES: */ static inline int kprobes_built_in (void )kernel/kprobes.c +0
-0
kernel/kprobes.c static void __kprobes kill_kprobe(struct kprobe *p) · line 1149
Quoted 9 lines
kernel/kprobes.c +6
-0@@ -1141,6 +1141,13 @@ static void __kprobes kill_kprobe(struct kprobe *p)arch_remove_kprobe (p); } +void __kprobes dump_kprobe (struct kprobe *kp) +{ +printk (KERN_WARNING "Dumping kprobe:\n" ); +printk (KERN_WARNING "Name: %s\nAddress: %p\nOffset: %x\n" , + kp->symbol_name, kp->addr, kp->offset); +}
Since kp->symbol_name + kp->offset = kp->addr, I recommend to show it as "Kprobe at %s+%x:<%p>\n", kp->symbol_name, kp->offset, kp->addr.
kernel/kprobes.c static void __kprobes kill_kprobe(struct kprobe *p) · line 1153
Quoted 4 lines
kernel/kprobes.c +1
-0+/* Module notifier call back, checking kprobes on the module */ static int __kprobes kprobes_module_callback (struct notifier_block *nb,unsigned long val,void *data)
Thank you,
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
Re: [PATCH 18/18] tracing/kprobes: Dump the culprit kprobe in case of kprobe recursion
Quoted 26 lines · Masami Hiramatsu
Hi Frederic,
Quoted 10 lines · Frederic Weisbecker
Kprobes can enter into a probing recursion, ie: a kprobe that does an endless loop because one of its core mechanism function used during probing is also probed itself.
This patch helps pinpointing the kprobe that raised such recursion by dumping it and raising a BUG instead of a warning (we also disarm the kprobe to try avoiding recursion in BUG itself). Having a BUG instead of a warning stops the stacktrace in the right place and doesn't pollute the logs with hundreds of traces that eventually end up in a stack overflow.
Thanks, but I also found similar bug cases.
Quoted 10 lines
Signed-off-by Frederic Weisbecker<[email protected]>Cc Masami Hiramatsu<[email protected]>Cc Ananth N Mavinakayanahalli<[email protected]>--- arch/x86/kernel/kprobes.c | 8 ++++++-- include/linux/kprobes.h | 2 ++ kernel/kprobes.c | 7 +++++++ 3 files changed, 15 insertions(+), 2 deletions(-)
Quoted 9 lines
arch/x86/kernel/kprobes.c static int __kprobes reenter_kprobe(struct kprobe *p, struct pt_regs *regs,
Quoted 5 lines
arch/x86/kernel/kprobes.c +0
-0@@ -490,9 +490,13 @@ static int __kprobes reenter_kprobe(struct kprobe *p, struct pt_regs *regs,Before this, kprobes checks p !=
kprobe_running(), but it's a meaningless branch. Hitting a kprobe whileKPROBES_HIT_SSalways treated as unrecoverable.
Yeah, but that's the place where a probe ends up when bad reentrancy happens right?
Quoted 36 lines
Quoted 36 lines
arch/x86/kernel/kprobes.c +6
-2/* A probe has been hit in the codepath leading up * to, or just after, single-stepping of a probed * instruction. This entire codepath should strictly -* reside in .kprobes.text section. Raise a warning -* to highlight this peculiar case. +* reside in .kprobes.text section. +* Raise a BUG or we'll continue in an endless +* reentering loop and eventually a stack overflow. */ +arch_disarm_kprobe (p); +dump_kprobe (p); +BUG (); }default :/* impossible cases */ include/linux/kprobes.h +2
-0@@ -296,6 +296,8 @@ void recycle_rp_inst(struct kretprobe_instance *ri, struct hlist_head *head);int disable_kprobe (struct kprobe *kp);int enable_kprobe (struct kprobe *kp); +void dump_kprobe (struct kprobe *kp); +#else /* !CONFIG_KPROBES: */ static inline int kprobes_built_in (void )kernel/kprobes.c +0
-0@@ -1141,6 +1141,13 @@ static void __kprobes kill_kprobe(struct kprobe *p)arch_remove_kprobe (p); }
Quoted 9 lines
kernel/kprobes.c static void __kprobes kill_kprobe(struct kprobe *p) · line 1149
Quoted 6 lines
kernel/kprobes.c +6
-0+void __kprobes dump_kprobe (struct kprobe *kp) +{ +printk (KERN_WARNING "Dumping kprobe:\n" ); +printk (KERN_WARNING "Name: %s\nAddress: %p\nOffset: %x\n" , + kp->symbol_name, kp->addr, kp->offset); +}Since
kp->symbol_name+kp->offset=kp->addr, I recommend to show it as "Kprobe at %s+%x:<%p>\n",kp->symbol_name,kp->offset,kp->addr.
Ok I'll fix this, thanks.
Quoted 16 lines
kernel/kprobes.c static void __kprobes kill_kprobe(struct kprobe *p) · line 1153
Quoted 4 lines
kernel/kprobes.c +1
-0+/* Module notifier call back, checking kprobes on the module */ static int __kprobes kprobes_module_callback (struct notifier_block *nb,unsigned long val,void *data)Thank you,
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
Re: [PATCH 18/18] tracing/kprobes: Dump the culprit kprobe in case of kprobe recursion
Quoted 39 lines · Frederic Weisbecker
Quoted 26 lines · Masami Hiramatsu
Hi Frederic,
Quoted 10 lines · Frederic Weisbecker
Kprobes can enter into a probing recursion, ie: a kprobe that does an endless loop because one of its core mechanism function used during probing is also probed itself.
This patch helps pinpointing the kprobe that raised such recursion by dumping it and raising a BUG instead of a warning (we also disarm the kprobe to try avoiding recursion in BUG itself). Having a BUG instead of a warning stops the stacktrace in the right place and doesn't pollute the logs with hundreds of traces that eventually end up in a stack overflow.
Thanks, but I also found similar bug cases.
Quoted 10 lines
Signed-off-by Frederic Weisbecker<[email protected]>Cc Masami Hiramatsu<[email protected]>Cc Ananth N Mavinakayanahalli<[email protected]>--- arch/x86/kernel/kprobes.c | 8 ++++++-- include/linux/kprobes.h | 2 ++ kernel/kprobes.c | 7 +++++++ 3 files changed, 15 insertions(+), 2 deletions(-)Quoted 9 lines
arch/x86/kernel/kprobes.c static int __kprobes reenter_kprobe(struct kprobe *p, struct pt_regs *regs,
Quoted 5 lines
arch/x86/kernel/kprobes.c +0
-0@@ -490,9 +490,13 @@ static int __kprobes reenter_kprobe(struct kprobe *p, struct pt_regs *regs,Before this, kprobes checks p !=
kprobe_running(), but it's a meaningless branch. Hitting a kprobe whileKPROBES_HIT_SSalways treated as unrecoverable.
Quoted 2 lines
Yeah, but that's the place where a probe ends up when bad reentrancy happens right?
No, a place which is shared by kprobes and other subsystems, will cause a problem.
for example, I found an irq_return case which will be p == kprobe_running() on x86-64.
-> <some irq occurs>
-> irq_return
-> <hit int3>
-> do_int3
-> <handling kprobe (set kprobe_running)>
-> irq_return (from do_int3)
-> <hit int3>
-> do_int3
<handling kprobe (kprobe_running == p)> <- here!Perhaps, the original code assumes that it will be caused by an int3 which another subsystem inserted on out-of-line singlestep buffer if the hitting probe is same as current probe.
However, in that case, int3 hitting address is on the out-of-line buffer and should be different from first (current) int3 address.
So, I think this part should also be removed.
if (p == kprobe_running()) {
regs->flags &= ~X86_EFLAGS_TF;
regs->flags |= kcb->kprobe_saved_flags;
return 0;
} else {Thank you,
Quoted 60 lines
Quoted 39 lines
Quoted 39 lines
arch/x86/kernel/kprobes.c +6
-2/* A probe has been hit in the codepath leading up * to, or just after, single-stepping of a probed * instruction. This entire codepath should strictly -* reside in .kprobes.text section. Raise a warning -* to highlight this peculiar case. +* reside in .kprobes.text section. +* Raise a BUG or we'll continue in an endless +* reentering loop and eventually a stack overflow. */ +arch_disarm_kprobe (p); +dump_kprobe (p); +BUG (); }default :/* impossible cases */ include/linux/kprobes.h +2
-0@@ -296,6 +296,8 @@ void recycle_rp_inst(struct kretprobe_instance *ri, struct hlist_head *head);int disable_kprobe (struct kprobe *kp);int enable_kprobe (struct kprobe *kp); +void dump_kprobe (struct kprobe *kp); +#else /* !CONFIG_KPROBES: */ static inline int kprobes_built_in (void )kernel/kprobes.c +0
-0@@ -1141,6 +1141,13 @@ static void __kprobes kill_kprobe(struct kprobe *p)arch_remove_kprobe (p); }Quoted 9 lines
kernel/kprobes.c static void __kprobes kill_kprobe(struct kprobe *p) · line 1149
Quoted 6 lines
kernel/kprobes.c +6
-0+void __kprobes dump_kprobe (struct kprobe *kp) +{ +printk (KERN_WARNING "Dumping kprobe:\n" ); +printk (KERN_WARNING "Name: %s\nAddress: %p\nOffset: %x\n" , + kp->symbol_name, kp->addr, kp->offset); +}Since
kp->symbol_name+kp->offset=kp->addr, I recommend to show it as "Kprobe at %s+%x:<%p>\n",kp->symbol_name,kp->offset,kp->addr.Ok I'll fix this, thanks.
Quoted 7 lines
kernel/kprobes.c static void __kprobes kill_kprobe(struct kprobe *p) · line 1153
Quoted 4 lines
kernel/kprobes.c +1
-0+/* Module notifier call back, checking kprobes on the module */ static int __kprobes kprobes_module_callback (struct notifier_block *nb,unsigned long val,void *data)Thank you,
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
Re: [PATCH 18/18] tracing/kprobes: Dump the culprit kprobe in case of kprobe recursion
Quoted 52 lines · Masami Hiramatsu
Quoted 39 lines · Frederic Weisbecker
Quoted 26 lines · Masami Hiramatsu
Hi Frederic,
Quoted 10 lines · Frederic Weisbecker
Kprobes can enter into a probing recursion, ie: a kprobe that does an endless loop because one of its core mechanism function used during probing is also probed itself.
This patch helps pinpointing the kprobe that raised such recursion by dumping it and raising a BUG instead of a warning (we also disarm the kprobe to try avoiding recursion in BUG itself). Having a BUG instead of a warning stops the stacktrace in the right place and doesn't pollute the logs with hundreds of traces that eventually end up in a stack overflow.
Thanks, but I also found similar bug cases.
Quoted 10 lines
Signed-off-by Frederic Weisbecker<[email protected]>Cc Masami Hiramatsu<[email protected]>Cc Ananth N Mavinakayanahalli<[email protected]>--- arch/x86/kernel/kprobes.c | 8 ++++++-- include/linux/kprobes.h | 2 ++ kernel/kprobes.c | 7 +++++++ 3 files changed, 15 insertions(+), 2 deletions(-)Quoted 9 lines
arch/x86/kernel/kprobes.c static int __kprobes reenter_kprobe(struct kprobe *p, struct pt_regs *regs,
Quoted 5 lines
arch/x86/kernel/kprobes.c +0
-0@@ -490,9 +490,13 @@ static int __kprobes reenter_kprobe(struct kprobe *p, struct pt_regs *regs,Before this, kprobes checks p !=
kprobe_running(), but it's a meaningless branch. Hitting a kprobe whileKPROBES_HIT_SSalways treated as unrecoverable.Quoted 2 lines
Yeah, but that's the place where a probe ends up when bad reentrancy happens right?
No, a place which is shared by kprobes and other subsystems, will cause a problem.
for example, I found an
irq_returncase which will be p ==kprobe_running()on x86-64.-> <some irq occurs>
->irq_return
-> <hit int3>
Quoted 7 lines
-> do_int3
-> <handling kprobe (set kprobe_running)>
-> irq_return (from do_int3)
-> <hit int3>
-> do_int3
<handling kprobe (kprobe_running == p)> <- here!Oh right.
Quoted 6 lines
Perhaps, the original code assumes that it will be caused by an int3 which another subsystem inserted on out-of-line singlestep buffer if the hitting probe is same as current probe.
However, in that case, int3 hitting address is on the out-of-line buffer and should be different from first (current) int3 address.
I see.
Quoted 9 lines
So, I think this part should also be removed.
if (p == kprobe_running()) { regs->flags &= ~X86_EFLAGS_TF; regs->flags |= kcb->kprobe_saved_flags; return 0; } else {Thank you,
So my patch is useless? Or is it also useful to detect real recursion? (despite of such corner cases)
Quoted 69 lines
Quoted 60 lines
Quoted 39 lines
Quoted 39 lines
arch/x86/kernel/kprobes.c +6
-2/* A probe has been hit in the codepath leading up * to, or just after, single-stepping of a probed * instruction. This entire codepath should strictly -* reside in .kprobes.text section. Raise a warning -* to highlight this peculiar case. +* reside in .kprobes.text section. +* Raise a BUG or we'll continue in an endless +* reentering loop and eventually a stack overflow. */ +arch_disarm_kprobe (p); +dump_kprobe (p); +BUG (); }default :/* impossible cases */ include/linux/kprobes.h +2
-0@@ -296,6 +296,8 @@ void recycle_rp_inst(struct kretprobe_instance *ri, struct hlist_head *head);int disable_kprobe (struct kprobe *kp);int enable_kprobe (struct kprobe *kp); +void dump_kprobe (struct kprobe *kp); +#else /* !CONFIG_KPROBES: */ static inline int kprobes_built_in (void )kernel/kprobes.c +0
-0@@ -1141,6 +1141,13 @@ static void __kprobes kill_kprobe(struct kprobe *p)arch_remove_kprobe (p); }Quoted 9 lines
kernel/kprobes.c static void __kprobes kill_kprobe(struct kprobe *p) · line 1149
Quoted 6 lines
kernel/kprobes.c +6
-0+void __kprobes dump_kprobe (struct kprobe *kp) +{ +printk (KERN_WARNING "Dumping kprobe:\n" ); +printk (KERN_WARNING "Name: %s\nAddress: %p\nOffset: %x\n" , + kp->symbol_name, kp->addr, kp->offset); +}Since
kp->symbol_name+kp->offset=kp->addr, I recommend to show it as "Kprobe at %s+%x:<%p>\n",kp->symbol_name,kp->offset,kp->addr.Ok I'll fix this, thanks.
Quoted 7 lines
kernel/kprobes.c static void __kprobes kill_kprobe(struct kprobe *p) · line 1153
Quoted 4 lines
kernel/kprobes.c +1
-0+/* Module notifier call back, checking kprobes on the module */ static int __kprobes kprobes_module_callback (struct notifier_block *nb,unsigned long val,void *data)Thank you,
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
Re: [PATCH 18/18] tracing/kprobes: Dump the culprit kprobe in case of kprobe recursion
Quoted 84 lines · Frederic Weisbecker
Quoted 51 lines · Masami Hiramatsu
Quoted 39 lines · Frederic Weisbecker
Quoted 26 lines · Masami Hiramatsu
Hi Frederic,
Quoted 10 lines · Frederic Weisbecker
Kprobes can enter into a probing recursion, ie: a kprobe that does an endless loop because one of its core mechanism function used during probing is also probed itself.
This patch helps pinpointing the kprobe that raised such recursion by dumping it and raising a BUG instead of a warning (we also disarm the kprobe to try avoiding recursion in BUG itself). Having a BUG instead of a warning stops the stacktrace in the right place and doesn't pollute the logs with hundreds of traces that eventually end up in a stack overflow.
Thanks, but I also found similar bug cases.
Quoted 10 lines
Signed-off-by Frederic Weisbecker<[email protected]>Cc Masami Hiramatsu<[email protected]>Cc Ananth N Mavinakayanahalli<[email protected]>--- arch/x86/kernel/kprobes.c | 8 ++++++-- include/linux/kprobes.h | 2 ++ kernel/kprobes.c | 7 +++++++ 3 files changed, 15 insertions(+), 2 deletions(-)Quoted 9 lines
arch/x86/kernel/kprobes.c static int __kprobes reenter_kprobe(struct kprobe *p, struct pt_regs *regs,
Quoted 5 lines
arch/x86/kernel/kprobes.c +0
-0@@ -490,9 +490,13 @@ static int __kprobes reenter_kprobe(struct kprobe *p, struct pt_regs *regs,Before this, kprobes checks p !=
kprobe_running(), but it's a meaningless branch. Hitting a kprobe whileKPROBES_HIT_SSalways treated as unrecoverable.Quoted 2 lines
Yeah, but that's the place where a probe ends up when bad reentrancy happens right?
No, a place which is shared by kprobes and other subsystems, will cause a problem.
for example, I found an
irq_returncase which will be p ==kprobe_running()on x86-64.-> <some irq occurs>
->irq_returnQuoted 8 lines
-> <hit int3> -> do_int3 -> <handling kprobe (set kprobe_running)> -> irq_return (from do_int3) -> <hit int3> -> do_int3 <handling kprobe (kprobe_running == p)> <- here!Oh right.
Quoted 6 lines
Perhaps, the original code assumes that it will be caused by an int3 which another subsystem inserted on out-of-line singlestep buffer if the hitting probe is same as current probe.
However, in that case, int3 hitting address is on the out-of-line buffer and should be different from first (current) int3 address.
I see.
Quoted 8 lines
So, I think this part should also be removed.
if (p == kprobe_running()) { regs->flags&= ~X86_EFLAGS_TF; regs->flags |= kcb->kprobe_saved_flags; return 0; } else {
Quoted 5 lines
Quoted 1 line
Thank you,
So my patch is useless? Or is it also useful to detect real recursion? (despite of such corner cases)
Your patch is still useful! I'd like to suggest a bugfix :-). Anyway, I'll send an update patch.
Thank you!
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
Re: [PATCH 18/18] tracing/kprobes: Dump the culprit kprobe in case of kprobe recursion
Quoted 88 lines · Masami Hiramatsu
Quoted 87 lines · Frederic Weisbecker
Quoted 51 lines · Masami Hiramatsu
Quoted 39 lines · Frederic Weisbecker
Quoted 26 lines · Masami Hiramatsu
Hi Frederic,
Quoted 10 lines · Frederic Weisbecker
Kprobes can enter into a probing recursion, ie: a kprobe that does an endless loop because one of its core mechanism function used during probing is also probed itself.
This patch helps pinpointing the kprobe that raised such recursion by dumping it and raising a BUG instead of a warning (we also disarm the kprobe to try avoiding recursion in BUG itself). Having a BUG instead of a warning stops the stacktrace in the right place and doesn't pollute the logs with hundreds of traces that eventually end up in a stack overflow.
Thanks, but I also found similar bug cases.
Quoted 10 lines
Signed-off-by Frederic Weisbecker<[email protected]>Cc Masami Hiramatsu<[email protected]>Cc Ananth N Mavinakayanahalli<[email protected]>--- arch/x86/kernel/kprobes.c | 8 ++++++-- include/linux/kprobes.h | 2 ++ kernel/kprobes.c | 7 +++++++ 3 files changed, 15 insertions(+), 2 deletions(-)Quoted 9 lines
arch/x86/kernel/kprobes.c static int __kprobes reenter_kprobe(struct kprobe *p, struct pt_regs *regs,
Quoted 5 lines
arch/x86/kernel/kprobes.c +0
-0@@ -490,9 +490,13 @@ static int __kprobes reenter_kprobe(struct kprobe *p, struct pt_regs *regs,Before this, kprobes checks p !=
kprobe_running(), but it's a meaningless branch. Hitting a kprobe whileKPROBES_HIT_SSalways treated as unrecoverable.Quoted 2 lines
Yeah, but that's the place where a probe ends up when bad reentrancy happens right?
No, a place which is shared by kprobes and other subsystems, will cause a problem.
for example, I found an
irq_returncase which will be p ==kprobe_running()on x86-64.-> <some irq occurs>
->irq_returnQuoted 8 lines
-> <hit int3> -> do_int3 -> <handling kprobe (set kprobe_running)> -> irq_return (from do_int3) -> <hit int3> -> do_int3 <handling kprobe (kprobe_running == p)> <- here!Oh right.
Quoted 6 lines
Perhaps, the original code assumes that it will be caused by an int3 which another subsystem inserted on out-of-line singlestep buffer if the hitting probe is same as current probe.
However, in that case, int3 hitting address is on the out-of-line buffer and should be different from first (current) int3 address.
I see.
Quoted 9 lines
So, I think this part should also be removed.
if (p == kprobe_running()) { regs->flags&= ~X86_EFLAGS_TF; regs->flags |= kcb->kprobe_saved_flags; return 0; } else {Thank you,
Quoted 8 lines
Quoted 2 lines
So my patch is useless? Or is it also useful to detect real recursion? (despite of such corner cases)
Your patch is still useful! I'd like to suggest a bugfix :-). Anyway, I'll send an update patch.
Thank you!
Ah ok, I was just confused :)
Well, then it's dangerous because it also detect false positives.
That does not seem easy to fix.
[GIT PULL v2] tracing/kprobes: v1 + two fixes
In reply to Frederic WeisbeckerIngo,
This v2 can be either pulled after tracing/kprobes (the v1) or can be pulled alone, it is based on the previous one and addresses reviews from Li Zefan.
Thanks,
Frederic.
The following changes since commit 24851d2447830e6cba4c4b641cb73e713f312373:
Frederic Weisbecker (1):
tracing/kprobes: Dump the culprit kprobe in case of kprobe recursion
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing.git \
tracing/kprobes-2
Frederic Weisbecker (2):
tracing: Restore the const qualifier for field names and types definition
tracing: Remove unneeded pointer casts
include/linux/ftrace_event.h | 6 +++--- kernel/trace/trace_events.c | 4 ++-- kernel/trace/trace_syscalls.c | 8 ++++---- 3 files changed, 9 insertions(+), 9 deletions(-)
Re: [GIT PULL v2] tracing/kprobes: v1 + two fixes
Quoted 18 lines · Frederic Weisbecker
Ingo,
This v2 can be either pulled after tracing/kprobes (the v1) or can be pulled alone, it is based on the previous one and addresses reviews from Li Zefan.
Thanks,
Frederic.The following changes since commit
24851d2447830e6cba4c4b641cb73e713f312373:
Frederic Weisbecker (1):
tracing/kprobes: Dump the culprit kprobe in case of kprobe recursionare available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing.git\
tracing/kprobes-2
Quoted 8 lines
Frederic Weisbecker (2):
tracing: Restore the const qualifier for field names and types definition
tracing: Remove unneeded pointer castsinclude/linux/ftrace_event.h | 6 +++--- kernel/trace/trace_events.c | 4 ++-- kernel/trace/trace_syscalls.c | 8 ++++---- 3 files changed, 9 insertions(+), 9 deletions(-)
I've pulled it into a staging branch (not yet in tip:master either and not yet on the road to upstream either), thanks guys!
I have done some brief testing. One hickup is this build failure on x86, caused by the kprobes instruction decoder self-test:
CHK include/linux/compile.h
TEST posttest
Error: 41001024: a1 08 30 c9 41 mov
0x41c93008,%eax
Error: objdump says 5 bytes, but insn_get_length() says 9 (attr:40000)
another one is this build warning:
In file included from include/trace/events/napi.h:5,
from net/core/net-traces.c:28:
include/linux/tracepoint.h:285:1: warning: "TRACE_EVENT_FN" redefined
In file included from include/trace/define_trace.h:61,
from include/trace/events/skb.h:40,
from net/core/net-traces.c:27: include/trace/ftrace.h:50:1: warning: this is the location of the previous definition
config attached.
Ingo
#
# Automatically generated make config: don't edit # Linux kernel version: 2.6.31-rc7
# Thu Aug 27 17:10:14 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=y CONFIG_GENERIC_PENDING_IRQ=y CONFIG_USE_GENERIC_SMP_HELPERS=y CONFIG_X86_32_SMP=yCONFIG_X86_HT=yCONFIG_X86_TRAMPOLINE=yCONFIG_KTIME_SCALAR=y CONFIG_BOOTPARAM_SUPPORT_NOT_WANTED=y CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" CONFIG_CONSTRUCTORS=y
#
# General setup
#CONFIG_EXPERIMENTAL=yCONFIG_BROKEN_BOOT_ALLOWED4=yCONFIG_BROKEN_BOOT_ALLOWED3=y
# CONFIG_BROKEN_BOOT_ALLOWED2 is not setCONFIG_BROKEN_BOOT_DISALLOWED=yCONFIG_BROKEN_BOOT_EUROPE=yCONFIG_BROKEN_BOOT_TITAN=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=y
# CONFIG_POSIX_MQUEUE is not setCONFIG_BSD_PROCESS_ACCT=yCONFIG_BSD_PROCESS_ACCT_V3=yCONFIG_TASKSTATS=yCONFIG_TASK_DELAY_ACCT=yCONFIG_TASK_XACCT=y
# CONFIG_TASK_IO_ACCOUNTING is not setCONFIG_AUDIT=yCONFIG_AUDITSYSCALL=yCONFIG_AUDIT_TREE=y
#
# RCU Subsystem
#
# CONFIG_TREE_RCU is not setCONFIG_TREE_PREEMPT_RCU=y
# CONFIG_RCU_TRACE is not setCONFIG_RCU_FANOUT=32
# CONFIG_RCU_FANOUT_EXACT is not set
# CONFIG_TREE_RCU_TRACE is not set
# CONFIG_IKCONFIG is not setCONFIG_LOG_BUF_SHIFT=20CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=yCONFIG_GROUP_SCHED=y
# CONFIG_FAIR_GROUP_SCHED is not setCONFIG_RT_GROUP_SCHED=yCONFIG_USER_SCHED=y
# CONFIG_CGROUP_SCHED is not setCONFIG_CGROUPS=yCONFIG_CGROUP_DEBUG=yCONFIG_CGROUP_NS=y
# CONFIG_CGROUP_FREEZER is not setCONFIG_CGROUP_DEVICE=yCONFIG_CPUSETS=yCONFIG_PROC_PID_CPUSET=yCONFIG_CGROUP_CPUACCT=yCONFIG_RESOURCE_COUNTERS=yCONFIG_CGROUP_MEM_RES_CTLR=yCONFIG_CGROUP_MEM_RES_CTLR_SWAP=yCONFIG_MM_OWNER=yCONFIG_SYSFS_DEPRECATED=y
# CONFIG_SYSFS_DEPRECATED_V2 is not setCONFIG_RELAY=y
# CONFIG_NAMESPACES is not setCONFIG_BLK_DEV_INITRD=yCONFIG_INITRAMFS_SOURCE=""CONFIG_RD_GZIP=y
# CONFIG_RD_BZIP2 is not setCONFIG_RD_LZMA=y
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not setCONFIG_SYSCTL=yCONFIG_ANON_INODES=yCONFIG_EMBEDDED=yCONFIG_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=y
# CONFIG_PCSPKR_PLATFORM is not setCONFIG_BASE_FULL=yCONFIG_FUTEX=y
# CONFIG_EPOLL is not set
# CONFIG_SIGNALFD is not setCONFIG_TIMERFD=yCONFIG_EVENTFD=yCONFIG_SHMEM=yCONFIG_AIO=yCONFIG_HAVE_PERF_COUNTERS=y
#
# Performance Counters
#
# CONFIG_PERF_COUNTERS is not setCONFIG_VM_EVENT_COUNTERS=yCONFIG_PCI_QUIRKS=yCONFIG_SLUB_DEBUG=y
# CONFIG_STRIP_ASM_SYMS is not setCONFIG_COMPAT_BRK=y
# CONFIG_SLAB is not setCONFIG_SLUB=y
# CONFIG_SLOB is not setCONFIG_PROFILING=yCONFIG_TRACEPOINTS=yCONFIG_MARKERS=yCONFIG_OPROFILE=mCONFIG_OPROFILE_IBS=yCONFIG_OPROFILE_EVENT_MULTIPLEX=yCONFIG_HAVE_OPROFILE=y
# CONFIG_KPROBES is not setCONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=yCONFIG_HAVE_IOREMAP_PROT=yCONFIG_HAVE_KPROBES=yCONFIG_HAVE_KRETPROBES=yCONFIG_HAVE_ARCH_TRACEHOOK=yCONFIG_HAVE_DMA_ATTRS=yCONFIG_HAVE_DMA_API_DEBUG=yCONFIG_HAVE_HW_BREAKPOINT=y
#
# GCOV-based kernel profiling
#CONFIG_SLOW_WORK=yCONFIG_HAVE_GENERIC_DMA_COHERENT=yCONFIG_SLABINFO=yCONFIG_RT_MUTEXES=yCONFIG_BASE_SMALL=0CONFIG_MODULES=yCONFIG_MODULE_FORCE_LOAD=y
# CONFIG_MODULE_UNLOAD is not setCONFIG_MODVERSIONS=yCONFIG_MODULE_SRCVERSION_ALL=yCONFIG_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=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=y
# CONFIG_FREEZER is not set
#
# Processor type and features
#CONFIG_TICK_ONESHOT=yCONFIG_NO_HZ=yCONFIG_HIGH_RES_TIMERS=yCONFIG_GENERIC_CLOCKEVENTS_BUILD=yCONFIG_SMP_SUPPORT=y
# CONFIG_SPARSE_IRQ is not setCONFIG_X86_MPPARSE=yCONFIG_X86_BIGSMP=yCONFIG_X86_EXTENDED_PLATFORM=yCONFIG_X86_ELAN=yCONFIG_X86_RDC321X=yCONFIG_X86_32_NON_STANDARD=yCONFIG_X86_NUMAQ=yCONFIG_X86_SUMMIT=yCONFIG_X86_ES7000=yCONFIG_SCHED_OMIT_FRAME_POINTER=y
# CONFIG_PARAVIRT_GUEST is not set
# CONFIG_MEMTEST is not setCONFIG_X86_SUMMIT_NUMA=yCONFIG_X86_CYCLONE_TIMER=yCONFIG_X86_CPU=yCONFIG_X86_L1_CACHE_BYTES=64CONFIG_X86_INTERNODE_CACHE_BYTES=64CONFIG_X86_CMPXCHG=yCONFIG_X86_L1_CACHE_SHIFT=4CONFIG_X86_XADD=yCONFIG_X86_WP_WORKS_OK=yCONFIG_X86_INVLPG=yCONFIG_X86_BSWAP=yCONFIG_X86_POPAD_OK=yCONFIG_X86_ALIGNMENT_16=yCONFIG_X86_CMPXCHG64=yCONFIG_X86_MINIMUM_CPU_FAMILY=4CONFIG_X86_DEBUGCTLMSR=yCONFIG_PROCESSOR_SELECT=yCONFIG_CPU_SUP_INTEL=yCONFIG_CPU_SUP_CYRIX_32=yCONFIG_CPU_SUP_AMD=y
# CONFIG_CPU_SUP_CENTAUR is not setCONFIG_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=32CONFIG_SCHED_SMT=yCONFIG_SCHED_MC=y
# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT_VOLUNTARY is not setCONFIG_PREEMPT=yCONFIG_X86_LOCAL_APIC=yCONFIG_X86_IO_APIC=yCONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=yCONFIG_X86_MCE=yCONFIG_X86_MCE_INTEL=y
# CONFIG_X86_MCE_AMD is not set
# CONFIG_X86_ANCIENT_MCE is not setCONFIG_X86_MCE_THRESHOLD=yCONFIG_X86_MCE_INJECT=mCONFIG_X86_THERMAL_VECTOR=y
# CONFIG_VM86 is not setCONFIG_I8K=mCONFIG_X86_REBOOTFIXUPS=yCONFIG_MICROCODE=m
# CONFIG_MICROCODE_INTEL is not setCONFIG_MICROCODE_AMD=yCONFIG_MICROCODE_OLD_INTERFACE=yCONFIG_X86_MSR=y
# CONFIG_X86_CPUID is not setCONFIG_X86_CPU_DEBUG=y
# CONFIG_UP_WANTED_1 is not setCONFIG_SMP=y
# CONFIG_NOHIGHMEM is not set
# CONFIG_HIGHMEM4G is not setCONFIG_HIGHMEM64G=y
# CONFIG_VMSPLIT_3G is not set
# CONFIG_VMSPLIT_3G_OPT is not set
# CONFIG_VMSPLIT_2G is not set
# CONFIG_VMSPLIT_2G_OPT is not setCONFIG_VMSPLIT_1G=yCONFIG_PAGE_OFFSET=0x40000000CONFIG_HIGHMEM=yCONFIG_X86_PAE=yCONFIG_ARCH_PHYS_ADDR_T_64BIT=yCONFIG_NUMA=y
#
# NUMA (Summit) requires SMP, 64GB highmem support, ACPI #CONFIG_NODES_SHIFT=4CONFIG_HAVE_ARCH_BOOTMEM=y CONFIG_ARCH_HAVE_MEMORY_PRESENT=y CONFIG_NEED_NODE_MEMMAP_SIZE=y CONFIG_HAVE_ARCH_ALLOC_REMAP=y CONFIG_ARCH_DISCONTIGMEM_ENABLE=y CONFIG_ARCH_DISCONTIGMEM_DEFAULT=y CONFIG_ARCH_SPARSEMEM_ENABLE=y CONFIG_ARCH_SELECT_MEMORY_MODEL=y CONFIG_ILLEGAL_POINTER_VALUE=0 CONFIG_SELECT_MEMORY_MODEL=y
# CONFIG_FLATMEM_MANUAL is not set CONFIG_DISCONTIGMEM_MANUAL=y
# CONFIG_SPARSEMEM_MANUAL is not set CONFIG_DISCONTIGMEM=y CONFIG_FLAT_NODE_MEM_MAP=y CONFIG_NEED_MULTIPLE_NODES=y CONFIG_HAVE_MEMORY_PRESENT=y CONFIG_SPARSEMEM_STATIC=y CONFIG_PAGEFLAGS_EXTENDED=y CONFIG_SPLIT_PTLOCK_CPUS=4
# CONFIG_MIGRATION is not set CONFIG_PHYS_ADDR_T_64BIT=y CONFIG_ZONE_DMA_FLAG=1CONFIG_BOUNCE=yCONFIG_VIRT_TO_BUS=yCONFIG_HAVE_MLOCK=y CONFIG_HAVE_MLOCKED_PAGE_BIT=y CONFIG_MMU_NOTIFIER=y CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 CONFIG_HIGHPTE=y
# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set CONFIG_X86_RESERVE_LOW_64K=y CONFIG_MATH_EMULATION=y
# CONFIG_MTRR is not set
# CONFIG_SECCOMP is not set CONFIG_CC_STACKPROTECTOR_ALL=y CONFIG_CC_STACKPROTECTOR=y
# 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=yCONFIG_KEXEC=y
# CONFIG_CRASH_DUMP is not set CONFIG_PHYSICAL_START=0x1000000
# CONFIG_RELOCATABLE is not set CONFIG_PHYSICAL_ALIGN=0x1000000 CONFIG_HOTPLUG_CPU=yCONFIG_COMPAT_VDSO=y
# CONFIG_CMDLINE_BOOL is not set CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
# CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID is not set
#
# Power management and ACPI options
#
# CONFIG_PM is not set
#
# CPU Frequency scaling
#CONFIG_CPU_FREQ=yCONFIG_CPU_FREQ_TABLE=y CONFIG_CPU_FREQ_DEBUG=y
# CONFIG_CPU_FREQ_STAT is not set 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=m
# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
#
# CPUFreq processor drivers
#CONFIG_ELAN_CPUFREQ=mCONFIG_SC520_CPUFREQ=m
# CONFIG_X86_POWERNOW_K6 is not setCONFIG_X86_POWERNOW_K7=yCONFIG_X86_GX_SUSPMOD=yCONFIG_X86_SPEEDSTEP_CENTRINO=mCONFIG_X86_SPEEDSTEP_CENTRINO_TABLE=yCONFIG_X86_SPEEDSTEP_ICH=m
# CONFIG_X86_SPEEDSTEP_SMI is not setCONFIG_X86_P4_CLOCKMOD=mCONFIG_X86_CPUFREQ_NFORCE2=mCONFIG_X86_LONGRUN=yCONFIG_X86_E_POWERSAVER=y
#
# shared options # CONFIG_X86_SPEEDSTEP_LIB=m 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 setCONFIG_PCI_GOOLPC=y
# CONFIG_PCI_GOANY is not setCONFIG_PCI_BIOS=yCONFIG_PCI_DIRECT=yCONFIG_PCI_OLPC=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=mCONFIG_HT_IRQ=yCONFIG_PCI_IOV=yCONFIG_ISA_DMA_API=y
# CONFIG_ISA is not set
# CONFIG_MCA is not set
# CONFIG_SCx200 is not setCONFIG_OLPC=y
# 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=yCONFIG_BINFMT_AOUT=yCONFIG_BINFMT_MISC=mCONFIG_HAVE_ATOMIC_IOMAP=yCONFIG_NET=y
#
# Networking options
#CONFIG_PACKET=y
# CONFIG_PACKET_MMAP is not setCONFIG_UNIX=yCONFIG_XFRM=yCONFIG_XFRM_USER=mCONFIG_XFRM_SUB_POLICY=yCONFIG_XFRM_MIGRATE=yCONFIG_XFRM_STATISTICS=yCONFIG_XFRM_IPCOMP=yCONFIG_NET_KEY=m
# CONFIG_NET_KEY_MIGRATE is not setCONFIG_INET=yCONFIG_IP_MULTICAST=yCONFIG_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=y
# CONFIG_IP_PNP_DHCP is not setCONFIG_IP_PNP_BOOTP=y
# CONFIG_IP_PNP_RARP is not setCONFIG_NET_IPIP=mCONFIG_NET_IPGRE=yCONFIG_NET_IPGRE_BROADCAST=yCONFIG_IP_MROUTE=y
# CONFIG_IP_PIMSM_V1 is not set
# CONFIG_IP_PIMSM_V2 is not setCONFIG_ARPD=yCONFIG_SYN_COOKIES=y
# CONFIG_INET_AH is not set
# CONFIG_INET_ESP is not setCONFIG_INET_IPCOMP=yCONFIG_INET_XFRM_TUNNEL=yCONFIG_INET_TUNNEL=yCONFIG_INET_XFRM_MODE_TRANSPORT=mCONFIG_INET_XFRM_MODE_TUNNEL=y
# CONFIG_INET_XFRM_MODE_BEET is not setCONFIG_INET_LRO=y
# CONFIG_INET_DIAG is not setCONFIG_TCP_CONG_ADVANCED=yCONFIG_TCP_CONG_BIC=m
# CONFIG_TCP_CONG_CUBIC is not set
# CONFIG_TCP_CONG_WESTWOOD is not setCONFIG_TCP_CONG_HTCP=mCONFIG_TCP_CONG_HSTCP=mCONFIG_TCP_CONG_HYBLA=mCONFIG_TCP_CONG_VEGAS=y
# CONFIG_TCP_CONG_SCALABLE is not setCONFIG_TCP_CONG_LP=yCONFIG_TCP_CONG_VENO=y
# CONFIG_TCP_CONG_YEAH is not setCONFIG_TCP_CONG_ILLINOIS=m
# CONFIG_DEFAULT_BIC is not set
# CONFIG_DEFAULT_CUBIC is not set
# CONFIG_DEFAULT_HTCP is not setCONFIG_DEFAULT_VEGAS=y
# CONFIG_DEFAULT_WESTWOOD is not set
# CONFIG_DEFAULT_RENO is not setCONFIG_DEFAULT_TCP_CONG="vegas"
# CONFIG_TCP_MD5SIG is not setCONFIG_IPV6=mCONFIG_IPV6_PRIVACY=yCONFIG_IPV6_ROUTER_PREF=yCONFIG_IPV6_ROUTE_INFO=y
# CONFIG_IPV6_OPTIMISTIC_DAD is not set
# CONFIG_INET6_AH is not setCONFIG_INET6_ESP=mCONFIG_INET6_IPCOMP=mCONFIG_IPV6_MIP6=mCONFIG_INET6_XFRM_TUNNEL=mCONFIG_INET6_TUNNEL=mCONFIG_INET6_XFRM_MODE_TRANSPORT=mCONFIG_INET6_XFRM_MODE_TUNNEL=mCONFIG_INET6_XFRM_MODE_BEET=mCONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
# CONFIG_IPV6_SIT is not setCONFIG_IPV6_TUNNEL=mCONFIG_IPV6_MULTIPLE_TABLES=y
# CONFIG_IPV6_SUBTREES is not setCONFIG_IPV6_MROUTE=y
# CONFIG_IPV6_PIMSM_V2 is not setCONFIG_NETLABEL=yCONFIG_NETWORK_SECMARK=yCONFIG_NETFILTER=yCONFIG_NETFILTER_DEBUG=yCONFIG_NETFILTER_ADVANCED=yCONFIG_BRIDGE_NETFILTER=y
#
# Core Netfilter Configuration
#CONFIG_NETFILTER_NETLINK=y
# CONFIG_NETFILTER_NETLINK_QUEUE is not setCONFIG_NETFILTER_NETLINK_LOG=yCONFIG_NF_CONNTRACK=yCONFIG_NF_CT_ACCT=yCONFIG_NF_CONNTRACK_MARK=y
# CONFIG_NF_CONNTRACK_SECMARK is not setCONFIG_NF_CONNTRACK_EVENTS=y
# CONFIG_NF_CT_PROTO_DCCP is not setCONFIG_NF_CT_PROTO_SCTP=mCONFIG_NF_CT_PROTO_UDPLITE=mCONFIG_NF_CONNTRACK_AMANDA=m
# CONFIG_NF_CONNTRACK_FTP is not setCONFIG_NF_CONNTRACK_H323=mCONFIG_NF_CONNTRACK_IRC=mCONFIG_NF_CONNTRACK_NETBIOS_NS=m
# CONFIG_NF_CONNTRACK_PPTP is not setCONFIG_NF_CONNTRACK_SANE=yCONFIG_NF_CONNTRACK_SIP=yCONFIG_NF_CONNTRACK_TFTP=yCONFIG_NF_CT_NETLINK=mCONFIG_NETFILTER_XTABLES=yCONFIG_NETFILTER_XT_TARGET_CLASSIFY=mCONFIG_NETFILTER_XT_TARGET_CONNMARK=y
# CONFIG_NETFILTER_XT_TARGET_LED is not setCONFIG_NETFILTER_XT_TARGET_MARK=y
# CONFIG_NETFILTER_XT_TARGET_NFLOG is not setCONFIG_NETFILTER_XT_TARGET_NFQUEUE=mCONFIG_NETFILTER_XT_TARGET_RATEEST=yCONFIG_NETFILTER_XT_TARGET_SECMARK=y
# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not setCONFIG_NETFILTER_XT_MATCH_CLUSTER=y
# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
# CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not setCONFIG_NETFILTER_XT_MATCH_CONNLIMIT=yCONFIG_NETFILTER_XT_MATCH_CONNMARK=mCONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
# CONFIG_NETFILTER_XT_MATCH_DCCP is not setCONFIG_NETFILTER_XT_MATCH_DSCP=yCONFIG_NETFILTER_XT_MATCH_ESP=mCONFIG_NETFILTER_XT_MATCH_HASHLIMIT=yCONFIG_NETFILTER_XT_MATCH_HELPER=mCONFIG_NETFILTER_XT_MATCH_HL=mCONFIG_NETFILTER_XT_MATCH_IPRANGE=yCONFIG_NETFILTER_XT_MATCH_LENGTH=yCONFIG_NETFILTER_XT_MATCH_LIMIT=yCONFIG_NETFILTER_XT_MATCH_MAC=yCONFIG_NETFILTER_XT_MATCH_MARK=yCONFIG_NETFILTER_XT_MATCH_MULTIPORT=yCONFIG_NETFILTER_XT_MATCH_OWNER=yCONFIG_NETFILTER_XT_MATCH_POLICY=yCONFIG_NETFILTER_XT_MATCH_PHYSDEV=mCONFIG_NETFILTER_XT_MATCH_PKTTYPE=yCONFIG_NETFILTER_XT_MATCH_QUOTA=yCONFIG_NETFILTER_XT_MATCH_RATEEST=yCONFIG_NETFILTER_XT_MATCH_REALM=mCONFIG_NETFILTER_XT_MATCH_RECENT=yCONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT=y
# CONFIG_NETFILTER_XT_MATCH_SCTP is not setCONFIG_NETFILTER_XT_MATCH_STATE=m
# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not setCONFIG_NETFILTER_XT_MATCH_STRING=y
# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not setCONFIG_NETFILTER_XT_MATCH_TIME=m
# CONFIG_NETFILTER_XT_MATCH_U32 is not setCONFIG_NETFILTER_XT_MATCH_OSF=mCONFIG_IP_VS=mCONFIG_IP_VS_IPV6=yCONFIG_IP_VS_DEBUG=yCONFIG_IP_VS_TAB_BITS=12
#
# IPVS transport protocol load balancing support
#CONFIG_IP_VS_PROTO_TCP=yCONFIG_IP_VS_PROTO_UDP=yCONFIG_IP_VS_PROTO_AH_ESP=y
# CONFIG_IP_VS_PROTO_ESP is not setCONFIG_IP_VS_PROTO_AH=y
#
# IPVS scheduler
#
# CONFIG_IP_VS_RR is not setCONFIG_IP_VS_WRR=mCONFIG_IP_VS_LC=mCONFIG_IP_VS_WLC=mCONFIG_IP_VS_LBLC=mCONFIG_IP_VS_LBLCR=mCONFIG_IP_VS_DH=m
# CONFIG_IP_VS_SH is not set
# CONFIG_IP_VS_SED is not setCONFIG_IP_VS_NQ=m
#
# IPVS application helper
#CONFIG_IP_VS_FTP=m
#
# IP: Netfilter Configuration
#CONFIG_NF_DEFRAG_IPV4=mCONFIG_NF_CONNTRACK_IPV4=m
# CONFIG_NF_CONNTRACK_PROC_COMPAT is not setCONFIG_IP_NF_QUEUE=y
# CONFIG_IP_NF_IPTABLES is not setCONFIG_IP_NF_ARPTABLES=mCONFIG_IP_NF_ARPFILTER=mCONFIG_IP_NF_ARP_MANGLE=m
#
# IPv6: Netfilter Configuration
#
# CONFIG_NF_CONNTRACK_IPV6 is not set
# CONFIG_IP6_NF_QUEUE is not set
# CONFIG_IP6_NF_IPTABLES is not set
#
# DECnet: Netfilter Configuration
#CONFIG_DECNET_NF_GRABULATOR=m
# CONFIG_BRIDGE_NF_EBTABLES is not set
# CONFIG_IP_DCCP is not setCONFIG_IP_SCTP=mCONFIG_SCTP_DBG_MSG=y
# CONFIG_SCTP_DBG_OBJCNT is not setCONFIG_SCTP_HMAC_NONE=y
# CONFIG_SCTP_HMAC_SHA1 is not set
# CONFIG_SCTP_HMAC_MD5 is not setCONFIG_TIPC=m
# CONFIG_TIPC_ADVANCED is not setCONFIG_TIPC_DEBUG=yCONFIG_ATM=mCONFIG_ATM_CLIP=m
# CONFIG_ATM_CLIP_NO_ICMP is not setCONFIG_ATM_LANE=m
# CONFIG_ATM_MPOA is not setCONFIG_ATM_BR2684=mCONFIG_ATM_BR2684_IPFILTER=yCONFIG_STP=mCONFIG_BRIDGE=m
# CONFIG_NET_DSA is not set
# CONFIG_VLAN_8021Q is not setCONFIG_DECNET=yCONFIG_DECNET_ROUTER=yCONFIG_LLC=mCONFIG_LLC2=mCONFIG_IPX=mCONFIG_IPX_INTERN=yCONFIG_ATALK=mCONFIG_DEV_APPLETALK=mCONFIG_IPDDP=mCONFIG_IPDDP_ENCAP=yCONFIG_IPDDP_DECAP=yCONFIG_X25=y
# CONFIG_LAPB is not setCONFIG_ECONET=y
# CONFIG_ECONET_AUNUDP is not set
# CONFIG_ECONET_NATIVE is not set
# CONFIG_WAN_ROUTER is not set
# CONFIG_PHONET is not setCONFIG_IEEE802154=yCONFIG_NET_SCHED=y
#
# Queueing/Scheduling
#CONFIG_NET_SCH_CBQ=yCONFIG_NET_SCH_HTB=yCONFIG_NET_SCH_HFSC=yCONFIG_NET_SCH_ATM=m
# CONFIG_NET_SCH_PRIO is not setCONFIG_NET_SCH_MULTIQ=m
# CONFIG_NET_SCH_RED is not set
# CONFIG_NET_SCH_SFQ is not set
# CONFIG_NET_SCH_TEQL is not setCONFIG_NET_SCH_TBF=y
# CONFIG_NET_SCH_GRED is not set
# CONFIG_NET_SCH_DSMARK is not setCONFIG_NET_SCH_NETEM=yCONFIG_NET_SCH_DRR=mCONFIG_NET_SCH_INGRESS=y
#
# Classification
#CONFIG_NET_CLS=y
# CONFIG_NET_CLS_BASIC is not set
# CONFIG_NET_CLS_TCINDEX is not setCONFIG_NET_CLS_ROUTE4=yCONFIG_NET_CLS_ROUTE=yCONFIG_NET_CLS_FW=yCONFIG_NET_CLS_U32=mCONFIG_CLS_U32_PERF=yCONFIG_CLS_U32_MARK=yCONFIG_NET_CLS_RSVP=mCONFIG_NET_CLS_RSVP6=mCONFIG_NET_CLS_FLOW=mCONFIG_NET_CLS_CGROUP=yCONFIG_NET_EMATCH=yCONFIG_NET_EMATCH_STACK=32CONFIG_NET_EMATCH_CMP=y
# CONFIG_NET_EMATCH_NBYTE is not setCONFIG_NET_EMATCH_U32=yCONFIG_NET_EMATCH_META=yCONFIG_NET_EMATCH_TEXT=mCONFIG_NET_CLS_ACT=yCONFIG_NET_ACT_POLICE=m
# CONFIG_NET_ACT_GACT is not setCONFIG_NET_ACT_MIRRED=mCONFIG_NET_ACT_NAT=mCONFIG_NET_ACT_PEDIT=mCONFIG_NET_ACT_SIMP=yCONFIG_NET_ACT_SKBEDIT=yCONFIG_NET_CLS_IND=yCONFIG_NET_SCH_FIFO=yCONFIG_DCB=y
#
# Network testing
#CONFIG_NET_PKTGEN=mCONFIG_NET_DROP_MONITOR=yCONFIG_HAMRADIO=y
#
# Packet Radio protocols
#CONFIG_AX25=mCONFIG_AX25_DAMA_SLAVE=y
# CONFIG_NETROM is not setCONFIG_ROSE=m
#
# AX.25 network device drivers
#CONFIG_MKISS=mCONFIG_6PACK=mCONFIG_BPQETHER=mCONFIG_BAYCOM_SER_FDX=mCONFIG_BAYCOM_SER_HDX=mCONFIG_BAYCOM_PAR=mCONFIG_BAYCOM_EPP=mCONFIG_YAM=mCONFIG_CAN=y
# CONFIG_CAN_RAW is not setCONFIG_CAN_BCM=m
#
# CAN Device Drivers
#CONFIG_CAN_VCAN=mCONFIG_CAN_DEV=yCONFIG_CAN_CALC_BITTIMING=y
# CONFIG_CAN_SJA1000 is not setCONFIG_CAN_DEBUG_DEVICES=yCONFIG_IRDA=y
#
# IrDA protocols
#
# CONFIG_IRLAN is not setCONFIG_IRNET=yCONFIG_IRCOMM=yCONFIG_IRDA_ULTRA=y
#
# IrDA options
#CONFIG_IRDA_CACHE_LAST_LSAP=yCONFIG_IRDA_FAST_RR=yCONFIG_IRDA_DEBUG=y
#
# Infrared-port device drivers
#
#
# SIR device drivers
#CONFIG_IRTTY_SIR=y
#
# Dongle support
#CONFIG_DONGLE=yCONFIG_ESI_DONGLE=mCONFIG_ACTISYS_DONGLE=y
# CONFIG_TEKRAM_DONGLE is not setCONFIG_TOIM3232_DONGLE=yCONFIG_LITELINK_DONGLE=yCONFIG_MA600_DONGLE=m
# CONFIG_GIRBIL_DONGLE is not set
# CONFIG_MCP2120_DONGLE is not set
# CONFIG_OLD_BELKIN_DONGLE is not setCONFIG_ACT200L_DONGLE=mCONFIG_KINGSUN_DONGLE=m
# CONFIG_KSDAZZLE_DONGLE is not setCONFIG_KS959_DONGLE=m
#
# FIR device drivers
#CONFIG_USB_IRDA=y
# CONFIG_SIGMATEL_FIR is not set
# CONFIG_NSC_FIR is not setCONFIG_WINBOND_FIR=mCONFIG_TOSHIBA_FIR=mCONFIG_SMC_IRCC_FIR=mCONFIG_ALI_FIR=mCONFIG_VLSI_FIR=mCONFIG_VIA_FIR=mCONFIG_MCS_FIR=y
# CONFIG_BT is not setCONFIG_AF_RXRPC=yCONFIG_AF_RXRPC_DEBUG=y
# CONFIG_RXKAD is not setCONFIG_FIB_RULES=yCONFIG_WIRELESS=y
# CONFIG_CFG80211 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=y
#
# CFG80211 needs to be enabled for MAC80211
#CONFIG_MAC80211_DEFAULT_PS_VALUE=0CONFIG_WIMAX=mCONFIG_WIMAX_DEBUG_LEVEL=8CONFIG_RFKILL=mCONFIG_RFKILL_LEDS=y
# CONFIG_RFKILL_INPUT 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=y
# CONFIG_DEBUG_DEVRES is not set
# CONFIG_SYS_HYPERVISOR is not set
# CONFIG_CONNECTOR is not setCONFIG_PARPORT=mCONFIG_PARPORT_PC=m
# CONFIG_PARPORT_PC_FIFO is not set
# CONFIG_PARPORT_PC_SUPERIO is not set
# CONFIG_PARPORT_GSC is not setCONFIG_PARPORT_AX88796=mCONFIG_PARPORT_1284=yCONFIG_PARPORT_NOT_PC=yCONFIG_BLK_DEV=yCONFIG_BLK_DEV_FD=mCONFIG_BLK_CPQ_DA=yCONFIG_BLK_CPQ_CISS_DA=m
# CONFIG_CISS_SCSI_TAPE is not setCONFIG_BLK_DEV_DAC960=yCONFIG_BLK_DEV_UMEM=m
# CONFIG_BLK_DEV_COW_COMMON is not set
# CONFIG_BLK_DEV_LOOP is not set
# CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_OSD is not set
# CONFIG_BLK_DEV_SX8 is not setCONFIG_BLK_DEV_UB=yCONFIG_BLK_DEV_RAM=mCONFIG_BLK_DEV_RAM_COUNT=16CONFIG_BLK_DEV_RAM_SIZE=4096CONFIG_BLK_DEV_XIP=yCONFIG_CDROM_PKTCDVD=mCONFIG_CDROM_PKTCDVD_BUFFERS=8CONFIG_CDROM_PKTCDVD_WCACHE=yCONFIG_ATA_OVER_ETH=mCONFIG_VIRTIO_BLK=mCONFIG_BLK_DEV_HD=yCONFIG_MISC_DEVICES=yCONFIG_IBM_ASM=mCONFIG_PHANTOM=mCONFIG_SGI_IOC4=mCONFIG_TIFM_CORE=mCONFIG_TIFM_7XX1=mCONFIG_ICS932S401=y
# CONFIG_ENCLOSURE_SERVICES is not setCONFIG_HP_ILO=m
# CONFIG_ISL29003 is not set
# CONFIG_C2PORT is not set
#
# EEPROM support
#
# CONFIG_EEPROM_AT24 is not setCONFIG_EEPROM_LEGACY=y
# CONFIG_EEPROM_MAX6875 is not set
# CONFIG_EEPROM_93CX6 is not set
# CONFIG_CB710_CORE is not setCONFIG_HAVE_IDE=y
#
# SCSI device support
#
# CONFIG_RAID_ATTRS is not setCONFIG_SCSI=yCONFIG_SCSI_DMA=yCONFIG_SCSI_TGT=mCONFIG_SCSI_NETLINK=y
# CONFIG_SCSI_PROC_FS is not set
#
# SCSI support type (disk, tape, CD-ROM)
#CONFIG_BLK_DEV_SD=yCONFIG_CHR_DEV_ST=mCONFIG_CHR_DEV_OSST=y
# CONFIG_BLK_DEV_SR is not set
# CONFIG_CHR_DEV_SG is not set
# CONFIG_CHR_DEV_SCH is not set
# CONFIG_SCSI_MULTI_LUN is not setCONFIG_SCSI_CONSTANTS=yCONFIG_SCSI_LOGGING=yCONFIG_SCSI_SCAN_ASYNC=yCONFIG_SCSI_WAIT_SCAN=m
#
# SCSI Transports
#CONFIG_SCSI_SPI_ATTRS=yCONFIG_SCSI_FC_ATTRS=mCONFIG_SCSI_FC_TGT_ATTRS=yCONFIG_SCSI_ISCSI_ATTRS=yCONFIG_SCSI_SAS_ATTRS=yCONFIG_SCSI_SAS_LIBSAS=yCONFIG_SCSI_SAS_ATA=y
# CONFIG_SCSI_SAS_HOST_SMP is not setCONFIG_SCSI_SAS_LIBSAS_DEBUG=y
# CONFIG_SCSI_LOWLEVEL is not setCONFIG_SCSI_AIC7XXX=y
# CONFIG_SCSI_DH is not setCONFIG_SCSI_OSD_INITIATOR=mCONFIG_SCSI_OSD_ULD=mCONFIG_SCSI_OSD_DPRINT_SENSE=1CONFIG_SCSI_OSD_DEBUG=yCONFIG_ATA=y
# CONFIG_ATA_NONSTANDARD is not setCONFIG_SATA_PMP=yCONFIG_SATA_AHCI=yCONFIG_SATA_SIL24=yCONFIG_ATA_SFF=yCONFIG_SATA_SVW=mCONFIG_ATA_PIIX=y
# CONFIG_SATA_MV is not setCONFIG_SATA_NV=yCONFIG_PDC_ADMA=m
# CONFIG_SATA_QSTOR is not setCONFIG_SATA_PROMISE=mCONFIG_SATA_SX4=yCONFIG_SATA_SIL=yCONFIG_SATA_SIS=mCONFIG_SATA_ULI=yCONFIG_SATA_VIA=m
# CONFIG_SATA_VITESSE is not setCONFIG_SATA_INIC162X=yCONFIG_PATA_ALI=mCONFIG_PATA_AMD=y
# CONFIG_PATA_ARTOP is not set
# CONFIG_PATA_ATIIXP is not setCONFIG_PATA_CMD640_PCI=mCONFIG_PATA_CMD64X=mCONFIG_PATA_CS5520=yCONFIG_PATA_CS5530=m
# CONFIG_PATA_CS5535 is not setCONFIG_PATA_CS5536=yCONFIG_PATA_CYPRESS=mCONFIG_PATA_EFAR=y
# CONFIG_ATA_GENERIC is not setCONFIG_PATA_HPT366=mCONFIG_PATA_HPT37X=m
# CONFIG_PATA_HPT3X2N is not setCONFIG_PATA_HPT3X3=mCONFIG_PATA_HPT3X3_DMA=yCONFIG_PATA_IT821X=yCONFIG_PATA_IT8213=mCONFIG_PATA_JMICRON=mCONFIG_PATA_TRIFLEX=mCONFIG_PATA_MARVELL=mCONFIG_PATA_MPIIX=mCONFIG_PATA_OLDPIIX=yCONFIG_PATA_NETCELL=y
# CONFIG_PATA_NINJA32 is not set
# CONFIG_PATA_NS87410 is not setCONFIG_PATA_NS87415=mCONFIG_PATA_OPTI=mCONFIG_PATA_OPTIDMA=yCONFIG_PATA_PDC_OLD=yCONFIG_PATA_RADISYS=y
# CONFIG_PATA_RZ1000 is not setCONFIG_PATA_SC1200=mCONFIG_PATA_SERVERWORKS=mCONFIG_PATA_PDC2027X=mCONFIG_PATA_SIL680=yCONFIG_PATA_SIS=yCONFIG_PATA_VIA=yCONFIG_PATA_WINBOND=yCONFIG_PATA_PLATFORM=y
# CONFIG_PATA_SCH is not setCONFIG_MD=yCONFIG_BLK_DEV_MD=yCONFIG_MD_AUTODETECT=yCONFIG_MD_LINEAR=yCONFIG_MD_RAID0=yCONFIG_MD_RAID1=mCONFIG_MD_RAID10=y
# CONFIG_MD_RAID456 is not setCONFIG_MD_MULTIPATH=mCONFIG_MD_FAULTY=yCONFIG_BLK_DEV_DM=yCONFIG_DM_DEBUG=yCONFIG_DM_CRYPT=mCONFIG_DM_SNAPSHOT=y
# CONFIG_DM_MIRROR is not setCONFIG_DM_ZERO=yCONFIG_DM_MULTIPATH=m
# CONFIG_DM_MULTIPATH_QL is not setCONFIG_DM_MULTIPATH_ST=mCONFIG_DM_DELAY=mCONFIG_DM_UEVENT=yCONFIG_FUSION=yCONFIG_FUSION_SPI=m
# CONFIG_FUSION_FC is not setCONFIG_FUSION_SAS=yCONFIG_FUSION_MAX_SGE=128CONFIG_FUSION_CTL=mCONFIG_FUSION_LOGGING=y
#
# IEEE 1394 (FireWire) support
#
#
# You can enable one or both FireWire driver stacks. #
#
# See the help texts for more information.
#CONFIG_FIREWIRE=mCONFIG_FIREWIRE_OHCI=mCONFIG_FIREWIRE_OHCI_DEBUG=yCONFIG_FIREWIRE_SBP2=mCONFIG_FIREWIRE_NET=m
# CONFIG_IEEE1394 is not setCONFIG_I2O=yCONFIG_I2O_LCT_NOTIFY_ON_CHANGES=y
# CONFIG_I2O_EXT_ADAPTEC is not setCONFIG_I2O_CONFIG=mCONFIG_I2O_CONFIG_OLD_IOCTL=yCONFIG_I2O_BUS=mCONFIG_I2O_BLOCK=mCONFIG_I2O_SCSI=yCONFIG_I2O_PROC=yCONFIG_MACINTOSH_DRIVERS=y
# CONFIG_MAC_EMUMOUSEBTN is not setCONFIG_NETDEVICES=y
# CONFIG_IFB is not setCONFIG_DUMMY=yCONFIG_BONDING=mCONFIG_MACVLAN=y
# CONFIG_EQUALIZER is not setCONFIG_TUN=m
# CONFIG_VETH is not setCONFIG_ARCNET=yCONFIG_ARCNET_1201=mCONFIG_ARCNET_1051=mCONFIG_ARCNET_RAW=yCONFIG_ARCNET_CAP=m
CONFIG_ARCNET_COM90xx=y
CONFIG_ARCNET_COM90xxIO=mCONFIG_ARCNET_RIM_I=mCONFIG_ARCNET_COM20020=yCONFIG_ARCNET_COM20020_PCI=mCONFIG_PHYLIB=y
#
# MII PHY device drivers
#CONFIG_MARVELL_PHY=yCONFIG_DAVICOM_PHY=y
# CONFIG_QSEMI_PHY is not set CONFIG_LXT_PHY=yCONFIG_CICADA_PHY=y
# CONFIG_VITESSE_PHY is not set CONFIG_SMSC_PHY=mCONFIG_BROADCOM_PHY=yCONFIG_ICPLUS_PHY=m
# CONFIG_REALTEK_PHY is not set CONFIG_NATIONAL_PHY=yCONFIG_STE10XP=yCONFIG_LSI_ET1011C_PHY=y CONFIG_FIXED_PHY=yCONFIG_MDIO_BITBANG=y CONFIG_NET_ETHERNET=yCONFIG_MII=yCONFIG_HAPPYMEAL=y
# CONFIG_SUNGEM is not set
# CONFIG_CASSINI is not set CONFIG_NET_VENDOR_3COM=yCONFIG_VORTEX=yCONFIG_TYPHOON=yCONFIG_ETHOC=mCONFIG_DNET=y
# CONFIG_NET_TULIP 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=yCONFIG_PCNET32=mCONFIG_AMD8111_ETH=y CONFIG_ADAPTEC_STARFIRE=m
# CONFIG_B44 is not setCONFIG_FORCEDETH=yCONFIG_FORCEDETH_NAPI=yCONFIG_E100=yCONFIG_FEALNX=mCONFIG_NATSEMI=mCONFIG_NE2K_PCI=m
# CONFIG_8139CP is not set CONFIG_8139TOO=yCONFIG_8139TOO_PIO=y CONFIG_8139TOO_TUNE_TWISTER=y
# CONFIG_8139TOO_8129 is not set CONFIG_8139_OLD_RX_RESET=y
# CONFIG_R6040 is not setCONFIG_SIS900=mCONFIG_EPIC100=mCONFIG_SMSC9420=mCONFIG_SUNDANCE=yCONFIG_SUNDANCE_MMIO=yCONFIG_TLAN=mCONFIG_KS8842=mCONFIG_VIA_RHINE=mCONFIG_VIA_RHINE_MMIO=yCONFIG_SC92031=yCONFIG_NET_POCKET=yCONFIG_ATP=mCONFIG_DE600=m
# CONFIG_DE620 is not setCONFIG_ATL2=mCONFIG_NETDEV_1000=yCONFIG_ACENIC=y
# CONFIG_ACENIC_OMIT_TIGON_I is not set CONFIG_DL2K=yCONFIG_E1000=mCONFIG_E1000E=y
# CONFIG_IP1000 is not setCONFIG_IGB=yCONFIG_IGB_DCA=y
# CONFIG_IGBVF is not setCONFIG_NS83820=mCONFIG_HAMACHI=y
# CONFIG_YELLOWFIN is not set
# CONFIG_R8169 is not setCONFIG_SIS190=y
# CONFIG_SKGE is not set
# CONFIG_SKY2 is not set CONFIG_VIA_VELOCITY=mCONFIG_TIGON3=yCONFIG_BNX2=yCONFIG_QLA3XXX=mCONFIG_ATL1=yCONFIG_ATL1E=mCONFIG_ATL1C=yCONFIG_JME=m
# CONFIG_NETDEV_10000 is not set CONFIG_TR=mCONFIG_IBMOL=mCONFIG_IBMLS=mCONFIG_3C359=m
# CONFIG_TMS380TR is not set
#
# Wireless LAN
#
# CONFIG_WLAN_PRE80211 is not setCONFIG_WLAN_80211=yCONFIG_LIBERTAS=mCONFIG_LIBERTAS_USB=mCONFIG_LIBERTAS_SDIO=m
# CONFIG_LIBERTAS_DEBUG is not setCONFIG_AIRO=mCONFIG_ATMEL=m
# CONFIG_PCI_ATMEL is not setCONFIG_PRISM54=m
# CONFIG_USB_ZD1201 is not setCONFIG_IPW2100=mCONFIG_IPW2100_MONITOR=y
# CONFIG_IPW2100_DEBUG is not setCONFIG_IPW2200=y
# CONFIG_IPW2200_MONITOR is not set
# CONFIG_IPW2200_QOS is not setCONFIG_IPW2200_DEBUG=yCONFIG_LIBIPW=yCONFIG_LIBIPW_DEBUG=yCONFIG_HOSTAP=m
# CONFIG_HOSTAP_FIRMWARE is not setCONFIG_HOSTAP_PLX=mCONFIG_HOSTAP_PCI=mCONFIG_HERMES=mCONFIG_HERMES_CACHE_FW_ON_INIT=y
# CONFIG_PLX_HERMES is not setCONFIG_TMD_HERMES=m
# CONFIG_NORTEL_HERMES is not setCONFIG_PCI_HERMES=m
#
# WiMAX Wireless Broadband devices
#CONFIG_WIMAX_I2400M=mCONFIG_WIMAX_I2400M_SDIO=mCONFIG_WIMAX_I2400M_DEBUG_LEVEL=8
#
# USB Network Adapters
#CONFIG_USB_CATC=m
# CONFIG_USB_KAWETH is not setCONFIG_USB_PEGASUS=y
# CONFIG_USB_RTL8150 is not set
# CONFIG_USB_USBNET is not setCONFIG_USB_HSO=mCONFIG_WAN=y
# CONFIG_HDLC is not setCONFIG_DLCI=yCONFIG_DLCI_MAX=8CONFIG_SBNI=y
# CONFIG_SBNI_MULTILINE is not set
# CONFIG_ATM_DRIVERS is not setCONFIG_IEEE802154_DRIVERS=m
# CONFIG_IEEE802154_FAKEHARD is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
# CONFIG_PLIP is not setCONFIG_PPP=yCONFIG_PPP_MULTILINK=yCONFIG_PPP_FILTER=yCONFIG_PPP_ASYNC=yCONFIG_PPP_SYNC_TTY=m
# CONFIG_PPP_DEFLATE is not setCONFIG_PPP_BSDCOMP=yCONFIG_PPP_MPPE=y
# CONFIG_PPPOE is not setCONFIG_PPPOATM=mCONFIG_PPPOL2TP=mCONFIG_SLIP=m
# CONFIG_SLIP_COMPRESSED is not setCONFIG_SLHC=yCONFIG_SLIP_SMART=yCONFIG_SLIP_MODE_SLIP6=y
# CONFIG_NET_FC is not setCONFIG_NETCONSOLE=y
# CONFIG_NETCONSOLE_DYNAMIC is not setCONFIG_NETPOLL=yCONFIG_NETPOLL_TRAP=yCONFIG_NET_POLL_CONTROLLER=yCONFIG_VIRTIO_NET=m
# CONFIG_ISDN is not set
# CONFIG_PHONE is not set
#
# Input device support
#CONFIG_INPUT=yCONFIG_INPUT_FF_MEMLESS=mCONFIG_INPUT_POLLDEV=y
#
# Userland interfaces
#CONFIG_INPUT_MOUSEDEV=yCONFIG_INPUT_MOUSEDEV_PSAUX=yCONFIG_INPUT_MOUSEDEV_SCREEN_X=1024CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768CONFIG_INPUT_JOYDEV=y
# CONFIG_INPUT_EVDEV is not setCONFIG_INPUT_EVBUG=m
#
# Input Device Drivers
#CONFIG_INPUT_KEYBOARD=yCONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_LKKBD is not setCONFIG_KEYBOARD_LM8323=y
# CONFIG_KEYBOARD_NEWTON is not setCONFIG_KEYBOARD_STOWAWAY=yCONFIG_KEYBOARD_SUNKBD=m
# CONFIG_KEYBOARD_XTKBD is not setCONFIG_INPUT_MOUSE=yCONFIG_MOUSE_PS2=mCONFIG_MOUSE_PS2_ALPS=yCONFIG_MOUSE_PS2_LOGIPS2PP=yCONFIG_MOUSE_PS2_SYNAPTICS=y
# CONFIG_MOUSE_PS2_LIFEBOOK is not setCONFIG_MOUSE_PS2_TRACKPOINT=yCONFIG_MOUSE_PS2_ELANTECH=yCONFIG_MOUSE_PS2_TOUCHKIT=yCONFIG_MOUSE_PS2_OLPC=y
# CONFIG_MOUSE_SERIAL is not set
# CONFIG_MOUSE_APPLETOUCH is not set
# CONFIG_MOUSE_BCM5974 is not setCONFIG_MOUSE_VSXXXAA=y
# CONFIG_MOUSE_SYNAPTICS_I2C is not set
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TABLET is not setCONFIG_INPUT_TOUCHSCREEN=yCONFIG_TOUCHSCREEN_AD7879_I2C=mCONFIG_TOUCHSCREEN_AD7879=mCONFIG_TOUCHSCREEN_EETI=mCONFIG_TOUCHSCREEN_FUJITSU=yCONFIG_TOUCHSCREEN_GUNZE=yCONFIG_TOUCHSCREEN_ELO=yCONFIG_TOUCHSCREEN_WACOM_W8001=mCONFIG_TOUCHSCREEN_MTOUCH=y
# CONFIG_TOUCHSCREEN_INEXIO is not setCONFIG_TOUCHSCREEN_MK712=mCONFIG_TOUCHSCREEN_PENMOUNT=y
# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
# CONFIG_TOUCHSCREEN_TOUCHWIN is not setCONFIG_TOUCHSCREEN_USB_COMPOSITE=yCONFIG_TOUCHSCREEN_USB_EGALAX=yCONFIG_TOUCHSCREEN_USB_PANJIT=y
# CONFIG_TOUCHSCREEN_USB_3M is not setCONFIG_TOUCHSCREEN_USB_ITM=yCONFIG_TOUCHSCREEN_USB_ETURBO=y
# CONFIG_TOUCHSCREEN_USB_GUNZE is not setCONFIG_TOUCHSCREEN_USB_DMC_TSC10=yCONFIG_TOUCHSCREEN_USB_IRTOUCH=yCONFIG_TOUCHSCREEN_USB_IDEALTEK=yCONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y
# CONFIG_TOUCHSCREEN_USB_GOTOP is not set
# CONFIG_TOUCHSCREEN_TOUCHIT213 is not setCONFIG_TOUCHSCREEN_TSC2007=y
# CONFIG_TOUCHSCREEN_W90X900 is not setCONFIG_INPUT_MISC=yCONFIG_INPUT_APANEL=yCONFIG_INPUT_WISTRON_BTNS=yCONFIG_INPUT_ATI_REMOTE=yCONFIG_INPUT_ATI_REMOTE2=yCONFIG_INPUT_KEYSPAN_REMOTE=mCONFIG_INPUT_POWERMATE=y
# CONFIG_INPUT_YEALINK is not setCONFIG_INPUT_CM109=yCONFIG_INPUT_UINPUT=yCONFIG_INPUT_PCF50633_PMU=y
#
# Hardware I/O ports
#CONFIG_SERIO=yCONFIG_SERIO_I8042=yCONFIG_SERIO_SERPORT=m
# CONFIG_SERIO_CT82C710 is not setCONFIG_SERIO_PARKBD=mCONFIG_SERIO_PCIPS2=mCONFIG_SERIO_LIBPS2=yCONFIG_SERIO_RAW=yCONFIG_GAMEPORT=yCONFIG_GAMEPORT_NS558=m
# CONFIG_GAMEPORT_L4 is not setCONFIG_GAMEPORT_EMU10K1=m
# CONFIG_GAMEPORT_FM801 is not set
#
# Character devices
#CONFIG_VT=yCONFIG_CONSOLE_TRANSLATIONS=yCONFIG_VT_CONSOLE=yCONFIG_HW_CONSOLE=y
# CONFIG_VT_HW_CONSOLE_BINDING is not setCONFIG_DEVKMEM=yCONFIG_SERIAL_NONSTANDARD=yCONFIG_COMPUTONE=mCONFIG_ROCKETPORT=m
# CONFIG_CYCLADES is not set
# CONFIG_DIGIEPCA is not setCONFIG_MOXA_INTELLIO=yCONFIG_MOXA_SMARTIO=yCONFIG_ISI=m
# CONFIG_SYNCLINK is not setCONFIG_SYNCLINKMP=mCONFIG_SYNCLINK_GT=yCONFIG_N_HDLC=yCONFIG_RISCOM8=mCONFIG_SPECIALIX=m
# CONFIG_SX is not setCONFIG_RIO=y
# CONFIG_RIO_OLDPCI is not setCONFIG_STALDRV=yCONFIG_STALLION=y
# CONFIG_ISTALLION is not set
# CONFIG_NOZOMI is not set
#
# Serial drivers
#CONFIG_SERIAL_8250=yCONFIG_SERIAL_8250_CONSOLE=yCONFIG_FIX_EARLYCON_MEM=y
# CONFIG_SERIAL_8250_PCI is not setCONFIG_SERIAL_8250_NR_UARTS=4CONFIG_SERIAL_8250_RUNTIME_UARTS=4CONFIG_SERIAL_8250_EXTENDED=y
# CONFIG_SERIAL_8250_MANY_PORTS is not set
# CONFIG_SERIAL_8250_SHARE_IRQ is not setCONFIG_SERIAL_8250_DETECT_IRQ=y
# CONFIG_SERIAL_8250_RSA is not set
#
# Non-8250 serial port support
#CONFIG_SERIAL_CORE=yCONFIG_SERIAL_CORE_CONSOLE=yCONFIG_CONSOLE_POLL=yCONFIG_SERIAL_JSM=yCONFIG_UNIX98_PTYS=y
# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
# CONFIG_LEGACY_PTYS is not set
# CONFIG_PRINTER is not setCONFIG_PPDEV=mCONFIG_HVC_DRIVER=yCONFIG_VIRTIO_CONSOLE=m
# CONFIG_IPMI_HANDLER is not setCONFIG_HW_RANDOM=yCONFIG_HW_RANDOM_TIMERIOMEM=yCONFIG_HW_RANDOM_INTEL=mCONFIG_HW_RANDOM_AMD=m
# CONFIG_HW_RANDOM_GEODE is not set
# CONFIG_HW_RANDOM_VIA is not set
# CONFIG_HW_RANDOM_VIRTIO is not set
# CONFIG_NVRAM is not setCONFIG_RTC=mCONFIG_GEN_RTC=yCONFIG_GEN_RTC_X=y
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not setCONFIG_SONYPI=y
# CONFIG_MWAVE is not set
CONFIG_PC8736x_GPIO=mCONFIG_NSC_GPIO=mCONFIG_CS5535_GPIO=m
# CONFIG_RAW_DRIVER is not setCONFIG_HANGCHECK_TIMER=mCONFIG_TCG_TPM=yCONFIG_TCG_NSC=y
# CONFIG_TCG_ATMEL is not setCONFIG_TELCLOCK=yCONFIG_DEVPORT=yCONFIG_I2C=yCONFIG_I2C_BOARDINFO=yCONFIG_I2C_CHARDEV=mCONFIG_I2C_HELPER_AUTO=yCONFIG_I2C_ALGOBIT=yCONFIG_I2C_ALGOPCA=m
#
# I2C Hardware Bus support
#
#
# PC SMBus host controller drivers
#
# CONFIG_I2C_ALI1535 is not setCONFIG_I2C_ALI1563=y
# CONFIG_I2C_ALI15X3 is not setCONFIG_I2C_AMD756=mCONFIG_I2C_AMD8111=y
# CONFIG_I2C_I801 is not setCONFIG_I2C_ISCH=m
# CONFIG_I2C_PIIX4 is not setCONFIG_I2C_NFORCE2=y
# CONFIG_I2C_SIS5595 is not setCONFIG_I2C_SIS630=yCONFIG_I2C_SIS96X=mCONFIG_I2C_VIA=y
# CONFIG_I2C_VIAPRO is not set
#
# I2C system bus drivers (mostly embedded / system-on-chip) #
# CONFIG_I2C_OCORES is not setCONFIG_I2C_SIMTEC=m
#
# External I2C/SMBus adapter drivers
#CONFIG_I2C_PARPORT=m
# CONFIG_I2C_PARPORT_LIGHT is not setCONFIG_I2C_TAOS_EVM=mCONFIG_I2C_TINY_USB=m
#
# Graphics adapter I2C/DDC channel drivers
#CONFIG_I2C_VOODOO3=y
#
# Other I2C/SMBus bus drivers
#CONFIG_I2C_PCA_PLATFORM=mCONFIG_I2C_STUB=m
CONFIG_SCx200_ACB=y
#
# Miscellaneous I2C Chip support
#CONFIG_DS1682=m
# CONFIG_SENSORS_PCF8574 is not set
# CONFIG_PCF8575 is not set
# CONFIG_SENSORS_PCA9539 is not setCONFIG_SENSORS_TSL2550=yCONFIG_I2C_DEBUG_CORE=y
# CONFIG_I2C_DEBUG_ALGO is not setCONFIG_I2C_DEBUG_BUS=y
# CONFIG_I2C_DEBUG_CHIP is not set
# CONFIG_SPI is not set
#
# PPS support
#CONFIG_PPS=y
# CONFIG_PPS_DEBUG is not setCONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
# CONFIG_GPIOLIB is not setCONFIG_W1=m
#
# 1-wire Bus Masters
#CONFIG_W1_MASTER_MATROX=m
# CONFIG_W1_MASTER_DS2490 is not setCONFIG_W1_MASTER_DS2482=m
#
# 1-wire Slaves
#
# CONFIG_W1_SLAVE_THERM is not set
# CONFIG_W1_SLAVE_SMEM is not setCONFIG_W1_SLAVE_DS2431=mCONFIG_W1_SLAVE_DS2433=mCONFIG_W1_SLAVE_DS2433_CRC=yCONFIG_W1_SLAVE_DS2760=m
# CONFIG_W1_SLAVE_BQ27000 is not setCONFIG_POWER_SUPPLY=mCONFIG_POWER_SUPPLY_DEBUG=y
# CONFIG_PDA_POWER is not setCONFIG_BATTERY_DS2760=mCONFIG_BATTERY_DS2782=mCONFIG_BATTERY_OLPC=m
CONFIG_BATTERY_BQ27x00=mCONFIG_BATTERY_MAX17040=mCONFIG_CHARGER_PCF50633=mCONFIG_HWMON=yCONFIG_HWMON_VID=yCONFIG_SENSORS_ABITUGURU=y
# CONFIG_SENSORS_ABITUGURU3 is not setCONFIG_SENSORS_AD7414=yCONFIG_SENSORS_AD7418=mCONFIG_SENSORS_ADM1021=y
# CONFIG_SENSORS_ADM1025 is not setCONFIG_SENSORS_ADM1026=yCONFIG_SENSORS_ADM1029=y
# CONFIG_SENSORS_ADM1031 is not setCONFIG_SENSORS_ADM9240=mCONFIG_SENSORS_ADT7462=mCONFIG_SENSORS_ADT7470=m
# CONFIG_SENSORS_ADT7473 is not set
# CONFIG_SENSORS_ADT7475 is not setCONFIG_SENSORS_K8TEMP=yCONFIG_SENSORS_ASB100=y
# CONFIG_SENSORS_ATXP1 is not setCONFIG_SENSORS_DS1621=yCONFIG_SENSORS_I5K_AMB=mCONFIG_SENSORS_F71805F=y
# CONFIG_SENSORS_F71882FG is not setCONFIG_SENSORS_F75375S=yCONFIG_SENSORS_FSCHER=y
# CONFIG_SENSORS_FSCPOS is not setCONFIG_SENSORS_FSCHMD=y
# CONFIG_SENSORS_G760A is not setCONFIG_SENSORS_GL518SM=yCONFIG_SENSORS_GL520SM=yCONFIG_SENSORS_CORETEMP=m
# CONFIG_SENSORS_IT87 is not set
# CONFIG_SENSORS_LM63 is not setCONFIG_SENSORS_LM75=mCONFIG_SENSORS_LM77=yCONFIG_SENSORS_LM78=mCONFIG_SENSORS_LM80=mCONFIG_SENSORS_LM83=yCONFIG_SENSORS_LM85=yCONFIG_SENSORS_LM87=y
# CONFIG_SENSORS_LTC4215 is not setCONFIG_SENSORS_LTC4245=mCONFIG_SENSORS_LM95241=y
# CONFIG_SENSORS_MAX1619 is not set
# CONFIG_SENSORS_MAX6650 is not setCONFIG_SENSORS_PC87360=yCONFIG_SENSORS_PC87427=m
# CONFIG_SENSORS_PCF8591 is not setCONFIG_SENSORS_SIS5595=yCONFIG_SENSORS_DME1737=yCONFIG_SENSORS_SMSC47M1=yCONFIG_SENSORS_SMSC47M192=m
# CONFIG_SENSORS_SMSC47B397 is not setCONFIG_SENSORS_ADS7828=y
# CONFIG_SENSORS_THMC50 is not setCONFIG_SENSORS_TMP401=yCONFIG_SENSORS_VIA686A=m
# CONFIG_SENSORS_VT1211 is not setCONFIG_SENSORS_VT8231=yCONFIG_SENSORS_W83781D=yCONFIG_SENSORS_W83791D=yCONFIG_SENSORS_W83792D=mCONFIG_SENSORS_W83793=mCONFIG_SENSORS_W83L785TS=yCONFIG_SENSORS_W83L786NG=m
# CONFIG_SENSORS_W83627HF is not setCONFIG_SENSORS_W83627EHF=yCONFIG_SENSORS_HDAPS=mCONFIG_SENSORS_APPLESMC=y
# CONFIG_HWMON_DEBUG_CHIP is not setCONFIG_THERMAL=mCONFIG_THERMAL_HWMON=yCONFIG_WATCHDOG=yCONFIG_WATCHDOG_NOWAYOUT=y
#
# Watchdog Device Drivers
#CONFIG_SOFT_WATCHDOG=yCONFIG_ACQUIRE_WDT=m
# CONFIG_ADVANTECH_WDT is not setCONFIG_ALIM1535_WDT=y
# CONFIG_ALIM7101_WDT is not setCONFIG_SC520_WDT=m
# CONFIG_IB700_WDT is not set
# CONFIG_IBMASR is not setCONFIG_WAFER_WDT=m
# CONFIG_I6300ESB_WDT is not setCONFIG_ITCO_WDT=mCONFIG_ITCO_VENDOR_SUPPORT=y
# CONFIG_IT8712F_WDT is not setCONFIG_IT87_WDT=mCONFIG_HP_WATCHDOG=yCONFIG_SC1200_WDT=mCONFIG_PC87413_WDT=yCONFIG_RDC321X_WDT=mCONFIG_60XX_WDT=yCONFIG_SBC8360_WDT=yCONFIG_SBC7240_WDT=m
# CONFIG_CPU5_WDT is not setCONFIG_SMSC_SCH311X_WDT=yCONFIG_SMSC37B787_WDT=yCONFIG_W83627HF_WDT=yCONFIG_W83877F_WDT=mCONFIG_W83977F_WDT=mCONFIG_MACHZ_WDT=mCONFIG_SBC_EPX_C3_WATCHDOG=y
#
# PCI-based Watchdog Cards
#
# CONFIG_PCIPCWATCHDOG is not setCONFIG_WDTPCI=y
#
# USB-based Watchdog Cards
#CONFIG_USBPCWATCHDOG=mCONFIG_SSB_POSSIBLE=y
#
# Sonics Silicon Backplane
#CONFIG_SSB=yCONFIG_SSB_SPROM=yCONFIG_SSB_PCIHOST_POSSIBLE=yCONFIG_SSB_PCIHOST=y
# CONFIG_SSB_B43_PCI_BRIDGE is not setCONFIG_SSB_SILENT=yCONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
# CONFIG_SSB_DRIVER_PCICORE is not set
#
# Multifunction device drivers
#CONFIG_MFD_CORE=y
# CONFIG_MFD_SM501 is not setCONFIG_HTC_PASIC3=y
# CONFIG_TWL4030_CORE is not set
# CONFIG_MFD_TMIO is not set
# CONFIG_PMIC_DA903X is not set
# CONFIG_MFD_WM8400 is not setCONFIG_MFD_PCF50633=yCONFIG_PCF50633_ADC=mCONFIG_PCF50633_GPIO=mCONFIG_AB3100_CORE=m
# CONFIG_REGULATOR is not set
# CONFIG_MEDIA_SUPPORT is not set
#
# Graphics support
#
# CONFIG_AGP is not setCONFIG_DRM=yCONFIG_DRM_TDFX=yCONFIG_DRM_R128=mCONFIG_DRM_RADEON=m
# CONFIG_DRM_MGA is not setCONFIG_DRM_VIA=yCONFIG_DRM_SAVAGE=yCONFIG_VGASTATE=mCONFIG_VIDEO_OUTPUT_CONTROL=yCONFIG_FB=yCONFIG_FIRMWARE_EDID=yCONFIG_FB_DDC=m
# 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 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_HECUBA=yCONFIG_FB_SVGALIB=m
# CONFIG_FB_MACMODES is not setCONFIG_FB_BACKLIGHT=yCONFIG_FB_MODE_HELPERS=yCONFIG_FB_TILEBLITTING=y
#
# Frame buffer hardware drivers
#
# CONFIG_FB_PM2 is not setCONFIG_FB_CYBER2000=y
# CONFIG_FB_ARC is not setCONFIG_FB_IMSTT=yCONFIG_FB_N411=yCONFIG_FB_HGA=yCONFIG_FB_HGA_ACCEL=y
# CONFIG_FB_S1D13XXX is not setCONFIG_FB_NVIDIA=mCONFIG_FB_NVIDIA_I2C=yCONFIG_FB_NVIDIA_DEBUG=yCONFIG_FB_NVIDIA_BACKLIGHT=y
# CONFIG_FB_RIVA is not setCONFIG_FB_LE80578=m
# CONFIG_FB_CARILLO_RANCH is not setCONFIG_FB_MATROX=m
# CONFIG_FB_MATROX_MILLENIUM is not set
# CONFIG_FB_MATROX_MYSTIQUE is not set
# CONFIG_FB_MATROX_G is not setCONFIG_FB_MATROX_I2C=mCONFIG_FB_MATROX_MULTIHEAD=yCONFIG_FB_ATY128=m
# CONFIG_FB_ATY128_BACKLIGHT is not setCONFIG_FB_ATY=mCONFIG_FB_ATY_CT=yCONFIG_FB_ATY_GENERIC_LCD=y
# CONFIG_FB_ATY_GX is not set
# CONFIG_FB_ATY_BACKLIGHT is not set
# CONFIG_FB_S3 is not setCONFIG_FB_SAVAGE=mCONFIG_FB_SAVAGE_I2C=yCONFIG_FB_SAVAGE_ACCEL=yCONFIG_FB_SIS=mCONFIG_FB_SIS_300=yCONFIG_FB_SIS_315=yCONFIG_FB_VIA=mCONFIG_FB_NEOMAGIC=mCONFIG_FB_KYRO=mCONFIG_FB_3DFX=m
# CONFIG_FB_3DFX_ACCEL is not setCONFIG_FB_3DFX_I2C=yCONFIG_FB_VOODOO1=y
# CONFIG_FB_VT8623 is not set
# CONFIG_FB_TRIDENT is not setCONFIG_FB_ARK=mCONFIG_FB_PM3=yCONFIG_FB_CARMINE=y
# CONFIG_FB_CARMINE_DRAM_EVAL is not setCONFIG_CARMINE_DRAM_CUSTOM=y
# CONFIG_FB_GEODE is not set
# CONFIG_FB_TMIO is not setCONFIG_FB_METRONOME=mCONFIG_FB_MB862XX=mCONFIG_FB_MB862XX_PCI_GDC=y
# CONFIG_FB_BROADSHEET is not setCONFIG_BACKLIGHT_LCD_SUPPORT=y
# CONFIG_LCD_CLASS_DEVICE is not setCONFIG_BACKLIGHT_CLASS_DEVICE=yCONFIG_BACKLIGHT_GENERIC=yCONFIG_BACKLIGHT_PROGEAR=mCONFIG_BACKLIGHT_MBP_NVIDIA=yCONFIG_BACKLIGHT_SAHARA=m
#
# Display device support
#CONFIG_DISPLAY_SUPPORT=m
#
# Display hardware drivers
#
#
# Console display driver support
#CONFIG_VGA_CONSOLE=y
# CONFIG_VGACON_SOFT_SCROLLBACK is not setCONFIG_DUMMY_CONSOLE=y
# CONFIG_LOGO is not set
# CONFIG_SOUND is not set
# CONFIG_HID_SUPPORT is not setCONFIG_USB_MOUSE=yCONFIG_USB_SUPPORT=yCONFIG_USB_ARCH_HAS_HCD=yCONFIG_USB_ARCH_HAS_OHCI=yCONFIG_USB_ARCH_HAS_EHCI=yCONFIG_USB=yCONFIG_USB_DEBUG=yCONFIG_USB_ANNOUNCE_NEW_DEVICES=y
#
# Miscellaneous USB options
#CONFIG_USB_DEVICEFS=yCONFIG_USB_DEVICE_CLASS=yCONFIG_USB_DYNAMIC_MINORS=y
# CONFIG_USB_OTG is not setCONFIG_USB_OTG_WHITELIST=yCONFIG_USB_OTG_BLACKLIST_HUB=yCONFIG_USB_MON=mCONFIG_USB_WUSB=yCONFIG_USB_WUSB_CBAF=mCONFIG_USB_WUSB_CBAF_DEBUG=y
#
# USB Host Controller Drivers
#
# CONFIG_USB_C67X00_HCD is not set
# CONFIG_USB_XHCI_HCD is not setCONFIG_USB_EHCI_HCD=yCONFIG_USB_EHCI_ROOT_HUB_TT=yCONFIG_USB_EHCI_TT_NEWSCHED=y
# CONFIG_USB_OXU210HP_HCD is not set
# CONFIG_USB_ISP116X_HCD is not setCONFIG_USB_ISP1760_HCD=yCONFIG_USB_OHCI_HCD=yCONFIG_USB_OHCI_HCD_SSB=y
# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not setCONFIG_USB_OHCI_LITTLE_ENDIAN=yCONFIG_USB_UHCI_HCD=y
# CONFIG_USB_U132_HCD is not set
# CONFIG_USB_SL811_HCD is not set
# CONFIG_USB_R8A66597_HCD is not setCONFIG_USB_HWA_HCD=y
#
# USB Device Class drivers
#CONFIG_USB_ACM=yCONFIG_USB_PRINTER=yCONFIG_USB_WDM=m
# CONFIG_USB_TMC is not set
#
# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may #
#
# also be needed; see USB_STORAGE Help for more info # CONFIG_USB_STORAGE=y CONFIG_USB_STORAGE_DEBUG=y CONFIG_USB_STORAGE_DATAFAB=m CONFIG_USB_STORAGE_FREECOM=y CONFIG_USB_STORAGE_ISD200=m CONFIG_USB_STORAGE_USBAT=m CONFIG_USB_STORAGE_SDDR09=y CONFIG_USB_STORAGE_SDDR55=m CONFIG_USB_STORAGE_JUMPSHOT=m CONFIG_USB_STORAGE_ALAUDA=m # CONFIG_USB_STORAGE_ONETOUCH is not set # CONFIG_USB_STORAGE_KARMA is not set CONFIG_USB_STORAGE_CYPRESS_ATACB=m # CONFIG_USB_LIBUSUAL is not set
#
# USB Imaging devices
#CONFIG_USB_MDC800=mCONFIG_USB_MICROTEK=y
#
# USB port drivers
#
# CONFIG_USB_USS720 is not setCONFIG_USB_SERIAL=yCONFIG_USB_SERIAL_CONSOLE=yCONFIG_USB_EZUSB=y
# CONFIG_USB_SERIAL_GENERIC is not set
# CONFIG_USB_SERIAL_AIRCABLE is not setCONFIG_USB_SERIAL_ARK3116=mCONFIG_USB_SERIAL_BELKIN=mCONFIG_USB_SERIAL_CH341=m
# CONFIG_USB_SERIAL_WHITEHEAT is not setCONFIG_USB_SERIAL_DIGI_ACCELEPORT=yCONFIG_USB_SERIAL_CP210X=y
# CONFIG_USB_SERIAL_CYPRESS_M8 is not setCONFIG_USB_SERIAL_EMPEG=mCONFIG_USB_SERIAL_FTDI_SIO=y
# CONFIG_USB_SERIAL_FUNSOFT is not setCONFIG_USB_SERIAL_VISOR=yCONFIG_USB_SERIAL_IPAQ=yCONFIG_USB_SERIAL_IR=y
# CONFIG_USB_SERIAL_EDGEPORT is not setCONFIG_USB_SERIAL_EDGEPORT_TI=mCONFIG_USB_SERIAL_GARMIN=y
# CONFIG_USB_SERIAL_IPW is not setCONFIG_USB_SERIAL_IUU=mCONFIG_USB_SERIAL_KEYSPAN_PDA=yCONFIG_USB_SERIAL_KEYSPAN=y
# CONFIG_USB_SERIAL_KEYSPAN_MPR is not setCONFIG_USB_SERIAL_KEYSPAN_USA28=yCONFIG_USB_SERIAL_KEYSPAN_USA28X=yCONFIG_USB_SERIAL_KEYSPAN_USA28XA=yCONFIG_USB_SERIAL_KEYSPAN_USA28XB=yCONFIG_USB_SERIAL_KEYSPAN_USA19=y
# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not setCONFIG_USB_SERIAL_KEYSPAN_USA19W=yCONFIG_USB_SERIAL_KEYSPAN_USA19QW=yCONFIG_USB_SERIAL_KEYSPAN_USA19QI=yCONFIG_USB_SERIAL_KEYSPAN_USA49W=yCONFIG_USB_SERIAL_KEYSPAN_USA49WLC=yCONFIG_USB_SERIAL_KLSI=mCONFIG_USB_SERIAL_KOBIL_SCT=yCONFIG_USB_SERIAL_MCT_U232=mCONFIG_USB_SERIAL_MOS7720=yCONFIG_USB_SERIAL_MOS7840=m
# CONFIG_USB_SERIAL_MOTOROLA is not setCONFIG_USB_SERIAL_NAVMAN=yCONFIG_USB_SERIAL_PL2303=yCONFIG_USB_SERIAL_OTI6858=m
# CONFIG_USB_SERIAL_QUALCOMM is not setCONFIG_USB_SERIAL_SPCP8X5=mCONFIG_USB_SERIAL_HP4X=yCONFIG_USB_SERIAL_SAFE=yCONFIG_USB_SERIAL_SAFE_PADDED=y
# CONFIG_USB_SERIAL_SIEMENS_MPI is not setCONFIG_USB_SERIAL_SIERRAWIRELESS=mCONFIG_USB_SERIAL_SYMBOL=yCONFIG_USB_SERIAL_TI=m
# CONFIG_USB_SERIAL_CYBERJACK is not setCONFIG_USB_SERIAL_XIRCOM=m
# CONFIG_USB_SERIAL_OPTION is not setCONFIG_USB_SERIAL_OMNINET=mCONFIG_USB_SERIAL_OPTICON=mCONFIG_USB_SERIAL_DEBUG=y
#
# USB Miscellaneous drivers
#CONFIG_USB_EMI62=yCONFIG_USB_EMI26=yCONFIG_USB_ADUTUX=mCONFIG_USB_SEVSEG=m
# CONFIG_USB_RIO500 is not setCONFIG_USB_LEGOTOWER=mCONFIG_USB_LCD=mCONFIG_USB_BERRY_CHARGE=yCONFIG_USB_LED=m
# CONFIG_USB_CYPRESS_CY7C63 is not setCONFIG_USB_CYTHERM=y
# CONFIG_USB_IDMOUSE is not setCONFIG_USB_FTDI_ELAN=mCONFIG_USB_APPLEDISPLAY=y
# CONFIG_USB_SISUSBVGA is not set
# CONFIG_USB_LD is not set
# CONFIG_USB_TRANCEVIBRATOR is not set
# CONFIG_USB_IOWARRIOR is not set
# CONFIG_USB_TEST is not setCONFIG_USB_ISIGHTFW=yCONFIG_USB_VST=yCONFIG_USB_ATM=mCONFIG_USB_SPEEDTOUCH=m
# CONFIG_USB_CXACRU is not set
# CONFIG_USB_UEAGLEATM is not setCONFIG_USB_XUSBATM=m
#
# OTG and related infrastructure
#
# CONFIG_NOP_USB_XCEIV is not setCONFIG_UWB=yCONFIG_UWB_HWA=yCONFIG_UWB_WHCI=yCONFIG_UWB_WLP=mCONFIG_UWB_I1480U=yCONFIG_UWB_I1480U_WLP=mCONFIG_MMC=m
# CONFIG_MMC_DEBUG is not set
# CONFIG_MMC_UNSAFE_RESUME is not set
#
# MMC/SD/SDIO Card Drivers
#CONFIG_MMC_BLOCK=mCONFIG_MMC_BLOCK_BOUNCE=yCONFIG_SDIO_UART=mCONFIG_MMC_TEST=m
#
# MMC/SD/SDIO Host Controller Drivers
#CONFIG_MMC_SDHCI=mCONFIG_MMC_SDHCI_PCI=m
# CONFIG_MMC_RICOH_MMC is not setCONFIG_MMC_SDHCI_PLTFM=mCONFIG_MMC_WBSD=mCONFIG_MMC_TIFM_SD=m
# CONFIG_MMC_CB710 is not set
# CONFIG_MMC_VIA_SDMMC is not setCONFIG_MEMSTICK=y
# CONFIG_MEMSTICK_DEBUG is not set
#
# MemoryStick drivers
#
# CONFIG_MEMSTICK_UNSAFE_RESUME is not setCONFIG_MSPRO_BLOCK=y
#
# MemoryStick Host Controller Drivers
#
# CONFIG_MEMSTICK_TIFM_MS is not setCONFIG_MEMSTICK_JMICRON_38X=mCONFIG_NEW_LEDS=yCONFIG_LEDS_CLASS=y
#
# LED drivers
#CONFIG_LEDS_ALIX2=m
# CONFIG_LEDS_PCA9532 is not setCONFIG_LEDS_LP3944=mCONFIG_LEDS_CLEVO_MAIL=yCONFIG_LEDS_PCA955X=yCONFIG_LEDS_BD2802=y
#
# LED Triggers
#CONFIG_LEDS_TRIGGERS=y
# CONFIG_LEDS_TRIGGER_TIMER is not setCONFIG_LEDS_TRIGGER_HEARTBEAT=y
# CONFIG_LEDS_TRIGGER_BACKLIGHT is not setCONFIG_LEDS_TRIGGER_DEFAULT_ON=m
#
# iptables trigger is under Netfilter config (LED target) # # CONFIG_ACCESSIBILITY is not set # CONFIG_INFINIBAND is not set CONFIG_EDAC=y
#
# Reporting subsystems
#CONFIG_EDAC_DEBUG=y
# CONFIG_EDAC_DEBUG_VERBOSE is not setCONFIG_EDAC_MM_EDAC=yCONFIG_EDAC_AMD76X=mCONFIG_EDAC_E7XXX=yCONFIG_EDAC_E752X=m
# CONFIG_EDAC_I82875P is not set
# CONFIG_EDAC_I82975X is not setCONFIG_EDAC_I3000=yCONFIG_EDAC_X38=mCONFIG_EDAC_I5400=y
# CONFIG_EDAC_I82860 is not setCONFIG_EDAC_R82600=mCONFIG_EDAC_I5000=mCONFIG_EDAC_I5100=y
# CONFIG_RTC_CLASS is not setCONFIG_DMADEVICES=y
#
# DMA Devices
#CONFIG_INTEL_IOATDMA=yCONFIG_DMA_ENGINE=y
#
# DMA Clients
#CONFIG_NET_DMA=yCONFIG_DMATEST=mCONFIG_DCA=yCONFIG_AUXDISPLAY=yCONFIG_KS0108=mCONFIG_KS0108_PORT=0x378CONFIG_KS0108_DELAY=2
# CONFIG_CFAG12864B is not setCONFIG_UIO=mCONFIG_UIO_CIF=mCONFIG_UIO_PDRV=m
# CONFIG_UIO_PDRV_GENIRQ is not setCONFIG_UIO_SMX=mCONFIG_UIO_AEC=m
# CONFIG_UIO_SERCOS3 is not set
#
# TI VLYNQ
#CONFIG_X86_PLATFORM_DEVICES=y
#
# Firmware Drivers
#CONFIG_EDD=y
# CONFIG_EDD_OFF is not setCONFIG_FIRMWARE_MEMMAP=y
# CONFIG_DELL_RBU is not set
# CONFIG_DCDBAS is not set
# CONFIG_DMIID is not set
# CONFIG_ISCSI_IBFT_FIND is not set
#
# File systems
#CONFIG_EXT2_FS=mCONFIG_EXT2_FS_XATTR=yCONFIG_EXT2_FS_POSIX_ACL=y
# CONFIG_EXT2_FS_SECURITY is not setCONFIG_EXT2_FS_XIP=yCONFIG_EXT3_FS=yCONFIG_EXT3_DEFAULTS_TO_ORDERED=yCONFIG_EXT3_FS_XATTR=yCONFIG_EXT3_FS_POSIX_ACL=yCONFIG_EXT3_FS_SECURITY=y
# CONFIG_EXT4_FS is not setCONFIG_FS_XIP=yCONFIG_JBD=yCONFIG_JBD_DEBUG=yCONFIG_FS_MBCACHE=yCONFIG_REISERFS_FS=m
# CONFIG_REISERFS_CHECK is not setCONFIG_REISERFS_PROC_INFO=yCONFIG_REISERFS_FS_XATTR=yCONFIG_REISERFS_FS_POSIX_ACL=yCONFIG_REISERFS_FS_SECURITY=yCONFIG_JFS_FS=mCONFIG_JFS_POSIX_ACL=yCONFIG_JFS_SECURITY=yCONFIG_JFS_DEBUG=yCONFIG_JFS_STATISTICS=yCONFIG_FS_POSIX_ACL=yCONFIG_XFS_FS=mCONFIG_XFS_QUOTA=y
# CONFIG_XFS_POSIX_ACL is not set
# CONFIG_XFS_RT is not setCONFIG_XFS_DEBUG=yCONFIG_GFS2_FS=mCONFIG_GFS2_FS_LOCKING_DLM=y
# CONFIG_OCFS2_FS is not setCONFIG_BTRFS_FS=mCONFIG_BTRFS_FS_POSIX_ACL=yCONFIG_FILE_LOCKING=yCONFIG_FSNOTIFY=yCONFIG_DNOTIFY=yCONFIG_INOTIFY=yCONFIG_INOTIFY_USER=yCONFIG_QUOTA=yCONFIG_QUOTA_NETLINK_INTERFACE=yCONFIG_PRINT_QUOTA_WARNING=yCONFIG_QUOTA_TREE=mCONFIG_QFMT_V1=mCONFIG_QFMT_V2=mCONFIG_QUOTACTL=yCONFIG_AUTOFS_FS=mCONFIG_AUTOFS4_FS=mCONFIG_FUSE_FS=mCONFIG_CUSE=m
#
# Caches
#
# CONFIG_FSCACHE is not set
#
# CD-ROM/DVD Filesystems
#
# CONFIG_ISO9660_FS is not setCONFIG_UDF_FS=yCONFIG_UDF_NLS=y
#
# DOS/FAT/NT Filesystems
#CONFIG_FAT_FS=yCONFIG_MSDOS_FS=yCONFIG_VFAT_FS=yCONFIG_FAT_DEFAULT_CODEPAGE=437CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"CONFIG_NTFS_FS=yCONFIG_NTFS_DEBUG=yCONFIG_NTFS_RW=y
#
# Pseudo filesystems
#CONFIG_PROC_FS=yCONFIG_PROC_KCORE=y
# CONFIG_PROC_SYSCTL is not set
# CONFIG_PROC_PAGE_MONITOR is not setCONFIG_SYSFS=y
# CONFIG_TMPFS is not setCONFIG_HUGETLBFS=yCONFIG_HUGETLB_PAGE=yCONFIG_CONFIGFS_FS=mCONFIG_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 setCONFIG_HFSPLUS_FS=yCONFIG_BEFS_FS=yCONFIG_BEFS_DEBUG=y
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not setCONFIG_CRAMFS=mCONFIG_SQUASHFS=yCONFIG_SQUASHFS_EMBEDDED=yCONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3CONFIG_VXFS_FS=m
# CONFIG_MINIX_FS is not setCONFIG_OMFS_FS=yCONFIG_HPFS_FS=yCONFIG_QNX4FS_FS=y
# CONFIG_ROMFS_FS is not setCONFIG_SYSV_FS=mCONFIG_UFS_FS=mCONFIG_UFS_FS_WRITE=yCONFIG_UFS_DEBUG=yCONFIG_EXOFS_FS=m
# CONFIG_EXOFS_DEBUG is not setCONFIG_NILFS2_FS=yCONFIG_NETWORK_FILESYSTEMS=y
# CONFIG_NFS_FS is not setCONFIG_NFSD=mCONFIG_NFSD_V2_ACL=yCONFIG_NFSD_V3=yCONFIG_NFSD_V3_ACL=y
# CONFIG_NFSD_V4 is not setCONFIG_LOCKD=mCONFIG_LOCKD_V4=yCONFIG_EXPORTFS=mCONFIG_NFS_ACL_SUPPORT=mCONFIG_NFS_COMMON=yCONFIG_SUNRPC=mCONFIG_SUNRPC_GSS=m
# CONFIG_RPCSEC_GSS_KRB5 is not setCONFIG_RPCSEC_GSS_SPKM3=m
# CONFIG_SMB_FS is not setCONFIG_CIFS=y
# CONFIG_CIFS_STATS is not setCONFIG_CIFS_WEAK_PW_HASH=y
# CONFIG_CIFS_UPCALL is not set
# CONFIG_CIFS_XATTR is not set
# CONFIG_CIFS_DEBUG2 is not set
# CONFIG_CIFS_DFS_UPCALL is not setCONFIG_CIFS_EXPERIMENTAL=yCONFIG_NCP_FS=yCONFIG_NCPFS_PACKET_SIGNING=yCONFIG_NCPFS_IOCTL_LOCKING=yCONFIG_NCPFS_STRONG=y
# CONFIG_NCPFS_NFS_NS is not set
# CONFIG_NCPFS_OS2_NS is not set
# CONFIG_NCPFS_SMALLDOS is not set
# CONFIG_NCPFS_NLS is not setCONFIG_NCPFS_EXTRAS=y
# CONFIG_CODA_FS is not setCONFIG_AFS_FS=yCONFIG_AFS_DEBUG=y
#
# 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=yCONFIG_ACORN_PARTITION_ADFS=y
# CONFIG_ACORN_PARTITION_POWERTEC is not setCONFIG_ACORN_PARTITION_RISCIX=yCONFIG_OSF_PARTITION=yCONFIG_AMIGA_PARTITION=y
# CONFIG_ATARI_PARTITION is not setCONFIG_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 setCONFIG_SUN_PARTITION=yCONFIG_KARMA_PARTITION=yCONFIG_EFI_PARTITION=y
# CONFIG_SYSV68_PARTITION is not setCONFIG_NLS=yCONFIG_NLS_DEFAULT="iso8859-1"CONFIG_NLS_CODEPAGE_437=m
# CONFIG_NLS_CODEPAGE_737 is not setCONFIG_NLS_CODEPAGE_775=yCONFIG_NLS_CODEPAGE_850=y
# CONFIG_NLS_CODEPAGE_852 is not setCONFIG_NLS_CODEPAGE_855=mCONFIG_NLS_CODEPAGE_857=yCONFIG_NLS_CODEPAGE_860=m
# CONFIG_NLS_CODEPAGE_861 is not setCONFIG_NLS_CODEPAGE_862=yCONFIG_NLS_CODEPAGE_863=m
# CONFIG_NLS_CODEPAGE_864 is not set
# CONFIG_NLS_CODEPAGE_865 is not setCONFIG_NLS_CODEPAGE_866=y
# CONFIG_NLS_CODEPAGE_869 is not setCONFIG_NLS_CODEPAGE_936=m
# CONFIG_NLS_CODEPAGE_950 is not setCONFIG_NLS_CODEPAGE_932=m
# CONFIG_NLS_CODEPAGE_949 is not setCONFIG_NLS_CODEPAGE_874=yCONFIG_NLS_ISO8859_8=mCONFIG_NLS_CODEPAGE_1250=m
# CONFIG_NLS_CODEPAGE_1251 is not set
# CONFIG_NLS_ASCII is not set
# CONFIG_NLS_ISO8859_1 is not set
# CONFIG_NLS_ISO8859_2 is not setCONFIG_NLS_ISO8859_3=mCONFIG_NLS_ISO8859_4=y
# CONFIG_NLS_ISO8859_5 is not setCONFIG_NLS_ISO8859_6=yCONFIG_NLS_ISO8859_7=m
# CONFIG_NLS_ISO8859_9 is not set
# CONFIG_NLS_ISO8859_13 is not setCONFIG_NLS_ISO8859_14=mCONFIG_NLS_ISO8859_15=mCONFIG_NLS_KOI8_R=mCONFIG_NLS_KOI8_U=yCONFIG_NLS_UTF8=yCONFIG_DLM=mCONFIG_DLM_DEBUG=y
#
# Kernel hacking
#CONFIG_TRACE_IRQFLAGS_SUPPORT=yCONFIG_PRINTK_TIME=yCONFIG_ALLOW_WARNINGS=y
# CONFIG_ENABLE_WARN_DEPRECATED is not setCONFIG_ENABLE_MUST_CHECK=yCONFIG_FRAME_WARN=1024CONFIG_MAGIC_SYSRQ=yCONFIG_UNUSED_SYMBOLS=yCONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not setCONFIG_DEBUG_SECTION_MISMATCH=yCONFIG_DEBUG_KERNEL=yCONFIG_DEBUG_SHIRQ=y
# CONFIG_DETECT_SOFTLOCKUP is not setCONFIG_DETECT_HUNG_TASK=yCONFIG_BOOTPARAM_HUNG_TASK_PANIC=yCONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=1CONFIG_SCHED_DEBUG=yCONFIG_SCHEDSTATS=yCONFIG_TIMER_STATS=yCONFIG_DEBUG_OBJECTS=yCONFIG_DEBUG_OBJECTS_SELFTEST=yCONFIG_DEBUG_OBJECTS_FREE=y
# CONFIG_DEBUG_OBJECTS_TIMERS is not setCONFIG_DEBUG_OBJECTS_ENABLE_DEFAULT=1CONFIG_SLUB_DEBUG_ON=yCONFIG_SLUB_STATS=y
# 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=yCONFIG_LOCK_STAT=yCONFIG_DEBUG_LOCKDEP=yCONFIG_TRACE_IRQFLAGS=y
# CONFIG_DEBUG_SPINLOCK_SLEEP is not setCONFIG_DEBUG_LOCKING_API_SELFTESTS=yCONFIG_STACKTRACE=yCONFIG_DEBUG_HIGHMEM=yCONFIG_DEBUG_BUGVERBOSE=yCONFIG_DEBUG_VM=yCONFIG_DEBUG_VIRTUAL=yCONFIG_DEBUG_WRITECOUNT=y
# CONFIG_DEBUG_MEMORY_INIT is not setCONFIG_DEBUG_LIST=y
# CONFIG_DEBUG_SG is not setCONFIG_DEBUG_NOTIFIERS=yCONFIG_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_BACKTRACE_SELF_TEST is not setCONFIG_FAULT_INJECTION=yCONFIG_FAILSLAB=yCONFIG_FAIL_PAGE_ALLOC=yCONFIG_FAIL_MAKE_REQUEST=yCONFIG_FAIL_IO_TIMEOUT=yCONFIG_FAULT_INJECTION_DEBUG_FS=yCONFIG_FAULT_INJECTION_STACKTRACE_FILTER=yCONFIG_LATENCYTOP=yCONFIG_SYSCTL_SYSCALL_CHECK=yCONFIG_DEBUG_PAGEALLOC=yCONFIG_USER_STACKTRACE_SUPPORT=yCONFIG_NOP_TRACER=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_SYSCALL_TRACEPOINTS=yCONFIG_RING_BUFFER=yCONFIG_EVENT_TRACING=yCONFIG_CONTEXT_SWITCH_TRACER=yCONFIG_TRACING=yCONFIG_TRACING_SUPPORT=y
# CONFIG_FTRACE is not setCONFIG_PROVIDE_OHCI1394_DMA_INIT=y
# CONFIG_FIREWIRE_OHCI_REMOTE_DMA is not setCONFIG_DYNAMIC_DEBUG=yCONFIG_DMA_API_DEBUG=yCONFIG_SAMPLES=yCONFIG_SAMPLE_MARKERS=mCONFIG_SAMPLE_TRACEPOINTS=m
# CONFIG_SAMPLE_TRACE_EVENTS is not setCONFIG_SAMPLE_KOBJECT=m
# CONFIG_SAMPLE_HW_BREAKPOINT is not setCONFIG_HAVE_ARCH_KGDB=yCONFIG_KGDB=yCONFIG_KGDB_SERIAL_CONSOLE=y
# CONFIG_KGDB_TESTS is not setCONFIG_HAVE_ARCH_KMEMCHECK=y
# CONFIG_STRICT_DEVMEM is not set
# CONFIG_X86_VERBOSE_BOOTUP is not setCONFIG_EARLY_PRINTK=yCONFIG_EARLY_PRINTK_DBGP=yCONFIG_DEBUG_STACKOVERFLOW=yCONFIG_DEBUG_STACK_USAGE=yCONFIG_DEBUG_PER_CPU_MAPS=y
# CONFIG_X86_PTDUMP is not setCONFIG_DEBUG_RODATA=yCONFIG_DEBUG_RODATA_TEST=yCONFIG_DEBUG_NX_TEST=mCONFIG_4KSTACKS=y
# CONFIG_DOUBLEFAULT is not setCONFIG_IOMMU_STRESS=yCONFIG_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=0CONFIG_DEBUG_BOOT_PARAMS=yCONFIG_CPA_DEBUG=y
# CONFIG_OPTIMIZE_INLINING is not set
#
# Security options
#CONFIG_KEYS=y
# CONFIG_KEYS_DEBUG_PROC_KEYS is not setCONFIG_SECURITY=yCONFIG_SECURITYFS=yCONFIG_SECURITY_NETWORK=yCONFIG_SECURITY_NETWORK_XFRM=yCONFIG_SECURITY_PATH=yCONFIG_SECURITY_FILE_CAPABILITIES=yCONFIG_LSM_MMAP_MIN_ADDR=65536CONFIG_SECURITY_SELINUX=y
# CONFIG_SECURITY_SELINUX_BOOTPARAM is not set
# CONFIG_SECURITY_SELINUX_DISABLE is not setCONFIG_SECURITY_SELINUX_DEVELOP=y
# CONFIG_SECURITY_SELINUX_AVC_STATS is not setCONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1
# CONFIG_SECURITY_TOMOYO 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=yCONFIG_CRYPTO_NULL=yCONFIG_CRYPTO_WORKQUEUE=y
# CONFIG_CRYPTO_CRYPTD is not setCONFIG_CRYPTO_AUTHENC=mCONFIG_CRYPTO_TEST=m
#
# 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=mCONFIG_CRYPTO_ECB=yCONFIG_CRYPTO_LRW=yCONFIG_CRYPTO_PCBC=yCONFIG_CRYPTO_XTS=y
#
# Hash modes
#CONFIG_CRYPTO_HMAC=mCONFIG_CRYPTO_XCBC=y
#
# Digest
#CONFIG_CRYPTO_CRC32C=mCONFIG_CRYPTO_CRC32C_INTEL=yCONFIG_CRYPTO_MD4=mCONFIG_CRYPTO_MD5=mCONFIG_CRYPTO_MICHAEL_MIC=yCONFIG_CRYPTO_RMD128=mCONFIG_CRYPTO_RMD160=y
# CONFIG_CRYPTO_RMD256 is not setCONFIG_CRYPTO_RMD320=yCONFIG_CRYPTO_SHA1=yCONFIG_CRYPTO_SHA256=m
# CONFIG_CRYPTO_SHA512 is not setCONFIG_CRYPTO_TGR192=mCONFIG_CRYPTO_WP512=y
#
# Ciphers
#CONFIG_CRYPTO_AES=yCONFIG_CRYPTO_AES_586=mCONFIG_CRYPTO_ANUBIS=mCONFIG_CRYPTO_ARC4=yCONFIG_CRYPTO_BLOWFISH=yCONFIG_CRYPTO_CAMELLIA=mCONFIG_CRYPTO_CAST5=m
# CONFIG_CRYPTO_CAST6 is not setCONFIG_CRYPTO_DES=yCONFIG_CRYPTO_FCRYPT=y
# CONFIG_CRYPTO_KHAZAD is not setCONFIG_CRYPTO_SALSA20=mCONFIG_CRYPTO_SALSA20_586=y
# CONFIG_CRYPTO_SEED is not setCONFIG_CRYPTO_SERPENT=mCONFIG_CRYPTO_TEA=yCONFIG_CRYPTO_TWOFISH=mCONFIG_CRYPTO_TWOFISH_COMMON=yCONFIG_CRYPTO_TWOFISH_586=y
#
# Compression
#CONFIG_CRYPTO_DEFLATE=yCONFIG_CRYPTO_ZLIB=mCONFIG_CRYPTO_LZO=m
#
# Random Number Generation
#CONFIG_CRYPTO_ANSI_CPRNG=m
# CONFIG_CRYPTO_HW is not setCONFIG_HAVE_KVM=yCONFIG_HAVE_KVM_IRQCHIP=yCONFIG_VIRTUALIZATION=yCONFIG_KVM=mCONFIG_KVM_INTEL=mCONFIG_KVM_AMD=mCONFIG_KVM_TRACE=y
# CONFIG_LGUEST is not setCONFIG_VIRTIO=mCONFIG_VIRTIO_RING=mCONFIG_VIRTIO_PCI=m
# CONFIG_VIRTIO_BALLOON 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=mCONFIG_CRC_ITU_T=yCONFIG_CRC32=yCONFIG_CRC7=yCONFIG_LIBCRC32C=mCONFIG_AUDIT_GENERIC=yCONFIG_ZLIB_INFLATE=yCONFIG_ZLIB_DEFLATE=yCONFIG_LZO_COMPRESS=mCONFIG_LZO_DECOMPRESS=mCONFIG_DECOMPRESS_GZIP=yCONFIG_DECOMPRESS_LZMA=yCONFIG_TEXTSEARCH=yCONFIG_TEXTSEARCH_KMP=yCONFIG_TEXTSEARCH_BM=yCONFIG_TEXTSEARCH_FSM=yCONFIG_HAS_IOMEM=yCONFIG_HAS_IOPORT=yCONFIG_HAS_DMA=yCONFIG_CHECK_SIGNATURE=yCONFIG_CPUMASK_OFFSTACK=yCONFIG_NLATTR=yCONFIG_FORCE_SUCCESSFUL_BUILD=yCONFIG_FORCE_MINIMAL_CONFIG=yCONFIG_FORCE_MINIMAL_CONFIG_PHYS=yCONFIG_X86_32_ALWAYS_ON=y
Re: [GIT PULL v2] tracing/kprobes: v1 + two fixes
Quoted 33 lines · Ingo Molnar
Quoted 18 lines · Frederic Weisbecker
Ingo,
This v2 can be either pulled after tracing/kprobes (the v1) or can be pulled alone, it is based on the previous one and addresses reviews from Li Zefan.
Thanks,
Frederic.The following changes since commit
24851d2447830e6cba4c4b641cb73e713f312373:
Frederic Weisbecker (1):
tracing/kprobes: Dump the culprit kprobe in case of kprobe recursionare available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing.git\
tracing/kprobes-2Quoted 8 lines
Frederic Weisbecker (2):
tracing: Restore the const qualifier for field names and types definition
tracing: Remove unneeded pointer castsinclude/linux/ftrace_event.h | 6 +++--- kernel/trace/trace_events.c | 4 ++-- kernel/trace/trace_syscalls.c | 8 ++++---- 3 files changed, 9 insertions(+), 9 deletions(-)I've pulled it into a staging branch (not yet in tip:master either and not yet on the road to upstream either), thanks guys!
Quoted 8 lines
I have done some brief testing. One hickup is this build failure on x86, caused by the kprobes instruction decoder self-test:
CHK
include/linux/compile.h
TEST posttest
Error: 41001024: a1 08 30 c9 41 mov
0x41c93008,%eax
Error: objdump says 5 bytes, butinsn_get_length()says 9 (attr:40000)
I can't help for this one :)
Quoted 11 lines
another one is this build warning:
In file included from
include/trace/events/napi.h:5,from net/core/net-traces.c:28: include/linux/tracepoint.h:285:1: warning: "TRACE_EVENT_FN" redefined In file included from include/trace/define_trace.h:61, from include/trace/events/skb.h:40, from net/core/net-traces.c:27:
include/trace/ftrace.h:50:1: warning: this is the location of the previous definitionconfig attached.
Oh, that looks like the site that includes two trace events headers. I wonder if it also happens in -tip master without kprobes.
I'll check that, thanks.
Re: [GIT PULL v2] tracing/kprobes: v1 + two fixes
In reply to Ingo MolnarQuoted 50 lines · Ingo Molnar
Quoted 18 lines · Frederic Weisbecker
Ingo,
This v2 can be either pulled after tracing/kprobes (the v1) or can be pulled alone, it is based on the previous one and addresses reviews from Li Zefan.
Thanks,
Frederic.The following changes since commit
24851d2447830e6cba4c4b641cb73e713f312373:
Frederic Weisbecker (1):
tracing/kprobes: Dump the culprit kprobe in case of kprobe recursionare available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing.git\
tracing/kprobes-2Quoted 8 lines
Frederic Weisbecker (2):
tracing: Restore the const qualifier for field names and types definition
tracing: Remove unneeded pointer castsinclude/linux/ftrace_event.h | 6 +++--- kernel/trace/trace_events.c | 4 ++-- kernel/trace/trace_syscalls.c | 8 ++++---- 3 files changed, 9 insertions(+), 9 deletions(-)I've pulled it into a staging branch (not yet in tip:master either and not yet on the road to upstream either), thanks guys!
I have done some brief testing. One hickup is this build failure on x86, caused by the kprobes instruction decoder self-test:
CHK
include/linux/compile.h
TEST posttest
Error: 41001024: a1 08 30 c9 41 mov
0x41c93008,%eax
Error: objdump says 5 bytes, butinsn_get_length()says 9 (attr:40000)another one is this build warning:
In file included from
include/trace/events/napi.h:5,from net/core/net-traces.c:28: include/linux/tracepoint.h:285:1: warning: "TRACE_EVENT_FN" redefined In file included from include/trace/define_trace.h:61, from include/trace/events/skb.h:40, from net/core/net-traces.c:27:
Quoted 5 lines
include/trace/ftrace.h:50:1: warning: this is the location of the previous definitionconfig attached.
Ingo
That happens also in a pure -tip master.
PATCH 1/1 tracing: Undef TRACE_EVENT_FN between trace events headers inclusion
Quoted 53 lines · Frederic Weisbecker
Quoted 52 lines · Ingo Molnar
Quoted 18 lines · Frederic Weisbecker
Ingo,
This v2 can be either pulled after tracing/kprobes (the v1) or can be pulled alone, it is based on the previous one and addresses reviews from Li Zefan.
Thanks,
Frederic.The following changes since commit
24851d2447830e6cba4c4b641cb73e713f312373:
Frederic Weisbecker (1):
tracing/kprobes: Dump the culprit kprobe in case of kprobe recursionare available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing.git\
tracing/kprobes-2Quoted 8 lines
Frederic Weisbecker (2):
tracing: Restore the const qualifier for field names and types definition
tracing: Remove unneeded pointer castsinclude/linux/ftrace_event.h | 6 +++--- kernel/trace/trace_events.c | 4 ++-- kernel/trace/trace_syscalls.c | 8 ++++---- 3 files changed, 9 insertions(+), 9 deletions(-)I've pulled it into a staging branch (not yet in tip:master either and not yet on the road to upstream either), thanks guys!
I have done some brief testing. One hickup is this build failure on x86, caused by the kprobes instruction decoder self-test:
CHK
include/linux/compile.h
TEST posttest
Error: 41001024: a1 08 30 c9 41 mov
0x41c93008,%eax
Error: objdump says 5 bytes, butinsn_get_length()says 9 (attr:40000)another one is this build warning:
In file included from
include/trace/events/napi.h:5,from net/core/net-traces.c:28: include/linux/tracepoint.h:285:1: warning: "TRACE_EVENT_FN" redefined In file included from include/trace/define_trace.h:61, from include/trace/events/skb.h:40, from net/core/net-traces.c:27:
include/trace/ftrace.h:50:1: warning: this is the location of the previous definition
Quoted 7 lines
Quoted 3 lines
config attached.
Ingo
That happens also in a pure -tip master.
The below patch should solve this problem.
---
Quoted 1 line
From
e9ff53c590ed08f28bcaaff547ae559e809d963aMon Sep 17 00:00:00 2001
From: Frederic Weisbecker <[email protected]>
Date: Thu, 27 Aug 2009 18:05:11 +0200
Subject: [PATCH] tracing: Undef TRACE_EVENT_FN between trace events headers inclusion
The recent commit:
tracing/events: fix the include file dependencies
fixed a file dependency problem while including more than one trace event header file.
This fix undefined TRACE_EVENT after an event header macro preprocessing in order to make tracepoint.h able to correctly declare the tracepoints necessary for the next event header file.
But now we also need to undefine TRACE_EVENT_FN at the end of an event header file preprocessing for the same reason.
This fixes the following build error:
In file included from include/trace/events/napi.h:5,
from net/core/net-traces.c:28:
include/linux/tracepoint.h:285:1: warning: "TRACE_EVENT_FN" redefined
In file included from include/trace/define_trace.h:61,
from include/trace/events/skb.h:40,
from net/core/net-traces.c:27:
include/trace/ftrace.h:50:1: warning: this is the location of the previous definition
In file included from include/trace/events/napi.h:5,
from net/core/net-traces.c:28:
include/linux/tracepoint.h:285:1: warning: "TRACE_EVENT_FN" redefined
In file included from include/trace/define_trace.h:61,
from include/trace/events/skb.h:40,
from net/core/net-traces.c:27:include/trace/ftrace.h:50:1: warning: this is the location of the previous definition
--- include/trace/define_trace.h | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
include/trace/define_trace.h +1 -0
@@ -62,6 +62,7 @@#endif #undef TRACE_EVENT +#undef TRACE_EVENT_FN#undef TRACE_HEADER_MULTI_READ/* Only undef what we defined in this file */
Signature · 1 line
1.6.2.3
[tip:tracing/core] tracing: Undef TRACE_EVENT_FN between trace events headers inclusion
Commit-ID: 6c347d43eea29221a8ebab9ff9cbe7a00cddac98 Gitweb: http://git.kernel.org/tip/6c347d43eea29221a8ebab9ff9cbe7a00cddac98 Author: Frederic Weisbecker <[email protected]> AuthorDate: Thu, 27 Aug 2009 18:17:34 +0200 Committer: Ingo Molnar <[email protected]> CommitDate: Thu, 27 Aug 2009 18:32:54 +0200
tracing: Undef TRACE_EVENT_FN between trace events headers inclusion
The recent commit:
tracing/events: fix the include file dependencies
fixed a file dependency problem while including more than one trace event header file.
This fix undefined TRACE_EVENT after an event header macro preprocessing in order to make tracepoint.h able to correctly declare the tracepoints necessary for the next event header file.
But now we also need to undefine TRACE_EVENT_FN at the end of an event header file preprocessing for the same reason.
This fixes the following build error:
In file included from include/trace/events/napi.h:5,
from net/core/net-traces.c:28:
include/linux/tracepoint.h:285:1: warning: "TRACE_EVENT_FN" redefined
In file included from include/trace/define_trace.h:61,
from include/trace/events/skb.h:40,
from net/core/net-traces.c:27:
include/trace/ftrace.h:50:1: warning: this is the location of the previous definition
In file included from include/trace/events/napi.h:5,
from net/core/net-traces.c:28:
include/linux/tracepoint.h:285:1: warning: "TRACE_EVENT_FN" redefined
In file included from include/trace/define_trace.h:61,
from include/trace/events/skb.h:40,
from net/core/net-traces.c:27:include/trace/ftrace.h:50:1: warning: this is the location of the previous definition
LKML-Reference: <20090827161732.GA7618@nowhere>
--- include/trace/define_trace.h | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
include/trace/define_trace.h +1 -0
@@ -62,6 +62,7 @@#endif #undef TRACE_EVENT +#undef TRACE_EVENT_FN#undef TRACE_HEADER_MULTI_READ/* Only undef what we defined in this file */
Re: [GIT PULL v2] tracing/kprobes: v1 + two fixes
In reply to Ingo MolnarQuoted 33 lines · Ingo Molnar
Quoted 18 lines · Frederic Weisbecker
Ingo,
This v2 can be either pulled after tracing/kprobes (the v1) or can be pulled alone, it is based on the previous one and addresses reviews from Li Zefan.
Thanks,
Frederic.The following changes since commit
24851d2447830e6cba4c4b641cb73e713f312373:
Frederic Weisbecker (1):
tracing/kprobes: Dump the culprit kprobe in case of kprobe recursionare available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing.git \ tracing/kprobes-2Quoted 8 lines
Frederic Weisbecker (2):
tracing: Restore the const qualifier for field names and types definition
tracing: Remove unneeded pointer castsinclude/linux/ftrace_event.h | 6 +++--- kernel/trace/trace_events.c | 4 ++-- kernel/trace/trace_syscalls.c | 8 ++++---- 3 files changed, 9 insertions(+), 9 deletions(-)I've pulled it into a staging branch (not yet in tip:master either and not yet on the road to upstream either), thanks guys!
Quoted 8 lines
I have done some brief testing. One hickup is this build failure on x86, caused by the kprobes instruction decoder self-test:
CHK
include/linux/compile.h
TEST posttest
Error: 41001024: a1 08 30 c9 41 mov
0x41c93008,%eax
Error: objdump says 5 bytes, butinsn_get_length()says 9 (attr:40000)
Oops, it should be fixed. Hmm, it seems that addr_bytes or opnd_bytes is broken, would you did a cross compiling? (compiling x86-32 on x86-64)
Thank you,
Quoted 13 lines
another one is this build warning:
In file included from
include/trace/events/napi.h:5,from net/core/net-traces.c:28: include/linux/tracepoint.h:285:1: warning: "TRACE_EVENT_FN" redefined In file included from include/trace/define_trace.h:61, from include/trace/events/skb.h:40, from net/core/net-traces.c:27:
include/trace/ftrace.h:50:1: warning: this is the location of the previous definitionconfig attached.
Ingo
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
Re: [GIT PULL v2] tracing/kprobes: v1 + two fixes
Quoted 45 lines · Masami Hiramatsu
Quoted 33 lines · Ingo Molnar
Quoted 18 lines · Frederic Weisbecker
Ingo,
This v2 can be either pulled after tracing/kprobes (the v1) or can be pulled alone, it is based on the previous one and addresses reviews from Li Zefan.
Thanks,
Frederic.The following changes since commit
24851d2447830e6cba4c4b641cb73e713f312373:
Frederic Weisbecker (1):
tracing/kprobes: Dump the culprit kprobe in case of kprobe recursionare available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing.git \ tracing/kprobes-2Quoted 8 lines
Frederic Weisbecker (2):
tracing: Restore the const qualifier for field names and types definition
tracing: Remove unneeded pointer castsinclude/linux/ftrace_event.h | 6 +++--- kernel/trace/trace_events.c | 4 ++-- kernel/trace/trace_syscalls.c | 8 ++++---- 3 files changed, 9 insertions(+), 9 deletions(-)I've pulled it into a staging branch (not yet in tip:master either and not yet on the road to upstream either), thanks guys!
Quoted 8 lines
I have done some brief testing. One hickup is this build failure on x86, caused by the kprobes instruction decoder self-test:
CHK
include/linux/compile.h
TEST posttest
Error: 41001024: a1 08 30 c9 41 mov
0x41c93008,%eax
Error: objdump says 5 bytes, butinsn_get_length()says 9 (attr:40000)
Quoted 3 lines
Oops, it should be fixed. Hmm, it seems that
addr_bytesoropnd_bytesis broken, would you did a cross compiling? (compiling x86-32 on x86-64)
yeah, i did that.
Ingo
Re: [GIT PULL v2] tracing/kprobes: v1 + two fixes
Quoted 48 lines · Ingo Molnar
Quoted 45 lines · Masami Hiramatsu
Quoted 41 lines · Ingo Molnar
Quoted 18 lines · Frederic Weisbecker
Ingo,
This v2 can be either pulled after tracing/kprobes (the v1) or can be pulled alone, it is based on the previous one and addresses reviews from Li Zefan.
Thanks,
Frederic.The following changes since commit
24851d2447830e6cba4c4b641cb73e713f312373:
Frederic Weisbecker (1):
tracing/kprobes: Dump the culprit kprobe in case of kprobe recursionare available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing.git \ tracing/kprobes-2Quoted 8 lines
Frederic Weisbecker (2):
tracing: Restore the const qualifier for field names and types definition
tracing: Remove unneeded pointer castsinclude/linux/ftrace_event.h | 6 +++--- kernel/trace/trace_events.c | 4 ++-- kernel/trace/trace_syscalls.c | 8 ++++---- 3 files changed, 9 insertions(+), 9 deletions(-)I've pulled it into a staging branch (not yet in tip:master either and not yet on the road to upstream either), thanks guys!
I have done some brief testing. One hickup is this build failure on x86, caused by the kprobes instruction decoder self-test:
CHK
include/linux/compile.h
TEST posttest
Error: 41001024: a1 08 30 c9 41 mov
0x41c93008,%eax
Error: objdump says 5 bytes, butinsn_get_length()says 9 (attr:40000)
Quoted 5 lines
Quoted 3 lines
Oops, it should be fixed. Hmm, it seems that
addr_bytesoropnd_bytesis broken, would you did a cross compiling? (compiling x86-32 on x86-64)yeah, i did that.
I see, so current selftest is not enough supporting the cross compiling yet. I think I can fix that. Could you tell me how you did that? make ARCH=i386 ?
Thank you,
Quoted 2 lines
Ingo
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
Re: [GIT PULL v2] tracing/kprobes: v1 + two fixes
Quoted 53 lines · Masami Hiramatsu
Quoted 52 lines · Ingo Molnar
Quoted 48 lines · Masami Hiramatsu
Quoted 33 lines · Ingo Molnar
Quoted 18 lines · Frederic Weisbecker
Ingo,
This v2 can be either pulled after tracing/kprobes (the v1) or can be pulled alone, it is based on the previous one and addresses reviews from Li Zefan.
Thanks,
Frederic.The following changes since commit
24851d2447830e6cba4c4b641cb73e713f312373:
Frederic Weisbecker (1):
tracing/kprobes: Dump the culprit kprobe in case of kprobe recursionare available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing.git \ tracing/kprobes-2Quoted 8 lines
Frederic Weisbecker (2):
tracing: Restore the const qualifier for field names and types definition
tracing: Remove unneeded pointer castsinclude/linux/ftrace_event.h | 6 +++--- kernel/trace/trace_events.c | 4 ++-- kernel/trace/trace_syscalls.c | 8 ++++---- 3 files changed, 9 insertions(+), 9 deletions(-)I've pulled it into a staging branch (not yet in tip:master either and not yet on the road to upstream either), thanks guys!
Quoted 8 lines
I have done some brief testing. One hickup is this build failure on x86, caused by the kprobes instruction decoder self-test:
CHK
include/linux/compile.h
TEST posttest
Error: 41001024: a1 08 30 c9 41 mov
0x41c93008,%eax
Error: objdump says 5 bytes, butinsn_get_length()says 9 (attr:40000)Oops, it should be fixed. Hmm, it seems that
addr_bytesoropnd_bytesis broken, would you did a cross compiling? (compiling x86-32 on x86-64)
Quoted 5 lines
Quoted 1 line
yeah, i did that.
I see, so current selftest is not enough supporting the cross compiling yet. I think I can fix that. Could you tell me how you did that? make ARCH=i386 ?
Yeah, make ARCH=i386 and a CROSS= pointer to the cross-build toolchain.
Ingo
PATCH 1/2 x86: Allow x86-32 instruction decoder selftest on x86-64
In reply to Ingo MolnarPass $(CONFIG_64BIT) to the x86 insn decoder selftest for decoding 32bit code on x86-64, which will happen when building kernel with ARCH=i386 on x86-64.
---
arch/x86/tools/Makefile | 2 +- arch/x86/tools/test_get_len.c | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-)
arch/x86/tools/Makefile +1 -1
@@ -1,6 +1,6 @@ PHONY += posttest quiet_cmd_posttest = TEST $@ - cmd_posttest = $(OBJDUMP) -d -j .text $(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 $(CONFIG_64BIT) posttest: $(obj)/test_get_len vmlinux $(call cmd,posttest)
arch/x86/tools/test_get_len.c +7 -7
@@ -45,7 +45,7 @@ const char *prog;static void usage (void ) {fprintf (stderr,"Usage: objdump -d a.out | awk -f distill.awk |" -" ./test_get_len\n" ); +" %s [y|n](64bit flag)\n" , prog);exit (1 ); }
@@ -63,11 +63,15 @@ int main(int argc, char **argv)unsigned char insn_buf[16 ];struct insn insn;int insns =0 ; +int x86_64 =0 ; prog = argv[0 ]; -if (argc >1 ) +if (argc >2 )usage (); +if (argc ==2 && argv[1 ][0 ] =='y' ) + x86_64 =1 ; +while (fgets (line,BUFSIZE , stdin)) {char copy[BUFSIZE ], *s, *tab1, *tab2;int nb =0 ;
@@ -93,11 +97,7 @@ int main(int argc, char **argv)break ; }/* Decode an instruction */ -#ifdef __x86_64__ -insn_init (&insn, insn_buf,1 ); -#else -insn_init (&insn, insn_buf,0 ); -#endif +insn_init (&insn, insn_buf, x86_64);insn_get_length (&insn);if (insn.length != nb) {fprintf (stderr,"Error: %s" , line);
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
Re: [PATCH -tip tracing/kprobes 1/2] x86: Allow x86-32 instruction decoder selftest on x86-64
Quoted 7 lines · Masami Hiramatsu
Pass $(CONFIG_64BIT) to the x86 insn decoder selftest for decoding 32bit code on x86-64, which will happen when building kernel with ARCH=i386 on x86-64.
Signed-off-by Masami Hiramatsu <[email protected]>Cc Frederic Weisbecker <[email protected]>Cc Jim Keniston <[email protected]>Cc Ingo Molnar <[email protected]>
Also applied those two, thanks!
[tip:perf/probes] x86: Allow x86-32 instruction decoder selftest on x86-64
In reply to Masami HiramatsuCommit-ID: 50a482fbd96943516b7a2783900e8fe61a6425e7 Gitweb: http://git.kernel.org/tip/50a482fbd96943516b7a2783900e8fe61a6425e7 Author: Masami Hiramatsu <[email protected]> AuthorDate: Fri, 28 Aug 2009 18:13:19 -0400 Committer: Frederic Weisbecker <[email protected]> CommitDate: Fri, 4 Sep 2009 18:14:04 +0200
x86: Allow x86-32 instruction decoder selftest on x86-64
Pass $(CONFIG_64BIT) to the x86 insn decoder selftest in case we are decoding 32bit code on x86-64, which will happen when building kernel with ARCH=i386 on x86-64.
LKML-Reference: <[email protected]>
--- arch/x86/tools/Makefile | 2 +- arch/x86/tools/test_get_len.c | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-)
arch/x86/tools/Makefile +1 -1
@@ -1,6 +1,6 @@ PHONY += posttest quiet_cmd_posttest = TEST $@ - cmd_posttest = $(OBJDUMP) -d -j .text $(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 $(CONFIG_64BIT) posttest: $(obj)/test_get_len vmlinux $(call cmd,posttest)
arch/x86/tools/test_get_len.c +7 -7
@@ -45,7 +45,7 @@ const char *prog;static void usage (void ) {fprintf (stderr,"Usage: objdump -d a.out | awk -f distill.awk |" -" ./test_get_len\n" ); +" %s [y|n](64bit flag)\n" , prog);exit (1 ); }
@@ -63,11 +63,15 @@ int main(int argc, char **argv)unsigned char insn_buf[16 ];struct insn insn;int insns =0 ; +int x86_64 =0 ; prog = argv[0 ]; -if (argc >1 ) +if (argc >2 )usage (); +if (argc ==2 && argv[1 ][0 ] =='y' ) + x86_64 =1 ; +while (fgets (line,BUFSIZE , stdin)) {char copy[BUFSIZE ], *s, *tab1, *tab2;int nb =0 ;
@@ -93,11 +97,7 @@ int main(int argc, char **argv)break ; }/* Decode an instruction */ -#ifdef __x86_64__ -insn_init (&insn, insn_buf,1 ); -#else -insn_init (&insn, insn_buf,0 ); -#endif +insn_init (&insn, insn_buf, x86_64);insn_get_length (&insn);if (insn.length != nb) {fprintf (stderr,"Error: %s" , line);
PATCH 2/2 x86: Remove unused config macros from instruction decoder selftest
In reply to Ingo MolnarRemove dummy definitions of CONFIG_X86_64 and CONFIG_X86_32 because those macros are not used in the instruction decoder anymore.
---
arch/x86/tools/test_get_len.c | 5 ----- 1 files changed, 0 insertions(+), 5 deletions(-)
arch/x86/tools/test_get_len.c +0 -5
@@ -21,11 +21,6 @@#include <string.h> #include <assert.h> -#ifdef __x86_64__ -#define CONFIG_X86_64 -#else -#define CONFIG_X86_32 -#endif #define unlikely (cond) (cond)#include <asm/insn.h>
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
[tip:perf/probes] x86: Remove unused config macros from instruction decoder selftest
Commit-ID: 70069577323e6f72b845166724f34b9858134437 Gitweb: http://git.kernel.org/tip/70069577323e6f72b845166724f34b9858134437 Author: Masami Hiramatsu <[email protected]> AuthorDate: Fri, 28 Aug 2009 18:13:26 -0400 Committer: Frederic Weisbecker <[email protected]> CommitDate: Fri, 4 Sep 2009 18:14:15 +0200
x86: Remove unused config macros from instruction decoder selftest
Remove dummy definitions of CONFIG_X86_64 and CONFIG_X86_32 because those macros are not used in the instruction decoder anymore.
LKML-Reference: <[email protected]>
--- arch/x86/tools/test_get_len.c | 5 ----- 1 files changed, 0 insertions(+), 5 deletions(-)
arch/x86/tools/test_get_len.c +0 -5
@@ -21,11 +21,6 @@#include <string.h> #include <assert.h> -#ifdef __x86_64__ -#define CONFIG_X86_64 -#else -#define CONFIG_X86_32 -#endif #define unlikely (cond) (cond)#include <asm/insn.h>
Re: [GIT PULL v2] tracing/kprobes: v1 + two fixes
In reply to Frederic WeisbeckerIt would also be nice to have a pie-in-the-sky list of usecases and workflows where this would be useful, and of future planned features. (maybe we want some of them before we merge it upstream)
Why would the upstream kernel want to have this feature, and what is the road ahead in terms of integration into tooling?
Thanks,
Ingo
Re: [GIT PULL v2] tracing/kprobes: v1 + two fixes
Quoted 11 lines · Ingo Molnar
It would also be nice to have a pie-in-the-sky list of usecases and workflows where this would be useful, and of future planned features. (maybe we want some of them before we merge it upstream)
Why would the upstream kernel want to have this feature, and what is the road ahead in terms of integration into tooling?
Thanks,
Ingo
In term, it would have the same skyline than static tracepoints events. It already has actually, it supports filters, perf, etc...
For now one have yet to create these tracepoints through debugfs.
So what does it bring us?
First of all, the ability to profile the kernel at every random points.
2) It can be useful as a single counter
Say you want to trace:
long sys_kill(int pid, int sig)
(I know it's a bad example, we already have syscalls tracepoints, it's just for the example).
And you want to see who is calling most this function. You could probably just do:
sudo perf record -f -a -g
./perf report
And look at the result by looking at your function in the list, then look at its callchain.
Of course the timer could give you the overhead of send_signal, but:
- at the cost of profiling the whole system
- putting a kprobe there plus -c 1 on record would give you more accurate results, you won't loose any callchains
2) It can be useful as a tracepoint
Now you have your profile, and you want to know more about it. You may want to know which signal and which task are often concerned in this function call.
So you can fetch the pid and sig arguments, you can also set pid=a0 and sig=a1 in the kprobes debugfs interface, so that the format takes these names intead of the raw a0,a1.
If you want a high level of details, you can just do
perf trace
And look at the result.
sig_kill: (common headers), pid=... sig=...
That, in essence, is a live patching trace_printk(), something that I personally miss every day.
Also in my perf trace TODO list is the ability to implement a sorting by fields:
./perf trace -s pid
pid = 4765
|
|
------------ sig_kill: .... pid = 4765, sig = 7
|
------------ sig_kill: .... pid = 4765, sig = 10
|
------------ etc...
pid = 7645
|
|
------------ etc...In my perf trace TODO list is also the ability to get the callchains:
./perf trace -s pid -g
pid = 4765
|
|
------------ sig_kill: .... pid = 4765, sig = 7
| |
| |
| -------- caller 1
| |
| -------- caller 2
| |
| -------- caller 3
| |
| --------- .....
|
------------ .......3) It can find *much* more sunchine with C-expressions
I've used kprobes events through debugfs for debugging purposes. If you just want to fetch the arguments of a function or global variables, it's fine and easy to use.
But once you want to digg and diplay some local, variables, it takes too much time and pain (find in which ip you can fetch which register which matches which variable you want).
As you know, Masami has posted a translator from C-like level expressions to kprobes debugfs command line using libdwarf.
One of the plans is to make a perf integration of this tool so that one can fetch values from variables names (global and local) and set such smart dynamic tracepoints everywhere in the kernel (if it's not __kprobe annotated).
Concerning the possible syntax and workflow of this tool, it's in daily open debate :)
Frederic.
[PATCH 19/18] tracing: Restore the const qualifier for field names and types definition
In reply to Frederic WeisbeckerRestore the const qualifier in field's name and type parameters of trace_define_field that was lost while solving a conflict.
Fields names and types are defined as builtin constant strings in static TRACE_EVENTs. But kprobes allocates these dynamically.
That said, we still want to always pass these strings as const char * in trace_define_fields() to avoid any further accidental writes on the pointed strings.
--- include/linux/ftrace_event.h | 6 +++--- kernel/trace/trace_events.c | 4 ++-- kernel/trace/trace_syscalls.c | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-)
include/linux/ftrace_event.h +3 -3
@@ -148,9 +148,9 @@ enum { };extern int trace_define_common_fields (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, -int filter_type); +extern int trace_define_field (struct ftrace_event_call *call,const char *type, +const char *name,int offset,int size, +int is_signed,int filter_type);extern int trace_add_event_call (struct ftrace_event_call *call);extern void trace_remove_event_call (struct ftrace_event_call *call);
kernel/trace/trace_events.c +2 -2
@@ -27,8 +27,8 @@ DEFINE_MUTEX(event_mutex);LIST_HEAD (ftrace_events); -int trace_define_field (struct ftrace_event_call *call,char *type, -char *name,int offset,int size,int is_signed, +int trace_define_field (struct ftrace_event_call *call,const char *type, +const char *name,int offset,int size,int is_signed,int filter_type) {struct ftrace_event_field *field;
kernel/trace/trace_syscalls.c +2 -2
@@ -193,8 +193,8 @@ int syscall_enter_define_fields(struct ftrace_event_call *call)return ret;for (i =0 ; i < meta->nb_args; i++) { - ret =trace_define_field (call, (char *)meta->types[i], - (char *)meta->args[i], offset, + ret =trace_define_field (call, meta->types[i], + meta->args[i], offset,sizeof (unsigned long ),0 ,FILTER_OTHER ); offset +=sizeof (unsigned long );
Signature · 1 line
1.6.2.3
Masami Hiramatsu
Acked-byRe: [PATCH 19/18] tracing: Restore the const qualifier for field names and types definition
Quoted 6 lines · Frederic Weisbecker
Restore the const qualifier in field's name and type parameters of
trace_define_fieldthat was lost while solving a conflict.Fields names and types are defined as builtin constant strings in static
TRACE_EVENTs. But kprobes allocates these dynamically.
Quoted 7 lines
That said, we still want to always pass these strings as const char * in
trace_define_fields()to avoid any further accidental writes on the pointed strings.Reported-by Li Zefan<[email protected]>Signed-off-by Frederic Weisbecker<[email protected]>Cc Steven Rostedt<[email protected]>
Quoted 53 lines
--- include/linux/ftrace_event.h | 6 +++--- kernel/trace/trace_events.c | 4 ++-- kernel/trace/trace_syscalls.c | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-)include/linux/ftrace_event.h +3
-3@@ -148,9 +148,9 @@ enum { };extern int trace_define_common_fields (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, -int filter_type); +extern int trace_define_field (struct ftrace_event_call *call,const char *type, +const char *name,int offset,int size, +int is_signed,int filter_type);extern int trace_add_event_call (struct ftrace_event_call *call);extern void trace_remove_event_call (struct ftrace_event_call *call);kernel/trace/trace_events.c +2
-2@@ -27,8 +27,8 @@ DEFINE_MUTEX(event_mutex);LIST_HEAD (ftrace_events); -int trace_define_field (struct ftrace_event_call *call,char *type, -char *name,int offset,int size,int is_signed, +int trace_define_field (struct ftrace_event_call *call,const char *type, +const char *name,int offset,int size,int is_signed,int filter_type) {struct ftrace_event_field *field;kernel/trace/trace_syscalls.c +2
-2@@ -193,8 +193,8 @@ int syscall_enter_define_fields(struct ftrace_event_call *call)return ret;for (i =0 ; i< meta->nb_args; i++) { - ret =trace_define_field (call, (char *)meta->types[i], - (char *)meta->args[i], offset, + ret =trace_define_field (call, meta->types[i], + meta->args[i], offset,sizeof (unsigned long ),0 ,FILTER_OTHER ); offset +=sizeof (unsigned long );
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
[PATCH 20/18] tracing: Remove unneeded pointer casts
In reply to Frederic WeisbeckerCleaup uneeded casts from void * to char * in syscalls tracing file.
--- kernel/trace/trace_syscalls.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)
kernel/trace/trace_syscalls.c +2 -2
@@ -324,7 +324,7 @@ int reg_event_syscall_exit(struct ftrace_event_call *call)int num;char *name; - name = (char *)call->data; + name = call->data; num =syscall_name_to_nr (name);if (num <0 || num >=FTRACE_SYSCALL_MAX )return -ENOSYS ;
@@ -347,7 +347,7 @@ void unreg_event_syscall_exit(struct ftrace_event_call *call)int num;char *name; - name = (char *)call->data; + name = call->data; num =syscall_name_to_nr (name);if (num <0 || num >=FTRACE_SYSCALL_MAX )return ;
Signature · 1 line
1.6.2.3
Masami Hiramatsu
Acked-byRe: [PATCH 20/18] tracing: Remove unneeded pointer casts
Quoted 5 lines · Frederic Weisbecker
Cleaup uneeded casts from void * to char * in syscalls tracing file.
Reported-by Li Zefan<[email protected]>Signed-off-by Frederic Weisbecker<[email protected]Cc Steven Rostedt<[email protected]>
Quoted 26 lines
--- kernel/trace/trace_syscalls.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)kernel/trace/trace_syscalls.c +2
-2@@ -324,7 +324,7 @@ int reg_event_syscall_exit(struct ftrace_event_call *call)int num;char *name; - name = (char *)call->data; + name = call->data; num =syscall_name_to_nr (name);if (num<0 || num>=FTRACE_SYSCALL_MAX )return -ENOSYS ;@@ -347,7 +347,7 @@ void unreg_event_syscall_exit(struct ftrace_event_call *call)int num;char *name; - name = (char *)call->data; + name = 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]
Quoted 7 lines · Frederic Weisbecker
Ingo,
This is the kprobes tracing pile of patches. I've tested it successfully by setting some kprobes through debugfs by hand.
It brings no known regressions.
Quoted 8 lines
However, the stress test provided by Masami have revealed some unstable points. Some symbols are unsafe to probe and raise probing recursion.
I've added a tiny patch in the series that helps identifying the kprobe that has raised such situation.
For example it has learned me today that it's unsafe to traceret_from_exception()(obviously: it's on the int 3 handler path).
Thank you, Frederic.
I'm currently fixing those problems on x86-64 (on kvm). I'll also check it on x86-32, and fix it.
Thanks
Quoted 89 lines
Anyway, we have all the tools to debug that and easily find the fragile points to probe. It's then just a matter of investigation and stress tests now.
And because the pile of patches becomes big enough, I've thought it could be time to do a pull request for -tip for it to have a private branch and get fixes over the time.
Tell me if that's a problem and we can delay the pull request until we fix the recursive points problems.
Thanks,
Frederic.The following changes since commit
35dce1a99d010f3d738af4ce1b9b77302fdfe69c:
Ingo Molnar (1):
Merge branch 'tracing/core' ofgit://git.kernel.org/.../frederic/random-tracinginto tracing/coreare available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing.git
tracing/kprobesFrederic Weisbecker (1):
tracing/kprobes: Dump the culprit kprobe in case of kprobe recursionMasami Hiramatsu (17):
x86: Instruction decoder API
x86: X86 instruction decoder build-time selftest
kprobes: Checks probe address is instruction boudary on x86
kprobes: Cleanupfix_riprel()using insn decoder on x86
x86: Addpt_regsregister and stack access APIs
tracing: Ftrace dynamicftrace_event_callsupport
tracing: IntroduceTRACE_FIELD_ZERO()macro
tracing: Add kprobe-based event tracer
tracing: Add kprobe-based event tracer documentation
tracing: Kprobe-tracer supports more than 6 arguments
tracing: Generate names for each kprobe event automatically
tracing: Kprobe tracer assigns new event ids for each event
tracing: Add kprobes event profiling interface
x86: Fix x86 instruction decoder selftest to check only .text
x86: Check awk features before generatinginat-tables.ctracing/kprobes: Fix format typo intrace_kprobestracing/kprobes: Changetrace_argtoprobe_argDocumentation/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 | 209 +++--- 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 | 334 +++++++++ arch/x86/tools/test_get_len.c | 113 ++++ include/linux/ftrace_event.h | 19 +- include/linux/kprobes.h | 2 + include/linux/syscalls.h | 4 +- include/trace/ftrace.h | 16 +- include/trace/syscall.h | 11 +- kernel/kprobes.c | 7 + kernel/trace/Kconfig | 12 + kernel/trace/Makefile | 1 + kernel/trace/trace.h | 24 + kernel/trace/trace_event_types.h | 4 +- kernel/trace/trace_events.c | 121 +++- kernel/trace/trace_export.c | 34 +- kernel/trace/trace_kprobe.c | 1231 ++++++++++++++++++++++++++++++++++ kernel/trace/trace_syscalls.c | 20 +- 31 files changed, 3991 insertions(+), 196 deletions(-)create mode 100644
Documentation/trace/kprobetrace.txtcreate mode 100644arch/x86/include/asm/inat.hcreate mode 100644arch/x86/include/asm/inat_types.hcreate mode 100644arch/x86/include/asm/insn.hcreate mode 100644arch/x86/lib/inat.c
create mode 100644arch/x86/lib/insn.c
create mode 100644arch/x86/lib/x86-opcode-map.txtcreate mode 100644arch/x86/tools/Makefilecreate mode 100644arch/x86/tools/distill.awkcreate mode 100644arch/x86/tools/gen-insn-attr-x86.awkcreate mode 100644arch/x86/tools/test_get_len.ccreate mode 100644kernel/trace/trace_kprobe.c
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
Quoted 17 lines · Masami Hiramatsu
Quoted 7 lines · Frederic Weisbecker
Ingo,
This is the kprobes tracing pile of patches. I've tested it successfully by setting some kprobes through debugfs by hand.
It brings no known regressions.
Quoted 8 lines
However, the stress test provided by Masami have revealed some unstable points. Some symbols are unsafe to probe and raise probing recursion.
I've added a tiny patch in the series that helps identifying the kprobe that has raised such situation.
For example it has learned me today that it's unsafe to traceret_from_exception()(obviously: it's on the int 3 handler path).
Quoted 6 lines
Thank you, Frederic.
I'm currently fixing those problems on x86-64 (on kvm). I'll also check it on x86-32, and fix it.
Thanks
Cool.
Don't hesitate to interate through small patches that fix these sites.
So that I can continue to test it over time and report you what I find, may be I can try to fix some of them too.
I haven't fixed ret_from_exception because I wasn't sure about the right thing to do: putting it in the kprobes section or blacklist its name. It's a bit more delicate to put assembly code into sections so... :)
PATCH 1/6 kprobes/x86: Call BUG() when reentering probe into KPROBES_HIT_SS
Call BUG() when a probe have been hit on the way of kprobe processing path, because that kind of probes are currently unrecoverable (recovering it will cause an infinit loop and stack overflow).
The original code seems to assume that it will be caused by an int3 which another subsystem inserted on out-of-line singlestep buffer if the hitting probe is same as current probe. However, in that case, int3-hitting-address is on the out-of-line buffer and should be different from first (current) int3 address.
Thus, I decided to remove the code.
I also removes arch_disarm_kprobe() because it will involve other stuffs in text_poke().
---
arch/x86/kernel/kprobes.c | 26 ++++++++++---------------- 1 files changed, 10 insertions(+), 16 deletions(-)
arch/x86/kernel/kprobes.c +10 -16
@@ -482,22 +482,16 @@ static int __kprobes reenter_kprobe(struct kprobe *p, struct pt_regs *regs, kcb->kprobe_status =KPROBE_REENTER ;break ;case KPROBE_HIT_SS : -if (p ==kprobe_running ()) { - regs->flags &= ~X86_EFLAGS_TF ; - regs->flags |= kcb->kprobe_saved_flags; -return 0 ; - }else { -/* A probe has been hit in the codepath leading up -* to, or just after, single-stepping of a probed -* instruction. This entire codepath should strictly -* reside in .kprobes.text section. -* Raise a BUG or we'll continue in an endless -* reentering loop and eventually a stack overflow. -*/ -arch_disarm_kprobe (p); -dump_kprobe (p); -BUG (); - } +/* A probe has been hit in the codepath leading up to, or just +* after, single-stepping of a probed instruction. This entire +* codepath should strictly reside in .kprobes.text section. +* Raise a BUG or we'll continue in an endless reentering loop +* and eventually a stack overflow. +*/ +printk (KERN_WARNING "Unrecoverable kprobe detected at %p.\n" , + p->addr); +dump_kprobe (p); +BUG ();default :/* impossible cases */ WARN_ON (1 );
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
Re: [PATCH -tip tracing/kprobes 1/6] kprobes/x86: Call BUG() when reentering probe into KPROBES_HIT_SS
Quoted 11 lines · Masami Hiramatsu
Call
BUG()when a probe have been hit on the way of kprobe processing path, because that kind of probes are currently unrecoverable (recovering it will cause an infinit loop and stack overflow).The original code seems to assume that it will be caused by an int3 which another subsystem inserted on out-of-line singlestep buffer if the hitting probe is same as current probe. However, in that case, int3-hitting-address is on the out-of-line buffer and should be different from first (current) int3 address.
Thus, I decided to remove the code.
Quoted 7 lines
I also removes
arch_disarm_kprobe()because it will involve other stuffs intext_poke().Signed-off-by Masami Hiramatsu <[email protected]>Cc Frederic Weisbecker <[email protected]>Cc Ananth N Mavinakayanahalli <[email protected]>Cc Ingo Molnar <[email protected]>
Re: [PATCH -tip tracing/kprobes 1/6] kprobes/x86: Call BUG() when reentering probe into KPROBES_HIT_SS
In reply to Masami HiramatsuQuoted 11 lines · Masami Hiramatsu
Call
BUG()when a probe have been hit on the way of kprobe processing path, because that kind of probes are currently unrecoverable (recovering it will cause an infinit loop and stack overflow).The original code seems to assume that it will be caused by an int3 which another subsystem inserted on out-of-line singlestep buffer if the hitting probe is same as current probe. However, in that case, int3-hitting-address is on the out-of-line buffer and should be different from first (current) int3 address.
Thus, I decided to remove the code.
Quoted 7 lines
I also removes
arch_disarm_kprobe()because it will involve other stuffs intext_poke().Signed-off-by Masami Hiramatsu <[email protected]>Cc Frederic Weisbecker <[email protected]>Cc Ananth N Mavinakayanahalli <[email protected]>Cc Ingo Molnar <[email protected]>
Applied the six patches to
git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing.git
tracing/kprobes
Thanks!
[tip:perf/probes] kprobes/x86: Call BUG() when reentering probe into KPROBES_HIT_SS
In reply to Masami HiramatsuCommit-ID: e9afe9e1b3fdbd56cca53959a2519e70db9c8095 Gitweb: http://git.kernel.org/tip/e9afe9e1b3fdbd56cca53959a2519e70db9c8095 Author: Masami Hiramatsu <[email protected]> AuthorDate: Thu, 27 Aug 2009 13:22:58 -0400 Committer: Frederic Weisbecker <[email protected]> CommitDate: Sun, 30 Aug 2009 03:08:26 +0200
kprobes/x86: Call BUG() when reentering probe into KPROBES_HIT_SS
Call BUG() when a probe have been hit on the way of kprobe processing path, because that kind of probes are currently unrecoverable (recovering it will cause an infinite loop and stack overflow).
The original code seems to assume that it's caused by an int3 which another subsystem inserted on out-of-line singlestep buffer if the hitting probe is same as current probe. However, in that case, int3-hitting-address is on the out-of-line buffer and should be different from first (current) int3 address.
Thus, I decided to remove the code.
I also removes arch_disarm_kprobe() because it will involve other stuffs in text_poke().
LKML-Reference: <[email protected]>
--- arch/x86/kernel/kprobes.c | 26 ++++++++++---------------- 1 files changed, 10 insertions(+), 16 deletions(-)
arch/x86/kernel/kprobes.c +10 -16
@@ -482,22 +482,16 @@ static int __kprobes reenter_kprobe(struct kprobe *p, struct pt_regs *regs, kcb->kprobe_status =KPROBE_REENTER ;break ;case KPROBE_HIT_SS : -if (p ==kprobe_running ()) { - regs->flags &= ~X86_EFLAGS_TF ; - regs->flags |= kcb->kprobe_saved_flags; -return 0 ; - }else { -/* A probe has been hit in the codepath leading up -* to, or just after, single-stepping of a probed -* instruction. This entire codepath should strictly -* reside in .kprobes.text section. -* Raise a BUG or we'll continue in an endless -* reentering loop and eventually a stack overflow. -*/ -arch_disarm_kprobe (p); -dump_kprobe (p); -BUG (); - } +/* A probe has been hit in the codepath leading up to, or just +* after, single-stepping of a probed instruction. This entire +* codepath should strictly reside in .kprobes.text section. +* Raise a BUG or we'll continue in an endless reentering loop +* and eventually a stack overflow. +*/ +printk (KERN_WARNING "Unrecoverable kprobe detected at %p.\n" , + p->addr); +dump_kprobe (p); +BUG ();default :/* impossible cases */ WARN_ON (1 );
PATCH 2/6 kprobes/x86-64: Allow to reenter probe on post_handler
In reply to Frederic WeisbeckerAllow to reenter probe on the post_handler of another probe on x86-64, because x86-64 already allows reentering int3.
In that case, reentered probe just increases kp.nmissed and returns.
---
arch/x86/kernel/kprobes.c | 11 ----------- 1 files changed, 0 insertions(+), 11 deletions(-)
arch/x86/kernel/kprobes.c +0 -11
@@ -463,17 +463,6 @@ static int __kprobes reenter_kprobe(struct kprobe *p, struct pt_regs *regs, {switch (kcb->kprobe_status) {case KPROBE_HIT_SSDONE : -#ifdef CONFIG_X86_64 -/* TODO: Provide re-entrancy from post_kprobes_handler() and -* avoid exception stack corruption while single-stepping on -* the instruction of the new probe. -*/ -arch_disarm_kprobe (p); - regs->ip = (unsigned long )p->addr; -reset_current_kprobe (); -preempt_enable_no_resched (); -break ; -#endif case KPROBE_HIT_ACTIVE :save_previous_kprobe (kcb);set_current_kprobe (p, regs, kcb);
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
Re: [PATCH -tip tracing/kprobes 2/6] kprobes/x86-64: Allow to reenter probe on post_handler
Quoted 9 lines · Masami Hiramatsu
Allow to reenter probe on the
post_handlerof another probe on x86-64, because x86-64 already allows reentering int3.
In that case, reentered probe just increases kp.nmissed and returns.Signed-off-by Masami Hiramatsu <[email protected]>Cc Frederic Weisbecker <[email protected]>Cc Ananth N Mavinakayanahalli <[email protected]>Cc Ingo Molnar <[email protected]>---
[tip:perf/probes] kprobes/x86-64: Allow to reenter probe on post_handler
In reply to Masami HiramatsuCommit-ID: f5ad31158d60946b9fd18c8a79c283a6bc432430 Gitweb: http://git.kernel.org/tip/f5ad31158d60946b9fd18c8a79c283a6bc432430 Author: Masami Hiramatsu <[email protected]> AuthorDate: Thu, 27 Aug 2009 13:23:04 -0400 Committer: Frederic Weisbecker <[email protected]> CommitDate: Sun, 30 Aug 2009 03:08:26 +0200
kprobes/x86-64: Allow to reenter probe on post_handler
Allow to reenter probe on the post_handler of another probe on x86-64, because x86-64 already allows reentering int3.
In that case, reentered probe just increases kp.nmissed and returns.
LKML-Reference: <[email protected]>
--- arch/x86/kernel/kprobes.c | 11 ----------- 1 files changed, 0 insertions(+), 11 deletions(-)
arch/x86/kernel/kprobes.c +0 -11
@@ -463,17 +463,6 @@ static int __kprobes reenter_kprobe(struct kprobe *p, struct pt_regs *regs, {switch (kcb->kprobe_status) {case KPROBE_HIT_SSDONE : -#ifdef CONFIG_X86_64 -/* TODO: Provide re-entrancy from post_kprobes_handler() and -* avoid exception stack corruption while single-stepping on -* the instruction of the new probe. -*/ -arch_disarm_kprobe (p); - regs->ip = (unsigned long )p->addr; -reset_current_kprobe (); -preempt_enable_no_resched (); -break ; -#endif case KPROBE_HIT_ACTIVE :save_previous_kprobe (kcb);set_current_kprobe (p, regs, kcb);
PATCH 3/6 kprobes/x86: Fix to add __kprobes to in-kernel fault handing functions
In reply to Frederic WeisbeckerAdd __kprobes to the functions which handles in-kernel fixable page faults. Since kprobes can cause those in-kernel page faults by accessing kprobe data structures, probing those fault functions will cause fault-int3-loop (do_page_fault has already been marked as __kprobes).
---
arch/x86/mm/fault.c | 11 ++++++----- 1 files changed, 6 insertions(+), 5 deletions(-)
arch/x86/mm/fault.c +6 -5
@@ -38,7 +38,8 @@ enum x86_pf_error_code {* Returns 0 if mmiotrace is disabled, or if the fault is not * handled by mmiotrace: */ -static inline int kmmio_fault (struct pt_regs *regs,unsigned long addr) +static inline int __kprobes +kmmio_fault (struct pt_regs *regs,unsigned long addr) {if (unlikely (is_kmmio_active ()))if (kmmio_handler (regs, addr) ==1 )
@@ -46,7 +47,7 @@ static inline int kmmio_fault(struct pt_regs *regs, unsigned long addr)return 0 ; } -static inline int notify_page_fault (struct pt_regs *regs) +static inline int __kprobes notify_page_fault (struct pt_regs *regs) {int ret =0 ;
@@ -239,7 +240,7 @@ void vmalloc_sync_all(void)* * Handle a fault on the vmalloc or module mapping area */ -static noinline int vmalloc_fault(unsigned long address) +static noinline __kprobes int vmalloc_fault(unsigned long address) {unsigned long pgd_paddr;pmd_t *pmd_k;
@@ -361,7 +362,7 @@ void vmalloc_sync_all(void)* * This assumes no large pages in there. */ -static noinline int vmalloc_fault(unsigned long address) +static noinline __kprobes int vmalloc_fault(unsigned long address) {pgd_t *pgd, *pgd_ref;pud_t *pud, *pud_ref;
@@ -858,7 +859,7 @@ static int spurious_fault_check(unsigned long error_code, pte_t *pte)* There are no security implications to leaving a stale TLB when * increasing the permissions on a page. */ -static noinline int +static noinline __kprobes intspurious_fault (unsigned long error_code,unsigned long address) {pgd_t *pgd;
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
Re: [PATCH -tip tracing/kprobes 3/6] kprobes/x86: Fix to add __kprobes to in-kernel fault handing functions
Quoted 10 lines · Masami Hiramatsu
Add
__kprobesto the functions which handles in-kernel fixable page faults. Since kprobes can cause those in-kernel page faults by accessing kprobe data structures, probing those fault functions will cause fault-int3-loop (do_page_faulthas already been marked as__kprobes).Signed-off-by Masami Hiramatsu <[email protected]>Cc Frederic Weisbecker <[email protected]>Cc Ananth N Mavinakayanahalli <[email protected]>Cc Ingo Molnar <[email protected]>---
Re: [PATCH -tip tracing/kprobes 3/6] kprobes/x86: Fix to add __kprobes to in-kernel fault handing functions
In reply to Masami HiramatsuQuoted 19 lines · Masami Hiramatsu
Add
__kprobesto the functions which handles in-kernel fixable page faults. Since kprobes can cause those in-kernel page faults by accessing kprobe data structures, probing those fault functions will cause fault-int3-loop (do_page_faulthas already been marked as__kprobes).Signed-off-by Masami Hiramatsu <[email protected]>Cc Frederic Weisbecker <[email protected]>Cc Ananth N Mavinakayanahalli <[email protected]>Cc Ingo Molnar <[email protected]>---
arch/x86/mm/fault.c | 11 ++++++----- 1 files changed, 6 insertions(+), 5 deletions(-)arch/x86/mm/fault.c +0
-0
arch/x86/mm/fault.c enum x86_pf_error_code { · line 45
Quoted 9 lines
arch/x86/mm/fault.c +2
-1@@ -38,7 +38,8 @@ enum x86_pf_error_code {* Returns 0 if mmiotrace is disabled, or if the fault is not * handled by mmiotrace: */ -static inline int kmmio_fault (struct pt_regs *regs,unsigned long addr) +static inline int __kprobes +kmmio_fault (struct pt_regs *regs,unsigned long addr) {if (unlikely (is_kmmio_active ()))if (kmmio_handler (regs, addr) ==1 )
I guess the problem also resides in a lot of subfunctions such as kmmio_handler and such...
Quoted 46 lines
arch/x86/mm/fault.c +4
-4@@ -46,7 +47,7 @@ static inline int kmmio_fault(struct pt_regs *regs, unsigned long addr)return 0 ; } -static inline int notify_page_fault (struct pt_regs *regs) +static inline int __kprobes notify_page_fault (struct pt_regs *regs) {int ret =0 ;@@ -239,7 +240,7 @@ void vmalloc_sync_all(void)* * Handle a fault on the vmalloc or module mapping area */ -static noinline int vmalloc_fault(unsigned long address) +static noinline __kprobes int vmalloc_fault(unsigned long address) {unsigned long pgd_paddr;pmd_t *pmd_k;@@ -361,7 +362,7 @@ void vmalloc_sync_all(void)* * This assumes no large pages in there. */ -static noinline int vmalloc_fault(unsigned long address) +static noinline __kprobes int vmalloc_fault(unsigned long address) {pgd_t *pgd, *pgd_ref;pud_t *pud, *pud_ref;@@ -858,7 +859,7 @@ static int spurious_fault_check(unsigned long error_code, pte_t *pte)* There are no security implications to leaving a stale TLB when * increasing the permissions on a page. */ -static noinline int +static noinline __kprobes intspurious_fault (unsigned long error_code,unsigned long address) {pgd_t *pgd;Signature · 8 lines
-- Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
Re: [PATCH -tip tracing/kprobes 3/6] kprobes/x86: Fix to add __kprobes to in-kernel fault handing functions
Quoted 25 lines · Frederic Weisbecker
Quoted 24 lines · Masami Hiramatsu
Add
__kprobesto the functions which handles in-kernel fixable page faults. Since kprobes can cause those in-kernel page faults by accessing kprobe data structures, probing those fault functions will cause fault-int3-loop (do_page_faulthas already been marked as__kprobes).Signed-off-by Masami Hiramatsu <[email protected]>Cc Frederic Weisbecker <[email protected]>Cc Ananth N Mavinakayanahalli <[email protected]>Cc Ingo Molnar <[email protected]>---
arch/x86/mm/fault.c | 11 ++++++----- 1 files changed, 6 insertions(+), 5 deletions(-)arch/x86/mm/fault.c +1
-1@@ -38,7 +38,8 @@ enum x86_pf_error_code {* Returns 0 if mmiotrace is disabled, or if the fault is not * handled by mmiotrace: */ -static inline int kmmio_fault (struct pt_regs *regs,unsigned long addr) +static inline int __kprobes
Quoted 8 lines
arch/x86/mm/fault.c enum x86_pf_error_code { · line 45
Quoted 4 lines
arch/x86/mm/fault.c +1
-0+kmmio_fault(struct pt_regs *regs, unsigned long addr) { if (unlikely(is_kmmio_active())) if (kmmio_handler(regs, addr) == 1)I guess the problem also resides in a lot of subfunctions such as
kmmio_handlerand such...
Hmm, sure.
kmmio functions should be marked as __kprobes( or __kmmio or __debug? :)).
Thank you,
Quoted 47 lines
Quoted 46 lines
arch/x86/mm/fault.c +4
-4@@ -46,7 +47,7 @@ static inline int kmmio_fault(struct pt_regs *regs, unsigned long addr)return 0 ; } -static inline int notify_page_fault (struct pt_regs *regs) +static inline int __kprobes notify_page_fault (struct pt_regs *regs) {int ret =0 ;@@ -239,7 +240,7 @@ void vmalloc_sync_all(void)* * Handle a fault on the vmalloc or module mapping area */ -static noinline int vmalloc_fault(unsigned long address) +static noinline __kprobes int vmalloc_fault(unsigned long address) {unsigned long pgd_paddr;pmd_t *pmd_k;@@ -361,7 +362,7 @@ void vmalloc_sync_all(void)* * This assumes no large pages in there. */ -static noinline int vmalloc_fault(unsigned long address) +static noinline __kprobes int vmalloc_fault(unsigned long address) {pgd_t *pgd, *pgd_ref;pud_t *pud, *pud_ref;@@ -858,7 +859,7 @@ static int spurious_fault_check(unsigned long error_code, pte_t *pte)* There are no security implications to leaving a stale TLB when * increasing the permissions on a page. */ -static noinline int +static noinline __kprobes intspurious_fault (unsigned long error_code,unsigned long address) {pgd_t *pgd;Signature · 8 lines
-- Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
Re: [PATCH -tip tracing/kprobes 3/6] kprobes/x86: Fix to add __kprobes to in-kernel fault handing functions
In reply to Masami HiramatsuQuoted 4 lines · Masami Hiramatsu
Add
__kprobesto the functions which handles in-kernel fixable page faults. Since kprobes can cause those in-kernel page faults by accessing kprobe data structures, probing those fault functions will cause fault-int3-loop (do_page_faulthas already been marked as__kprobes).
BTW, is it possible to assert a struct kprobe (and its pointer members) haven't been allocated through vmalloc() ?
Re: [PATCH -tip tracing/kprobes 3/6] kprobes/x86: Fix to add __kprobes to in-kernel fault handing functions
Quoted 10 lines · Frederic Weisbecker
Quoted 4 lines · Masami Hiramatsu
Add
__kprobesto the functions which handles in-kernel fixable page faults. Since kprobes can cause those in-kernel page faults by accessing kprobe data structures, probing those fault functions will cause fault-int3-loop (do_page_faulthas already been marked as__kprobes).BTW, is it possible to assert a struct kprobe (and its pointer members) haven't been allocated through
vmalloc()?
How about calling vmalloc_sync() always before registering kprobes? :-)
Thank you,
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
Re: [PATCH -tip tracing/kprobes 3/6] kprobes/x86: Fix to add __kprobes to in-kernel fault handing functions
Quoted 8 lines · Masami Hiramatsu
Quoted 7 lines · Frederic Weisbecker
Quoted 4 lines · Masami Hiramatsu
Add
__kprobesto the functions which handles in-kernel fixable page faults. Since kprobes can cause those in-kernel page faults by accessing kprobe data structures, probing those fault functions will cause fault-int3-loop (do_page_faulthas already been marked as__kprobes).
Quoted 7 lines
Quoted 3 lines
BTW, is it possible to assert a struct kprobe (and its pointer members) haven't been allocated through
vmalloc()?How about calling
vmalloc_sync()always before registering kprobes? :-)Thank you,
Sounds good :)
BTW, after your patchset:
TEST posttest
Building modules, stage 2.
Error: c0101038: 2e a1 f8 b0 9e c0 mov %cs:0xc09eb0f8,%eax
Error: objdump says 6 bytes, but insn_get_length() says 10 (attr:40000) make[1]: *** [posttest] Erreur 2
make: *** [bzImage] Erreur 2
make: *** Attente des tâches non terminées....
MODPOST 4 modules
I'm cross compiling from 64 to 32 using:
make ARCH=x86
I've attached my config.
Thanks.
#
# Automatically generated make config: don't edit # Linux kernel version: 2.6.31-rc5
# Sun Aug 30 03:39:28 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=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 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_SYSCALL_TRACEPOINTS=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=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=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: [PATCH -tip tracing/kprobes 3/6] kprobes/x86: Fix to add __kprobes to in-kernel fault handing functions
Quoted 12 lines · Frederic Weisbecker
BTW, after your patchset:
TEST posttest
Building modules, stage 2.
Error:c0101038: 2e a1 f8 b0 9e c0 mov %cs:0xc09eb0f8,%eax
Error: objdump says 6 bytes, butinsn_get_length()says 10 (attr:40000) make[1]: *** [posttest] Erreur 2
make: *** [bzImage] Erreur 2
make: *** Attente des tâches non terminées....
MODPOST 4 modules
Quoted 5 lines
I'm cross compiling from 64 to 32 using:
make ARCH=x86
I've attached my config.
Hmm, if you can, could you tell me the output of kernel build with V=1? I'd like to know whether posttest passed $(CONFIG_64BIT) or not.
Thank you,
Quoted 2 lines
Thanks.
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
Re: [PATCH -tip tracing/kprobes 3/6] kprobes/x86: Fix to add __kprobes to in-kernel fault handing functions
Quoted 15 lines · Masami Hiramatsu
Quoted 14 lines · Frederic Weisbecker
BTW, after your patchset:
TEST posttest
Building modules, stage 2.
Error:c0101038: 2e a1 f8 b0 9e c0 mov %cs:0xc09eb0f8,%eax
Error: objdump says 6 bytes, butinsn_get_length()says 10 (attr:40000) make[1]: *** [posttest] Erreur 2
make: *** [bzImage] Erreur 2
make: *** Attente des tâches non terminées....
MODPOST 4 modulesI'm cross compiling from 64 to 32 using:
Quoted 12 lines
Quoted 3 lines
make ARCH=x86
I've attached my config.
Hmm, if you can, could you tell me the output of kernel build with V=1? I'd like to know whether posttest passed $(CONFIG_64BIT) or not.
Thank you,
Quoted 2 lines
Thanks.
Here is my result of 'make ARCH=x86' with your config-32 on x86-64.
---
TEST posttest
Succeed: decoded and checked 1735629 instructions
---
And also, I've tested test_get_len manually.
$ echo -e 'c0101038:\t2e a1 f8 b0 9e c0\t mov %cs:0xc09eb0f8,%eax' | arch/x86/tools/test_get_len Succeed: decoded and checked 1 instructions
$ echo -e 'c0101038:\t2e a1 f8 b0 9e c0\t mov %cs:0xc09eb0f8,%eax' | arch/x86/tools/test_get_len y Error: c0101038: 2e a1 f8 b0 9e c0 mov %cs:0xc09eb0f8,%eax Error: objdump says 6 bytes, but insn_get_length() says 10 (attr:40000)
So, I assume that CONFIG_64BIT=y in your test environment. (I'm not sure why...)
Thank you,
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
Re: [PATCH -tip tracing/kprobes 3/6] kprobes/x86: Fix to add __kprobes to in-kernel fault handing functions
In reply to Frederic WeisbeckerQuoted 12 lines · Frederic Weisbecker
BTW, after your patchset:
TEST posttest
Building modules, stage 2.
Error:c0101038: 2e a1 f8 b0 9e c0 mov %cs:0xc09eb0f8,%eax
Error: objdump says 6 bytes, butinsn_get_length()says 10 (attr:40000) make[1]: *** [posttest] Erreur 2
make: *** [bzImage] Erreur 2
make: *** Attente des tâches non terminées....
MODPOST 4 modules
Quoted 5 lines
I'm cross compiling from 64 to 32 using:
make ARCH=x86
I've attached my config.
Aah, you might miss an important patch :D
http://lkml.org/lkml/2009/8/28/367
Thank you,
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
Re: [PATCH -tip tracing/kprobes 3/6] kprobes/x86: Fix to add __kprobes to in-kernel fault handing functions
Quoted 15 lines · Masami Hiramatsu
Quoted 14 lines · Frederic Weisbecker
BTW, after your patchset:
TEST posttest
Building modules, stage 2.
Error:c0101038: 2e a1 f8 b0 9e c0 mov %cs:0xc09eb0f8,%eax
Error: objdump says 6 bytes, butinsn_get_length()says 10 (attr:40000) make[1]: *** [posttest] Erreur 2
make: *** [bzImage] Erreur 2
make: *** Attente des tâches non terminées....
MODPOST 4 modulesI'm cross compiling from 64 to 32 using:
Quoted 8 lines
Quoted 3 lines
make ARCH=x86
I've attached my config.
Aah, you might miss an important patch :D
http://lkml.org/lkml/2009/8/28/367Thank you,
I thought I applied it.
I'm really an idiot :-(
Sorry for the noise.
Quoted 9 lines
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
Re: [PATCH -tip tracing/kprobes 3/6] kprobes/x86: Fix to add __kprobes to in-kernel fault handing functions
In reply to Masami HiramatsuQuoted 15 lines · Masami Hiramatsu
Quoted 14 lines · Frederic Weisbecker
BTW, after your patchset:
TEST posttest
Building modules, stage 2.
Error:c0101038: 2e a1 f8 b0 9e c0 mov %cs:0xc09eb0f8,%eax
Error: objdump says 6 bytes, butinsn_get_length()says 10 (attr:40000) make[1]: *** [posttest] Erreur 2
make: *** [bzImage] Erreur 2
make: *** Attente des tâches non terminées....
MODPOST 4 modulesI'm cross compiling from 64 to 32 using:
Quoted 9 lines
Quoted 3 lines
make ARCH=x86
I've attached my config.
Aah, you might miss an important patch :D
http://lkml.org/lkml/2009/8/28/367Thank you,
Well, even with this patch I have this problem occuring with make ARCH=x86
Error: c125d65d: 0f 6f 02 movq (%edx),%mm0
Error: objdump says 3 bytes, but insn_get_length() says 2 (attr:0) make[1]: *** [posttest] Erreur 2
make: *** [bzImage] Erreur 2
Hmm, may be that's because it doesn't support mmx instructions. The whole patchset is on
git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing.git
tracing/kprobes
Config and make V=1 log attached.
#
# Automatically generated make config: don't edit # Linux kernel version: 2.6.31-rc5
# Fri Sep 4 18:30:25 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=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=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=32
# 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 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 setCONFIG_BLK_DEV_INTEGRITY=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_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=y CONFIG_HPET_EMULATE_RTC=yCONFIG_DMI=y
# CONFIG_IOMMU_HELPER is not set
# CONFIG_IOMMU_API is not set CONFIG_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=y
# CONFIG_X86_OLD_MCE is not set CONFIG_X86_NEW_MCE=yCONFIG_X86_MCE_INTEL=y
# CONFIG_X86_MCE_AMD is not set
# CONFIG_X86_ANCIENT_MCE is not set CONFIG_X86_MCE_THRESHOLD=y
# CONFIG_X86_MCE_INJECT is not set CONFIG_X86_THERMAL_VECTOR=yCONFIG_VM86=y
# CONFIG_TOSHIBA is not set
# CONFIG_I8K is not set
# CONFIG_X86_REBOOTFIXUPS is not set CONFIG_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 is not set CONFIG_HIGHMEM4G=y
# CONFIG_HIGHMEM64G is not set CONFIG_PAGE_OFFSET=0xC0000000 CONFIG_HIGHMEM=y
# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set CONFIG_NEED_NODE_MEMMAP_SIZE=y CONFIG_ARCH_FLATMEM_ENABLE=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_STATIC=y
#
# Memory hotplug is currently incompatible with Software Suspend #CONFIG_PAGEFLAGS_EXTENDED=yCONFIG_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=yCONFIG_HAVE_MLOCKED_PAGE_BIT=y CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
# CONFIG_HIGHPTE is not set
# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set CONFIG_X86_RESERVE_LOW_64K=y
# CONFIG_MATH_EMULATION is not setCONFIG_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_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
# CONFIG_APM is not set
#
# 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_K6 is not set
# CONFIG_X86_POWERNOW_K7 is not set
# CONFIG_X86_POWERNOW_K8 is not set
# CONFIG_X86_GX_SUSPMOD is not set
# CONFIG_X86_SPEEDSTEP_CENTRINO is not set
# CONFIG_X86_SPEEDSTEP_ICH is not set
# CONFIG_X86_SPEEDSTEP_SMI is not setCONFIG_X86_P4_CLOCKMOD=y
# CONFIG_X86_CPUFREQ_NFORCE2 is not set
# CONFIG_X86_LONGRUN is not set
# CONFIG_X86_LONGHAUL is not set
# CONFIG_X86_E_POWERSAVER is not set
#
# shared options # CONFIG_X86_SPEEDSTEP_LIB=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_DMAR 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=y
# CONFIG_ISA is not set
# CONFIG_MCA is not set
# CONFIG_SCx200 is not set
# CONFIG_OLPC is not setCONFIG_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=y
# CONFIG_HOTPLUG_PCI_COMPAQ is not set
# CONFIG_HOTPLUG_PCI_IBM is not setCONFIG_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=y
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set CONFIG_HAVE_AOUT=y
# CONFIG_BINFMT_AOUT is not set CONFIG_BINFMT_MISC=y CONFIG_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=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 set CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y CONFIG_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_NSP32 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_CS5535 is not set
# CONFIG_PATA_CS5536 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 set CONFIG_UNIX98_PTYS=y
# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set CONFIG_LEGACY_PTYS=y CONFIG_LEGACY_PTY_COUNT=256
# CONFIG_IPMI_HANDLER is not set CONFIG_HW_RANDOM=y
# CONFIG_HW_RANDOM_TIMERIOMEM is not set CONFIG_HW_RANDOM_INTEL=y
# CONFIG_HW_RANDOM_AMD is not set CONFIG_HW_RANDOM_GEODE=y CONFIG_HW_RANDOM_VIA=yCONFIG_NVRAM=y
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
# CONFIG_SONYPI 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 set
# CONFIG_NSC_GPIO is not set
# CONFIG_CS5535_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
# 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 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_SBC7240_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=y
# CONFIG_AGP_ALI is not set
# CONFIG_AGP_ATI is not set
# CONFIG_AGP_AMD is not setCONFIG_AGP_AMD64=yCONFIG_AGP_INTEL=y
# CONFIG_AGP_NVIDIA is not set
# CONFIG_AGP_SIS is not set
# CONFIG_AGP_SWORKS is not set
# CONFIG_AGP_VIA is not set
# CONFIG_AGP_EFFICEON is not setCONFIG_DRM=y
# CONFIG_DRM_TDFX is not set
# CONFIG_DRM_R128 is not set
# CONFIG_DRM_RADEON is not set CONFIG_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 set CONFIG_VGASTATE=y CONFIG_VIDEO_OUTPUT_CONTROL=yCONFIG_FB=yCONFIG_FIRMWARE_EDID=y
# CONFIG_FB_DDC is not set
# CONFIG_FB_BOOT_VESA_SUPPORT is not set CONFIG_FB_CFB_FILLRECT=y CONFIG_FB_CFB_COPYAREA=y CONFIG_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 set CONFIG_FB_MODE_HELPERS=y CONFIG_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 set
# CONFIG_FB_I810 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=y CONFIG_VGACON_SOFT_SCROLLBACK=y CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=64 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=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 set CONFIG_LOGO_LINUX_VGA16=y
# CONFIG_LOGO_LINUX_CLUT224 is not set CONFIG_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 set CONFIG_SND_OSSEMUL=yCONFIG_SND_MIXER_OSS=yCONFIG_SND_PCM_OSS=y CONFIG_SND_PCM_OSS_PLUGINS=y CONFIG_SND_SEQUENCER_OSS=y
# CONFIG_SND_HRTIMER is not set
# CONFIG_SND_DYNAMIC_MINORS is not set CONFIG_SND_SUPPORT_OLD_API=y CONFIG_SND_VERBOSE_PROCFS=y
# CONFIG_SND_VERBOSE_PRINTK is not set
# CONFIG_SND_DEBUG is not set CONFIG_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 set CONFIG_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 set CONFIG_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_CS5535AUDIO 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 set CONFIG_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 set CONFIG_SND_HDA_CODEC_REALTEK=y CONFIG_SND_HDA_CODEC_ANALOG=y CONFIG_SND_HDA_CODEC_SIGMATEL=y CONFIG_SND_HDA_CODEC_VIA=y CONFIG_SND_HDA_CODEC_ATIHDMI=y CONFIG_SND_HDA_CODEC_NVHDMI=y CONFIG_SND_HDA_CODEC_INTELHDMI=y CONFIG_SND_HDA_ELD=y CONFIG_SND_HDA_CODEC_CONEXANT=y CONFIG_SND_HDA_CODEC_CA0110=y CONFIG_SND_HDA_CODEC_CMEDIA=y CONFIG_SND_HDA_CODEC_SI3054=y CONFIG_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_SIS7019 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 set CONFIG_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 set CONFIG_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_TC1100_WMI 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=y
# CONFIG_REISERFS_CHECK is not set
# 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=y CONFIG_ACORN_PARTITION=y
# CONFIG_ACORN_PARTITION_CUMANA is not set
# CONFIG_ACORN_PARTITION_EESOX is not set CONFIG_ACORN_PARTITION_ICS=y
# CONFIG_ACORN_PARTITION_ADFS is not set
# CONFIG_ACORN_PARTITION_POWERTEC is not set CONFIG_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 set CONFIG_MSDOS_PARTITION=y CONFIG_BSD_DISKLABEL=y
# CONFIG_MINIX_SUBPARTITION is not set
# CONFIG_SOLARIS_X86_PARTITION is not set
# CONFIG_UNIXWARE_DISKLABEL is not set CONFIG_LDM_PARTITION=y
# CONFIG_LDM_DEBUG is not set CONFIG_SGI_PARTITION=y
# CONFIG_ULTRIX_PARTITION is not set
# CONFIG_SUN_PARTITION is not set
# CONFIG_KARMA_PARTITION is not set CONFIG_EFI_PARTITION=y
# CONFIG_SYSV68_PARTITION is not set CONFIG_NLS=yCONFIG_NLS_DEFAULT="cp437" CONFIG_NLS_CODEPAGE_437=y
# CONFIG_NLS_CODEPAGE_737 is not set
# CONFIG_NLS_CODEPAGE_775 is not set CONFIG_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 set CONFIG_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=y
# CONFIG_NLS_KOI8_R is not set
# CONFIG_NLS_KOI8_U is not set CONFIG_NLS_UTF8=y
# CONFIG_DLM is not set
#
# Kernel hacking
#CONFIG_TRACE_IRQFLAGS_SUPPORT=y CONFIG_PRINTK_TIME=y
# CONFIG_ENABLE_WARN_DEPRECATED is not set
# CONFIG_ENABLE_MUST_CHECK is not set CONFIG_FRAME_WARN=2048
# CONFIG_MAGIC_SYSRQ is not set CONFIG_UNUSED_SYMBOLS=yCONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_SHIRQ is not set CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 CONFIG_DETECT_HUNG_TASK=y
# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set CONFIG_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 set CONFIG_DEBUG_PREEMPT=y
# CONFIG_DEBUG_RT_MUTEXES is not set
# CONFIG_RT_MUTEX_TESTER is not set CONFIG_DEBUG_SPINLOCK=yCONFIG_DEBUG_MUTEXES=y CONFIG_DEBUG_LOCK_ALLOC=y CONFIG_PROVE_LOCKING=yCONFIG_LOCKDEP=y
# CONFIG_LOCK_STAT is not set
# CONFIG_DEBUG_LOCKDEP is not set CONFIG_TRACE_IRQFLAGS=y CONFIG_DEBUG_SPINLOCK_SLEEP=y
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set CONFIG_STACKTRACE=y
# CONFIG_DEBUG_KOBJECT is not set
# CONFIG_DEBUG_HIGHMEM is not set CONFIG_DEBUG_BUGVERBOSE=yCONFIG_DEBUG_INFO=y
# CONFIG_DEBUG_VM is not set
# CONFIG_DEBUG_VIRTUAL is not set
# CONFIG_DEBUG_WRITECOUNT is not set CONFIG_DEBUG_MEMORY_INIT=y
# CONFIG_DEBUG_LIST is not set
# CONFIG_DEBUG_SG is not set
# CONFIG_DEBUG_NOTIFIERS is not set CONFIG_ARCH_WANT_FRAME_POINTERS=y CONFIG_FRAME_POINTER=y
# CONFIG_BOOT_PRINTK_DELAY is not set
# CONFIG_RCU_TORTURE_TEST is not set CONFIG_RCU_CPU_STALL_DETECTOR=y CONFIG_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 set CONFIG_USER_STACKTRACE_SUPPORT=y CONFIG_NOP_TRACER=y CONFIG_HAVE_FTRACE_NMI_ENTER=y CONFIG_HAVE_FUNCTION_TRACER=y CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y CONFIG_HAVE_DYNAMIC_FTRACE=y CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y CONFIG_HAVE_SYSCALL_TRACEPOINTS=y CONFIG_TRACER_MAX_TRACE=yCONFIG_RING_BUFFER=yCONFIG_FTRACE_NMI_ENTER=y CONFIG_EVENT_TRACING=y CONFIG_CONTEXT_SWITCH_TRACER=y CONFIG_TRACING=yCONFIG_GENERIC_TRACER=y CONFIG_TRACING_SUPPORT=yCONFIG_FTRACE=yCONFIG_FUNCTION_TRACER=y CONFIG_FUNCTION_GRAPH_TRACER=y CONFIG_IRQSOFF_TRACER=y CONFIG_PREEMPT_TRACER=y
# CONFIG_SYSPROF_TRACER is not set
# CONFIG_SCHED_TRACER is not set CONFIG_FTRACE_SYSCALLS=y
# CONFIG_BOOT_TRACER is not set CONFIG_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 set CONFIG_KPROBE_TRACER=yCONFIG_DYNAMIC_FTRACE=y
# CONFIG_FUNCTION_PROFILER is not set CONFIG_FTRACE_MCOUNT_RECORD=y CONFIG_FTRACE_SELFTEST=y CONFIG_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 set CONFIG_HAVE_ARCH_KGDB=y
# CONFIG_KGDB is not set CONFIG_HAVE_ARCH_KMEMCHECK=y
# CONFIG_STRICT_DEVMEM is not set
# CONFIG_X86_VERBOSE_BOOTUP is not set CONFIG_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 set CONFIG_DEBUG_RODATA=y CONFIG_DEBUG_RODATA_TEST=y
# CONFIG_DEBUG_NX_TEST is not set
# CONFIG_4KSTACKS is not set CONFIG_DOUBLEFAULT=y
# CONFIG_IOMMU_STRESS is not set CONFIG_HAVE_MMIOTRACE_SUPPORT=y CONFIG_X86_DECODER_SELFTEST=y CONFIG_IO_DELAY_TYPE_0X80=0 CONFIG_IO_DELAY_TYPE_0XED=1 CONFIG_IO_DELAY_TYPE_UDELAY=2 CONFIG_IO_DELAY_TYPE_NONE=3
# CONFIG_IO_DELAY_0X80 is not set CONFIG_IO_DELAY_0XED=y
# CONFIG_IO_DELAY_UDELAY is not set
# CONFIG_IO_DELAY_NONE is not set CONFIG_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=y
# CONFIG_CRYPTO_AES_586 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=y
# CONFIG_CRYPTO_SALSA20_586 is not setCONFIG_CRYPTO_SEED=yCONFIG_CRYPTO_SERPENT=yCONFIG_CRYPTO_TEA=yCONFIG_CRYPTO_TWOFISH=yCONFIG_CRYPTO_TWOFISH_COMMON=y
# CONFIG_CRYPTO_TWOFISH_586 is not set
#
# 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 set
# CONFIG_CRYPTO_DEV_GEODE 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_AUDIT_GENERIC=yCONFIG_ZLIB_INFLATE=yCONFIG_ZLIB_DEFLATE=yCONFIG_LZO_COMPRESS=yCONFIG_LZO_DECOMPRESS=yCONFIG_HAS_IOMEM=yCONFIG_HAS_IOPORT=yCONFIG_HAS_DMA=yCONFIG_NLATTR=y
rm -f include/config/kernel.release
echo 2.6.31-rc5 > include/config/kernel.release
set -e; : ' CHK include/linux/version.h'; mkdir -p include/linux/; (echo \#define LINUX_VERSION_CODE 132639; echo '#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))';) < /home/kilian/linux/linux-2.6-tip/Makefile > include/linux/version.h.tmp; if [ -r include/linux/version.h ] && cmp -s include/linux/version.h include/linux/version.h.tmp; then rm -f include/linux/version.h.tmp; else : ' UPD include/linux/version.h'; mv -f include/linux/version.h.tmp include/linux/version.h; fi set -e; : ' CHK include/linux/utsrelease.h'; mkdir -p include/linux/; if [ `echo -n "2.6.31-rc5" | wc -c ` -gt 64 ]; then echo '"2.6.31-rc5" exceeds 64 characters' >&2; exit 1; fi; (echo \#define UTS_RELEASE \"2.6.31-rc5\";) < include/config/kernel.release > include/linux/utsrelease.h.tmp; if [ -r include/linux/utsrelease.h ] && cmp -s include/linux/utsrelease.h include/linux/utsrelease.h.tmp; then rm -f include/linux/utsrelease.h.tmp; else : ' UPD include/linux/utsrelease.h'; mv -f include/linux/utsrelease.h.tmp include/linux/utsrelease.h; fi
set -e; if [ -L include/asm ]; then asmlink=readlink include/asm | cut -d '-' -f 2; if [ "$asmlink" != "x86" ]; then echo "ERROR: the symlink include/asm points to asm-$asmlink but asm-x86 was expected"; echo " set ARCH or save .config and run 'make mrproper' to fix it"; exit 1; fi; test -e $asmlink || rm include/asm; elif [ -d include/asm ]; then echo "ERROR: include/asm is a directory but a symlink was expected"; exit 1; fi
make -f scripts/Makefile.build obj=scripts/basic
if [ ! -L include/asm ]; then : ' SYMLINK include/asm -> include/asm-x86'; if [ ! -d include/asm-x86 ]; then mkdir -p include/asm-x86; fi; ln -fsn asm-x86 include/asm; fi
(cat /dev/null; ) > scripts/basic/modules.order
make -f scripts/Makefile.build obj=scripts
make -f scripts/Makefile.build obj=scripts/mod
make -f scripts/Makefile.build obj=scripts/selinux
make -f scripts/Makefile.build obj=scripts/selinux/mdp
(cat /dev/null; ) > scripts/selinux/mdp/modules.order
(cat /dev/null; ) > scripts/selinux/modules.order
(cat /dev/null; ) > scripts/mod/modules.order
(cat /dev/null; ) > scripts/modules.order
mkdir -p .tmp_versions ; rm -f .tmp_versions/*
make -f scripts/Makefile.build obj=.
(cat /dev/null; ) > modules.order
mkdir -p kernel/
mkdir -p arch/x86/kernel/
make -f scripts/Makefile.build obj=. missing-syscalls
/bin/bash scripts/checksyscalls.sh distcc -Wp,-MD,./.missing-syscalls.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/4.3.2/include -Iinclude -I/home/kilian/linux/linux-2.6-tip/arch/x86/include -include include/linux/autoconf.h -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=athlon -Wa,-mtune=generic32 -ffreestanding -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -fno-stack-protector -fno-omit-frame-pointer -fno-optimize-sibling-calls -g -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(missing_syscalls)" -D"KBUILD_MODNAME=KBUILD_STR(missing_syscalls)"
make -f scripts/Makefile.build obj=init
make -f scripts/Makefile.build obj=usr/bin/bash /home/kilian/linux/linux-2.6-tip/scripts/mkcompile_h include/linux/compile.h \
"i386" "y" "y" "distcc -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=athlon -Wa,-mtune=generic32 -ffreestanding -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -fno-stack-protector -fno-omit-frame-pointer -fno-optimize-sibling-calls -g -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow "
(cat /dev/null; ) > init/modules.order
(cat /dev/null; ) > usr/modules.order
make -f scripts/Makefile.build obj=arch/x86
make -f scripts/Makefile.build obj=arch/x86/crypto
make -f scripts/Makefile.build obj=kernel
make -f scripts/Makefile.build obj=arch/x86/kernel
make -f scripts/Makefile.build obj=arch/x86/mm
(cat /dev/null; ) > arch/x86/crypto/modules.order
make -f scripts/Makefile.build obj=arch/x86/vdso
make -f scripts/Makefile.build obj=mm
(cat /dev/null; ) > arch/x86/mm/modules.order
make -f scripts/Makefile.build obj=fs
make -f scripts/Makefile.build obj=ipc
nm arch/x86/vdso/vdso32-int80.so.dbg | LC_ALL=C sed -n -e 's/^00*/0/' -e 's/^\([0-9a-fA-F]*\) . \(VDSO[a-zA-Z0-9_]*\)$/ = 0x;/p' | LC_ALL=C sort > arch/x86/vdso/vdso32-int80-syms.lds
make -f scripts/Makefile.build obj=security
nm arch/x86/vdso/vdso32-sysenter.so.dbg | LC_ALL=C sed -n -e 's/^00*/0/' -e 's/^\([0-9a-fA-F]*\) . \(VDSO[a-zA-Z0-9_]*\)$/ = 0x;/p' | LC_ALL=C sort > arch/x86/vdso/vdso32-sysenter-syms.lds
(cat /dev/null; ) > arch/x86/vdso/modules.order
if LC_ALL=C sort -u arch/x86/vdso/vdso32-int80-syms.lds arch/x86/vdso/vdso32-sysenter-syms.lds > arch/x86/vdso/.tmp_vdso32-syms.lds && if grep -q VDSO32_SYSENTER_RETURN arch/x86/vdso/vdso32-int80-syms.lds; then diff -u arch/x86/vdso/.tmp_vdso32-syms.lds arch/x86/vdso/vdso32-int80-syms.lds; else sed /VDSO32_SYSENTER_RETURN/d arch/x86/vdso/.tmp_vdso32-syms.lds | diff -u - arch/x86/vdso/vdso32-int80-syms.lds; fi && if grep -q VDSO32_SYSENTER_RETURN arch/x86/vdso/vdso32-sysenter-syms.lds; then diff -u arch/x86/vdso/.tmp_vdso32-syms.lds arch/x86/vdso/vdso32-sysenter-syms.lds; else sed /VDSO32_SYSENTER_RETURN/d arch/x86/vdso/.tmp_vdso32-syms.lds | diff -u - arch/x86/vdso/vdso32-sysenter-syms.lds; fi && : ; then mv -f arch/x86/vdso/.tmp_vdso32-syms.lds arch/x86/vdso/vdso32-syms.lds; else rm -f arch/x86/vdso/.tmp_vdso32-syms.lds; exit 1; fi
make -f scripts/Makefile.build obj=arch/x86/kernel/acpi
make -f scripts/Makefile.build obj=arch/x86/kernel/apic
(cat /dev/null; ) > ipc/modules.order
ld -m elf_i386 -r -o arch/x86/vdso/built-in.o arch/x86/vdso/vdso32.o arch/x86/vdso/vdso32-setup.o arch/x86/vdso/vdso32-syms.lds
make -f scripts/Makefile.build obj=crypto
make -f scripts/Makefile.build obj=arch/x86/kernel/cpu
make -f scripts/Makefile.build obj=arch/x86/kernel/acpi/realmode
make -f scripts/Makefile.build obj=security/keys
(cat /dev/null; ) > mm/modules.order
make -f scripts/Makefile.build obj=kernel/irq
(cat /dev/null; ) > arch/x86/kernel/apic/modules.order
(cat /dev/null; ) > arch/x86/kernel/acpi/modules.order
make -f scripts/Makefile.build obj=security/selinux
make -f scripts/Makefile.build obj=security/smack
make -f scripts/Makefile.build obj=arch/x86/kernel/cpu/cpufreq
(cat /dev/null; ) > security/smack/modules.order
(cat /dev/null; ) > security/keys/modules.order
(cat /dev/null; ) > arch/x86/kernel/cpu/cpufreq/modules.order
make -f scripts/Makefile.build obj=kernel/power
make -f scripts/Makefile.build obj=security/selinux/ss
make -f scripts/Makefile.build obj=arch/x86/kernel/cpu/mcheck
make -f scripts/Makefile.build obj=block
(cat /dev/null; ) > kernel/irq/modules.order
make -f scripts/Makefile.build obj=arch/x86/kernel/cpu/mtrr
(cat /dev/null; ) > arch/x86/kernel/cpu/mcheck/modules.order
make -f scripts/Makefile.build obj=kernel/time
(cat /dev/null; ) > arch/x86/kernel/acpi/realmode/modules.order
make -f scripts/Makefile.build obj=kernel/trace
(cat /dev/null; ) > kernel/power/modules.order
(cat /dev/null; ) > arch/x86/kernel/cpu/mtrr/modules.order
make -f scripts/Makefile.build obj=drivers
(cat /dev/null; cat arch/x86/kernel/cpu/mcheck/modules.order; cat arch/x86/kernel/cpu/mtrr/modules.order; cat arch/x86/kernel/cpu/cpufreq/modules.order;) > arch/x86/kernel/cpu/modules.order
make -f scripts/Makefile.build obj=fs/autofs
(cat /dev/null; ) > kernel/time/modules.order
(cat /dev/null; ) > security/selinux/ss/modules.order
make -f scripts/Makefile.build obj=fs/autofs4
(cat /dev/null; cat security/selinux/ss/modules.order;) > security/selinux/modules.order (cat /dev/null; cat security/keys/modules.order;) > security/modules.order (cat /dev/null; cat arch/x86/kernel/cpu/modules.order; cat arch/x86/kernel/acpi/modules.order; cat arch/x86/kernel/apic/modules.order;) > arch/x86/kernel/modules.order
ld -m elf_i386 -r -o arch/x86/built-in.o arch/x86/kernel/built-in.o arch/x86/mm/built-in.o arch/x86/crypto/built-in.o arch/x86/vdso/built-in.o
(cat /dev/null; ) > fs/autofs/modules.order
(cat /dev/null; ) > fs/autofs4/modules.order
make -f scripts/Makefile.build obj=fs/configfs
make -f scripts/Makefile.build obj=fs/cramfs
(cat /dev/null; ) > fs/cramfs/modules.order
make -f scripts/Makefile.build obj=fs/debugfs
make -f scripts/Makefile.build obj=drivers/acpi
make -f scripts/Makefile.build obj=fs/devpts
(cat /dev/null; ) > fs/devpts/modules.order
(cat /dev/null; ) > fs/debugfs/modules.order
make -f scripts/Makefile.build obj=fs/fat
make -f scripts/Makefile.build obj=sound
(cat /dev/null; ) > kernel/trace/modules.order
(cat /dev/null; ) > fs/configfs/modules.order
(cat /dev/null; cat arch/x86/kernel/modules.order; cat arch/x86/mm/modules.order; cat arch/x86/crypto/modules.order; cat arch/x86/vdso/modules.order;) > arch/x86/modules.order
make -f scripts/Makefile.build obj=drivers/ata
(cat /dev/null; ) > block/modules.order
make -f scripts/Makefile.build obj=fs/hugetlbfs
(cat /dev/null; ) > fs/fat/modules.order
(cat /dev/null; cat kernel/time/modules.order; cat kernel/power/modules.order; cat kernel/power/modules.order; cat kernel/irq/modules.order; cat kernel/trace/modules.order; cat kernel/trace/modules.order; cat kernel/trace/modules.order;) > kernel/modules.order
make -f scripts/Makefile.build obj=drivers/auxdisplay (cat /dev/null; ) > drivers/auxdisplay/modules.order make -f scripts/Makefile.build obj=fs/isofs
make -f scripts/Makefile.build obj=drivers/base
make -f scripts/Makefile.build obj=sound/arm
(cat /dev/null; ) > sound/arm/modules.order
(cat /dev/null; ) > drivers/ata/modules.order
(cat /dev/null; ) > fs/hugetlbfs/modules.order
make -f scripts/Makefile.build obj=drivers/block
make -f scripts/Makefile.build obj=fs/nls
make -f scripts/Makefile.build obj=drivers/cdrom
(cat /dev/null; ) > drivers/block/modules.order
make -f scripts/Makefile.build obj=sound/atmel
(cat /dev/null; ) > sound/atmel/modules.order
(cat /dev/null; ) > fs/nls/modules.order
make -f scripts/Makefile.build obj=fs/notify
(cat /dev/null; ) > fs/isofs/modules.order
make -f scripts/Makefile.build obj=fs/notify/dnotify make -f scripts/Makefile.build obj=sound/core
make -f scripts/Makefile.build obj=drivers/char
make -f scripts/Makefile.build obj=drivers/base/power make -f scripts/Makefile.build obj=fs/ntfs
(cat /dev/null; ) > drivers/cdrom/modules.order
make -f scripts/Makefile.build obj=sound/drivers
(cat /dev/null; ) > fs/notify/dnotify/modules.order (cat /dev/null; ) > crypto/modules.order
(cat /dev/null; ) > drivers/base/power/modules.order make -f scripts/Makefile.build obj=fs/notify/inotify
(cat /dev/null; cat drivers/base/power/modules.order;) > drivers/base/modules.order
make -f scripts/Makefile.build obj=sound/drivers/mpu401 make -f scripts/Makefile.build obj=sound/i2c
make -f scripts/Makefile.build obj=sound/i2c/other
(cat /dev/null; ) > sound/i2c/other/modules.order
make -f scripts/Makefile.build obj=firmware
(cat /dev/null; ) > sound/drivers/mpu401/modules.order (cat /dev/null; ) > fs/notify/inotify/modules.order
(cat /dev/null; cat sound/i2c/other/modules.order;) > sound/i2c/modules.order
make -f scripts/Makefile.build obj=fs/partitions
make -f scripts/Makefile.build obj=sound/drivers/opl3 (cat /dev/null; ) > sound/drivers/opl3/modules.order
(cat /dev/null; cat fs/notify/dnotify/modules.order; cat fs/notify/inotify/modules.order;) > fs/notify/modules.order
make -f scripts/Makefile.build obj=drivers/acpi/acpica (cat /dev/null; ) > fs/partitions/modules.order
make -f scripts/Makefile.build obj=drivers/clocksource make -f scripts/Makefile.build obj=sound/drivers/opl4 (cat /dev/null; ) > sound/drivers/opl4/modules.order make -f scripts/Makefile.build obj=sound/isa
make -f scripts/Makefile.build obj=sound/isa/ad1816a (cat /dev/null; ) > firmware/modules.order
(cat /dev/null; ) > sound/isa/ad1816a/modules.order make -f scripts/Makefile.build obj=sound/drivers/pcsp (cat /dev/null; ) > sound/drivers/pcsp/modules.order make -f scripts/Makefile.build obj=sound/core/oss
make -f scripts/Makefile.build obj=sound/isa/ad1848 (cat /dev/null; ) > sound/isa/ad1848/modules.order
(cat /dev/null; ) > drivers/clocksource/modules.order make -f scripts/Makefile.build obj=sound/drivers/vx (cat /dev/null; ) > sound/drivers/vx/modules.order
make -f scripts/Makefile.build obj=drivers/connector make -f scripts/Makefile.build obj=drivers/char/agp (cat /dev/null; ) > drivers/connector/modules.order
(cat /dev/null; cat sound/drivers/opl3/modules.order; cat sound/drivers/opl4/modules.order; cat sound/drivers/mpu401/modules.order; cat sound/drivers/vx/modules.order; cat sound/drivers/pcsp/modules.order;) > sound/drivers/modules.order
make -f scripts/Makefile.build obj=sound/isa/cs423x (cat /dev/null; ) > sound/isa/cs423x/modules.order
(cat /dev/null; ) > fs/ntfs/modules.order
make -f scripts/Makefile.build obj=drivers/char/hw_random make -f scripts/Makefile.build obj=fs/proc
make -f scripts/Makefile.build obj=sound/isa/es1688 (cat /dev/null; ) > sound/isa/es1688/modules.order
make -f scripts/Makefile.build obj=sound/mips
make -f scripts/Makefile.build obj=sound/isa/gus
(cat /dev/null; ) > sound/isa/gus/modules.order
(cat /dev/null; ) > drivers/char/agp/modules.order
make -f scripts/Makefile.build obj=drivers/cpufreq
make -f scripts/Makefile.build obj=arch/x86/pci
(cat /dev/null; ) > sound/mips/modules.order
(cat /dev/null; ) > drivers/char/hw_random/modules.order make -f scripts/Makefile.build obj=sound/isa/msnd
make -f scripts/Makefile.build obj=sound/oss
(cat /dev/null; ) > sound/isa/msnd/modules.order
(cat /dev/null; ) > sound/core/oss/modules.order
make -f scripts/Makefile.build obj=sound/isa/opti9xx (cat /dev/null; ) > sound/isa/opti9xx/modules.order make -f scripts/Makefile.build obj=drivers/char/pcmcia make -f scripts/Makefile.build obj=drivers/char/pcmcia/ipwireless (cat /dev/null; ) > drivers/char/pcmcia/ipwireless/modules.order make -f scripts/Makefile.build obj=sound/isa/sb
make -f scripts/Makefile.build obj=sound/core/seq
(cat /dev/null; cat drivers/char/pcmcia/ipwireless/modules.order;) > drivers/char/pcmcia/modules.order
(cat /dev/null; ) > sound/isa/sb/modules.order
(cat /dev/null; ) > sound/oss/modules.order
(cat /dev/null; cat drivers/char/hw_random/modules.order; cat drivers/char/agp/modules.order; cat drivers/char/pcmcia/modules.order;) > drivers/char/modules.order
make -f scripts/Makefile.build obj=sound/isa/wavefront (cat /dev/null; ) > sound/isa/wavefront/modules.order make -f scripts/Makefile.build obj=drivers/cpuidle
(cat /dev/null; ) > drivers/cpufreq/modules.order
make -f scripts/Makefile.build obj=sound/parisc
(cat /dev/null; ) > sound/parisc/modules.order
make -f scripts/Makefile.build obj=drivers/cpuidle/governors make -f scripts/Makefile.build obj=fs/quota
(cat /dev/null; ) > fs/quota/modules.order
make -f scripts/Makefile.build obj=arch/x86/power
make -f scripts/Makefile.build obj=sound/isa/wss
(cat /dev/null; ) > sound/isa/wss/modules.order
make -f scripts/Makefile.build obj=drivers/crypto
(cat /dev/null; ) > drivers/crypto/modules.order
(cat /dev/null; cat sound/isa/ad1816a/modules.order; cat sound/isa/ad1848/modules.order; cat sound/isa/cs423x/modules.order; cat sound/isa/es1688/modules.order; cat sound/isa/gus/modules.order; cat sound/isa/msnd/modules.order; cat sound/isa/opti9xx/modules.order; cat sound/isa/sb/modules.order; cat sound/isa/wavefront/modules.order; cat sound/isa/wss/modules.order;) > sound/isa/modules.order
make -f scripts/Makefile.build obj=sound/pci
make -f scripts/Makefile.build obj=sound/pci/ac97
(cat /dev/null; ) > drivers/cpuidle/governors/modules.order (cat /dev/null; ) > fs/proc/modules.order
(cat /dev/null; cat drivers/cpuidle/governors/modules.order;) > drivers/cpuidle/modules.order
make -f scripts/Makefile.build obj=sound/pcmcia
make -f scripts/Makefile.build obj=sound/pcmcia/pdaudiocf make -f scripts/Makefile.build obj=sound/core/seq/oss (cat /dev/null; ) > sound/pci/ac97/modules.order
make -f scripts/Makefile.build obj=fs/ramfs
(cat /dev/null; ) > fs/ramfs/modules.order
(cat /dev/null; ) > sound/pcmcia/pdaudiocf/modules.order make -f scripts/Makefile.build obj=sound/pci/ali5451 (cat /dev/null; ) > sound/pci/ali5451/modules.order make -f scripts/Makefile.build obj=fs/reiserfs
make -f scripts/Makefile.build obj=sound/pcmcia/vx
(cat /dev/null; ) > sound/pcmcia/vx/modules.order
make -f scripts/Makefile.build obj=sound/ppc
(cat /dev/null; ) > sound/ppc/modules.order
make -f scripts/Makefile.build obj=sound/pci/au88x0 (cat /dev/null; ) > sound/pci/au88x0/modules.order
(cat /dev/null; cat sound/pcmcia/vx/modules.order; cat sound/pcmcia/pdaudiocf/modules.order;) > sound/pcmcia/modules.order
make -f scripts/Makefile.build obj=fs/romfs
(cat /dev/null; ) > arch/x86/power/modules.order
(cat /dev/null; ) > arch/x86/pci/modules.order
make -f scripts/Makefile.build obj=sound/pci/aw2
(cat /dev/null; ) > sound/pci/aw2/modules.order
make -f scripts/Makefile.build obj=sound/sh
(cat /dev/null; ) > sound/sh/modules.order
(cat /dev/null; ) > fs/romfs/modules.order
make -f scripts/Makefile.build obj=sound/soc
(cat /dev/null; ) > sound/soc/modules.order
make -f scripts/Makefile.build obj=fs/sysfs
make -f scripts/Makefile.build obj=drivers/dca
(cat /dev/null; ) > fs/sysfs/modules.order
make -f scripts/Makefile.build obj=sound/pci/ca0106 make -f scripts/Makefile.build obj=fs/udf
(cat /dev/null; ) > sound/pci/ca0106/modules.order
make -f scripts/Makefile.build obj=sound/pci/cs46xx (cat /dev/null; ) > sound/core/seq/oss/modules.order make -f scripts/Makefile.build obj=sound/sparc
make -f scripts/Makefile.build obj=drivers/dma
(cat /dev/null; ) > drivers/dca/modules.order
(cat /dev/null; ) > sound/pci/cs46xx/modules.order
(cat /dev/null; cat sound/core/seq/oss/modules.order;) > sound/core/seq/modules.order
make -f scripts/Makefile.build obj=drivers/firmware
(cat /dev/null; cat sound/core/oss/modules.order; cat sound/core/seq/modules.order;) > sound/core/modules.order
make -f scripts/Makefile.build obj=arch/x86/video
(cat /dev/null; ) > sound/sparc/modules.order
make -f scripts/Makefile.build obj=sound/pci/cs5535audio (cat /dev/null; ) > sound/pci/cs5535audio/modules.order make -f scripts/Makefile.build obj=drivers/gpio
(cat /dev/null; ) > drivers/gpio/modules.order
make -f scripts/Makefile.build obj=sound/pci/ctxfi
(cat /dev/null; ) > sound/pci/ctxfi/modules.order
make -f scripts/Makefile.build obj=sound/pci/echoaudio (cat /dev/null; ) > sound/pci/echoaudio/modules.order make -f scripts/Makefile.build obj=sound/pci/emu10k1 (cat /dev/null; ) > sound/pci/emu10k1/modules.order make -f scripts/Makefile.build obj=drivers/gpu
make -f scripts/Makefile.build obj=sound/pci/hda
make -f scripts/Makefile.build obj=drivers/gpu/drm
(cat /dev/null; ) > fs/udf/modules.order
make -f scripts/Makefile.build obj=sound/spi
(cat /dev/null; ) > drivers/firmware/modules.order
(cat /dev/null; ) > sound/spi/modules.order
(cat /dev/null; ) > drivers/dma/modules.order
make -f scripts/Makefile.build obj=sound/synth
make -f scripts/Makefile.build obj=sound/synth/emux make -f scripts/Makefile.build obj=drivers/i2c
(cat /dev/null; ) > fs/reiserfs/modules.order
make -f scripts/Makefile.build obj=drivers/i2c/algos make -f scripts/Makefile.build obj=sound/usb
make -f scripts/Makefile.build obj=sound/usb/caiaq
(cat /dev/null; ) > sound/synth/emux/modules.order
(cat /dev/null; ) > sound/usb/caiaq/modules.order
(cat /dev/null; cat fs/notify/modules.order; cat fs/quota/modules.order; cat fs/proc/modules.order; cat fs/partitions/modules.order; cat fs/sysfs/modules.order; cat fs/configfs/modules.order; cat fs/devpts/modules.order; cat fs/reiserfs/modules.order; cat fs/cramfs/modules.order; cat fs/ramfs/modules.order; cat fs/hugetlbfs/modules.order; cat fs/fat/modules.order; cat fs/isofs/modules.order; cat fs/nls/modules.order; cat fs/ntfs/modules.order; cat fs/romfs/modules.order; cat fs/autofs/modules.order; cat fs/autofs4/modules.order; cat fs/udf/modules.order; cat fs/debugfs/modules.order;) > fs/modules.order
(cat /dev/null; ) > arch/x86/video/modules.order
(cat /dev/null; cat sound/synth/emux/modules.order;) > sound/synth/modules.order
make -f scripts/Makefile.build obj=drivers/idle
(cat /dev/null; ) > drivers/idle/modules.order
make -f scripts/Makefile.build obj=sound/usb/usx2y
(cat /dev/null; ) > sound/usb/usx2y/modules.order
make -f scripts/Makefile.build obj=net
(cat /dev/null; ) > drivers/i2c/algos/modules.order
(cat /dev/null; cat sound/usb/usx2y/modules.order; cat sound/usb/caiaq/modules.order;) > sound/usb/modules.order
make -f scripts/Makefile.build obj=sound/pci/ice1712 (cat /dev/null; ) > sound/pci/ice1712/modules.order make -f scripts/Makefile.build obj=drivers/i2c/busses make -f scripts/Makefile.build obj=drivers/ieee1394 make -f scripts/Makefile.build obj=sound/pci/korg1212 (cat /dev/null; ) > sound/pci/korg1212/modules.order (cat /dev/null; ) > drivers/i2c/busses/modules.order make -f scripts/Makefile.build obj=sound/pci/lx6464es (cat /dev/null; ) > sound/pci/lx6464es/modules.order make -f scripts/Makefile.build obj=drivers/i2c/chips (cat /dev/null; ) > drivers/i2c/chips/modules.order
(cat /dev/null; cat drivers/i2c/busses/modules.order; cat drivers/i2c/chips/modules.order; cat drivers/i2c/algos/modules.order;) > drivers/i2c/modules.order
make -f scripts/Makefile.build obj=sound/pci/mixart (cat /dev/null; ) > sound/pci/hda/modules.order
(cat /dev/null; ) > sound/pci/mixart/modules.order
make -f scripts/Makefile.build obj=drivers/ieee802154 (cat /dev/null; ) > drivers/ieee802154/modules.order make -f scripts/Makefile.build obj=sound/pci/nm256
(cat /dev/null; ) > sound/pci/nm256/modules.order
make -f scripts/Makefile.build obj=drivers/input
make -f scripts/Makefile.build obj=net/802
make -f scripts/Makefile.build obj=sound/pci/oxygen (cat /dev/null; ) > net/802/modules.order
(cat /dev/null; ) > sound/pci/oxygen/modules.order
make -f scripts/Makefile.build obj=lib
make -f scripts/Makefile.build obj=sound/pci/pcxhr
(cat /dev/null; ) > sound/pci/pcxhr/modules.order
make -f scripts/Makefile.build obj=net/core
make -f scripts/Makefile.build obj=drivers/input/keyboard make -f scripts/Makefile.build obj=sound/pci/riptide (cat /dev/null; ) > sound/pci/riptide/modules.order (cat /dev/null; ) > drivers/ieee1394/modules.order
make -f scripts/Makefile.build obj=drivers/input/serio make -f scripts/Makefile.build obj=sound/pci/rme9652 (cat /dev/null; ) > sound/pci/rme9652/modules.order make -f scripts/Makefile.build obj=net/ethernet
(cat /dev/null; ) > drivers/input/serio/modules.order make -f scripts/Makefile.build obj=sound/pci/trident (cat /dev/null; ) > sound/pci/trident/modules.order make -f scripts/Makefile.build obj=net/ieee802154
make -f scripts/Makefile.build obj=drivers/gpu/drm/i810 make -f scripts/Makefile.build obj=sound/pci/vx222
(cat /dev/null; ) > drivers/input/keyboard/modules.order (cat /dev/null; ) > sound/pci/vx222/modules.order
(cat /dev/null; ) > net/ieee802154/modules.order
(cat /dev/null; ) > net/ethernet/modules.order
make -f scripts/Makefile.build obj=drivers/input/mouse make -f scripts/Makefile.build obj=sound/pci/ymfpci (cat /dev/null; ) > sound/pci/ymfpci/modules.order
make -f scripts/Makefile.build obj=drivers/leds
(cat /dev/null; ) > drivers/gpu/drm/i810/modules.order (cat /dev/null; ) > drivers/leds/modules.order
(cat /dev/null; ) > drivers/acpi/acpica/modules.order make -f scripts/Makefile.build obj=net/ipv4
make -f scripts/Makefile.build obj=drivers/gpu/drm/i830 make -f scripts/Makefile.build obj=net/key
(cat /dev/null; cat sound/pci/ac97/modules.order; cat sound/pci/ali5451/modules.order; cat sound/pci/au88x0/modules.order; cat sound/pci/aw2/modules.order; cat sound/pci/ctxfi/modules.order; cat sound/pci/ca0106/modules.order; cat sound/pci/cs46xx/modules.order; cat sound/pci/cs5535audio/modules.order; cat sound/pci/lx6464es/modules.order; cat sound/pci/echoaudio/modules.order; cat sound/pci/emu10k1/modules.order; cat sound/pci/hda/modules.order; cat sound/pci/ice1712/modules.order; cat sound/pci/korg1212/modules.order; cat sound/pci/mixart/modules.order; cat sound/pci/nm256/modules.order; cat sound/pci/oxygen/modules.order; cat sound/pci/pcxhr/modules.order; cat sound/pci/riptide/modules.order; cat sound/pci/rme9652/modules.order; cat sound/pci/trident/modules.order; cat sound/pci/ymfpci/modules.order; cat sound/pci/vx222/modules.order;) > sound/pci/modules.order
(cat /dev/null; ) > net/key/modules.order
(cat /dev/null; cat drivers/acpi/acpica/modules.order;) > drivers/acpi/modules.order
make -f scripts/Makefile.build obj=drivers/lguest
(cat /dev/null; ) > drivers/lguest/modules.order
(cat /dev/null; ) > drivers/input/mouse/modules.order make -f scripts/Makefile.build obj=arch/x86/lib
(cat /dev/null; cat drivers/input/keyboard/modules.order; cat drivers/input/mouse/modules.order;) > drivers/input/modules.order
make -f scripts/Makefile.build obj=drivers/macintosh (cat /dev/null; ) > drivers/macintosh/modules.order make -f scripts/Makefile.build obj=net/mac80211
make -f scripts/Makefile.build obj=drivers/media
make -f scripts/Makefile.build obj=drivers/media/common make -f scripts/Makefile.build obj=drivers/media/common/tuners (cat /dev/null; ) > drivers/media/common/tuners/modules.order
(cat /dev/null; cat drivers/media/common/tuners/modules.order;) > drivers/media/common/modules.order
(cat /dev/null; ) > drivers/gpu/drm/i830/modules.order make -f scripts/Makefile.build obj=drivers/media/video (cat /dev/null; ) > drivers/media/video/modules.order
(cat /dev/null; cat drivers/gpu/drm/i810/modules.order; cat drivers/gpu/drm/i830/modules.order;) > drivers/gpu/drm/modules.order (cat /dev/null; cat drivers/gpu/drm/modules.order;) > drivers/gpu/modules.order (cat /dev/null; cat drivers/media/common/modules.order; cat drivers/media/video/modules.order;) > drivers/media/modules.order
make -f scripts/Makefile.build obj=drivers/mfd
(cat /dev/null; ) > drivers/mfd/modules.order
make -f scripts/Makefile.build obj=drivers/misc
make -f scripts/Makefile.build obj=drivers/misc/cb710
(cat /dev/null; cat sound/oss/modules.order; cat sound/core/modules.order; cat sound/i2c/modules.order; cat sound/drivers/modules.order; cat sound/isa/modules.order; cat sound/pci/modules.order; cat sound/ppc/modules.order; cat sound/arm/modules.order; cat sound/sh/modules.order; cat sound/synth/modules.order; cat sound/usb/modules.order; cat sound/sparc/modules.order; cat sound/spi/modules.order; cat sound/parisc/modules.order; cat sound/pcmcia/modules.order; cat sound/mips/modules.order; cat sound/soc/modules.order; cat sound/atmel/modules.order;) > sound/modules.order
(cat /dev/null; ) > arch/x86/lib/modules.order
make -f scripts/Makefile.build obj=net/netlabel
make -f scripts/Makefile.build obj=drivers/misc/eeprom
(cat /dev/null; ) > drivers/misc/eeprom/modules.order
(cat /dev/null; ) > drivers/misc/cb710/modules.order
make -f scripts/Makefile.build obj=drivers/net
(cat /dev/null; cat drivers/misc/eeprom/modules.order; cat drivers/misc/cb710/modules.order;) > drivers/misc/modules.order
(cat /dev/null; ) > net/netlabel/modules.order
(cat /dev/null; ) > net/core/modules.order
make -f scripts/Makefile.build obj=net/netlink
(cat /dev/null; ) > net/netlink/modules.order
make -f scripts/Makefile.build obj=net/packet
(cat /dev/null; ) > net/packet/modules.order
make -f scripts/Makefile.build obj=net/rxrpc
make -f scripts/Makefile.build obj=drivers/net/wireless
make -f scripts/Makefile.build obj=drivers/pci
make -f scripts/Makefile.build obj=drivers/pcmcia
make -f scripts/Makefile.build obj=drivers/net/wireless/ath
(cat /dev/null; ) > net/mac80211/modules.order
make -f scripts/Makefile.build obj=net/sched
make -f scripts/Makefile.build obj=drivers/net/wireless/ath/ath5k
make -f scripts/Makefile.build obj=lib/lzo
(cat /dev/null; ) > drivers/pcmcia/modules.order
(cat /dev/null; ) > net/sched/modules.order
(cat /dev/null; ) > lib/lzo/modules.order
make -f scripts/Makefile.build obj=drivers/net/wireless/hostap
make -f scripts/Makefile.build obj=net/unix
make -f scripts/Makefile.build obj=lib/zlib_deflate
make -f scripts/Makefile.build obj=drivers/platform
make -f scripts/Makefile.build obj=drivers/platform/x86
(cat /dev/null; ) > drivers/net/wireless/hostap/modules.order
make -f scripts/Makefile.build obj=net/wireless
(cat /dev/null; ) > lib/zlib_deflate/modules.order
(cat /dev/null; ) > net/unix/modules.order
make -f scripts/Makefile.build obj=lib/zlib_inflate
(cat /dev/null; ) > lib/zlib_inflate/modules.order
make -f scripts/Makefile.build obj=drivers/pnp
(cat /dev/null; ) > drivers/platform/x86/modules.order
make -f scripts/Makefile.build obj=drivers/pci/hotplug
(cat /dev/null; cat drivers/platform/x86/modules.order;) > drivers/platform/modules.order
make -f scripts/Makefile.build obj=net/xfrm
(cat /dev/null; ) > net/rxrpc/modules.order
make -f scripts/Makefile.build obj=drivers/pnp/pnpacpi
make -f scripts/Makefile.build obj=drivers/power
(cat /dev/null; ) > drivers/pnp/pnpacpi/modules.order
(cat /dev/null; cat lib/zlib_inflate/modules.order; cat lib/zlib_deflate/modules.order; cat lib/lzo/modules.order; cat lib/lzo/modules.order;) > lib/modules.order
(cat /dev/null; ) > net/wireless/modules.order
(cat /dev/null; ) > drivers/net/wireless/ath/ath5k/modules.order
(cat /dev/null; ) > drivers/power/modules.order
make -f scripts/Makefile.build obj=drivers/pci/pcie
(cat /dev/null; cat drivers/pnp/pnpacpi/modules.order;) > drivers/pnp/modules.order
make -f scripts/Makefile.build obj=drivers/pci/pcie/aer
(cat /dev/null; cat drivers/net/wireless/ath/ath5k/modules.order;) > drivers/net/wireless/ath/modules.order
make -f scripts/Makefile.build obj=drivers/rtc
(cat /dev/null; cat drivers/net/wireless/hostap/modules.order; cat drivers/net/wireless/ath/modules.order;) > drivers/net/wireless/modules.order
(cat /dev/null; cat drivers/net/wireless/modules.order;) > drivers/net/modules.order
(cat /dev/null; ) > drivers/pci/pcie/aer/modules.order
make -f scripts/Makefile.build obj=drivers/scsi
(cat /dev/null; cat drivers/pci/pcie/aer/modules.order;) > drivers/pci/pcie/modules.order
make -f scripts/Makefile.build obj=drivers/serial
make -f scripts/Makefile.build obj=drivers/thermal
(cat /dev/null; ) > net/xfrm/modules.order
make -f scripts/Makefile.build obj=drivers/uio
(cat /dev/null; ) > drivers/thermal/modules.order
make -f scripts/Makefile.build obj=drivers/usb
make -f scripts/Makefile.build obj=drivers/usb/host
make -f scripts/Makefile.build obj=drivers/video
(cat /dev/null; ) > drivers/serial/modules.order
make -f scripts/Makefile.build obj=drivers/w1
(cat /dev/null; ) > drivers/uio/modules.order
(cat /dev/null; ) > drivers/pci/hotplug/modules.order
(cat /dev/null; ) > drivers/usb/host/modules.order
make -f scripts/Makefile.build obj=drivers/watchdog
(cat /dev/null; cat drivers/pci/pcie/modules.order; cat drivers/pci/hotplug/modules.order;) > drivers/pci/modules.order
(cat /dev/null; cat drivers/usb/host/modules.order;) > drivers/usb/modules.order
make -f scripts/Makefile.build obj=drivers/scsi/libsas
make -f scripts/Makefile.build obj=drivers/w1/masters
make -f scripts/Makefile.build obj=drivers/scsi/pcmcia
(cat /dev/null; ) > drivers/scsi/pcmcia/modules.order
(cat /dev/null; ) > drivers/watchdog/modules.order
(cat /dev/null; ) > drivers/w1/masters/modules.order
make -f scripts/Makefile.build obj=drivers/w1/slaves
make -f scripts/Makefile.build obj=drivers/video/backlight
(cat /dev/null; ) > drivers/w1/slaves/modules.order
(cat /dev/null; cat drivers/w1/masters/modules.order; cat drivers/w1/slaves/modules.order;) > drivers/w1/modules.order
make -f scripts/Makefile.build obj=drivers/video/console
make -f scripts/Makefile.build obj=drivers/video/display
make -f scripts/Makefile.build obj=drivers/video/logo
make -f scripts/Makefile.build obj=drivers/video/vermilion
(cat /dev/null; ) > drivers/video/display/modules.order
(cat /dev/null; ) > drivers/video/vermilion/modules.order
(cat /dev/null; ) > drivers/video/logo/modules.order
(cat /dev/null; ) > drivers/video/backlight/modules.order
(cat /dev/null; ) > drivers/video/console/modules.order
(cat /dev/null; ) > drivers/rtc/modules.order
(cat /dev/null; cat drivers/video/console/modules.order; cat drivers/video/logo/modules.order; cat drivers/video/backlight/modules.order; cat drivers/video/display/modules.order; cat drivers/video/vermilion/modules.order;) > drivers/video/modules.order
(cat /dev/null; ) > drivers/scsi/libsas/modules.order
(cat /dev/null; cat drivers/scsi/pcmcia/modules.order; cat drivers/scsi/libsas/modules.order; echo kernel/drivers/scsi/scsi_wait_scan.ko;) > drivers/scsi/modules.order
(cat /dev/null; ) > net/ipv4/modules.order
(cat /dev/null; cat drivers/gpio/modules.order; cat drivers/pci/modules.order; cat drivers/video/modules.order; cat drivers/acpi/modules.order; cat drivers/pnp/modules.order; cat drivers/char/modules.order; cat drivers/gpu/modules.order; cat drivers/connector/modules.order; cat drivers/serial/modules.order; cat drivers/base/modules.order; cat drivers/block/modules.order; cat drivers/misc/modules.order; cat drivers/mfd/modules.order; cat drivers/macintosh/modules.order; cat drivers/scsi/modules.order; cat drivers/ata/modules.order; cat drivers/net/modules.order; cat drivers/ieee1394/modules.order; cat drivers/uio/modules.order; cat drivers/cdrom/modules.order; cat drivers/auxdisplay/modules.order; cat drivers/pcmcia/modules.order; cat drivers/usb/modules.order; cat drivers/input/serio/modules.order; cat drivers/input/modules.order; cat drivers/rtc/modules.order; cat drivers/i2c/modules.order; cat drivers/media/modules.order; cat drivers/w1/modules.order; cat drivers/power/modules.order; cat drivers/thermal/modules.order; cat drivers/watchdog/modules.order; cat drivers/lguest/modules.order; cat drivers/cpufreq/modules.order; cat drivers/cpuidle/modules.order; cat drivers/idle/modules.order; cat drivers/leds/modules.order; cat drivers/firmware/modules.order; cat drivers/crypto/modules.order; cat drivers/clocksource/modules.order; cat drivers/dma/modules.order; cat drivers/dca/modules.order; cat drivers/platform/modules.order; cat drivers/ieee802154/modules.order;) > drivers/modules.order
(cat /dev/null; cat net/core/modules.order; cat net/ethernet/modules.order; cat net/802/modules.order; cat net/sched/modules.order; cat net/netlink/modules.order; cat net/ipv4/modules.order; cat net/xfrm/modules.order; cat net/unix/modules.order; cat net/packet/modules.order; cat net/key/modules.order; cat net/rxrpc/modules.order; cat net/wireless/modules.order; cat net/mac80211/modules.order; cat net/netlabel/modules.order; cat net/ieee802154/modules.order;) > net/modules.order
ld -m elf_i386 -r -o vmlinux.o arch/x86/kernel/head_32.o arch/x86/kernel/head32.o arch/x86/kernel/head.o arch/x86/kernel/init_task.o init/built-in.o --start-group usr/built-in.o arch/x86/built-in.o kernel/built-in.o mm/built-in.o fs/built-in.o ipc/built-in.o security/built-in.o crypto/built-in.o block/built-in.o lib/lib.a arch/x86/lib/lib.a lib/built-in.o arch/x86/lib/built-in.o drivers/built-in.o sound/built-in.o firmware/built-in.o arch/x86/pci/built-in.o arch/x86/power/built-in.o arch/x86/video/built-in.o net/built-in.o --end-group
make -f /home/kilian/linux/linux-2.6-tip/scripts/Makefile.modpost vmlinux.o
scripts/mod/modpost -o /home/kilian/linux/linux-2.6-tip/Module.symvers -S -K /home/kilian/linux/linux-2.6-tip/Module.markers -M /home/kilian/linux/linux-2.6-tip/Module.markers -c vmlinux.o
echo 'cmd_vmlinux.o := ld -m elf_i386 -r -o vmlinux.o arch/x86/kernel/head_32.o arch/x86/kernel/head32.o arch/x86/kernel/head.o arch/x86/kernel/init_task.o init/built-in.o --start-group usr/built-in.o arch/x86/built-in.o kernel/built-in.o mm/built-in.o fs/built-in.o ipc/built-in.o security/built-in.o crypto/built-in.o block/built-in.o lib/lib.a arch/x86/lib/lib.a lib/built-in.o arch/x86/lib/built-in.o drivers/built-in.o sound/built-in.o firmware/built-in.o arch/x86/pci/built-in.o arch/x86/power/built-in.o arch/x86/video/built-in.o net/built-in.o --end-group ' > ./.vmlinux.o.cmd
set -e; if [ ! -r .version ]; then rm -f .version; echo 1 >.version; else mv .version .old_version; expr 0$(cat .old_version) + 1 >.version; fi; make -f scripts/Makefile.build obj=init/bin/bash /home/kilian/linux/linux-2.6-tip/scripts/mkcompile_h include/linux/compile.h \
"i386" "y" "y" "distcc -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=athlon -Wa,-mtune=generic32 -ffreestanding -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -fno-stack-protector -fno-omit-frame-pointer -fno-optimize-sibling-calls -g -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow "
(cat /dev/null; ) > init/modules.order
UPD include/linux/compile.h
distcc -Wp,-MD,init/.version.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/4.3.2/include -Iinclude -I/home/kilian/linux/linux-2.6-tip/arch/x86/include -include include/linux/autoconf.h -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=athlon -Wa,-mtune=generic32 -ffreestanding -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -fno-stack-protector -fno-omit-frame-pointer -fno-optimize-sibling-calls -g -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(version)" -D"KBUILD_MODNAME=KBUILD_STR(version)" -c -o init/version.o init/version.c
ld -m elf_i386 -r -o init/built-in.o init/main.o init/version.o init/mounts.o init/noinitramfs.o init/calibrate.o
ld -m elf_i386 --build-id -o .tmp_vmlinux1 -T arch/x86/kernel/vmlinux.lds arch/x86/kernel/head_32.o arch/x86/kernel/head32.o arch/x86/kernel/head.o arch/x86/kernel/init_task.o init/built-in.o --start-group usr/built-in.o arch/x86/built-in.o kernel/built-in.o mm/built-in.o fs/built-in.o ipc/built-in.o security/built-in.o crypto/built-in.o block/built-in.o lib/lib.a arch/x86/lib/lib.a lib/built-in.o arch/x86/lib/built-in.o drivers/built-in.o sound/built-in.o firmware/built-in.o arch/x86/pci/built-in.o arch/x86/power/built-in.o arch/x86/video/built-in.o net/built-in.o --end-group
echo 'cmd_.tmp_vmlinux1 := ld -m elf_i386 --build-id -o .tmp_vmlinux1 -T arch/x86/kernel/vmlinux.lds arch/x86/kernel/head_32.o arch/x86/kernel/head32.o arch/x86/kernel/head.o arch/x86/kernel/init_task.o init/built-in.o --start-group usr/built-in.o arch/x86/built-in.o kernel/built-in.o mm/built-in.o fs/built-in.o ipc/built-in.o security/built-in.o crypto/built-in.o block/built-in.o lib/lib.a arch/x86/lib/lib.a lib/built-in.o arch/x86/lib/built-in.o drivers/built-in.o sound/built-in.o firmware/built-in.o arch/x86/pci/built-in.o arch/x86/power/built-in.o arch/x86/video/built-in.o net/built-in.o --end-group ' > ./..tmp_vmlinux1.cmd
nm -n .tmp_vmlinux1 | scripts/kallsyms --all-symbols > .tmp_kallsyms1.S
distcc -Wp,-MD,./..tmp_kallsyms1.o.d -D__ASSEMBLY__ -m32 -gdwarf-2 -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/4.3.2/include -Iinclude -I/home/kilian/linux/linux-2.6-tip/arch/x86/include -include include/linux/autoconf.h -D__KERNEL__ -c -o .tmp_kallsyms1.o .tmp_kallsyms1.S
ld -m elf_i386 --build-id -o .tmp_vmlinux2 -T arch/x86/kernel/vmlinux.lds arch/x86/kernel/head_32.o arch/x86/kernel/head32.o arch/x86/kernel/head.o arch/x86/kernel/init_task.o init/built-in.o --start-group usr/built-in.o arch/x86/built-in.o kernel/built-in.o mm/built-in.o fs/built-in.o ipc/built-in.o security/built-in.o crypto/built-in.o block/built-in.o lib/lib.a arch/x86/lib/lib.a lib/built-in.o arch/x86/lib/built-in.o drivers/built-in.o sound/built-in.o firmware/built-in.o arch/x86/pci/built-in.o arch/x86/power/built-in.o arch/x86/video/built-in.o net/built-in.o --end-group .tmp_kallsyms1.o
nm -n .tmp_vmlinux2 | scripts/kallsyms --all-symbols > .tmp_kallsyms2.S
distcc -Wp,-MD,./..tmp_kallsyms2.o.d -D__ASSEMBLY__ -m32 -gdwarf-2 -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/4.3.2/include -Iinclude -I/home/kilian/linux/linux-2.6-tip/arch/x86/include -include include/linux/autoconf.h -D__KERNEL__ -c -o .tmp_kallsyms2.o .tmp_kallsyms2.S
ld -m elf_i386 --build-id -o vmlinux -T arch/x86/kernel/vmlinux.lds arch/x86/kernel/head_32.o arch/x86/kernel/head32.o arch/x86/kernel/head.o arch/x86/kernel/init_task.o init/built-in.o --start-group usr/built-in.o arch/x86/built-in.o kernel/built-in.o mm/built-in.o fs/built-in.o ipc/built-in.o security/built-in.o crypto/built-in.o block/built-in.o lib/lib.a arch/x86/lib/lib.a lib/built-in.o arch/x86/lib/built-in.o drivers/built-in.o sound/built-in.o firmware/built-in.o arch/x86/pci/built-in.o arch/x86/power/built-in.o arch/x86/video/built-in.o net/built-in.o --end-group .tmp_kallsyms2.o
echo 'cmd_vmlinux := ld -m elf_i386 --build-id -o vmlinux -T arch/x86/kernel/vmlinux.lds arch/x86/kernel/head_32.o arch/x86/kernel/head32.o arch/x86/kernel/head.o arch/x86/kernel/init_task.o init/built-in.o --start-group usr/built-in.o arch/x86/built-in.o kernel/built-in.o mm/built-in.o fs/built-in.o ipc/built-in.o security/built-in.o crypto/built-in.o block/built-in.o lib/lib.a arch/x86/lib/lib.a lib/built-in.o arch/x86/lib/built-in.o drivers/built-in.o sound/built-in.o firmware/built-in.o arch/x86/pci/built-in.o arch/x86/power/built-in.o arch/x86/video/built-in.o net/built-in.o --end-group .tmp_kallsyms2.o' > ./.vmlinux.cmd
echo ' /bin/bash /home/kilian/linux/linux-2.6-tip/scripts/mksysmap System.map' && /bin/bash /home/kilian/linux/linux-2.6-tip/scripts/mksysmap vmlinux System.map; if [ $? -ne 0 ]; then rm -f vmlinux; /bin/false; fi;
/bin/bash /home/kilian/linux/linux-2.6-tip/scripts/mksysmap System.map
echo ' /bin/bash /home/kilian/linux/linux-2.6-tip/scripts/mksysmap .tmp_System.map' && /bin/bash /home/kilian/linux/linux-2.6-tip/scripts/mksysmap .tmp_vmlinux2 .tmp_System.map
/bin/bash /home/kilian/linux/linux-2.6-tip/scripts/mksysmap .tmp_System.map
cmp -s System.map .tmp_System.map || (echo Inconsistent kallsyms data; echo Try setting CONFIG_KALLSYMS_EXTRA_PASS; rm .tmp_kallsyms* ; /bin/false )
rm -f .old_version
make -f scripts/Makefile.build obj=arch/x86/tools posttest
awk '!x[$0]++' /home/kilian/linux/linux-2.6-tip/init/modules.order /home/kilian/linux/linux-2.6-tip/usr/modules.order /home/kilian/linux/linux-2.6-tip/arch/x86/modules.order /home/kilian/linux/linux-2.6-tip/kernel/modules.order /home/kilian/linux/linux-2.6-tip/mm/modules.order /home/kilian/linux/linux-2.6-tip/fs/modules.order /home/kilian/linux/linux-2.6-tip/ipc/modules.order /home/kilian/linux/linux-2.6-tip/security/modules.order /home/kilian/linux/linux-2.6-tip/crypto/modules.order /home/kilian/linux/linux-2.6-tip/block/modules.order /home/kilian/linux/linux-2.6-tip/drivers/modules.order /home/kilian/linux/linux-2.6-tip/sound/modules.order /home/kilian/linux/linux-2.6-tip/firmware/modules.order /home/kilian/linux/linux-2.6-tip/arch/x86/pci/modules.order /home/kilian/linux/linux-2.6-tip/arch/x86/power/modules.order /home/kilian/linux/linux-2.6-tip/arch/x86/video/modules.order /home/kilian/linux/linux-2.6-tip/net/modules.order /home/kilian/linux/linux-2.6-tip/lib/modules.order /home/kilian/linux/linux-2.6-tip/arch/x86/lib/modules.order > /home/kilian/linux/linux-2.6-tip/modules.order
objdump -d -j .text /home/kilian/linux/linux-2.6-tip/vmlinux | awk -f /home/kilian/linux/linux-2.6-tip/arch/x86/tools/distill.awk | arch/x86/tools/test_get_len
make -f /home/kilian/linux/linux-2.6-tip/scripts/Makefile.modpost
scripts/mod/modpost -o /home/kilian/linux/linux-2.6-tip/Module.symvers -S -K /home/kilian/linux/linux-2.6-tip/Module.markers -M /home/kilian/linux/linux-2.6-tip/Module.markers -c -s
make -f /home/kilian/linux/linux-2.6-tip/scripts/Makefile.fwinst obj=firmware __fw_modbuild
Re: [PATCH -tip tracing/kprobes 3/6] kprobes/x86: Fix to add __kprobes to in-kernel fault handing functions
Quoted 35 lines · Frederic Weisbecker
Quoted 15 lines · Masami Hiramatsu
Quoted 14 lines · Frederic Weisbecker
BTW, after your patchset:
TEST posttest
Building modules, stage 2.
Error:c0101038: 2e a1 f8 b0 9e c0 mov %cs:0xc09eb0f8,%eax
Error: objdump says 6 bytes, butinsn_get_length()says 10 (attr:40000) make[1]: *** [posttest] Erreur 2
make: *** [bzImage] Erreur 2
make: *** Attente des tâches non terminées....
MODPOST 4 modulesI'm cross compiling from 64 to 32 using:
Quoted 9 lines
Quoted 3 lines
make ARCH=x86
I've attached my config.
Aah, you might miss an important patch :D
http://lkml.org/lkml/2009/8/28/367Thank you,
Well, even with this patch I have this problem occuring with make ARCH=x86
Error:
c125d65d: 0f 6f 02 movq (%edx),%mm0
Error: objdump says 3 bytes, butinsn_get_length()says 2 (attr:0) make[1]: *** [posttest] Erreur 2
make: *** [bzImage] Erreur 2
Quoted 7 lines
Hmm, may be that's because it doesn't support mmx instructions. The whole patchset is on
git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing.git
tracing/kprobesConfig and make V=1 log attached.
Aah, Indeed. It's time to add MMX/SSE support on x86 insn decoder.
Thank you for reporting!
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
PATCH 1/1 x86: Add MMX support for instruction decoder
In reply to Frederic WeisbeckerAdd MMX/SSE instructions to x86 opcode maps, since some of those instructions are used in the kernel.
---
arch/x86/lib/x86-opcode-map.txt | 307 +++++++++++++++++++++++++-------------- 1 files changed, 200 insertions(+), 107 deletions(-)
arch/x86/lib/x86-opcode-map.txt +200 -107
@@ -310,14 +310,14 @@ Referrer: 2-byte escape 0e: 0f: # 0x0f 0x10-0x1f -10: -11: -12: -13: -14: -15: -16: -17: +10: movups Vps,Wps | movss Vss,Wss (F3) | movupd Vpd,Wpd (66) | movsd Vsd,Wsd (F2) +11: movups Wps,Vps | movss Wss,Vss (F3) | movupd Wpd,Vpd (66) | movsd Wsd,Vsd (F2) +12: movlps Vq,Mq | movlpd Vq,Mq (66) | movhlps Vq,Uq | movddup Vq,Wq (F2) | movsldup Vq,Wq (F3) +13: mpvlps Mq,Vq | movlpd Mq,Vq (66) +14: unpcklps Vps,Wq | unpcklpd Vpd,Wq (66) +15: unpckhps Vps,Wq | unpckhpd Vpd,Wq (66) +16: movhps Vq,Mq | movhpd Vq,Mq (66) | movlsps Vq,Uq | movshdup Vq,Wq (F3) +17: movhps Mq,Vq | movhpd Mq,Vq (66) 18: Grp16 (1A) 19: 1a:
@@ -337,12 +337,12 @@ Referrer: 2-byte escape 27: 28: movaps Vps,Wps | movapd Vpd,Wpd (66) 29: movaps Wps,Vps | movapd Wpd,Vpd (66) -2a: -2b: -2c: -2d: -2e: -2f: +2a: cvtpi2ps Vps,Qpi | cvtsi2ss Vss,Ed/q (F3) | cvtpi2pd Vpd,Qpi (66) | cvtsi2sd Vsd,Ed/q (F2) +2b: movntps Mps,Vps | movntpd Mpd,Vpd (66) +2c: cvttps2pi Ppi,Wps | cvttss2si Gd/q,Wss (F3) | cvttpd2pi Ppi,Wpd (66) | cvttsd2si Gd/q,Wsd (F2) +2d: cvtps2pi Ppi,Wps | cvtss2si Gd/q,Wss (F3) | cvtpd2pi Qpi,Wpd (66) | cvtsd2si Gd/q,Wsd (F2) +2e: ucomiss Vss,Wss | ucomisd Vsd,Wsd (66) +2f: comiss Vss,Wss | comisd Vsd,Wsd (66) # 0x0f 0x30-0x3f 30: WRMSR 31: RDTSC
@@ -378,56 +378,56 @@ Referrer: 2-byte escape 4e: CMOVLE/NG Gv,Ev 4f: CMOVNLE/G Gv,Ev # 0x0f 0x50-0x5f -50: -51: -52: -53: -54: -55: -56: -57: -58: -59: -5a: -5b: -5c: -5d: -5e: -5f: +50: movmskps Gd/q,Ups | movmskpd Gd/q,Upd (66) +51: sqrtps Vps,Wps | sqrtss Vss,Wss (F3) | sqrtpd Vpd,Wpd (66) | sqrtsd Vsd,Wsd (F2) +52: rsqrtps Vps,Wps | rsqrtss Vss,Wss (F3) +53: rcpps Vps,Wps | rcpss Vss,Wss (F3) +54: andps Vps,Wps | andpd Vpd,Wpd (66) +55: andnps Vps,Wps | andnpd Vpd,Wpd (66) +56: orps Vps,Wps | orpd Vpd,Wpd (66) +57: xorps Vps,Wps | xorpd Vpd,Wpd (66) +58: addps Vps,Wps | addss Vss,Wss (F3) | addpd Vpd,Wpd (66) | addsd Vsd,Wsd (F2) +59: mulps Vps,Wps | mulss Vss,Wss (F3) | mulpd Vpd,Wpd (66) | mulsd Vsd,Wsd (F2) +5a: cvtps2pd Vpd,Wps | cvtss2sd Vsd,Wss (F3) | cvtpd2ps Vps,Wpd (66) | cvtsd2ss Vsd,Wsd (F2) +5b: cvtdq2ps Vps,Wdq | cvtps2dq Vdq,Wps (66) | cvttps2dq Vdq,Wps (F3) +5c: subps Vps,Wps | subss Vss,Wss (F3) | subpd Vpd,Wpd (66) | subsd Vsd,Wsd (F2) +5d: minps Vps,Wps | minss Vss,Wss (F3) | minpd Vpd,Wpd (66) | minsd Vsd,Wsd (F2) +5e: divps Vps,Wps | divss Vss,Wss (F3) | divpd Vpd,Wpd (66) | divsd Vsd,Wsd (F2) +5f: maxps Vps,Wps | maxss Vss,Wss (F3) | maxpd Vpd,Wpd (66) | maxsd Vsd,Wsd (F2) # 0x0f 0x60-0x6f -60: -61: -62: -63: -64: -65: -66: -67: -68: -69: -6a: -6b: -6c: -6d: -6e: -6f: +60: punpcklbw Pq,Qd | punpcklbw Vdq,Wdq (66) +61: punpcklwd Pq,Qd | punpcklwd Vdq,Wdq (66) +62: punpckldq Pq,Qd | punpckldq Vdq,Wdq (66) +63: packsswb Pq,Qq | packsswb Vdq,Wdq (66) +64: pcmpgtb Pq,Qq | pcmpgtb Vdq,Wdq (66) +65: pcmpgtw Pq,Qq | pcmpgtw(66) Vdq,Wdq +66: pcmpgtd Pq,Qq | pcmpgtd Vdq,Wdq (66) +67: packuswb Pq,Qq | packuswb(66) Vdq,Wdq +68: punpckhbw Pq,Qd | punpckhbw Vdq,Wdq (66) +69: punpckhwd Pq,Qd | punpckhwd Vdq,Wdq (66) +6a: punpckhdq Pq,Qd | punpckhdq Vdq,Wdq (66) +6b: packssdw Pq,Qd | packssdw Vdq,Wdq (66) +6c: punpcklqdq Vdq,Wdq (66) +6d: punpckhqdq Vdq,Wdq (66) +6e: movd/q/ Pd,Ed/q | movd/q Vdq,Ed/q (66) +6f: movq Pq,Qq | movdqa Vdq,Wdq (66) | movdqu Vdq,Wdq (F3) # 0x0f 0x70-0x7f -70: +70: pshufw Pq,Qq,Ib | pshufd Vdq,Wdq,Ib (66) | pshufhw Vdq,Wdq,Ib (F3) | pshuflw VdqWdq,Ib (F2) 71: Grp12 (1A) 72: Grp13 (1A) 73: Grp14 (1A) -74: -75: -76: -77: +74: pcmpeqb Pq,Qq | pcmpeqb Vdq,Wdq (66) +75: pcmpeqw Pq,Qq | pcmpeqw Vdq,Wdq (66) +76: pcmpeqd Pq,Qq | pcmpeqd Vdq,Wdq (66) +77: emms 78: VMREAD Ed/q,Gd/q 79: VMWRITE Gd/q,Ed/q 7a: 7b: -7c: -7d: -7e: -7f: +7c: haddps(F2) Vps,Wps | haddpd(66) Vpd,Wpd +7d: hsubps(F2) Vps,Wps | hsubpd(66) Vpd,Wpd +7e: movd/q Ed/q,Pd | movd/q Ed/q,Vdq (66) | movq Vq,Wq (F3) +7f: movq Qq,Pq | movdqa Wdq,Vdq (66) | movdqu Wdq,Vdq (F3) # 0x0f 0x80-0x8f 80: JO Jz (f64) 81: JNO Jz (f64)
@@ -499,11 +499,11 @@ bf: MOVSX Gv,Ew # 0x0f 0xc0-0xcf c0: XADD Eb,Gb c1: XADD Ev,Gv -c2: +c2: cmpps Vps,Wps,Ib | cmpss Vss,Wss,Ib (F3) | cmppd Vpd,Wpd,Ib (66) | cmpsd Vsd,Wsd,Ib (F2) c3: movnti Md/q,Gd/q -c4: -c5: -c6: +c4: pinsrw Pq,Rd/q/Mw,Ib | pinsrw Vdq,Rd/q/Mw,Ib (66) +c5: pextrw Gd,Nq,Ib | pextrw Gd,Udq,Ib (66) +c6: shufps Vps,Wps,Ib | shufpd Vpd,Wpd,Ib (66) c7: Grp9 (1A) c8: BSWAP RAX/EAX/R8/R8D c9: BSWAP RCX/ECX/R9/R9D
@@ -514,60 +514,131 @@ cd: BSWAP RBP/EBP/R13/R13D ce: BSWAP RSI/ESI/R14/R14D cf: BSWAP RDI/EDI/R15/R15D # 0x0f 0xd0-0xdf -d0: -d1: -d2: -d3: -d4: -d5: -d6: -d7: -d8: -d9: -da: -db: -dc: -dd: -de: -df: +d0: addsubps Vps,Wps (F2) | addsubpd Vpd,Wpd (66) +d1: psrlw Pq,Qq | psrlw Vdq,Wdq (66) +d2: psrld Pq,Qq | psrld Vdq,Wdq (66) +d3: psrlq Pq,Qq | psrlq Vdq,Wdq (66) +d4: paddq Pq,Qq | paddq Vdq,Wdq (66) +d5: pmullw Pq,Qq | pmullw Vdq,Wdq (66) +d6: movq Wq,Vq (66) | movq2dq Vdq,Nq (F3) | movdq2q Pq,Uq (F2) +d7: pmovmskb Gd,Nq | pmovmskb Gd,Udq (66) +d8: psubusb Pq,Qq | psubusb Vdq,Wdq (66) +d9: psubusw Pq,Qq | psubusw Vdq,Wdq (66) +da: pminub Pq,Qq | pminub Vdq,Wdq (66) +db: pand Pq,Qq | pand Vdq,Wdq (66) +dc: paddusb Pq,Qq | paddusb Vdq,Wdq (66) +dd: paddusw Pq,Qq | paddusw Vdq,Wdq (66) +de: pmaxub Pq,Qq | pmaxub Vdq,Wdq (66) +df: pandn Pq,Qq | pandn Vdq,Wdq (66) # 0x0f 0xe0-0xef -e0: -e1: -e2: -e3: -e4: -e5: -e6: -e7: -e8: -e9: -ea: -eb: -ec: -ed: -ee: -ef: +e0: pavgb Pq,Qq | pavgb Vdq,Wdq (66) +e1: psraw Pq,Qq | psraw Vdq,Wdq (66) +e2: psrad Pq,Qq | psrad Vdq,Wdq (66) +e3: pavgw Pq,Qq | pavgw Vdq,Wdq (66) +e4: pmulhuw Pq,Qq | pmulhuw Vdq,Wdq (66) +e5: pmulhw Pq,Qq | pmulhw Vdq,Wdq (66) +e6: cvtpd2dq Vdq,Wpd (F2) | cvttpd2dq Vdq,Wpd (66) | cvtdq2pd Vpd,Wdq (F3) +e7: movntq Mq,Pq | movntdq Mdq,Vdq (66) +e8: psubsb Pq,Qq | psubsb Vdq,Wdq (66) +e9: psubsw Pq,Qq | psubsw Vdq,Wdq (66) +ea: pminsw Pq,Qq | pminsw Vdq,Wdq (66) +eb: por Pq,Qq | por Vdq,Wdq (66) +ec: paddsb Pq,Qq | paddsb Vdq,Wdq (66) +ed: paddsw Pq,Qq | paddsw Vdq,Wdq (66) +ee: pmaxsw Pq,Qq | pmaxsw Vdq,Wdq (66) +ef: pxor Pq,Qq | pxor Vdq,Wdq (66) # 0x0f 0xf0-0xff -f0: -f1: -f2: -f3: -f4: -f5: -f6: -f7: -f8: -f9: -fa: -fb: -fc: -fd: -fe: +f0: lddqu Vdq,Mdq (F2) +f1: psllw Pq,Qq | psllw Vdq,Wdq (66) +f2: pslld Pq,Qq | pslld Vdq,Wdq (66) +f3: psllq Pq,Qq | psllq Vdq,Wdq (66) +f4: pmuludq Pq,Qq | pmuludq Vdq,Wdq (66) +f5: pmaddwd Pq,Qq | pmaddwd Vdq,Wdq (66) +f6: psadbw Pq,Qq | psadbw Vdq,Wdq (66) +f7: maskmovq Pq,Nq | maskmovdqu Vdq,Udq (66) +f8: psubb Pq,Qq | psubb Vdq,Wdq (66) +f9: psubw Pq,Qq | psubw Vdq,Wdq (66) +fa: psubd Pq,Qq | psubd Vdq,Wdq (66) +fb: psubq Pq,Qq | psubq Vdq,Wdq (66) +fc: paddb Pq,Qq | paddb Vdq,Wdq (66) +fd: paddw Pq,Qq | paddw Vdq,Wdq (66) +fe: paddd Pq,Qq | paddd Vdq,Wdq (66) ff: EndTable Table: 3-byte opcode 1 Referrer: 3-byte escape 1 +# 0x0f 0x38 0x00-0x0f +00: pshufb Pq,Qq | pshufb Vdq,Wdq (66) +01: phaddw Pq,Qq | phaddw Vdq,Wdq (66) +02: phaddd Pq,Qq | phaddd Vdq,Wdq (66) +03: phaddsw Pq,Qq | phaddsw Vdq,Wdq (66) +04: pmaddubsw Pq,Qq | pmaddubsw (66)Vdq,Wdq +05: phsubw Pq,Qq | phsubw Vdq,Wdq (66) +06: phsubd Pq,Qq | phsubd Vdq,Wdq (66) +07: phsubsw Pq,Qq | phsubsw Vdq,Wdq (66) +08: psignb Pq,Qq | psignb Vdq,Wdq (66) +09: psignw Pq,Qq | psignw Vdq,Wdq (66) +0a: psignd Pq,Qq | psignd Vdq,Wdq (66) +0b: pmulhrsw Pq,Qq | pmulhrsw Vdq,Wdq (66) +0c: +0d: +0e: +0f: +# 0x0f 0x38 0x10-0x1f +10: pblendvb Vdq,Wdq (66) +11: +12: +13: +14: blendvps Vdq,Wdq (66) +15: blendvpd Vdq,Wdq (66) +16: +17: ptest Vdq,Wdq (66) +18: +19: +1a: +1b: +1c: pabsb Pq,Qq | pabsb Vdq,Wdq (66) +1d: pabsw Pq,Qq | pabsw Vdq,Wdq (66) +1e: pabsd Pq,Qq | pabsd Vdq,Wdq (66) +1f: +# 0x0f 0x38 0x20-0x2f +20: pmovsxbw Vdq,Udq/Mq (66) +21: pmovsxbd Vdq,Udq/Md (66) +22: pmovsxbq Vdq,Udq/Mw (66) +23: pmovsxwd Vdq,Udq/Mq (66) +24: pmovsxwq Vdq,Udq/Md (66) +25: pmovsxdq Vdq,Udq/Mq (66) +26: +27: +28: pmuldq Vdq,Wdq (66) +29: pcmpeqq Vdq,Wdq (66) +2a: movntdqa Vdq,Mdq (66) +2b: packusdw Vdq,Wdq (66) +2c: +2d: +2e: +2f: +# 0x0f 0x38 0x30-0x3f +30: pmovzxbw Vdq,Udq/Mq (66) +31: pmovzxbd Vdq,Udq/Md (66) +32: pmovzxbq Vdq,Udq/Mw (66) +33: pmovzxwd Vdq,Udq/Mq (66) +34: pmovzxwq Vdq,Udq/Md (66) +35: pmovzxdq Vdq,Udq/Mq (66) +36: +37: pcmpgtq Vdq,Wdq (66) +38: pminsb Vdq,Wdq (66) +39: pminsd Vdq,Wdq (66) +3a: pminuw Vdq,Wdq (66) +3b: pminud Vdq,Wdq (66) +3c: pmaxsb Vdq,Wdq (66) +3d: pmaxsd Vdq,Wdq (66) +3e: pmaxuw Vdq,Wdq (66) +3f: pmaxud Vdq,Wdq (66) +# 0x0f 0x38 0x4f-0xff +40: pmulld Vdq,Wdq (66) +41: phminposuw Vdq,Wdq (66) 80: INVEPT Gd/q,Mdq (66) 81: INVPID Gd/q,Mdq (66) f0: MOVBE Gv,Mv | CRC32 Gd,Eb (F2)
@@ -576,7 +647,29 @@ EndTable Table: 3-byte opcode 2 Referrer: 3-byte escape 2 -# all opcode is for SSE +# 0x0f 0x3a 0x00-0xff +08: roundps Vdq,Wdq,Ib (66) +09: roundpd Vdq,Wdq,Ib (66) +0a: roundss Vss,Wss,Ib (66) +0b: roundsd Vsd,Wsd,Ib (66) +0c: blendps Vdq,Wdq,Ib (66) +0d: blendpd Vdq,Wdq,Ib (66) +0e: pblendw Vdq,Wdq,Ib (66) +0f: palignr Pq,Qq,Ib | palignr Vdq,Wdq,Ib (66) +14: pextrb Rd/Mb,Vdq,Ib (66) +15: pextrw Rd/Mw,Vdq,Ib (66) +16: pextrd/pextrq Ed/q,Vdq,Ib (66) +17: extractps Ed,Vdq,Ib (66) +20: pinsrb Vdq,Rd/q/Mb,Ib (66) +21: insertps Vdq,Udq/Md,Ib (66) +22: pinsrd/pinsrq Vdq,Ed/q,Ib (66) +40: dpps Vdq,Wdq,Ib (66) +41: dppd Vdq,Wdq,Ib (66) +42: mpsadbw Vdq,Wdq,Ib (66) +60: pcmpestrm Vdq,Wdq,Ib (66) +61: pcmpestri Vdq,Wdq,Ib (66) +62: pcmpistrm Vdq,Wdq,Ib (66) +63: pcmpistri Vdq,Wdq,Ib (66) EndTable GrpTable: Grp1
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
Re: [PATCH tracing/kprobes] x86: Add MMX support for instruction decoder
Quoted 10 lines · Masami Hiramatsu
Add MMX/SSE instructions to x86 opcode maps, since some of those instructions are used in the kernel.
Signed-off-by Masami Hiramatsu <[email protected]>Cc Jim Keniston <[email protected]>Cc H. Peter Anvin <[email protected]>Cc Sam Ravnborg <[email protected]>Cc Frederic Weisbecker <[email protected]>Cc Ingo Molnar <[email protected]>---
Hehe :)
"Succeed: decoded and checked 1574884 instructions"
I'm taking the three patches, thanks!
[tip:perf/probes] x86: Add MMX support for instruction decoder
In reply to Masami HiramatsuCommit-ID: f12b4f546b4e327d5620a544a2bddab68de66027 Gitweb: http://git.kernel.org/tip/f12b4f546b4e327d5620a544a2bddab68de66027 Author: Masami Hiramatsu <[email protected]> AuthorDate: Tue, 8 Sep 2009 12:32:46 -0400 Committer: Frederic Weisbecker <[email protected]> CommitDate: Fri, 11 Sep 2009 01:12:34 +0200
x86: Add MMX support for instruction decoder
Add MMX/SSE instructions to x86 opcode maps, since some of those instructions are used in the kernel.
This also fixes failures in the x86 instruction decoder seftest.
LKML-Reference: <[email protected]>
--- arch/x86/lib/x86-opcode-map.txt | 307 +++++++++++++++++++++++++-------------- 1 files changed, 200 insertions(+), 107 deletions(-)
arch/x86/lib/x86-opcode-map.txt +200 -107
@@ -310,14 +310,14 @@ Referrer: 2-byte escape 0e: 0f: # 0x0f 0x10-0x1f -10: -11: -12: -13: -14: -15: -16: -17: +10: movups Vps,Wps | movss Vss,Wss (F3) | movupd Vpd,Wpd (66) | movsd Vsd,Wsd (F2) +11: movups Wps,Vps | movss Wss,Vss (F3) | movupd Wpd,Vpd (66) | movsd Wsd,Vsd (F2) +12: movlps Vq,Mq | movlpd Vq,Mq (66) | movhlps Vq,Uq | movddup Vq,Wq (F2) | movsldup Vq,Wq (F3) +13: mpvlps Mq,Vq | movlpd Mq,Vq (66) +14: unpcklps Vps,Wq | unpcklpd Vpd,Wq (66) +15: unpckhps Vps,Wq | unpckhpd Vpd,Wq (66) +16: movhps Vq,Mq | movhpd Vq,Mq (66) | movlsps Vq,Uq | movshdup Vq,Wq (F3) +17: movhps Mq,Vq | movhpd Mq,Vq (66) 18: Grp16 (1A) 19: 1a:
@@ -337,12 +337,12 @@ Referrer: 2-byte escape 27: 28: movaps Vps,Wps | movapd Vpd,Wpd (66) 29: movaps Wps,Vps | movapd Wpd,Vpd (66) -2a: -2b: -2c: -2d: -2e: -2f: +2a: cvtpi2ps Vps,Qpi | cvtsi2ss Vss,Ed/q (F3) | cvtpi2pd Vpd,Qpi (66) | cvtsi2sd Vsd,Ed/q (F2) +2b: movntps Mps,Vps | movntpd Mpd,Vpd (66) +2c: cvttps2pi Ppi,Wps | cvttss2si Gd/q,Wss (F3) | cvttpd2pi Ppi,Wpd (66) | cvttsd2si Gd/q,Wsd (F2) +2d: cvtps2pi Ppi,Wps | cvtss2si Gd/q,Wss (F3) | cvtpd2pi Qpi,Wpd (66) | cvtsd2si Gd/q,Wsd (F2) +2e: ucomiss Vss,Wss | ucomisd Vsd,Wsd (66) +2f: comiss Vss,Wss | comisd Vsd,Wsd (66) # 0x0f 0x30-0x3f 30: WRMSR 31: RDTSC
@@ -378,56 +378,56 @@ Referrer: 2-byte escape 4e: CMOVLE/NG Gv,Ev 4f: CMOVNLE/G Gv,Ev # 0x0f 0x50-0x5f -50: -51: -52: -53: -54: -55: -56: -57: -58: -59: -5a: -5b: -5c: -5d: -5e: -5f: +50: movmskps Gd/q,Ups | movmskpd Gd/q,Upd (66) +51: sqrtps Vps,Wps | sqrtss Vss,Wss (F3) | sqrtpd Vpd,Wpd (66) | sqrtsd Vsd,Wsd (F2) +52: rsqrtps Vps,Wps | rsqrtss Vss,Wss (F3) +53: rcpps Vps,Wps | rcpss Vss,Wss (F3) +54: andps Vps,Wps | andpd Vpd,Wpd (66) +55: andnps Vps,Wps | andnpd Vpd,Wpd (66) +56: orps Vps,Wps | orpd Vpd,Wpd (66) +57: xorps Vps,Wps | xorpd Vpd,Wpd (66) +58: addps Vps,Wps | addss Vss,Wss (F3) | addpd Vpd,Wpd (66) | addsd Vsd,Wsd (F2) +59: mulps Vps,Wps | mulss Vss,Wss (F3) | mulpd Vpd,Wpd (66) | mulsd Vsd,Wsd (F2) +5a: cvtps2pd Vpd,Wps | cvtss2sd Vsd,Wss (F3) | cvtpd2ps Vps,Wpd (66) | cvtsd2ss Vsd,Wsd (F2) +5b: cvtdq2ps Vps,Wdq | cvtps2dq Vdq,Wps (66) | cvttps2dq Vdq,Wps (F3) +5c: subps Vps,Wps | subss Vss,Wss (F3) | subpd Vpd,Wpd (66) | subsd Vsd,Wsd (F2) +5d: minps Vps,Wps | minss Vss,Wss (F3) | minpd Vpd,Wpd (66) | minsd Vsd,Wsd (F2) +5e: divps Vps,Wps | divss Vss,Wss (F3) | divpd Vpd,Wpd (66) | divsd Vsd,Wsd (F2) +5f: maxps Vps,Wps | maxss Vss,Wss (F3) | maxpd Vpd,Wpd (66) | maxsd Vsd,Wsd (F2) # 0x0f 0x60-0x6f -60: -61: -62: -63: -64: -65: -66: -67: -68: -69: -6a: -6b: -6c: -6d: -6e: -6f: +60: punpcklbw Pq,Qd | punpcklbw Vdq,Wdq (66) +61: punpcklwd Pq,Qd | punpcklwd Vdq,Wdq (66) +62: punpckldq Pq,Qd | punpckldq Vdq,Wdq (66) +63: packsswb Pq,Qq | packsswb Vdq,Wdq (66) +64: pcmpgtb Pq,Qq | pcmpgtb Vdq,Wdq (66) +65: pcmpgtw Pq,Qq | pcmpgtw(66) Vdq,Wdq +66: pcmpgtd Pq,Qq | pcmpgtd Vdq,Wdq (66) +67: packuswb Pq,Qq | packuswb(66) Vdq,Wdq +68: punpckhbw Pq,Qd | punpckhbw Vdq,Wdq (66) +69: punpckhwd Pq,Qd | punpckhwd Vdq,Wdq (66) +6a: punpckhdq Pq,Qd | punpckhdq Vdq,Wdq (66) +6b: packssdw Pq,Qd | packssdw Vdq,Wdq (66) +6c: punpcklqdq Vdq,Wdq (66) +6d: punpckhqdq Vdq,Wdq (66) +6e: movd/q/ Pd,Ed/q | movd/q Vdq,Ed/q (66) +6f: movq Pq,Qq | movdqa Vdq,Wdq (66) | movdqu Vdq,Wdq (F3) # 0x0f 0x70-0x7f -70: +70: pshufw Pq,Qq,Ib | pshufd Vdq,Wdq,Ib (66) | pshufhw Vdq,Wdq,Ib (F3) | pshuflw VdqWdq,Ib (F2) 71: Grp12 (1A) 72: Grp13 (1A) 73: Grp14 (1A) -74: -75: -76: -77: +74: pcmpeqb Pq,Qq | pcmpeqb Vdq,Wdq (66) +75: pcmpeqw Pq,Qq | pcmpeqw Vdq,Wdq (66) +76: pcmpeqd Pq,Qq | pcmpeqd Vdq,Wdq (66) +77: emms 78: VMREAD Ed/q,Gd/q 79: VMWRITE Gd/q,Ed/q 7a: 7b: -7c: -7d: -7e: -7f: +7c: haddps(F2) Vps,Wps | haddpd(66) Vpd,Wpd +7d: hsubps(F2) Vps,Wps | hsubpd(66) Vpd,Wpd +7e: movd/q Ed/q,Pd | movd/q Ed/q,Vdq (66) | movq Vq,Wq (F3) +7f: movq Qq,Pq | movdqa Wdq,Vdq (66) | movdqu Wdq,Vdq (F3) # 0x0f 0x80-0x8f 80: JO Jz (f64) 81: JNO Jz (f64)
@@ -499,11 +499,11 @@ bf: MOVSX Gv,Ew # 0x0f 0xc0-0xcf c0: XADD Eb,Gb c1: XADD Ev,Gv -c2: +c2: cmpps Vps,Wps,Ib | cmpss Vss,Wss,Ib (F3) | cmppd Vpd,Wpd,Ib (66) | cmpsd Vsd,Wsd,Ib (F2) c3: movnti Md/q,Gd/q -c4: -c5: -c6: +c4: pinsrw Pq,Rd/q/Mw,Ib | pinsrw Vdq,Rd/q/Mw,Ib (66) +c5: pextrw Gd,Nq,Ib | pextrw Gd,Udq,Ib (66) +c6: shufps Vps,Wps,Ib | shufpd Vpd,Wpd,Ib (66) c7: Grp9 (1A) c8: BSWAP RAX/EAX/R8/R8D c9: BSWAP RCX/ECX/R9/R9D
@@ -514,60 +514,131 @@ cd: BSWAP RBP/EBP/R13/R13D ce: BSWAP RSI/ESI/R14/R14D cf: BSWAP RDI/EDI/R15/R15D # 0x0f 0xd0-0xdf -d0: -d1: -d2: -d3: -d4: -d5: -d6: -d7: -d8: -d9: -da: -db: -dc: -dd: -de: -df: +d0: addsubps Vps,Wps (F2) | addsubpd Vpd,Wpd (66) +d1: psrlw Pq,Qq | psrlw Vdq,Wdq (66) +d2: psrld Pq,Qq | psrld Vdq,Wdq (66) +d3: psrlq Pq,Qq | psrlq Vdq,Wdq (66) +d4: paddq Pq,Qq | paddq Vdq,Wdq (66) +d5: pmullw Pq,Qq | pmullw Vdq,Wdq (66) +d6: movq Wq,Vq (66) | movq2dq Vdq,Nq (F3) | movdq2q Pq,Uq (F2) +d7: pmovmskb Gd,Nq | pmovmskb Gd,Udq (66) +d8: psubusb Pq,Qq | psubusb Vdq,Wdq (66) +d9: psubusw Pq,Qq | psubusw Vdq,Wdq (66) +da: pminub Pq,Qq | pminub Vdq,Wdq (66) +db: pand Pq,Qq | pand Vdq,Wdq (66) +dc: paddusb Pq,Qq | paddusb Vdq,Wdq (66) +dd: paddusw Pq,Qq | paddusw Vdq,Wdq (66) +de: pmaxub Pq,Qq | pmaxub Vdq,Wdq (66) +df: pandn Pq,Qq | pandn Vdq,Wdq (66) # 0x0f 0xe0-0xef -e0: -e1: -e2: -e3: -e4: -e5: -e6: -e7: -e8: -e9: -ea: -eb: -ec: -ed: -ee: -ef: +e0: pavgb Pq,Qq | pavgb Vdq,Wdq (66) +e1: psraw Pq,Qq | psraw Vdq,Wdq (66) +e2: psrad Pq,Qq | psrad Vdq,Wdq (66) +e3: pavgw Pq,Qq | pavgw Vdq,Wdq (66) +e4: pmulhuw Pq,Qq | pmulhuw Vdq,Wdq (66) +e5: pmulhw Pq,Qq | pmulhw Vdq,Wdq (66) +e6: cvtpd2dq Vdq,Wpd (F2) | cvttpd2dq Vdq,Wpd (66) | cvtdq2pd Vpd,Wdq (F3) +e7: movntq Mq,Pq | movntdq Mdq,Vdq (66) +e8: psubsb Pq,Qq | psubsb Vdq,Wdq (66) +e9: psubsw Pq,Qq | psubsw Vdq,Wdq (66) +ea: pminsw Pq,Qq | pminsw Vdq,Wdq (66) +eb: por Pq,Qq | por Vdq,Wdq (66) +ec: paddsb Pq,Qq | paddsb Vdq,Wdq (66) +ed: paddsw Pq,Qq | paddsw Vdq,Wdq (66) +ee: pmaxsw Pq,Qq | pmaxsw Vdq,Wdq (66) +ef: pxor Pq,Qq | pxor Vdq,Wdq (66) # 0x0f 0xf0-0xff -f0: -f1: -f2: -f3: -f4: -f5: -f6: -f7: -f8: -f9: -fa: -fb: -fc: -fd: -fe: +f0: lddqu Vdq,Mdq (F2) +f1: psllw Pq,Qq | psllw Vdq,Wdq (66) +f2: pslld Pq,Qq | pslld Vdq,Wdq (66) +f3: psllq Pq,Qq | psllq Vdq,Wdq (66) +f4: pmuludq Pq,Qq | pmuludq Vdq,Wdq (66) +f5: pmaddwd Pq,Qq | pmaddwd Vdq,Wdq (66) +f6: psadbw Pq,Qq | psadbw Vdq,Wdq (66) +f7: maskmovq Pq,Nq | maskmovdqu Vdq,Udq (66) +f8: psubb Pq,Qq | psubb Vdq,Wdq (66) +f9: psubw Pq,Qq | psubw Vdq,Wdq (66) +fa: psubd Pq,Qq | psubd Vdq,Wdq (66) +fb: psubq Pq,Qq | psubq Vdq,Wdq (66) +fc: paddb Pq,Qq | paddb Vdq,Wdq (66) +fd: paddw Pq,Qq | paddw Vdq,Wdq (66) +fe: paddd Pq,Qq | paddd Vdq,Wdq (66) ff: EndTable Table: 3-byte opcode 1 Referrer: 3-byte escape 1 +# 0x0f 0x38 0x00-0x0f +00: pshufb Pq,Qq | pshufb Vdq,Wdq (66) +01: phaddw Pq,Qq | phaddw Vdq,Wdq (66) +02: phaddd Pq,Qq | phaddd Vdq,Wdq (66) +03: phaddsw Pq,Qq | phaddsw Vdq,Wdq (66) +04: pmaddubsw Pq,Qq | pmaddubsw (66)Vdq,Wdq +05: phsubw Pq,Qq | phsubw Vdq,Wdq (66) +06: phsubd Pq,Qq | phsubd Vdq,Wdq (66) +07: phsubsw Pq,Qq | phsubsw Vdq,Wdq (66) +08: psignb Pq,Qq | psignb Vdq,Wdq (66) +09: psignw Pq,Qq | psignw Vdq,Wdq (66) +0a: psignd Pq,Qq | psignd Vdq,Wdq (66) +0b: pmulhrsw Pq,Qq | pmulhrsw Vdq,Wdq (66) +0c: +0d: +0e: +0f: +# 0x0f 0x38 0x10-0x1f +10: pblendvb Vdq,Wdq (66) +11: +12: +13: +14: blendvps Vdq,Wdq (66) +15: blendvpd Vdq,Wdq (66) +16: +17: ptest Vdq,Wdq (66) +18: +19: +1a: +1b: +1c: pabsb Pq,Qq | pabsb Vdq,Wdq (66) +1d: pabsw Pq,Qq | pabsw Vdq,Wdq (66) +1e: pabsd Pq,Qq | pabsd Vdq,Wdq (66) +1f: +# 0x0f 0x38 0x20-0x2f +20: pmovsxbw Vdq,Udq/Mq (66) +21: pmovsxbd Vdq,Udq/Md (66) +22: pmovsxbq Vdq,Udq/Mw (66) +23: pmovsxwd Vdq,Udq/Mq (66) +24: pmovsxwq Vdq,Udq/Md (66) +25: pmovsxdq Vdq,Udq/Mq (66) +26: +27: +28: pmuldq Vdq,Wdq (66) +29: pcmpeqq Vdq,Wdq (66) +2a: movntdqa Vdq,Mdq (66) +2b: packusdw Vdq,Wdq (66) +2c: +2d: +2e: +2f: +# 0x0f 0x38 0x30-0x3f +30: pmovzxbw Vdq,Udq/Mq (66) +31: pmovzxbd Vdq,Udq/Md (66) +32: pmovzxbq Vdq,Udq/Mw (66) +33: pmovzxwd Vdq,Udq/Mq (66) +34: pmovzxwq Vdq,Udq/Md (66) +35: pmovzxdq Vdq,Udq/Mq (66) +36: +37: pcmpgtq Vdq,Wdq (66) +38: pminsb Vdq,Wdq (66) +39: pminsd Vdq,Wdq (66) +3a: pminuw Vdq,Wdq (66) +3b: pminud Vdq,Wdq (66) +3c: pmaxsb Vdq,Wdq (66) +3d: pmaxsd Vdq,Wdq (66) +3e: pmaxuw Vdq,Wdq (66) +3f: pmaxud Vdq,Wdq (66) +# 0x0f 0x38 0x4f-0xff +40: pmulld Vdq,Wdq (66) +41: phminposuw Vdq,Wdq (66) 80: INVEPT Gd/q,Mdq (66) 81: INVPID Gd/q,Mdq (66) f0: MOVBE Gv,Mv | CRC32 Gd,Eb (F2)
@@ -576,7 +647,29 @@ EndTable Table: 3-byte opcode 2 Referrer: 3-byte escape 2 -# all opcode is for SSE +# 0x0f 0x3a 0x00-0xff +08: roundps Vdq,Wdq,Ib (66) +09: roundpd Vdq,Wdq,Ib (66) +0a: roundss Vss,Wss,Ib (66) +0b: roundsd Vsd,Wsd,Ib (66) +0c: blendps Vdq,Wdq,Ib (66) +0d: blendpd Vdq,Wdq,Ib (66) +0e: pblendw Vdq,Wdq,Ib (66) +0f: palignr Pq,Qq,Ib | palignr Vdq,Wdq,Ib (66) +14: pextrb Rd/Mb,Vdq,Ib (66) +15: pextrw Rd/Mw,Vdq,Ib (66) +16: pextrd/pextrq Ed/q,Vdq,Ib (66) +17: extractps Ed,Vdq,Ib (66) +20: pinsrb Vdq,Rd/q/Mb,Ib (66) +21: insertps Vdq,Udq/Md,Ib (66) +22: pinsrd/pinsrq Vdq,Ed/q,Ib (66) +40: dpps Vdq,Wdq,Ib (66) +41: dppd Vdq,Wdq,Ib (66) +42: mpsadbw Vdq,Wdq,Ib (66) +60: pcmpestrm Vdq,Wdq,Ib (66) +61: pcmpestri Vdq,Wdq,Ib (66) +62: pcmpistrm Vdq,Wdq,Ib (66) +63: pcmpistri Vdq,Wdq,Ib (66) EndTable GrpTable: Grp1
RFC PATCH 1/1 kprobes: Call vmalloc_sync_all() for avoiding in-kernel paging on kprobes
In reply to Masami HiramatsuCall vmalloc_sync_all() before registering new kprobes and using new instruction buffers to sync page table entries of the pages on where kprobes data structure and instruction buffers are.
With this patch, kprobes can avoid in-kernel on-demand paging on these kprobes, and it allows kprobes to put probes on page-fault path.
---
kernel/kprobes.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-)
kernel/kprobes.c +3 -0
@@ -44,6 +44,7 @@#include <linux/debugfs.h> #include <linux/kdebug.h> #include <linux/memory.h> +#include <linux/vmalloc.h> #include <asm-generic/sections.h> #include <asm/cacheflush.h>
@@ -191,6 +192,7 @@ static kprobe_opcode_t __kprobes *__get_insn_slot(void)kfree (kip);return NULL ; } +vmalloc_sync_all ();/* Prohibit on-demand kernel paging on kprobe */ INIT_LIST_HEAD (&kip->list);list_add (&kip->list, &kprobe_insn_pages);memset (kip->slot_used,SLOT_CLEAN ,INSNS_PER_PAGE );
@@ -724,6 +726,7 @@ int __kprobes register_kprobe(struct kprobe *p) }preempt_enable (); +vmalloc_sync_all ();/* Prohibit on-demand kernel paging on kprobe */ p->nmissed =0 ;INIT_LIST_HEAD (&p->list);mutex_lock (&kprobe_mutex);
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
A message that is not in the archive (sent off-list or not yet received): [email protected]
.com
system hang - I suspect a sata problem - 2.6.30.5 debug kernel
I have a fileserver with a pata boot disk, pata dvd drive, and 7 sata disks configured with mdadm to be a raid-5 array. I am using a supermicro sat2-mv8 pcix controller, which has a marvell 88sx6081 controller. Every few hours, the machine hangs, and I have to power cycle it.
I build a kernel with debugging enabled, version 2.6.30.5
Here are the last few messages from syslog. I suspect they are from the ata layer. I would appreciate any advise.
jeff
Sep 8 09:13:26 sata_fileserver klogd: ata8: exception Emask 0x10 SAct 0x0 SErr 0x180000 action 0x6 frozen
Sep 8 09:13:26 sata_fileserver klogd: ata8: edma_err_cause=02000020 pp_flags=00000003, SError=00180000
Sep 8 09:13:26 sata_fileserver klogd: ata8: SError: { 10B8B Dispar }
Sep 8 09:13:26 sata_fileserver klogd: ata8: hard resetting link
Sep 8 09:13:26 sata_fileserver klogd: ata3: exception Emask 0x10 SAct 0x0 SErr 0x100000 action 0x6 frozen
Sep 8 09:13:26 sata_fileserver klogd: ata3: edma_err_cause=02000020 pp_flags=00000003, SError=00100000
Sep 8 09:13:26 sata_fileserver klogd: ata3: SError: { Dispar }
Sep 8 09:13:26 sata_fileserver klogd: ata3: hard resetting link
Sep 8 09:13:26 sata_fileserver klogd: ata5: exception Emask 0x10 SAct 0x0 SErr 0x100000 action 0x6 frozen
Sep 8 09:13:26 sata_fileserver klogd: ata5: edma_err_cause=02000020 pp_flags=00000003, SError=00100000
Sep 8 09:13:26 sata_fileserver klogd: ata5: SError: { Dispar }
Sep 8 09:13:26 sata_fileserver klogd: ata5: hard resetting link
Sep 8 09:13:26 sata_fileserver klogd: ata7: exception Emask 0x10 SAct 0x0 SErr 0x100000 action 0x6 frozen
Sep 8 09:13:26 sata_fileserver klogd: ata7: edma_err_cause=02000020 pp_flags=00000003, SError=00100000
Sep 8 09:13:26 sata_fileserver klogd: ata7: SError: { Dispar }
Sep 8 09:13:26 sata_fileserver klogd: ata7: hard resetting link
Sep 8 09:13:26 sata_fileserver klogd: ata3: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
Sep 8 09:13:26 sata_fileserver klogd: ata8: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
Sep 8 09:13:26 sata_fileserver klogd: ata8.00: failed to IDENTIFY (I/O error, err_mask=0x40)
Sep 8 09:13:26 sata_fileserver klogd: ata8.00: revalidation failed (errno=-5)
Sep 8 09:13:27 sata_fileserver klogd: ata3.00: configured for UDMA/133
Sep 8 09:13:27 sata_fileserver klogd: ata3: EH complete
Sep 8 09:13:27 sata_fileserver klogd: ata5: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
Sep 8 09:13:27 sata_fileserver klogd: ata7: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
Sep 8 09:13:27 sata_fileserver klogd: ata7.00: configured for UDMA/133
Sep 8 09:13:27 sata_fileserver klogd: ata7: EH complete
Sep 8 09:13:27 sata_fileserver klogd: ata5.00: configured for UDMA/133
Sep 8 09:13:27 sata_fileserver klogd: ata5: EH complete
Sep 8 09:13:31 sata_fileserver klogd: ata8: hard resetting link
Sep 8 09:13:32 sata_fileserver klogd: ata8: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
Sep 8 09:13:32 sata_fileserver klogd: ata8.00: configured for UDMA/133
Sep 8 09:13:32 sata_fileserver klogd: ata8: exception Emask 0x10 SAct 0x0 SErr 0x0 action 0x1 t4
Sep 8 09:13:32 sata_fileserver klogd: ata8: edma_err_cause=00000020 pp_flags=00000000, SError=00080000
Sep 8 09:13:32 sata_fileserver klogd: ata8.00: configured for UDMA/133
Sep 8 09:13:32 sata_fileserver klogd: ata8: EH complete
Sep 8 09:21:34 sata_fileserver syslogd 1.5.0: restart.[tip:perf/probes] kprobes/x86: Fix to add __kprobes to in-kernel fault handing functions
In reply to Masami HiramatsuCommit-ID: 62c9295f9dd250ea1bb2c8078642a275a9ce82f8 Gitweb: http://git.kernel.org/tip/62c9295f9dd250ea1bb2c8078642a275a9ce82f8 Author: Masami Hiramatsu <[email protected]> AuthorDate: Thu, 27 Aug 2009 13:23:11 -0400 Committer: Frederic Weisbecker <[email protected]> CommitDate: Sun, 30 Aug 2009 03:08:26 +0200
kprobes/x86: Fix to add __kprobes to in-kernel fault handing functions
Add __kprobes to the functions which handle in-kernel fixable page faults. Since kprobes can cause those in-kernel page faults by accessing kprobe data structures, probing those fault functions will cause fault-int3-loop (do_page_fault has already been marked as __kprobes).
LKML-Reference: <[email protected]>
--- arch/x86/mm/fault.c | 11 ++++++----- 1 files changed, 6 insertions(+), 5 deletions(-)
arch/x86/mm/fault.c +6 -5
@@ -38,7 +38,8 @@ enum x86_pf_error_code {* Returns 0 if mmiotrace is disabled, or if the fault is not * handled by mmiotrace: */ -static inline int kmmio_fault (struct pt_regs *regs,unsigned long addr) +static inline int __kprobes +kmmio_fault (struct pt_regs *regs,unsigned long addr) {if (unlikely (is_kmmio_active ()))if (kmmio_handler (regs, addr) ==1 )
@@ -46,7 +47,7 @@ static inline int kmmio_fault(struct pt_regs *regs, unsigned long addr)return 0 ; } -static inline int notify_page_fault (struct pt_regs *regs) +static inline int __kprobes notify_page_fault (struct pt_regs *regs) {int ret =0 ;
@@ -239,7 +240,7 @@ void vmalloc_sync_all(void)* * Handle a fault on the vmalloc or module mapping area */ -static noinline int vmalloc_fault(unsigned long address) +static noinline __kprobes int vmalloc_fault(unsigned long address) {unsigned long pgd_paddr;pmd_t *pmd_k;
@@ -361,7 +362,7 @@ void vmalloc_sync_all(void)* * This assumes no large pages in there. */ -static noinline int vmalloc_fault(unsigned long address) +static noinline __kprobes int vmalloc_fault(unsigned long address) {pgd_t *pgd, *pgd_ref;pud_t *pud, *pud_ref;
@@ -858,7 +859,7 @@ static int spurious_fault_check(unsigned long error_code, pte_t *pte)* There are no security implications to leaving a stale TLB when * increasing the permissions on a page. */ -static noinline int +static noinline __kprobes intspurious_fault (unsigned long error_code,unsigned long address) {pgd_t *pgd;
PATCH 4/6 kprobes: Fix to add __kprobes to notify_die
In reply to Frederic WeisbeckerAdd __kprobes to notify_die() because do_int3() calls notify_die() instead of atomic_notify_call_chain() which is already marked as __kprobes.
---
kernel/notifier.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
kernel/notifier.c +1 -1
@@ -558,7 +558,7 @@ EXPORT_SYMBOL(unregister_reboot_notifier);static ATOMIC_NOTIFIER_HEAD (die_chain); -int notrace notify_die(enum die_val val, const char *str, +int notrace __kprobes notify_die(enum die_val val, const char *str,struct pt_regs *regs,long err,int trap,int sig) {struct die_args args = {
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
Re: [PATCH -tip tracing/kprobes 4/6] kprobes: Fix to add __kprobes to notify_die
Quoted 7 lines · Masami Hiramatsu
Add
__kprobestonotify_die()becausedo_int3()callsnotify_die()instead ofatomic_notify_call_chain()which is already marked as__kprobes.Signed-off-by Masami Hiramatsu <[email protected]>Cc Frederic Weisbecker <[email protected]>Cc Ananth N Mavinakayanahalli <[email protected]>Cc Ingo Molnar <[email protected]>
[tip:perf/probes] kprobes: Fix to add __kprobes to notify_die
In reply to Masami HiramatsuCommit-ID: 8f270083587a4cb70fa14f0e2fd698eb08a4dd07 Gitweb: http://git.kernel.org/tip/8f270083587a4cb70fa14f0e2fd698eb08a4dd07 Author: Masami Hiramatsu <[email protected]> AuthorDate: Thu, 27 Aug 2009 13:23:18 -0400 Committer: Frederic Weisbecker <[email protected]> CommitDate: Sun, 30 Aug 2009 03:08:26 +0200
kprobes: Fix to add __kprobes to notify_die
Add __kprobes to notify_die() because do_int3() calls notify_die() instead of atomic_notify_call_chain() which is already marked as __kprobes.
LKML-Reference: <[email protected]>
--- kernel/notifier.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
kernel/notifier.c +1 -1
@@ -558,7 +558,7 @@ EXPORT_SYMBOL(unregister_reboot_notifier);static ATOMIC_NOTIFIER_HEAD (die_chain); -int notrace notify_die(enum die_val val, const char *str, +int notrace __kprobes notify_die(enum die_val val, const char *str,struct pt_regs *regs,long err,int trap,int sig) {struct die_args args = {
PATCH 5/6 kprobes/x86-64: Fix to move common_interrupt to .kprobes.text
In reply to Frederic WeisbeckerSince nmi, debug and int3 returns to irq_return in the common_interrupt, probing this function will cause int3-loop, so it should be marked as __kprobes.
---
arch/x86/kernel/entry_64.S | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-)
arch/x86/kernel/entry_64.S +8 -0
@@ -809,6 +809,10 @@ END(interrupt) call \func .endm +/* + * Interrupt entry/exit should be protected against kprobes + */ + .pushsection .kprobes.text, "ax" /* * The interrupt stubs push (~vector+0x80) onto the stack and * then jump to common_interrupt.
@@ -947,6 +951,10 @@ ENTRY(retint_kernel) CFI_ENDPROC END(common_interrupt) +/* + * End of kprobes section + */ + .popsection /* * APIC interrupts.
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
[tip:perf/probes] kprobes/x86-64: Fix to move common_interrupt to .kprobes.text
Commit-ID: 8222d718b3ad3ae49c48f69ae4b6a1128c9a92cf Gitweb: http://git.kernel.org/tip/8222d718b3ad3ae49c48f69ae4b6a1128c9a92cf Author: Masami Hiramatsu <[email protected]> AuthorDate: Thu, 27 Aug 2009 13:23:25 -0400 Committer: Frederic Weisbecker <[email protected]> CommitDate: Sun, 30 Aug 2009 03:08:27 +0200
kprobes/x86-64: Fix to move common_interrupt to .kprobes.text
Since nmi, debug and int3 returns to irq_return inside common_interrupt, probing this function will cause int3-loop, so it should be marked as __kprobes.
LKML-Reference: <[email protected]>
--- arch/x86/kernel/entry_64.S | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-)
arch/x86/kernel/entry_64.S +8 -0
@@ -809,6 +809,10 @@ END(interrupt) call \func .endm +/* + * Interrupt entry/exit should be protected against kprobes + */ + .pushsection .kprobes.text, "ax" /* * The interrupt stubs push (~vector+0x80) onto the stack and * then jump to common_interrupt.
@@ -947,6 +951,10 @@ ENTRY(retint_kernel) CFI_ENDPROC END(common_interrupt) +/* + * End of kprobes section + */ + .popsection /* * APIC interrupts.
PATCH 6/6 kprobes: Prohibit to probe native_get_debugreg
In reply to Frederic WeisbeckerSince do_debug() calls get_debugreg(), native_get_debugreg() will be called from singlestepping. This can cause an int3 infinit loop.
---
kernel/kprobes.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
kernel/kprobes.c +1 -0
@@ -90,6 +90,7 @@ static spinlock_t *kretprobe_table_lock_ptr(unsigned long hash)*/ static struct kprobe_blackpoint kprobe_blacklist[] = { {"preempt_schedule" ,}, + {"native_get_debugreg" ,}, {NULL }/* Terminator */ };
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]
Re: [PATCH -tip tracing/kprobes 6/6] kprobes: Prohibit to probe native_get_debugreg
Quoted 8 lines · Masami Hiramatsu
Since
do_debug()callsget_debugreg(),native_get_debugreg()will be called from singlestepping. This can cause an int3 infinit loop.Signed-off-by Masami Hiramatsu <[email protected]>Cc Frederic Weisbecker <[email protected]>Cc Ananth N Mavinakayanahalli <[email protected]>Cc Ingo Molnar <[email protected]>---
[tip:perf/probes] kprobes: Prohibit to probe native_get_debugreg
In reply to Masami HiramatsuCommit-ID: 65e234ec2c4a0659ca22531dc1372a185f088517 Gitweb: http://git.kernel.org/tip/65e234ec2c4a0659ca22531dc1372a185f088517 Author: Masami Hiramatsu <[email protected]> AuthorDate: Thu, 27 Aug 2009 13:23:32 -0400 Committer: Frederic Weisbecker <[email protected]> CommitDate: Sun, 30 Aug 2009 03:15:55 +0200
kprobes: Prohibit to probe native_get_debugreg
Since do_debug() calls get_debugreg(), native_get_debugreg() will be called from singlestepping. This can cause an int3 infinite loop.
We can't put it in the .text.kprobes section because it is inlined, then we blacklist its name.
LKML-Reference: <[email protected]>
--- kernel/kprobes.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
kernel/kprobes.c +1 -0
@@ -90,6 +90,7 @@ static spinlock_t *kretprobe_table_lock_ptr(unsigned long hash)*/ static struct kprobe_blackpoint kprobe_blacklist[] = { {"preempt_schedule" ,}, + {"native_get_debugreg" ,}, {NULL }/* Terminator */ };
Quoted 31 lines · Frederic Weisbecker
Quoted 17 lines · Masami Hiramatsu
Quoted 7 lines · Frederic Weisbecker
Ingo,
This is the kprobes tracing pile of patches. I've tested it successfully by setting some kprobes through debugfs by hand.
It brings no known regressions.
Quoted 8 lines
However, the stress test provided by Masami have revealed some unstable points. Some symbols are unsafe to probe and raise probing recursion.
I've added a tiny patch in the series that helps identifying the kprobe that has raised such situation.
For example it has learned me today that it's unsafe to traceret_from_exception()(obviously: it's on the int 3 handler path).Quoted 6 lines
Thank you, Frederic.
I'm currently fixing those problems on x86-64 (on kvm). I'll also check it on x86-32, and fix it.
Thanks
Cool.
Don't hesitate to interate through small patches that fix these sites.
Quoted 6 lines
So that I can continue to test it over time and report you what I find, may be I can try to fix some of them too.
I haven't fixed
ret_from_exceptionbecause I wasn't sure about the right thing to do: putting it in the kprobes section or blacklist its name. It's a bit more delicate to put assembly code into sections so... :)
It depends on implementation, but I think blacklist is the last resort. :) AFAIK, some assembly codes are already pushed into kprobes section.
Thank you,
Signature · 7 lines
Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: [email protected]