2009-06-17 11:18:26

by Ingo Molnar

[permalink] [raw]
Subject: [PATCH] pagemap: add page-types tool, fix build


* Andrew Morton <[email protected]> wrote:

> On Tue, 16 Jun 2009 15:32:27 -0700 [email protected] wrote:
>
> > --- a/Documentation/vm/Makefile~pagemap-add-page-types-tool
> > +++ a/Documentation/vm/Makefile
> > @@ -2,7 +2,7 @@
> > obj- := dummy.o
> >
> > # List of programs to build
> > -hostprogs-y := slabinfo
> > +hostprogs-y := slabinfo slqbinfo page-types
>
> hrm, slqbinfo shouldn't be there. Thwap at people adding
> non-2.6.31 material to linux-next, thwap at me for apparently not
> running allmodconfig.

I just ran into this while merging to latest -git - fix below.

Ingo

----------------->
>From c89779f6a5c50a8827b803193e87a3e559972391 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <[email protected]>
Date: Wed, 17 Jun 2009 13:14:21 +0200
Subject: [PATCH] pagemap: add page-types tool, fix build

Latest -git fails to build:

make[2]: *** No rule to make target `Documentation/vm/slqbinfo.c',
needed by `Documentation/vm/slqbinfo'. Stop.

but slqbinfo.c is not yet upstream. Fix the makefile.

Cc: Wu Fengguang <[email protected]>
Cc: KOSAKI Motohiro <[email protected]>
Cc: Andrew Morton <[email protected]>
Signed-off-by: Ingo Molnar <[email protected]>
---
Documentation/vm/Makefile | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/Documentation/vm/Makefile b/Documentation/vm/Makefile
index 27479d4..5bd269b 100644
--- a/Documentation/vm/Makefile
+++ b/Documentation/vm/Makefile
@@ -2,7 +2,7 @@
obj- := dummy.o

# List of programs to build
-hostprogs-y := slabinfo slqbinfo page-types
+hostprogs-y := slabinfo page-types

# Tell kbuild to always build the programs
always := $(hostprogs-y)


2009-06-17 11:32:17

by Ingo Molnar

[permalink] [raw]
Subject: WARNING: at mm/page_alloc.c:1159 get_page_from_freelist+0x325/0x655()


a new warning started popping up today, in the new page allocator
code. The allocation came from kmemleak:

WARNING: at mm/page_alloc.c:1159 get_page_from_freelist+0x325/0x655()
Hardware name: System Product Name
Modules linked in:
Pid: 4367, comm: ifup Not tainted 2.6.30-tip-04303-g5ada65e-dirty #54431
Call Trace:
[<ffffffff810dba73>] ? get_page_from_freelist+0x325/0x655
[<ffffffff8106f140>] warn_slowpath_common+0x88/0xcb
[<ffffffff8106f1a5>] warn_slowpath_null+0x22/0x38
[<ffffffff810dba73>] get_page_from_freelist+0x325/0x655
[<ffffffff810dc18c>] __alloc_pages_nodemask+0x14c/0x5b0
[<ffffffff811063e1>] ? deactivate_slab+0xce/0x16b
[<ffffffff8103b1c8>] ? native_sched_clock+0x40/0x79
[<ffffffff811063e1>] ? deactivate_slab+0xce/0x16b
[<ffffffff811063e1>] ? deactivate_slab+0xce/0x16b
[<ffffffff81102417>] alloc_pages_current+0xcc/0xeb
[<ffffffff81107a78>] alloc_slab_page+0x2a/0x7e
[<ffffffff81107b27>] new_slab+0x5b/0x210
[<ffffffff811063fa>] ? deactivate_slab+0xe7/0x16b
[<ffffffff81108253>] __slab_alloc+0x214/0x3da
[<ffffffff8110f58d>] ? kmemleak_alloc+0x83/0x35a
[<ffffffff8110f58d>] ? kmemleak_alloc+0x83/0x35a
[<ffffffff8110863c>] kmem_cache_alloc+0xac/0x14e
[<ffffffff8110f58d>] kmemleak_alloc+0x83/0x35a
[<ffffffff812b6436>] ? cfq_get_queue+0x101/0x231
[<ffffffff81108511>] kmem_cache_alloc_node+0xf8/0x177
[<ffffffff812b6436>] ? cfq_get_queue+0x101/0x231
[<ffffffff812b6436>] cfq_get_queue+0x101/0x231
[<ffffffff81847362>] ? _spin_lock_irqsave+0x7f/0xa1
[<ffffffff812b68b1>] cfq_set_request+0x2a0/0x34c
[<ffffffff812a390a>] elv_set_request+0x29/0x4e
[<ffffffff812a7e3b>] get_request+0x208/0x2ea
[<ffffffff812a8101>] ? __make_request+0x48/0x3c8
[<ffffffff812a7f54>] get_request_wait+0x37/0x19c
[<ffffffff812a8101>] ? __make_request+0x48/0x3c8
[<ffffffff812a8332>] __make_request+0x279/0x3c8
[<ffffffff812a6385>] generic_make_request+0x2ed/0x352
[<ffffffff812a64bf>] submit_bio+0xd5/0xf2
[<ffffffff81137aa8>] submit_bh+0x110/0x14a
[<ffffffff81139982>] ll_rw_block+0xc4/0x120
[<ffffffff81180bde>] ext3_bread+0x47/0x87
[<ffffffff81183f4f>] ext3_find_entry+0x13a/0x5f2
[<ffffffff8109999b>] ? __lock_acquire+0x1f2/0x40e
[<ffffffff81125ed3>] ? d_alloc+0x19c/0x1ef
[<ffffffff81098d7f>] ? lock_release_holdtime+0x3f/0x14c
[<ffffffff81125ed3>] ? d_alloc+0x19c/0x1ef
[<ffffffff81184cbd>] ext3_lookup+0x43/0x10c
[<ffffffff8111b7cf>] do_lookup+0xe4/0x182
[<ffffffff8111c652>] __link_path_walk+0x667/0x7d3
[<ffffffff8111cdc1>] path_walk+0x78/0xf7
[<ffffffff8111e157>] do_path_lookup+0x39/0xac
[<ffffffff8111fa5f>] user_path_at+0x61/0xaf
[<ffffffff8112c0c1>] ? mntput_no_expire+0x33/0xdb
[<ffffffff81116230>] ? cp_new_stat+0xf8/0x119
[<ffffffff8111645c>] vfs_fstatat+0x44/0x85
[<ffffffff81116622>] vfs_stat+0x29/0x3f
[<ffffffff81116661>] sys_newstat+0x29/0x5e
[<ffffffff818469c8>] ? lockdep_sys_exit_thunk+0x35/0x67
[<ffffffff81032f02>] system_call_fastpath+0x16/0x1b
---[ end trace 2fb5866b65128972 ]---
4k 262128 large 0 gb 0 x 262128[ffff880000000000-ffff88003ffef000] miss 0

Config attached.

Ingo

#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.30
# Wed Jun 17 13:23:03 2009
#
CONFIG_64BIT=y
# CONFIG_X86_32 is not set
CONFIG_X86_64=y
CONFIG_X86=y
CONFIG_OUTPUT_FORMAT="elf64-x86-64"
CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig"
CONFIG_GENERIC_TIME=y
CONFIG_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=y
CONFIG_MMU=y
CONFIG_ZONE_DMA=y
CONFIG_GENERIC_ISA_DMA=y
CONFIG_GENERIC_IOMAP=y
CONFIG_GENERIC_BUG=y
CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_GENERIC_GPIO=y
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
CONFIG_RWSEM_GENERIC_SPINLOCK=y
# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_GENERIC_TIME_VSYSCALL=y
CONFIG_ARCH_HAS_CPU_RELAX=y
CONFIG_ARCH_HAS_DEFAULT_IDLE=y
CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
CONFIG_HAVE_SETUP_PER_CPU_AREA=y
CONFIG_HAVE_DYNAMIC_PER_CPU_AREA=y
CONFIG_HAVE_CPUMASK_OF_CPU_MAP=y
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y
CONFIG_ZONE_DMA32=y
CONFIG_ARCH_POPULATES_NODE_MAP=y
CONFIG_AUDIT_ARCH=y
CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
CONFIG_GENERIC_HARDIRQS=y
CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_GENERIC_PENDING_IRQ=y
CONFIG_USE_GENERIC_SMP_HELPERS=y
CONFIG_X86_64_SMP=y
CONFIG_X86_HT=y
CONFIG_X86_TRAMPOLINE=y
# CONFIG_KTIME_SCALAR is not set
CONFIG_BOOTPARAM_SUPPORT_NOT_WANTED=y
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"

#
# General setup
#
CONFIG_EXPERIMENTAL=y
CONFIG_BROKEN_BOOT_ALLOWED4=y
# CONFIG_BROKEN_BOOT_ALLOWED3 is not set
CONFIG_BROKEN_BOOT_EUROPE=y
CONFIG_BROKEN_BOOT_TITAN=y
CONFIG_LOCK_KERNEL=y
CONFIG_INIT_ENV_ARG_LIMIT=32
CONFIG_LOCALVERSION=""
CONFIG_LOCALVERSION_AUTO=y
CONFIG_HAVE_KERNEL_GZIP=y
CONFIG_HAVE_KERNEL_BZIP2=y
CONFIG_HAVE_KERNEL_LZMA=y
# CONFIG_KERNEL_GZIP is not set
# CONFIG_KERNEL_BZIP2 is not set
CONFIG_KERNEL_LZMA=y
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
CONFIG_SYSVIPC_SYSCTL=y
CONFIG_POSIX_MQUEUE=y
CONFIG_POSIX_MQUEUE_SYSCTL=y
CONFIG_BSD_PROCESS_ACCT=y
CONFIG_BSD_PROCESS_ACCT_V3=y
CONFIG_TASKSTATS=y
# CONFIG_TASK_DELAY_ACCT is not set
CONFIG_TASK_XACCT=y
CONFIG_TASK_IO_ACCOUNTING=y
CONFIG_AUDIT=y
CONFIG_AUDITSYSCALL=y
CONFIG_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 set
# CONFIG_IKCONFIG is not set
CONFIG_LOG_BUF_SHIFT=20
CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
# CONFIG_GROUP_SCHED is not set
CONFIG_CGROUPS=y
# CONFIG_CGROUP_DEBUG is not set
# CONFIG_CGROUP_NS is not set
CONFIG_CGROUP_FREEZER=y
CONFIG_CGROUP_DEVICE=y
# CONFIG_CPUSETS is not set
# CONFIG_CGROUP_CPUACCT is not set
# CONFIG_RESOURCE_COUNTERS is not set
CONFIG_SYSFS_DEPRECATED=y
CONFIG_SYSFS_DEPRECATED_V2=y
CONFIG_RELAY=y
CONFIG_NAMESPACES=y
CONFIG_UTS_NS=y
CONFIG_IPC_NS=y
CONFIG_USER_NS=y
# CONFIG_PID_NS is not set
# CONFIG_NET_NS is not set
# CONFIG_BLK_DEV_INITRD is not set
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SYSCTL=y
CONFIG_ANON_INODES=y
# CONFIG_EMBEDDED is not set
CONFIG_UID16=y
CONFIG_SYSCTL_SYSCALL=y
CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y
# CONFIG_KALLSYMS_EXTRA_PASS is not set
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_PCSPKR_PLATFORM=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
CONFIG_SIGNALFD=y
CONFIG_TIMERFD=y
CONFIG_EVENTFD=y
CONFIG_SHMEM=y
CONFIG_AIO=y
CONFIG_HAVE_PERF_COUNTERS=y

#
# Performance Counters
#
CONFIG_PERF_COUNTERS=y
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_PCI_QUIRKS=y
CONFIG_SLUB_DEBUG=y
CONFIG_STRIP_ASM_SYMS=y
# CONFIG_COMPAT_BRK is not set
# CONFIG_SLAB is not set
CONFIG_SLUB=y
# CONFIG_SLOB is not set
CONFIG_PROFILING=y
CONFIG_TRACEPOINTS=y
CONFIG_MARKERS=y
# CONFIG_OPROFILE is not set
CONFIG_HAVE_OPROFILE=y
# CONFIG_KPROBES is not set
CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
CONFIG_HAVE_IOREMAP_PROT=y
CONFIG_HAVE_KPROBES=y
CONFIG_HAVE_KRETPROBES=y
CONFIG_HAVE_ARCH_TRACEHOOK=y
CONFIG_HAVE_DMA_API_DEBUG=y
CONFIG_HAVE_HW_BREAKPOINT=y
CONFIG_SLOW_WORK=y
# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
CONFIG_SLABINFO=y
CONFIG_RT_MUTEXES=y
CONFIG_BASE_SMALL=0
CONFIG_MODULES=y
# CONFIG_MODULE_FORCE_LOAD is not set
# CONFIG_MODULE_UNLOAD is not set
CONFIG_MODVERSIONS=y
# CONFIG_MODULE_SRCVERSION_ALL is not set
CONFIG_STOP_MACHINE=y
CONFIG_BLOCK=y
CONFIG_BLK_DEV_BSG=y
# CONFIG_BLK_DEV_INTEGRITY is not set
CONFIG_BLOCK_COMPAT=y

#
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_AS=y
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_CFQ=y
# CONFIG_DEFAULT_AS is not set
# CONFIG_DEFAULT_DEADLINE is not set
CONFIG_DEFAULT_CFQ=y
# CONFIG_DEFAULT_NOOP is not set
CONFIG_DEFAULT_IOSCHED="cfq"
CONFIG_PREEMPT_NOTIFIERS=y
CONFIG_FREEZER=y

#
# Processor type and features
#
CONFIG_TICK_ONESHOT=y
CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
CONFIG_SMP_SUPPORT=y
CONFIG_SPARSE_IRQ=y
CONFIG_NUMA_IRQ_DESC=y
CONFIG_X86_MPPARSE=y
# CONFIG_X86_EXTENDED_PLATFORM is not set
# CONFIG_SCHED_OMIT_FRAME_POINTER is not set
CONFIG_PARAVIRT_GUEST=y
CONFIG_XEN=y
CONFIG_XEN_MAX_DOMAIN_MEMORY=32
CONFIG_XEN_SAVE_RESTORE=y
CONFIG_XEN_DEBUG_FS=y
# CONFIG_KVM_CLOCK is not set
CONFIG_KVM_GUEST=y
CONFIG_PARAVIRT=y
# CONFIG_PARAVIRT_SPINLOCKS is not set
CONFIG_PARAVIRT_CLOCK=y
CONFIG_PARAVIRT_DEBUG=y
CONFIG_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 set
# CONFIG_MPENTIUMIII is not set
# CONFIG_MPENTIUMM is not set
# CONFIG_MPENTIUM4 is not set
# CONFIG_MK6 is not set
# CONFIG_MK7 is not set
# CONFIG_MK8 is not set
# CONFIG_MCRUSOE is not set
# CONFIG_MEFFICEON is not set
# CONFIG_MWINCHIPC6 is not set
# CONFIG_MWINCHIP3D is not set
# CONFIG_MGEODEGX1 is not set
# CONFIG_MGEODE_LX is not set
# CONFIG_MCYRIXIII is not set
# CONFIG_MVIAC3_2 is not set
# CONFIG_MVIAC7 is not set
# CONFIG_MPSC is not set
# CONFIG_MCORE2 is not set
CONFIG_GENERIC_CPU=y
CONFIG_X86_CPU=y
CONFIG_X86_L1_CACHE_BYTES=64
CONFIG_X86_INTERNODE_CACHE_BYTES=64
CONFIG_X86_CMPXCHG=y
CONFIG_X86_L1_CACHE_SHIFT=6
CONFIG_X86_WP_WORKS_OK=y
CONFIG_X86_TSC=y
CONFIG_X86_CMPXCHG64=y
CONFIG_X86_CMOV=y
CONFIG_X86_MINIMUM_CPU_FAMILY=64
CONFIG_X86_DEBUGCTLMSR=y
CONFIG_CPU_SUP_INTEL=y
CONFIG_CPU_SUP_AMD=y
CONFIG_CPU_SUP_CENTAUR=y
# CONFIG_X86_DS is not set
CONFIG_HPET_TIMER=y
CONFIG_HPET_EMULATE_RTC=y
CONFIG_DMI=y
CONFIG_GART_IOMMU=y
CONFIG_CALGARY_IOMMU=y
CONFIG_CALGARY_IOMMU_ENABLED_BY_DEFAULT=y
CONFIG_SWIOTLB=y
CONFIG_IOMMU_HELPER=y
# CONFIG_IOMMU_API is not set
CONFIG_MAXSMP=y
CONFIG_NR_CPUS=4096
CONFIG_SCHED_SMT=y
# CONFIG_SCHED_MC is not set
# CONFIG_PREEMPT_NONE is not set
CONFIG_PREEMPT_VOLUNTARY=y
# CONFIG_PREEMPT is not set
CONFIG_X86_LOCAL_APIC=y
CONFIG_X86_IO_APIC=y
CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
# CONFIG_X86_MCE is not set
CONFIG_I8K=m
# CONFIG_MICROCODE is not set
CONFIG_X86_MSR=m
CONFIG_X86_CPUID=m
# CONFIG_X86_CPU_DEBUG is not set
CONFIG_UP_WANTED_1=y
CONFIG_UP_WANTED_2=y
# CONFIG_UP_WANTED is not set
CONFIG_SMP=y
CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
CONFIG_DIRECT_GBPAGES=y
CONFIG_NUMA=y
CONFIG_K8_NUMA=y
# CONFIG_NUMA_EMU is not set
CONFIG_NODES_SHIFT=9
CONFIG_ARCH_SPARSEMEM_DEFAULT=y
CONFIG_ARCH_SPARSEMEM_ENABLE=y
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
CONFIG_SELECT_MEMORY_MODEL=y
# CONFIG_FLATMEM_MANUAL is not set
# CONFIG_DISCONTIGMEM_MANUAL is not set
CONFIG_SPARSEMEM_MANUAL=y
CONFIG_SPARSEMEM=y
CONFIG_NEED_MULTIPLE_NODES=y
CONFIG_HAVE_MEMORY_PRESENT=y
CONFIG_SPARSEMEM_EXTREME=y
CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
CONFIG_SPARSEMEM_VMEMMAP=y

#
# Memory hotplug is currently incompatible with Software Suspend
#
CONFIG_PAGEFLAGS_EXTENDED=y
CONFIG_SPLIT_PTLOCK_CPUS=4
CONFIG_MIGRATION=y
CONFIG_PHYS_ADDR_T_64BIT=y
CONFIG_ZONE_DMA_FLAG=1
CONFIG_BOUNCE=y
CONFIG_VIRT_TO_BUS=y
CONFIG_HAVE_MLOCK=y
CONFIG_HAVE_MLOCKED_PAGE_BIT=y
CONFIG_MMU_NOTIFIER=y
CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
CONFIG_X86_CHECK_BIOS_CORRUPTION=y
CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y
# CONFIG_X86_RESERVE_LOW_64K is not set
# CONFIG_MTRR is not set
CONFIG_SECCOMP=y
CONFIG_CC_STACKPROTECTOR_ALL=y
CONFIG_CC_STACKPROTECTOR=y
# CONFIG_HZ_100 is not set
# CONFIG_HZ_250 is not set
CONFIG_HZ_300=y
# CONFIG_HZ_1000 is not set
CONFIG_HZ=300
CONFIG_SCHED_HRTICK=y
# CONFIG_KEXEC is not set
# CONFIG_CRASH_DUMP is not set
CONFIG_PHYSICAL_START=0x1000000
CONFIG_RELOCATABLE=y
CONFIG_PHYSICAL_ALIGN=0x1000000
CONFIG_HOTPLUG_CPU=y
CONFIG_COMPAT_VDSO=y
CONFIG_CMDLINE_BOOL=y
CONFIG_CMDLINE=""
CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y

#
# Power management and ACPI options
#
CONFIG_ARCH_HIBERNATION_HEADER=y
CONFIG_PM=y
# CONFIG_PM_DEBUG is not set
CONFIG_PM_SLEEP_SMP=y
CONFIG_PM_SLEEP=y
# CONFIG_SUSPEND is not set
CONFIG_HIBERNATION_NVS=y
CONFIG_HIBERNATION=y
CONFIG_PM_STD_PARTITION=""
# CONFIG_ACPI is not set

#
# CPU Frequency scaling
#
# CONFIG_CPU_FREQ is not set
CONFIG_CPU_IDLE=y
CONFIG_CPU_IDLE_GOV_LADDER=y
CONFIG_CPU_IDLE_GOV_MENU=y

#
# Memory power savings
#
# CONFIG_I7300_IDLE is not set

#
# Bus options (PCI etc.)
#
CONFIG_PCI=y
CONFIG_PCI_DIRECT=y
CONFIG_PCI_DOMAINS=y
CONFIG_PCIEPORTBUS=y
CONFIG_HOTPLUG_PCI_PCIE=m
CONFIG_PCIEAER=y
CONFIG_PCIEASPM=y
# CONFIG_PCIEASPM_DEBUG is not set
CONFIG_ARCH_SUPPORTS_MSI=y
CONFIG_PCI_MSI=y
CONFIG_PCI_LEGACY=y
# CONFIG_PCI_DEBUG is not set
CONFIG_PCI_STUB=y
CONFIG_HT_IRQ=y
CONFIG_PCI_IOV=y
CONFIG_ISA_DMA_API=y
CONFIG_K8_NB=y
CONFIG_PCCARD=m
# CONFIG_PCMCIA_DEBUG is not set
CONFIG_PCMCIA=m
CONFIG_PCMCIA_LOAD_CIS=y
# CONFIG_PCMCIA_IOCTL is not set
CONFIG_CARDBUS=y

#
# PC-card bridges
#
CONFIG_YENTA=m
CONFIG_YENTA_O2=y
CONFIG_YENTA_RICOH=y
CONFIG_YENTA_TI=y
CONFIG_YENTA_ENE_TUNE=y
CONFIG_YENTA_TOSHIBA=y
CONFIG_PD6729=m
CONFIG_I82092=m
CONFIG_PCCARD_NONSTATIC=m
CONFIG_HOTPLUG_PCI=m
CONFIG_HOTPLUG_PCI_FAKE=m
CONFIG_HOTPLUG_PCI_CPCI=y
# CONFIG_HOTPLUG_PCI_CPCI_ZT5550 is not set
CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m
# CONFIG_HOTPLUG_PCI_SHPC is not set

#
# Executable file formats / Emulations
#
CONFIG_BINFMT_ELF=y
CONFIG_COMPAT_BINFMT_ELF=y
CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
# CONFIG_HAVE_AOUT is not set
CONFIG_BINFMT_MISC=m
CONFIG_IA32_EMULATION=y
CONFIG_IA32_AOUT=y
CONFIG_COMPAT=y
CONFIG_COMPAT_FOR_U64_ALIGNMENT=y
CONFIG_SYSVIPC_COMPAT=y
CONFIG_NET=y

#
# Networking options
#
CONFIG_PACKET=y
# CONFIG_PACKET_MMAP is not set
CONFIG_UNIX=y
CONFIG_XFRM=y
CONFIG_XFRM_USER=y
# CONFIG_XFRM_SUB_POLICY is not set
CONFIG_XFRM_MIGRATE=y
CONFIG_XFRM_STATISTICS=y
CONFIG_XFRM_IPCOMP=m
CONFIG_NET_KEY=m
CONFIG_NET_KEY_MIGRATE=y
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
CONFIG_IP_ADVANCED_ROUTER=y
# CONFIG_ASK_IP_FIB_HASH is not set
CONFIG_IP_FIB_TRIE=y
# CONFIG_IP_FIB_HASH is not set
# CONFIG_IP_FIB_TRIE_STATS is not set
CONFIG_IP_MULTIPLE_TABLES=y
# CONFIG_IP_ROUTE_MULTIPATH is not set
# CONFIG_IP_ROUTE_VERBOSE is not set
# CONFIG_IP_PNP is not set
CONFIG_NET_IPIP=y
# CONFIG_NET_IPGRE is not set
CONFIG_IP_MROUTE=y
CONFIG_IP_PIMSM_V1=y
# CONFIG_IP_PIMSM_V2 is not set
# CONFIG_ARPD is not set
CONFIG_SYN_COOKIES=y
# CONFIG_INET_AH is not set
# CONFIG_INET_ESP is not set
CONFIG_INET_IPCOMP=m
CONFIG_INET_XFRM_TUNNEL=m
CONFIG_INET_TUNNEL=y
CONFIG_INET_XFRM_MODE_TRANSPORT=y
CONFIG_INET_XFRM_MODE_TUNNEL=m
CONFIG_INET_XFRM_MODE_BEET=y
CONFIG_INET_LRO=y
CONFIG_INET_DIAG=m
CONFIG_INET_TCP_DIAG=m
CONFIG_TCP_CONG_ADVANCED=y
CONFIG_TCP_CONG_BIC=y
# CONFIG_TCP_CONG_CUBIC is not set
CONFIG_TCP_CONG_WESTWOOD=m
CONFIG_TCP_CONG_HTCP=m
CONFIG_TCP_CONG_HSTCP=y
CONFIG_TCP_CONG_HYBLA=y
# CONFIG_TCP_CONG_VEGAS is not set
CONFIG_TCP_CONG_SCALABLE=y
CONFIG_TCP_CONG_LP=y
CONFIG_TCP_CONG_VENO=m
# CONFIG_TCP_CONG_YEAH is not set
CONFIG_TCP_CONG_ILLINOIS=y
CONFIG_DEFAULT_BIC=y
# CONFIG_DEFAULT_CUBIC is not set
# CONFIG_DEFAULT_HTCP is not set
# CONFIG_DEFAULT_VEGAS is not set
# CONFIG_DEFAULT_WESTWOOD is not set
# CONFIG_DEFAULT_RENO is not set
CONFIG_DEFAULT_TCP_CONG="bic"
CONFIG_TCP_MD5SIG=y
CONFIG_IPV6=y
# CONFIG_IPV6_PRIVACY is not set
CONFIG_IPV6_ROUTER_PREF=y
CONFIG_IPV6_ROUTE_INFO=y
CONFIG_IPV6_OPTIMISTIC_DAD=y
# CONFIG_INET6_AH is not set
CONFIG_INET6_ESP=y
# CONFIG_INET6_IPCOMP is not set
CONFIG_IPV6_MIP6=y
# CONFIG_INET6_XFRM_TUNNEL is not set
CONFIG_INET6_TUNNEL=y
# CONFIG_INET6_XFRM_MODE_TRANSPORT is not set
CONFIG_INET6_XFRM_MODE_TUNNEL=y
CONFIG_INET6_XFRM_MODE_BEET=y
CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
CONFIG_IPV6_SIT=y
CONFIG_IPV6_NDISC_NODETYPE=y
CONFIG_IPV6_TUNNEL=y
# CONFIG_IPV6_MULTIPLE_TABLES is not set
CONFIG_IPV6_MROUTE=y
# CONFIG_IPV6_PIMSM_V2 is not set
CONFIG_NETLABEL=y
CONFIG_NETWORK_SECMARK=y
CONFIG_NETFILTER=y
CONFIG_NETFILTER_DEBUG=y
CONFIG_NETFILTER_ADVANCED=y
CONFIG_BRIDGE_NETFILTER=y

#
# Core Netfilter Configuration
#
CONFIG_NETFILTER_NETLINK=y
CONFIG_NETFILTER_NETLINK_QUEUE=m
CONFIG_NETFILTER_NETLINK_LOG=y
CONFIG_NF_CONNTRACK=y
CONFIG_NF_CT_ACCT=y
CONFIG_NF_CONNTRACK_MARK=y
# CONFIG_NF_CONNTRACK_SECMARK is not set
CONFIG_NF_CONNTRACK_EVENTS=y
CONFIG_NF_CT_PROTO_DCCP=m
CONFIG_NF_CT_PROTO_GRE=y
CONFIG_NF_CT_PROTO_SCTP=y
# CONFIG_NF_CT_PROTO_UDPLITE is not set
CONFIG_NF_CONNTRACK_AMANDA=y
CONFIG_NF_CONNTRACK_FTP=m
CONFIG_NF_CONNTRACK_H323=m
CONFIG_NF_CONNTRACK_IRC=y
CONFIG_NF_CONNTRACK_NETBIOS_NS=m
CONFIG_NF_CONNTRACK_PPTP=y
CONFIG_NF_CONNTRACK_SANE=y
# CONFIG_NF_CONNTRACK_SIP is not set
CONFIG_NF_CONNTRACK_TFTP=m
CONFIG_NF_CT_NETLINK=y
CONFIG_NETFILTER_TPROXY=m
CONFIG_NETFILTER_XTABLES=y
# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
CONFIG_NETFILTER_XT_TARGET_DSCP=m
CONFIG_NETFILTER_XT_TARGET_HL=m
# CONFIG_NETFILTER_XT_TARGET_LED is not set
# CONFIG_NETFILTER_XT_TARGET_MARK is not set
CONFIG_NETFILTER_XT_TARGET_NFLOG=m
CONFIG_NETFILTER_XT_TARGET_NFQUEUE=y
# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set
CONFIG_NETFILTER_XT_TARGET_RATEEST=y
# CONFIG_NETFILTER_XT_TARGET_TPROXY is not set
CONFIG_NETFILTER_XT_TARGET_TRACE=m
CONFIG_NETFILTER_XT_TARGET_SECMARK=y
CONFIG_NETFILTER_XT_TARGET_TCPMSS=y
CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
CONFIG_NETFILTER_XT_MATCH_COMMENT=m
CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
# CONFIG_NETFILTER_XT_MATCH_CONNMARK is not set
CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y
CONFIG_NETFILTER_XT_MATCH_DCCP=m
CONFIG_NETFILTER_XT_MATCH_DSCP=y
# CONFIG_NETFILTER_XT_MATCH_ESP is not set
CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=y
CONFIG_NETFILTER_XT_MATCH_HELPER=y
# CONFIG_NETFILTER_XT_MATCH_HL is not set
CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
CONFIG_NETFILTER_XT_MATCH_LENGTH=y
# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
# CONFIG_NETFILTER_XT_MATCH_MAC is not set
CONFIG_NETFILTER_XT_MATCH_MARK=m
CONFIG_NETFILTER_XT_MATCH_MULTIPORT=y
CONFIG_NETFILTER_XT_MATCH_OWNER=m
CONFIG_NETFILTER_XT_MATCH_POLICY=y
# CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set
CONFIG_NETFILTER_XT_MATCH_PKTTYPE=y
CONFIG_NETFILTER_XT_MATCH_QUOTA=y
CONFIG_NETFILTER_XT_MATCH_RATEEST=y
CONFIG_NETFILTER_XT_MATCH_REALM=y
CONFIG_NETFILTER_XT_MATCH_RECENT=y
CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT=y
CONFIG_NETFILTER_XT_MATCH_SCTP=m
# CONFIG_NETFILTER_XT_MATCH_SOCKET is not set
CONFIG_NETFILTER_XT_MATCH_STATE=y
CONFIG_NETFILTER_XT_MATCH_STATISTIC=y
CONFIG_NETFILTER_XT_MATCH_STRING=y
# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
CONFIG_NETFILTER_XT_MATCH_TIME=y
CONFIG_NETFILTER_XT_MATCH_U32=y
CONFIG_NETFILTER_XT_MATCH_OSF=m
CONFIG_IP_VS=y
CONFIG_IP_VS_IPV6=y
CONFIG_IP_VS_DEBUG=y
CONFIG_IP_VS_TAB_BITS=12

#
# IPVS transport protocol load balancing support
#
CONFIG_IP_VS_PROTO_TCP=y
CONFIG_IP_VS_PROTO_UDP=y
# CONFIG_IP_VS_PROTO_ESP is not set
# CONFIG_IP_VS_PROTO_AH is not set

#
# IPVS scheduler
#
CONFIG_IP_VS_RR=m
CONFIG_IP_VS_WRR=y
# CONFIG_IP_VS_LC is not set
# CONFIG_IP_VS_WLC is not set
# CONFIG_IP_VS_LBLC is not set
CONFIG_IP_VS_LBLCR=m
CONFIG_IP_VS_DH=y
# CONFIG_IP_VS_SH is not set
# CONFIG_IP_VS_SED is not set
# CONFIG_IP_VS_NQ is not set

#
# IPVS application helper
#
CONFIG_IP_VS_FTP=y

#
# IP: Netfilter Configuration
#
# CONFIG_NF_DEFRAG_IPV4 is not set
# CONFIG_NF_CONNTRACK_IPV4 is not set
# CONFIG_IP_NF_QUEUE is not set
CONFIG_IP_NF_IPTABLES=y
CONFIG_IP_NF_MATCH_ADDRTYPE=y
# CONFIG_IP_NF_MATCH_AH is not set
CONFIG_IP_NF_MATCH_ECN=m
# CONFIG_IP_NF_MATCH_TTL is not set
# CONFIG_IP_NF_FILTER is not set
CONFIG_IP_NF_TARGET_LOG=m
CONFIG_IP_NF_TARGET_ULOG=y
CONFIG_IP_NF_MANGLE=y
# CONFIG_IP_NF_TARGET_ECN is not set
# CONFIG_IP_NF_TARGET_TTL is not set
# CONFIG_IP_NF_RAW is not set
CONFIG_IP_NF_SECURITY=m
# CONFIG_IP_NF_ARPTABLES is not set

#
# IPv6: Netfilter Configuration
#
CONFIG_NF_CONNTRACK_IPV6=y
# CONFIG_IP6_NF_QUEUE is not set
CONFIG_IP6_NF_IPTABLES=y
# CONFIG_IP6_NF_MATCH_AH is not set
# CONFIG_IP6_NF_MATCH_EUI64 is not set
CONFIG_IP6_NF_MATCH_FRAG=y
# CONFIG_IP6_NF_MATCH_OPTS is not set
# CONFIG_IP6_NF_MATCH_HL is not set
# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
CONFIG_IP6_NF_MATCH_MH=y
# CONFIG_IP6_NF_MATCH_RT is not set
CONFIG_IP6_NF_TARGET_HL=m
CONFIG_IP6_NF_TARGET_LOG=y
# CONFIG_IP6_NF_FILTER is not set
# CONFIG_IP6_NF_MANGLE is not set
CONFIG_IP6_NF_RAW=m
CONFIG_IP6_NF_SECURITY=y

#
# DECnet: Netfilter Configuration
#
# CONFIG_DECNET_NF_GRABULATOR is not set
CONFIG_BRIDGE_NF_EBTABLES=m
CONFIG_BRIDGE_EBT_BROUTE=m
CONFIG_BRIDGE_EBT_T_FILTER=m
# CONFIG_BRIDGE_EBT_T_NAT is not set
CONFIG_BRIDGE_EBT_802_3=m
# CONFIG_BRIDGE_EBT_AMONG is not set
# CONFIG_BRIDGE_EBT_ARP is not set
CONFIG_BRIDGE_EBT_IP=m
CONFIG_BRIDGE_EBT_IP6=m
# CONFIG_BRIDGE_EBT_LIMIT is not set
CONFIG_BRIDGE_EBT_MARK=m
CONFIG_BRIDGE_EBT_PKTTYPE=m
CONFIG_BRIDGE_EBT_STP=m
CONFIG_BRIDGE_EBT_VLAN=m
# CONFIG_BRIDGE_EBT_ARPREPLY is not set
# CONFIG_BRIDGE_EBT_DNAT is not set
# CONFIG_BRIDGE_EBT_MARK_T is not set
# CONFIG_BRIDGE_EBT_REDIRECT is not set
# CONFIG_BRIDGE_EBT_SNAT is not set
CONFIG_BRIDGE_EBT_LOG=m
CONFIG_BRIDGE_EBT_ULOG=m
CONFIG_BRIDGE_EBT_NFLOG=m
CONFIG_IP_DCCP=m
CONFIG_INET_DCCP_DIAG=m

#
# DCCP CCIDs Configuration (EXPERIMENTAL)
#
CONFIG_IP_DCCP_CCID2_DEBUG=y
# CONFIG_IP_DCCP_CCID3 is not set

#
# DCCP Kernel Hacking
#
# CONFIG_IP_DCCP_DEBUG is not set
CONFIG_IP_SCTP=y
CONFIG_SCTP_DBG_MSG=y
# CONFIG_SCTP_DBG_OBJCNT is not set
# CONFIG_SCTP_HMAC_NONE is not set
# CONFIG_SCTP_HMAC_SHA1 is not set
CONFIG_SCTP_HMAC_MD5=y
CONFIG_TIPC=m
CONFIG_TIPC_ADVANCED=y
CONFIG_TIPC_ZONES=3
CONFIG_TIPC_CLUSTERS=1
CONFIG_TIPC_NODES=255
CONFIG_TIPC_SLAVE_NODES=0
CONFIG_TIPC_PORTS=8191
CONFIG_TIPC_LOG=0
# CONFIG_TIPC_DEBUG is not set
# CONFIG_ATM is not set
CONFIG_STP=y
CONFIG_BRIDGE=y
# CONFIG_NET_DSA is not set
CONFIG_VLAN_8021Q=m
# CONFIG_VLAN_8021Q_GVRP is not set
CONFIG_DECNET=m
CONFIG_DECNET_ROUTER=y
CONFIG_LLC=y
CONFIG_LLC2=y
# CONFIG_IPX is not set
CONFIG_ATALK=m
# CONFIG_DEV_APPLETALK is not set
# CONFIG_X25 is not set
CONFIG_LAPB=m
CONFIG_ECONET=m
# CONFIG_ECONET_AUNUDP is not set
CONFIG_ECONET_NATIVE=y
CONFIG_WAN_ROUTER=m
# CONFIG_PHONET is not set
CONFIG_IEEE802154=y
CONFIG_NET_SCHED=y

#
# Queueing/Scheduling
#
CONFIG_NET_SCH_CBQ=m
# CONFIG_NET_SCH_HTB is not set
CONFIG_NET_SCH_HFSC=y
CONFIG_NET_SCH_PRIO=y
CONFIG_NET_SCH_MULTIQ=y
CONFIG_NET_SCH_RED=y
CONFIG_NET_SCH_SFQ=m
CONFIG_NET_SCH_TEQL=m
CONFIG_NET_SCH_TBF=m
# CONFIG_NET_SCH_GRED is not set
CONFIG_NET_SCH_DSMARK=m
# CONFIG_NET_SCH_NETEM is not set
CONFIG_NET_SCH_DRR=y
# CONFIG_NET_SCH_INGRESS is not set

#
# Classification
#
CONFIG_NET_CLS=y
# CONFIG_NET_CLS_BASIC is not set
CONFIG_NET_CLS_TCINDEX=m
CONFIG_NET_CLS_ROUTE4=y
CONFIG_NET_CLS_ROUTE=y
CONFIG_NET_CLS_FW=m
CONFIG_NET_CLS_U32=m
CONFIG_CLS_U32_PERF=y
CONFIG_CLS_U32_MARK=y
# CONFIG_NET_CLS_RSVP is not set
CONFIG_NET_CLS_RSVP6=m
CONFIG_NET_CLS_FLOW=y
CONFIG_NET_CLS_CGROUP=y
# CONFIG_NET_EMATCH is not set
CONFIG_NET_CLS_ACT=y
CONFIG_NET_ACT_POLICE=m
# CONFIG_NET_ACT_GACT is not set
CONFIG_NET_ACT_MIRRED=y
# CONFIG_NET_ACT_IPT is not set
# CONFIG_NET_ACT_NAT is not set
# CONFIG_NET_ACT_PEDIT is not set
CONFIG_NET_ACT_SIMP=y
CONFIG_NET_ACT_SKBEDIT=m
CONFIG_NET_CLS_IND=y
CONFIG_NET_SCH_FIFO=y
CONFIG_DCB=y

#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
CONFIG_NET_DROP_MONITOR=y
CONFIG_HAMRADIO=y

#
# Packet Radio protocols
#
CONFIG_AX25=y
CONFIG_AX25_DAMA_SLAVE=y
CONFIG_NETROM=y
CONFIG_ROSE=y

#
# AX.25 network device drivers
#
CONFIG_MKISS=y
CONFIG_6PACK=y
# CONFIG_BPQETHER is not set
# CONFIG_BAYCOM_SER_FDX is not set
# CONFIG_BAYCOM_SER_HDX is not set
CONFIG_BAYCOM_PAR=y
CONFIG_YAM=m
CONFIG_CAN=m
# CONFIG_CAN_RAW is not set
CONFIG_CAN_BCM=m

#
# CAN Device Drivers
#
CONFIG_CAN_VCAN=m
CONFIG_CAN_DEV=m
CONFIG_CAN_CALC_BITTIMING=y
CONFIG_CAN_SJA1000=m
CONFIG_CAN_SJA1000_PLATFORM=m
# CONFIG_CAN_EMS_PCI is not set
CONFIG_CAN_KVASER_PCI=m
CONFIG_CAN_DEBUG_DEVICES=y
# CONFIG_IRDA is not set
CONFIG_BT=m
# CONFIG_BT_L2CAP is not set
# CONFIG_BT_SCO is not set

#
# Bluetooth device drivers
#
# CONFIG_BT_HCIBTUSB is not set
# CONFIG_BT_HCIUART is not set
# CONFIG_BT_HCIBCM203X is not set
CONFIG_BT_HCIBPA10X=m
CONFIG_BT_HCIBFUSB=m
CONFIG_BT_HCIDTL1=m
CONFIG_BT_HCIBT3C=m
CONFIG_BT_HCIBLUECARD=m
# CONFIG_BT_HCIBTUART is not set
CONFIG_BT_HCIVHCI=m
CONFIG_AF_RXRPC=y
CONFIG_AF_RXRPC_DEBUG=y
CONFIG_RXKAD=m
CONFIG_FIB_RULES=y
# CONFIG_WIRELESS is not set
CONFIG_WIRELESS_EXT=y
# CONFIG_WIMAX is not set
CONFIG_RFKILL=m
CONFIG_RFKILL_LEDS=y
CONFIG_RFKILL_INPUT=y

#
# Device Drivers
#

#
# Generic Driver Options
#
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
CONFIG_FW_LOADER=y
CONFIG_FIRMWARE_IN_KERNEL=y
CONFIG_EXTRA_FIRMWARE=""
CONFIG_DEBUG_DRIVER=y
# CONFIG_DEBUG_DEVRES is not set
CONFIG_SYS_HYPERVISOR=y
# CONFIG_CONNECTOR is not set
CONFIG_PARPORT=y
# CONFIG_PARPORT_PC is not set
# CONFIG_PARPORT_GSC is not set
CONFIG_PARPORT_AX88796=y
CONFIG_PARPORT_1284=y
CONFIG_PARPORT_NOT_PC=y
CONFIG_BLK_DEV=y
# CONFIG_BLK_DEV_FD is not set
CONFIG_BLK_CPQ_DA=y
CONFIG_BLK_CPQ_CISS_DA=y
CONFIG_CISS_SCSI_TAPE=y
CONFIG_BLK_DEV_DAC960=y
CONFIG_BLK_DEV_UMEM=m
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=y
CONFIG_BLK_DEV_CRYPTOLOOP=m
# CONFIG_BLK_DEV_NBD is not set
CONFIG_BLK_DEV_SX8=y
# CONFIG_BLK_DEV_UB is not set
CONFIG_BLK_DEV_RAM=m
CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_BLK_DEV_RAM_SIZE=4096
CONFIG_BLK_DEV_XIP=y
# CONFIG_CDROM_PKTCDVD is not set
CONFIG_ATA_OVER_ETH=y
# CONFIG_XEN_BLKDEV_FRONTEND is not set
CONFIG_VIRTIO_BLK=m
# CONFIG_BLK_DEV_HD is not set
CONFIG_MISC_DEVICES=y
# CONFIG_IBM_ASM is not set
CONFIG_PHANTOM=m
CONFIG_SGI_IOC4=m
CONFIG_TIFM_CORE=y
CONFIG_TIFM_7XX1=m
CONFIG_ICS932S401=m
CONFIG_ENCLOSURE_SERVICES=y
CONFIG_HP_ILO=m
# CONFIG_DELL_LAPTOP is not set
CONFIG_ISL29003=m
# CONFIG_C2PORT is not set

#
# EEPROM support
#
CONFIG_EEPROM_AT24=m
CONFIG_EEPROM_AT25=m
CONFIG_EEPROM_LEGACY=m
CONFIG_EEPROM_MAX6875=y
CONFIG_EEPROM_93CX6=y
CONFIG_CB710_CORE=y
CONFIG_CB710_DEBUG=y
CONFIG_CB710_DEBUG_ASSUMPTIONS=y
CONFIG_HAVE_IDE=y

#
# SCSI device support
#
# CONFIG_RAID_ATTRS is not set
CONFIG_SCSI=y
CONFIG_SCSI_DMA=y
CONFIG_SCSI_TGT=y
CONFIG_SCSI_NETLINK=y
CONFIG_SCSI_PROC_FS=y

#
# SCSI support type (disk, tape, CD-ROM)
#
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_ST=y
CONFIG_CHR_DEV_OSST=y
CONFIG_BLK_DEV_SR=m
# CONFIG_BLK_DEV_SR_VENDOR is not set
CONFIG_CHR_DEV_SG=m
CONFIG_CHR_DEV_SCH=y
CONFIG_SCSI_ENCLOSURE=y
# CONFIG_SCSI_MULTI_LUN is not set
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_LOGGING=y
# CONFIG_SCSI_SCAN_ASYNC is not set
CONFIG_SCSI_WAIT_SCAN=m

#
# SCSI Transports
#
CONFIG_SCSI_SPI_ATTRS=y
CONFIG_SCSI_FC_ATTRS=y
CONFIG_SCSI_FC_TGT_ATTRS=y
CONFIG_SCSI_ISCSI_ATTRS=y
CONFIG_SCSI_SAS_ATTRS=y
CONFIG_SCSI_SAS_LIBSAS=y
CONFIG_SCSI_SAS_ATA=y
CONFIG_SCSI_SAS_HOST_SMP=y
CONFIG_SCSI_SAS_LIBSAS_DEBUG=y
CONFIG_SCSI_LOWLEVEL=y
# CONFIG_ISCSI_TCP is not set
CONFIG_SCSI_CXGB3_ISCSI=m
# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
# CONFIG_SCSI_3W_9XXX is not set
CONFIG_SCSI_ACARD=y
CONFIG_SCSI_AACRAID=m
CONFIG_SCSI_AIC7XXX=y
CONFIG_AIC7XXX_CMDS_PER_DEVICE=32
CONFIG_AIC7XXX_RESET_DELAY_MS=5000
CONFIG_AIC7XXX_DEBUG_ENABLE=y
CONFIG_AIC7XXX_DEBUG_MASK=0
# CONFIG_AIC7XXX_REG_PRETTY_PRINT is not set
CONFIG_SCSI_AIC7XXX_OLD=y
# CONFIG_SCSI_AIC79XX is not set
CONFIG_SCSI_AIC94XX=m
CONFIG_AIC94XX_DEBUG=y
CONFIG_SCSI_MVSAS=y
CONFIG_SCSI_MVSAS_DEBUG=y
# CONFIG_SCSI_DPT_I2O is not set
CONFIG_SCSI_ADVANSYS=y
CONFIG_SCSI_ARCMSR=y
CONFIG_SCSI_ARCMSR_AER=y
CONFIG_MEGARAID_NEWGEN=y
CONFIG_MEGARAID_MM=m
# CONFIG_MEGARAID_MAILBOX is not set
# CONFIG_MEGARAID_LEGACY is not set
# CONFIG_MEGARAID_SAS is not set
CONFIG_SCSI_MPT2SAS=y
CONFIG_SCSI_MPT2SAS_MAX_SGE=128
CONFIG_SCSI_MPT2SAS_LOGGING=y
CONFIG_SCSI_HPTIOP=y
CONFIG_SCSI_BUSLOGIC=y
CONFIG_LIBFC=m
CONFIG_LIBFCOE=m
# CONFIG_FCOE is not set
CONFIG_FCOE_FNIC=m
# CONFIG_SCSI_DMX3191D is not set
# CONFIG_SCSI_EATA is not set
CONFIG_SCSI_FUTURE_DOMAIN=m
CONFIG_SCSI_GDTH=y
CONFIG_SCSI_IPS=m
CONFIG_SCSI_INITIO=m
CONFIG_SCSI_INIA100=m
# CONFIG_SCSI_STEX is not set
# CONFIG_SCSI_SYM53C8XX_2 is not set
CONFIG_SCSI_IPR=m
CONFIG_SCSI_IPR_TRACE=y
CONFIG_SCSI_IPR_DUMP=y
CONFIG_SCSI_QLOGIC_1280=m
# CONFIG_SCSI_QLA_FC is not set
CONFIG_SCSI_QLA_ISCSI=y
CONFIG_SCSI_LPFC=y
CONFIG_SCSI_LPFC_DEBUG_FS=y
# CONFIG_SCSI_DC395x is not set
CONFIG_SCSI_DC390T=m
CONFIG_SCSI_SRP=y
CONFIG_SCSI_LOWLEVEL_PCMCIA=y
CONFIG_PCMCIA_FDOMAIN=m
CONFIG_PCMCIA_QLOGIC=m
CONFIG_PCMCIA_SYM53C500=m
CONFIG_SCSI_DH=y
# CONFIG_SCSI_DH_RDAC is not set
# CONFIG_SCSI_DH_HP_SW is not set
CONFIG_SCSI_DH_EMC=y
CONFIG_SCSI_DH_ALUA=y
CONFIG_SCSI_OSD_INITIATOR=m
# CONFIG_SCSI_OSD_ULD is not set
CONFIG_SCSI_OSD_DPRINT_SENSE=1
CONFIG_SCSI_OSD_DEBUG=y
CONFIG_ATA=y
# CONFIG_ATA_NONSTANDARD is not set
CONFIG_SATA_PMP=y
CONFIG_SATA_AHCI=y
# CONFIG_SATA_SIL24 is not set
CONFIG_ATA_SFF=y
CONFIG_SATA_SVW=m
CONFIG_ATA_PIIX=y
# CONFIG_SATA_MV is not set
CONFIG_SATA_NV=y
CONFIG_PDC_ADMA=m
CONFIG_SATA_QSTOR=m
CONFIG_SATA_PROMISE=m
CONFIG_SATA_SX4=m
CONFIG_SATA_SIL=y
CONFIG_SATA_SIS=m
CONFIG_SATA_ULI=y
CONFIG_SATA_VIA=y
CONFIG_SATA_VITESSE=m
CONFIG_SATA_INIC162X=y
# CONFIG_PATA_ALI is not set
CONFIG_PATA_AMD=y
CONFIG_PATA_ARTOP=m
CONFIG_PATA_ATIIXP=y
CONFIG_PATA_CMD640_PCI=y
CONFIG_PATA_CMD64X=y
CONFIG_PATA_CS5520=y
CONFIG_PATA_CS5530=m
# CONFIG_PATA_CYPRESS is not set
CONFIG_PATA_EFAR=y
CONFIG_ATA_GENERIC=m
CONFIG_PATA_HPT366=y
# CONFIG_PATA_HPT37X is not set
CONFIG_PATA_HPT3X2N=y
CONFIG_PATA_HPT3X3=y
CONFIG_PATA_HPT3X3_DMA=y
CONFIG_PATA_IT821X=y
CONFIG_PATA_IT8213=y
CONFIG_PATA_JMICRON=m
CONFIG_PATA_TRIFLEX=m
CONFIG_PATA_MARVELL=y
CONFIG_PATA_MPIIX=y
CONFIG_PATA_OLDPIIX=y
# CONFIG_PATA_NETCELL is not set
# CONFIG_PATA_NINJA32 is not set
# CONFIG_PATA_NS87410 is not set
CONFIG_PATA_NS87415=y
# CONFIG_PATA_OPTI is not set
CONFIG_PATA_OPTIDMA=y
CONFIG_PATA_PCMCIA=m
# CONFIG_PATA_PDC_OLD is not set
CONFIG_PATA_RADISYS=y
CONFIG_PATA_RZ1000=y
# CONFIG_PATA_SC1200 is not set
# CONFIG_PATA_SERVERWORKS is not set
CONFIG_PATA_PDC2027X=y
CONFIG_PATA_SIL680=m
CONFIG_PATA_SIS=y
# CONFIG_PATA_VIA is not set
CONFIG_PATA_WINBOND=m
CONFIG_PATA_SCH=m
CONFIG_MD=y
CONFIG_BLK_DEV_MD=m
# CONFIG_MD_LINEAR is not set
CONFIG_MD_RAID0=m
CONFIG_MD_RAID1=m
# CONFIG_MD_RAID10 is not set
CONFIG_MD_RAID456=m
CONFIG_MD_RAID6_PQ=m
CONFIG_MD_MULTIPATH=m
CONFIG_MD_FAULTY=m
# CONFIG_BLK_DEV_DM is not set
CONFIG_FUSION=y
# CONFIG_FUSION_SPI is not set
CONFIG_FUSION_FC=m
CONFIG_FUSION_SAS=m
CONFIG_FUSION_MAX_SGE=128
CONFIG_FUSION_CTL=m
CONFIG_FUSION_LAN=m
CONFIG_FUSION_LOGGING=y

#
# IEEE 1394 (FireWire) support
#

#
# Enable only one of the two stacks, unless you know what you are doing
#
CONFIG_FIREWIRE=y
CONFIG_FIREWIRE_OHCI=y
CONFIG_FIREWIRE_OHCI_DEBUG=y
# CONFIG_FIREWIRE_SBP2 is not set
CONFIG_IEEE1394=y
CONFIG_IEEE1394_OHCI1394=y
CONFIG_IEEE1394_PCILYNX=m
# CONFIG_IEEE1394_SBP2 is not set
CONFIG_IEEE1394_ETH1394_ROM_ENTRY=y
CONFIG_IEEE1394_ETH1394=y
CONFIG_IEEE1394_RAWIO=y
CONFIG_IEEE1394_VIDEO1394=m
CONFIG_IEEE1394_DV1394=m
CONFIG_IEEE1394_VERBOSEDEBUG=y
CONFIG_I2O=y
# CONFIG_I2O_LCT_NOTIFY_ON_CHANGES is not set
CONFIG_I2O_EXT_ADAPTEC=y
# CONFIG_I2O_EXT_ADAPTEC_DMA64 is not set
CONFIG_I2O_BUS=y
CONFIG_I2O_BLOCK=m
# CONFIG_I2O_SCSI is not set
CONFIG_I2O_PROC=y
# CONFIG_MACINTOSH_DRIVERS is not set
CONFIG_NETDEVICES=y
CONFIG_IFB=m
CONFIG_DUMMY=y
CONFIG_BONDING=y
CONFIG_MACVLAN=y
CONFIG_EQUALIZER=m
# CONFIG_TUN is not set
CONFIG_VETH=y
# CONFIG_ARCNET is not set
CONFIG_PHYLIB=y

#
# MII PHY device drivers
#
CONFIG_MARVELL_PHY=m
CONFIG_DAVICOM_PHY=m
# CONFIG_QSEMI_PHY is not set
CONFIG_LXT_PHY=m
CONFIG_CICADA_PHY=y
# CONFIG_VITESSE_PHY is not set
CONFIG_SMSC_PHY=m
# CONFIG_BROADCOM_PHY is not set
CONFIG_ICPLUS_PHY=y
CONFIG_REALTEK_PHY=m
# CONFIG_NATIONAL_PHY is not set
CONFIG_STE10XP=y
CONFIG_LSI_ET1011C_PHY=m
# CONFIG_FIXED_PHY is not set
# CONFIG_MDIO_BITBANG is not set
CONFIG_NET_ETHERNET=y
CONFIG_MII=y
CONFIG_HAPPYMEAL=m
CONFIG_SUNGEM=y
# CONFIG_CASSINI is not set
CONFIG_NET_VENDOR_3COM=y
CONFIG_VORTEX=y
CONFIG_TYPHOON=m
CONFIG_ENC28J60=m
# CONFIG_ENC28J60_WRITEVERIFY is not set
CONFIG_ETHOC=m
# CONFIG_DNET is not set
CONFIG_NET_TULIP=y
# CONFIG_DE2104X is not set
# CONFIG_TULIP is not set
# CONFIG_DE4X5 is not set
CONFIG_WINBOND_840=y
CONFIG_DM9102=y
CONFIG_ULI526X=y
CONFIG_PCMCIA_XIRCOM=y
# 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=y
CONFIG_PCNET32=y
CONFIG_AMD8111_ETH=y
CONFIG_ADAPTEC_STARFIRE=m
# CONFIG_B44 is not set
CONFIG_FORCEDETH=y
CONFIG_FORCEDETH_NAPI=y
CONFIG_E100=y
CONFIG_FEALNX=m
CONFIG_NATSEMI=m
CONFIG_NE2K_PCI=y
CONFIG_8139CP=m
CONFIG_8139TOO=y
CONFIG_8139TOO_PIO=y
# CONFIG_8139TOO_TUNE_TWISTER is not set
# CONFIG_8139TOO_8129 is not set
CONFIG_8139_OLD_RX_RESET=y
CONFIG_R6040=y
CONFIG_SIS900=y
CONFIG_EPIC100=y
# CONFIG_SMSC9420 is not set
CONFIG_SUNDANCE=m
# CONFIG_SUNDANCE_MMIO is not set
CONFIG_TLAN=m
# CONFIG_KS8842 is not set
# CONFIG_VIA_RHINE is not set
CONFIG_SC92031=m
CONFIG_NET_POCKET=y
CONFIG_ATP=y
# CONFIG_DE600 is not set
CONFIG_DE620=m
CONFIG_ATL2=y
CONFIG_NETDEV_1000=y
CONFIG_ACENIC=m
# CONFIG_ACENIC_OMIT_TIGON_I is not set
CONFIG_DL2K=y
CONFIG_E1000=y
CONFIG_E1000E=y
CONFIG_IP1000=m
CONFIG_IGB=y
CONFIG_IGBVF=m
CONFIG_NS83820=m
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
CONFIG_R8169=y
CONFIG_R8169_VLAN=y
CONFIG_SIS190=m
CONFIG_SKGE=m
# CONFIG_SKGE_DEBUG is not set
CONFIG_SKY2=y
CONFIG_SKY2_DEBUG=y
CONFIG_VIA_VELOCITY=y
CONFIG_TIGON3=y
CONFIG_BNX2=m
CONFIG_QLA3XXX=m
CONFIG_ATL1=y
CONFIG_ATL1E=y
# CONFIG_ATL1C is not set
CONFIG_JME=y
CONFIG_NETDEV_10000=y
CONFIG_MDIO=y
CONFIG_CHELSIO_T1=y
CONFIG_CHELSIO_T1_1G=y
CONFIG_CHELSIO_T3_DEPENDS=y
CONFIG_CHELSIO_T3=m
CONFIG_ENIC=m
CONFIG_IXGBE=m
CONFIG_IXGBE_DCB=y
CONFIG_IXGB=m
CONFIG_S2IO=m
CONFIG_MYRI10GE=y
CONFIG_NIU=m
CONFIG_MLX4_EN=y
CONFIG_MLX4_CORE=y
CONFIG_MLX4_DEBUG=y
# CONFIG_TEHUTI is not set
CONFIG_BNX2X=y
CONFIG_QLGE=m
CONFIG_SFC=m
CONFIG_BE2NET=y
# CONFIG_TR is not set

#
# Wireless LAN
#
CONFIG_WLAN_PRE80211=y
CONFIG_STRIP=m
# CONFIG_PCMCIA_WAVELAN is not set
CONFIG_PCMCIA_NETWAVE=m
# CONFIG_WLAN_80211 is not set

#
# Enable WiMAX (Networking options) to see the WiMAX drivers
#

#
# USB Network Adapters
#
CONFIG_USB_CATC=m
CONFIG_USB_KAWETH=m
CONFIG_USB_PEGASUS=y
CONFIG_USB_RTL8150=y
CONFIG_USB_USBNET=m
CONFIG_USB_NET_AX8817X=m
CONFIG_USB_NET_CDCETHER=m
CONFIG_USB_NET_CDC_EEM=m
CONFIG_USB_NET_DM9601=m
CONFIG_USB_NET_SMSC95XX=m
# CONFIG_USB_NET_GL620A is not set
CONFIG_USB_NET_NET1080=m
CONFIG_USB_NET_PLUSB=m
# CONFIG_USB_NET_MCS7830 is not set
CONFIG_USB_NET_RNDIS_HOST=m
CONFIG_USB_NET_CDC_SUBSET=m
CONFIG_USB_ALI_M5632=y
# CONFIG_USB_AN2720 is not set
CONFIG_USB_BELKIN=y
CONFIG_USB_ARMLINUX=y
# CONFIG_USB_EPSON2888 is not set
CONFIG_USB_KC2190=y
CONFIG_USB_NET_ZAURUS=m
# CONFIG_USB_HSO is not set
CONFIG_USB_NET_INT51X1=m
CONFIG_NET_PCMCIA=y
CONFIG_PCMCIA_3C589=m
CONFIG_PCMCIA_3C574=m
CONFIG_PCMCIA_FMVJ18X=m
# CONFIG_PCMCIA_PCNET is not set
CONFIG_PCMCIA_NMCLAN=m
CONFIG_PCMCIA_SMC91C92=m
# CONFIG_PCMCIA_XIRC2PS is not set
# CONFIG_PCMCIA_AXNET is not set
# CONFIG_WAN is not set
CONFIG_IEEE802154_DRIVERS=m
# CONFIG_IEEE802154_FAKEHARD is not set
CONFIG_XEN_NETDEV_FRONTEND=y
CONFIG_FDDI=m
# CONFIG_DEFXX is not set
CONFIG_SKFP=m
CONFIG_HIPPI=y
CONFIG_ROADRUNNER=y
# CONFIG_ROADRUNNER_LARGE_RINGS is not set
CONFIG_PLIP=m
CONFIG_PPP=y
CONFIG_PPP_MULTILINK=y
# CONFIG_PPP_FILTER is not set
CONFIG_PPP_ASYNC=y
# CONFIG_PPP_SYNC_TTY is not set
CONFIG_PPP_DEFLATE=m
CONFIG_PPP_BSDCOMP=m
# CONFIG_PPP_MPPE is not set
CONFIG_PPPOE=y
# CONFIG_PPPOL2TP is not set
CONFIG_SLIP=m
# CONFIG_SLIP_COMPRESSED is not set
CONFIG_SLHC=y
# CONFIG_SLIP_SMART is not set
CONFIG_SLIP_MODE_SLIP6=y
CONFIG_NET_FC=y
CONFIG_NETCONSOLE=y
CONFIG_NETCONSOLE_DYNAMIC=y
CONFIG_NETPOLL=y
CONFIG_NETPOLL_TRAP=y
CONFIG_NET_POLL_CONTROLLER=y
CONFIG_VIRTIO_NET=m
# CONFIG_ISDN is not set
CONFIG_PHONE=m

#
# Input device support
#
CONFIG_INPUT=y
CONFIG_INPUT_FF_MEMLESS=y
CONFIG_INPUT_POLLDEV=y

#
# Userland interfaces
#
CONFIG_INPUT_MOUSEDEV=y
CONFIG_INPUT_MOUSEDEV_PSAUX=y
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
# CONFIG_INPUT_JOYDEV is not set
CONFIG_INPUT_EVDEV=y
CONFIG_INPUT_EVBUG=y

#
# Input Device Drivers
#
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=y
CONFIG_KEYBOARD_SUNKBD=y
# CONFIG_KEYBOARD_LKKBD is not set
CONFIG_KEYBOARD_XTKBD=m
# CONFIG_KEYBOARD_NEWTON is not set
CONFIG_KEYBOARD_STOWAWAY=m
CONFIG_KEYBOARD_GPIO=y
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=y
CONFIG_MOUSE_PS2_ALPS=y
CONFIG_MOUSE_PS2_LOGIPS2PP=y
CONFIG_MOUSE_PS2_SYNAPTICS=y
CONFIG_MOUSE_PS2_LIFEBOOK=y
CONFIG_MOUSE_PS2_TRACKPOINT=y
CONFIG_MOUSE_PS2_ELANTECH=y
# CONFIG_MOUSE_PS2_TOUCHKIT is not set
# CONFIG_MOUSE_SERIAL is not set
CONFIG_MOUSE_APPLETOUCH=m
CONFIG_MOUSE_BCM5974=y
CONFIG_MOUSE_VSXXXAA=m
CONFIG_MOUSE_GPIO=y
CONFIG_INPUT_JOYSTICK=y
CONFIG_JOYSTICK_ANALOG=y
CONFIG_JOYSTICK_A3D=m
CONFIG_JOYSTICK_ADI=y
CONFIG_JOYSTICK_COBRA=m
# CONFIG_JOYSTICK_GF2K is not set
CONFIG_JOYSTICK_GRIP=y
# CONFIG_JOYSTICK_GRIP_MP is not set
CONFIG_JOYSTICK_GUILLEMOT=m
# CONFIG_JOYSTICK_INTERACT is not set
CONFIG_JOYSTICK_SIDEWINDER=m
CONFIG_JOYSTICK_TMDC=y
CONFIG_JOYSTICK_IFORCE=m
CONFIG_JOYSTICK_IFORCE_USB=y
# CONFIG_JOYSTICK_IFORCE_232 is not set
CONFIG_JOYSTICK_WARRIOR=m
# CONFIG_JOYSTICK_MAGELLAN is not set
CONFIG_JOYSTICK_SPACEORB=m
# CONFIG_JOYSTICK_SPACEBALL is not set
CONFIG_JOYSTICK_STINGER=y
CONFIG_JOYSTICK_TWIDJOY=m
# CONFIG_JOYSTICK_ZHENHUA is not set
# CONFIG_JOYSTICK_DB9 is not set
# CONFIG_JOYSTICK_GAMECON is not set
CONFIG_JOYSTICK_TURBOGRAFX=y
CONFIG_JOYSTICK_JOYDUMP=y
# CONFIG_JOYSTICK_XPAD is not set
# CONFIG_JOYSTICK_WALKERA0701 is not set
# CONFIG_INPUT_TABLET is not set
CONFIG_INPUT_TOUCHSCREEN=y
CONFIG_TOUCHSCREEN_ADS7846=m
CONFIG_TOUCHSCREEN_AD7877=m
CONFIG_TOUCHSCREEN_AD7879_I2C=y
CONFIG_TOUCHSCREEN_AD7879=y
# CONFIG_TOUCHSCREEN_FUJITSU is not set
CONFIG_TOUCHSCREEN_GUNZE=y
CONFIG_TOUCHSCREEN_ELO=y
# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
CONFIG_TOUCHSCREEN_MTOUCH=m
# CONFIG_TOUCHSCREEN_INEXIO is not set
# CONFIG_TOUCHSCREEN_MK712 is not set
CONFIG_TOUCHSCREEN_PENMOUNT=m
CONFIG_TOUCHSCREEN_TOUCHRIGHT=m
# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
CONFIG_TOUCHSCREEN_USB_COMPOSITE=y
CONFIG_TOUCHSCREEN_USB_EGALAX=y
CONFIG_TOUCHSCREEN_USB_PANJIT=y
CONFIG_TOUCHSCREEN_USB_3M=y
CONFIG_TOUCHSCREEN_USB_ITM=y
CONFIG_TOUCHSCREEN_USB_ETURBO=y
CONFIG_TOUCHSCREEN_USB_GUNZE=y
CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y
CONFIG_TOUCHSCREEN_USB_IRTOUCH=y
CONFIG_TOUCHSCREEN_USB_IDEALTEK=y
CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y
CONFIG_TOUCHSCREEN_USB_GOTOP=y
CONFIG_TOUCHSCREEN_TOUCHIT213=y
CONFIG_TOUCHSCREEN_TSC2007=y
# CONFIG_INPUT_MISC is not set

#
# Hardware I/O ports
#
CONFIG_SERIO=y
CONFIG_SERIO_I8042=y
CONFIG_SERIO_SERPORT=m
# CONFIG_SERIO_CT82C710 is not set
CONFIG_SERIO_PARKBD=m
CONFIG_SERIO_PCIPS2=m
CONFIG_SERIO_LIBPS2=y
CONFIG_SERIO_RAW=y
CONFIG_GAMEPORT=y
# CONFIG_GAMEPORT_NS558 is not set
# CONFIG_GAMEPORT_L4 is not set
CONFIG_GAMEPORT_EMU10K1=y
# CONFIG_GAMEPORT_FM801 is not set

#
# Character devices
#
CONFIG_VT=y
CONFIG_CONSOLE_TRANSLATIONS=y
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
CONFIG_VT_HW_CONSOLE_BINDING=y
CONFIG_DEVKMEM=y
CONFIG_SERIAL_NONSTANDARD=y
CONFIG_COMPUTONE=y
# CONFIG_ROCKETPORT is not set
# CONFIG_CYCLADES is not set
# CONFIG_DIGIEPCA is not set
# CONFIG_MOXA_INTELLIO is not set
CONFIG_MOXA_SMARTIO=y
CONFIG_ISI=y
CONFIG_SYNCLINK=y
CONFIG_SYNCLINKMP=y
CONFIG_SYNCLINK_GT=m
CONFIG_N_HDLC=m
CONFIG_RISCOM8=y
# CONFIG_SPECIALIX is not set
CONFIG_SX=y
CONFIG_RIO=m
CONFIG_RIO_OLDPCI=y
CONFIG_STALDRV=y
# CONFIG_STALLION is not set
# CONFIG_ISTALLION is not set
CONFIG_NOZOMI=m

#
# Serial drivers
#
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_FIX_EARLYCON_MEM=y
CONFIG_SERIAL_8250_PCI=y
CONFIG_SERIAL_8250_CS=m
CONFIG_SERIAL_8250_NR_UARTS=4
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
CONFIG_SERIAL_8250_EXTENDED=y
CONFIG_SERIAL_8250_MANY_PORTS=y
CONFIG_SERIAL_8250_SHARE_IRQ=y
CONFIG_SERIAL_8250_DETECT_IRQ=y
CONFIG_SERIAL_8250_RSA=y

#
# Non-8250 serial port support
#
# CONFIG_SERIAL_MAX3100 is not set
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_CONSOLE_POLL=y
# CONFIG_SERIAL_JSM is not set
CONFIG_UNIX98_PTYS=y
CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
CONFIG_LEGACY_PTYS=y
CONFIG_LEGACY_PTY_COUNT=256
CONFIG_PRINTER=y
CONFIG_LP_CONSOLE=y
CONFIG_PPDEV=m
CONFIG_HVC_DRIVER=y
CONFIG_HVC_IRQ=y
CONFIG_HVC_XEN=y
# CONFIG_VIRTIO_CONSOLE is not set
CONFIG_IPMI_HANDLER=m
CONFIG_IPMI_PANIC_EVENT=y
# CONFIG_IPMI_PANIC_STRING is not set
CONFIG_IPMI_DEVICE_INTERFACE=m
# CONFIG_IPMI_SI is not set
CONFIG_IPMI_WATCHDOG=m
# CONFIG_IPMI_POWEROFF is not set
CONFIG_HW_RANDOM=y
CONFIG_HW_RANDOM_TIMERIOMEM=y
CONFIG_HW_RANDOM_INTEL=m
CONFIG_HW_RANDOM_AMD=y
CONFIG_HW_RANDOM_VIA=y
CONFIG_HW_RANDOM_VIRTIO=m
CONFIG_NVRAM=m
CONFIG_RTC=m
# CONFIG_GEN_RTC is not set
CONFIG_R3964=m
# CONFIG_APPLICOM is not set

#
# PCMCIA character devices
#
# CONFIG_SYNCLINK_CS is not set
CONFIG_CARDMAN_4000=m
CONFIG_CARDMAN_4040=m
# CONFIG_IPWIRELESS is not set
CONFIG_MWAVE=y
CONFIG_PC8736x_GPIO=y
CONFIG_NSC_GPIO=y
CONFIG_RAW_DRIVER=y
CONFIG_MAX_RAW_DEVS=256
# CONFIG_HANGCHECK_TIMER is not set
# CONFIG_TCG_TPM is not set
CONFIG_TELCLOCK=m
CONFIG_DEVPORT=y
CONFIG_I2C=y
CONFIG_I2C_BOARDINFO=y
CONFIG_I2C_CHARDEV=y
CONFIG_I2C_HELPER_AUTO=y
CONFIG_I2C_ALGOBIT=y
CONFIG_I2C_ALGOPCA=m

#
# I2C Hardware Bus support
#

#
# PC SMBus host controller drivers
#
# CONFIG_I2C_ALI1535 is not set
CONFIG_I2C_ALI1563=y
CONFIG_I2C_ALI15X3=y
CONFIG_I2C_AMD756=y
CONFIG_I2C_AMD8111=y
# CONFIG_I2C_I801 is not set
CONFIG_I2C_ISCH=y
# CONFIG_I2C_PIIX4 is not set
# CONFIG_I2C_NFORCE2 is not set
CONFIG_I2C_SIS5595=m
# CONFIG_I2C_SIS630 is not set
CONFIG_I2C_SIS96X=y
# CONFIG_I2C_VIA is not set
CONFIG_I2C_VIAPRO=m

#
# I2C system bus drivers (mostly embedded / system-on-chip)
#
CONFIG_I2C_GPIO=m
CONFIG_I2C_OCORES=m
# CONFIG_I2C_SIMTEC is not set

#
# External I2C/SMBus adapter drivers
#
CONFIG_I2C_PARPORT=m
CONFIG_I2C_PARPORT_LIGHT=m
CONFIG_I2C_TAOS_EVM=m
CONFIG_I2C_TINY_USB=m

#
# Graphics adapter I2C/DDC channel drivers
#
# CONFIG_I2C_VOODOO3 is not set

#
# Other I2C/SMBus bus drivers
#
CONFIG_I2C_PCA_PLATFORM=m
# CONFIG_I2C_STUB is not set

#
# Miscellaneous I2C Chip support
#
CONFIG_DS1682=m
CONFIG_SENSORS_TSL2550=y
CONFIG_I2C_DEBUG_CORE=y
CONFIG_I2C_DEBUG_ALGO=y
# CONFIG_I2C_DEBUG_BUS is not set
CONFIG_I2C_DEBUG_CHIP=y
CONFIG_SPI=y
# CONFIG_SPI_DEBUG is not set
CONFIG_SPI_MASTER=y

#
# SPI Master Controller Drivers
#
# CONFIG_SPI_BITBANG is not set
# CONFIG_SPI_BUTTERFLY is not set
# CONFIG_SPI_GPIO is not set
# CONFIG_SPI_LM70_LLP is not set

#
# SPI Protocol Masters
#
# CONFIG_SPI_SPIDEV is not set
CONFIG_SPI_TLE62X0=m
CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
CONFIG_GPIOLIB=y
# CONFIG_DEBUG_GPIO is not set
# CONFIG_GPIO_SYSFS is not set

#
# Memory mapped GPIO expanders:
#

#
# I2C GPIO expanders:
#
CONFIG_GPIO_MAX732X=m
CONFIG_GPIO_PCA953X=m
CONFIG_GPIO_PCF857X=y
CONFIG_GPIO_TWL4030=m

#
# PCI GPIO expanders:
#
CONFIG_GPIO_BT8XX=y

#
# SPI GPIO expanders:
#
# CONFIG_GPIO_MAX7301 is not set
# CONFIG_GPIO_MCP23S08 is not set
CONFIG_W1=m

#
# 1-wire Bus Masters
#
CONFIG_W1_MASTER_MATROX=m
CONFIG_W1_MASTER_DS2490=m
CONFIG_W1_MASTER_DS2482=m
# CONFIG_W1_MASTER_GPIO is not set

#
# 1-wire Slaves
#
CONFIG_W1_SLAVE_THERM=m
CONFIG_W1_SLAVE_SMEM=m
CONFIG_W1_SLAVE_DS2431=m
CONFIG_W1_SLAVE_DS2433=m
CONFIG_W1_SLAVE_DS2433_CRC=y
CONFIG_W1_SLAVE_DS2760=m
CONFIG_W1_SLAVE_BQ27000=m
CONFIG_POWER_SUPPLY=m
CONFIG_POWER_SUPPLY_DEBUG=y
CONFIG_PDA_POWER=m
CONFIG_BATTERY_DS2760=m
# CONFIG_BATTERY_BQ27x00 is not set
CONFIG_CHARGER_PCF50633=m
# CONFIG_HWMON is not set
CONFIG_THERMAL=m
# CONFIG_WATCHDOG is not set
CONFIG_SSB_POSSIBLE=y

#
# Sonics Silicon Backplane
#
# CONFIG_SSB is not set

#
# Multifunction device drivers
#
CONFIG_MFD_CORE=m
CONFIG_MFD_SM501=y
CONFIG_MFD_SM501_GPIO=y
CONFIG_HTC_PASIC3=m
# CONFIG_TPS65010 is not set
CONFIG_TWL4030_CORE=y
# CONFIG_MFD_TMIO is not set
# CONFIG_PMIC_DA903X is not set
CONFIG_MFD_WM8400=m
CONFIG_MFD_PCF50633=m
CONFIG_PCF50633_ADC=m
CONFIG_PCF50633_GPIO=m
CONFIG_REGULATOR=y
CONFIG_REGULATOR_DEBUG=y
CONFIG_REGULATOR_FIXED_VOLTAGE=m
CONFIG_REGULATOR_VIRTUAL_CONSUMER=y
# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set
CONFIG_REGULATOR_BQ24022=m
CONFIG_REGULATOR_MAX1586=y
CONFIG_REGULATOR_TWL4030=y
# CONFIG_REGULATOR_WM8400 is not set
# CONFIG_REGULATOR_PCF50633 is not set
CONFIG_REGULATOR_LP3971=m
# CONFIG_MEDIA_SUPPORT is not set

#
# Graphics support
#
CONFIG_AGP=y
CONFIG_AGP_AMD64=y
# CONFIG_AGP_INTEL is not set
# CONFIG_AGP_SIS is not set
CONFIG_AGP_VIA=y
CONFIG_DRM=y
CONFIG_DRM_TDFX=m
CONFIG_DRM_R128=y
# CONFIG_DRM_RADEON is not set
CONFIG_DRM_MGA=y
CONFIG_DRM_SIS=y
CONFIG_DRM_VIA=y
# CONFIG_DRM_SAVAGE is not set
# CONFIG_VGASTATE is not set
CONFIG_VIDEO_OUTPUT_CONTROL=m
# CONFIG_FB is not set
CONFIG_BACKLIGHT_LCD_SUPPORT=y
# CONFIG_LCD_CLASS_DEVICE is not set
CONFIG_BACKLIGHT_CLASS_DEVICE=m
CONFIG_BACKLIGHT_GENERIC=m
CONFIG_BACKLIGHT_PROGEAR=m
# CONFIG_BACKLIGHT_MBP_NVIDIA is not set
CONFIG_BACKLIGHT_SAHARA=m

#
# 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_FONT_8x16=y
# CONFIG_SOUND is not set
# CONFIG_HID_SUPPORT is not set
CONFIG_USB_MOUSE=y
CONFIG_USB_SUPPORT=y
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB_ARCH_HAS_OHCI=y
CONFIG_USB_ARCH_HAS_EHCI=y
CONFIG_USB=y
CONFIG_USB_DEBUG=y
CONFIG_USB_ANNOUNCE_NEW_DEVICES=y

#
# Miscellaneous USB options
#
# CONFIG_USB_DEVICE_CLASS is not set
CONFIG_USB_DYNAMIC_MINORS=y
# CONFIG_USB_SUSPEND is not set
# CONFIG_USB_OTG is not set
CONFIG_USB_MON=y
CONFIG_USB_WUSB=y
CONFIG_USB_WUSB_CBAF=m
CONFIG_USB_WUSB_CBAF_DEBUG=y

#
# USB Host Controller Drivers
#
CONFIG_USB_C67X00_HCD=m
CONFIG_USB_XHCI_HCD=m
CONFIG_USB_XHCI_HCD_DEBUGGING=y
CONFIG_USB_EHCI_HCD=y
# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
CONFIG_USB_EHCI_TT_NEWSCHED=y
CONFIG_USB_OXU210HP_HCD=y
CONFIG_USB_ISP116X_HCD=y
CONFIG_USB_ISP1760_HCD=y
CONFIG_USB_OHCI_HCD=y
# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
CONFIG_USB_UHCI_HCD=y
CONFIG_USB_SL811_HCD=y
CONFIG_USB_SL811_CS=m
CONFIG_USB_R8A66597_HCD=y
CONFIG_USB_HWA_HCD=y

#
# USB Device Class drivers
#
CONFIG_USB_ACM=m
CONFIG_USB_PRINTER=y
CONFIG_USB_WDM=y
# 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=m
# CONFIG_USB_STORAGE_DEBUG is not set
# CONFIG_USB_STORAGE_DATAFAB is not set
# CONFIG_USB_STORAGE_FREECOM is not set
CONFIG_USB_STORAGE_ISD200=m
CONFIG_USB_STORAGE_USBAT=m
# CONFIG_USB_STORAGE_SDDR09 is not set
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=y

#
# USB Imaging devices
#
CONFIG_USB_MDC800=y
CONFIG_USB_MICROTEK=m

#
# USB port drivers
#
CONFIG_USB_USS720=y
CONFIG_USB_SERIAL=m
CONFIG_USB_EZUSB=y
# CONFIG_USB_SERIAL_GENERIC is not set
CONFIG_USB_SERIAL_AIRCABLE=m
CONFIG_USB_SERIAL_ARK3116=m
# CONFIG_USB_SERIAL_BELKIN is not set
# CONFIG_USB_SERIAL_CH341 is not set
CONFIG_USB_SERIAL_WHITEHEAT=m
CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
# CONFIG_USB_SERIAL_CP210X is not set
CONFIG_USB_SERIAL_CYPRESS_M8=m
# CONFIG_USB_SERIAL_EMPEG is not set
CONFIG_USB_SERIAL_FTDI_SIO=m
# CONFIG_USB_SERIAL_FUNSOFT is not set
CONFIG_USB_SERIAL_VISOR=m
CONFIG_USB_SERIAL_IPAQ=m
CONFIG_USB_SERIAL_IR=m
CONFIG_USB_SERIAL_EDGEPORT=m
# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
CONFIG_USB_SERIAL_GARMIN=m
CONFIG_USB_SERIAL_IPW=m
CONFIG_USB_SERIAL_IUU=m
CONFIG_USB_SERIAL_KEYSPAN_PDA=m
CONFIG_USB_SERIAL_KEYSPAN=m
CONFIG_USB_SERIAL_KEYSPAN_MPR=y
CONFIG_USB_SERIAL_KEYSPAN_USA28=y
CONFIG_USB_SERIAL_KEYSPAN_USA28X=y
# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y
CONFIG_USB_SERIAL_KEYSPAN_USA19=y
# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
CONFIG_USB_SERIAL_KEYSPAN_USA19W=y
CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y
CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y
CONFIG_USB_SERIAL_KEYSPAN_USA49W=y
CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
CONFIG_USB_SERIAL_KLSI=m
CONFIG_USB_SERIAL_KOBIL_SCT=m
CONFIG_USB_SERIAL_MCT_U232=m
# CONFIG_USB_SERIAL_MOS7720 is not set
CONFIG_USB_SERIAL_MOS7840=m
CONFIG_USB_SERIAL_MOTOROLA=m
CONFIG_USB_SERIAL_NAVMAN=m
CONFIG_USB_SERIAL_PL2303=m
CONFIG_USB_SERIAL_OTI6858=m
CONFIG_USB_SERIAL_QUALCOMM=m
CONFIG_USB_SERIAL_SPCP8X5=m
CONFIG_USB_SERIAL_HP4X=m
# CONFIG_USB_SERIAL_SAFE is not set
CONFIG_USB_SERIAL_SIEMENS_MPI=m
CONFIG_USB_SERIAL_SIERRAWIRELESS=m
CONFIG_USB_SERIAL_SYMBOL=m
CONFIG_USB_SERIAL_TI=m
# CONFIG_USB_SERIAL_CYBERJACK is not set
CONFIG_USB_SERIAL_XIRCOM=m
CONFIG_USB_SERIAL_OPTION=m
CONFIG_USB_SERIAL_OMNINET=m
# CONFIG_USB_SERIAL_OPTICON is not set
CONFIG_USB_SERIAL_DEBUG=m

#
# USB Miscellaneous drivers
#
# CONFIG_USB_EMI62 is not set
CONFIG_USB_EMI26=y
CONFIG_USB_ADUTUX=y
CONFIG_USB_SEVSEG=y
CONFIG_USB_RIO500=y
CONFIG_USB_LEGOTOWER=m
# CONFIG_USB_LCD is not set
CONFIG_USB_BERRY_CHARGE=m
CONFIG_USB_LED=y
CONFIG_USB_CYPRESS_CY7C63=m
CONFIG_USB_CYTHERM=y
# CONFIG_USB_IDMOUSE is not set
# CONFIG_USB_FTDI_ELAN is not set
CONFIG_USB_APPLEDISPLAY=m
CONFIG_USB_SISUSBVGA=y
CONFIG_USB_SISUSBVGA_CON=y
CONFIG_USB_LD=m
CONFIG_USB_TRANCEVIBRATOR=y
CONFIG_USB_IOWARRIOR=y
# CONFIG_USB_ISIGHTFW is not set
CONFIG_USB_VST=y

#
# OTG and related infrastructure
#
CONFIG_USB_OTG_UTILS=y
CONFIG_USB_GPIO_VBUS=m
CONFIG_TWL4030_USB=y
CONFIG_NOP_USB_XCEIV=m
CONFIG_UWB=y
CONFIG_UWB_HWA=y
# CONFIG_UWB_WHCI is not set
# CONFIG_UWB_WLP is not set
CONFIG_UWB_I1480U=y
# CONFIG_MMC is not set
CONFIG_MEMSTICK=m
CONFIG_MEMSTICK_DEBUG=y

#
# MemoryStick drivers
#
# CONFIG_MEMSTICK_UNSAFE_RESUME is not set
CONFIG_MSPRO_BLOCK=m

#
# MemoryStick Host Controller Drivers
#
CONFIG_MEMSTICK_TIFM_MS=m
CONFIG_MEMSTICK_JMICRON_38X=m
CONFIG_NEW_LEDS=y
CONFIG_LEDS_CLASS=m

#
# LED drivers
#
CONFIG_LEDS_ALIX2=m
CONFIG_LEDS_PCA9532=m
CONFIG_LEDS_GPIO=m
CONFIG_LEDS_GPIO_PLATFORM=y
CONFIG_LEDS_LP5521=m
CONFIG_LEDS_CLEVO_MAIL=m
CONFIG_LEDS_PCA955X=m
CONFIG_LEDS_DAC124S085=m
CONFIG_LEDS_BD2802=m

#
# LED Triggers
#
CONFIG_LEDS_TRIGGERS=y
CONFIG_LEDS_TRIGGER_TIMER=m
# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
CONFIG_LEDS_TRIGGER_BACKLIGHT=y
CONFIG_LEDS_TRIGGER_GPIO=m
CONFIG_LEDS_TRIGGER_DEFAULT_ON=m

#
# iptables trigger is under Netfilter config (LED target)
#
CONFIG_ACCESSIBILITY=y
CONFIG_A11Y_BRAILLE_CONSOLE=y
# CONFIG_INFINIBAND is not set
CONFIG_EDAC=y

#
# Reporting subsystems
#
CONFIG_EDAC_DEBUG=y
CONFIG_EDAC_DEBUG_VERBOSE=y
CONFIG_EDAC_MM_EDAC=m
# CONFIG_EDAC_AMD64 is not set
CONFIG_EDAC_E752X=m
CONFIG_EDAC_I82975X=m
CONFIG_EDAC_I3000=m
CONFIG_EDAC_X38=m
# CONFIG_EDAC_I5400 is not set
CONFIG_EDAC_I5000=m
CONFIG_EDAC_I5100=m
# CONFIG_RTC_CLASS is not set
# CONFIG_DMADEVICES is not set
CONFIG_AUXDISPLAY=y
CONFIG_UIO=m
CONFIG_UIO_CIF=m
CONFIG_UIO_PDRV=m
# CONFIG_UIO_PDRV_GENIRQ is not set
CONFIG_UIO_SMX=m
# CONFIG_UIO_AEC is not set
# CONFIG_UIO_SERCOS3 is not set

#
# TI VLYNQ
#
CONFIG_XEN_BALLOON=y
CONFIG_XEN_SCRUB_PAGES=y
CONFIG_XEN_DEV_EVTCHN=m
CONFIG_XENFS=m
CONFIG_XEN_COMPAT_XENFS=y
CONFIG_XEN_SYS_HYPERVISOR=y
CONFIG_X86_PLATFORM_DEVICES=y

#
# Firmware Drivers
#
CONFIG_EDD=y
CONFIG_EDD_OFF=y
CONFIG_FIRMWARE_MEMMAP=y
# CONFIG_DELL_RBU is not set
CONFIG_DCDBAS=y
CONFIG_DMIID=y
# CONFIG_ISCSI_IBFT_FIND is not set

#
# File systems
#
CONFIG_EXT2_FS=y
CONFIG_EXT2_FS_XATTR=y
CONFIG_EXT2_FS_POSIX_ACL=y
CONFIG_EXT2_FS_SECURITY=y
# CONFIG_EXT2_FS_XIP is not set
CONFIG_EXT3_FS=y
# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
CONFIG_EXT3_FS_XATTR=y
CONFIG_EXT3_FS_POSIX_ACL=y
CONFIG_EXT3_FS_SECURITY=y
CONFIG_EXT4_FS=m
# CONFIG_EXT4DEV_COMPAT is not set
# CONFIG_EXT4_FS_XATTR is not set
CONFIG_JBD=y
# CONFIG_JBD_DEBUG is not set
CONFIG_JBD2=m
CONFIG_JBD2_DEBUG=y
CONFIG_FS_MBCACHE=y
# CONFIG_REISERFS_FS is not set
CONFIG_JFS_FS=m
# CONFIG_JFS_POSIX_ACL is not set
CONFIG_JFS_SECURITY=y
# CONFIG_JFS_DEBUG is not set
CONFIG_JFS_STATISTICS=y
CONFIG_FS_POSIX_ACL=y
CONFIG_XFS_FS=m
# CONFIG_XFS_QUOTA is not set
# CONFIG_XFS_POSIX_ACL is not set
CONFIG_XFS_RT=y
CONFIG_XFS_DEBUG=y
CONFIG_GFS2_FS=y
# CONFIG_GFS2_FS_LOCKING_DLM is not set
# CONFIG_OCFS2_FS is not set
CONFIG_BTRFS_FS=y
CONFIG_BTRFS_FS_POSIX_ACL=y
CONFIG_FILE_LOCKING=y
CONFIG_FSNOTIFY=y
# CONFIG_DNOTIFY is not set
CONFIG_INOTIFY=y
# CONFIG_INOTIFY_USER is not set
# CONFIG_QUOTA is not set
CONFIG_AUTOFS_FS=y
CONFIG_AUTOFS4_FS=m
CONFIG_FUSE_FS=y
CONFIG_CUSE=y

#
# Caches
#
CONFIG_FSCACHE=y
CONFIG_FSCACHE_STATS=y
# CONFIG_FSCACHE_HISTOGRAM is not set
CONFIG_FSCACHE_DEBUG=y
# CONFIG_CACHEFILES is not set

#
# CD-ROM/DVD Filesystems
#
CONFIG_ISO9660_FS=y
# CONFIG_JOLIET is not set
CONFIG_ZISOFS=y
CONFIG_UDF_FS=y
CONFIG_UDF_NLS=y

#
# DOS/FAT/NT Filesystems
#
CONFIG_FAT_FS=m
CONFIG_MSDOS_FS=m
# CONFIG_VFAT_FS is not set
CONFIG_FAT_DEFAULT_CODEPAGE=437
CONFIG_NTFS_FS=m
# CONFIG_NTFS_DEBUG is not set
CONFIG_NTFS_RW=y

#
# Pseudo filesystems
#
CONFIG_PROC_FS=y
# CONFIG_PROC_KCORE is not set
CONFIG_PROC_SYSCTL=y
CONFIG_PROC_PAGE_MONITOR=y
CONFIG_SYSFS=y
CONFIG_TMPFS=y
# CONFIG_TMPFS_POSIX_ACL is not set
# CONFIG_HUGETLBFS is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_CONFIGFS_FS=y
CONFIG_MISC_FILESYSTEMS=y
CONFIG_ADFS_FS=m
# CONFIG_ADFS_FS_RW is not set
CONFIG_AFFS_FS=m
CONFIG_ECRYPT_FS=y
CONFIG_HFS_FS=y
# CONFIG_HFSPLUS_FS is not set
CONFIG_BEFS_FS=m
CONFIG_BEFS_DEBUG=y
CONFIG_BFS_FS=y
CONFIG_EFS_FS=y
CONFIG_CRAMFS=m
# CONFIG_SQUASHFS is not set
CONFIG_VXFS_FS=y
# CONFIG_MINIX_FS is not set
CONFIG_OMFS_FS=y
# CONFIG_HPFS_FS is not set
CONFIG_QNX4FS_FS=y
# CONFIG_ROMFS_FS is not set
CONFIG_SYSV_FS=y
CONFIG_UFS_FS=m
# CONFIG_UFS_FS_WRITE is not set
CONFIG_UFS_DEBUG=y
CONFIG_NILFS2_FS=m
# CONFIG_NETWORK_FILESYSTEMS is not set
CONFIG_EXPORTFS=m

#
# Partition Types
#
CONFIG_PARTITION_ADVANCED=y
CONFIG_ACORN_PARTITION=y
CONFIG_ACORN_PARTITION_CUMANA=y
CONFIG_ACORN_PARTITION_EESOX=y
# CONFIG_ACORN_PARTITION_ICS is not set
# CONFIG_ACORN_PARTITION_ADFS is not set
CONFIG_ACORN_PARTITION_POWERTEC=y
CONFIG_ACORN_PARTITION_RISCIX=y
# CONFIG_OSF_PARTITION is not set
CONFIG_AMIGA_PARTITION=y
CONFIG_ATARI_PARTITION=y
CONFIG_MAC_PARTITION=y
CONFIG_MSDOS_PARTITION=y
CONFIG_BSD_DISKLABEL=y
CONFIG_MINIX_SUBPARTITION=y
# CONFIG_SOLARIS_X86_PARTITION is not set
CONFIG_UNIXWARE_DISKLABEL=y
# CONFIG_LDM_PARTITION is not set
CONFIG_SGI_PARTITION=y
CONFIG_ULTRIX_PARTITION=y
CONFIG_SUN_PARTITION=y
CONFIG_KARMA_PARTITION=y
CONFIG_EFI_PARTITION=y
CONFIG_SYSV68_PARTITION=y
CONFIG_NLS=y
CONFIG_NLS_DEFAULT="iso8859-1"
CONFIG_NLS_CODEPAGE_437=m
CONFIG_NLS_CODEPAGE_737=y
CONFIG_NLS_CODEPAGE_775=m
# CONFIG_NLS_CODEPAGE_850 is not set
CONFIG_NLS_CODEPAGE_852=m
# CONFIG_NLS_CODEPAGE_855 is not set
CONFIG_NLS_CODEPAGE_857=m
# CONFIG_NLS_CODEPAGE_860 is not set
CONFIG_NLS_CODEPAGE_861=m
CONFIG_NLS_CODEPAGE_862=m
CONFIG_NLS_CODEPAGE_863=y
# CONFIG_NLS_CODEPAGE_864 is not set
CONFIG_NLS_CODEPAGE_865=m
# CONFIG_NLS_CODEPAGE_866 is not set
CONFIG_NLS_CODEPAGE_869=m
CONFIG_NLS_CODEPAGE_936=y
CONFIG_NLS_CODEPAGE_950=y
# CONFIG_NLS_CODEPAGE_932 is not set
CONFIG_NLS_CODEPAGE_949=m
CONFIG_NLS_CODEPAGE_874=y
CONFIG_NLS_ISO8859_8=y
CONFIG_NLS_CODEPAGE_1250=m
# CONFIG_NLS_CODEPAGE_1251 is not set
CONFIG_NLS_ASCII=m
CONFIG_NLS_ISO8859_1=m
CONFIG_NLS_ISO8859_2=m
# CONFIG_NLS_ISO8859_3 is not set
CONFIG_NLS_ISO8859_4=m
CONFIG_NLS_ISO8859_5=m
CONFIG_NLS_ISO8859_6=m
# 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=m
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 is not set
# CONFIG_ALLOW_WARNINGS is not set
CONFIG_FRAME_WARN=2048
CONFIG_MAGIC_SYSRQ=y
# CONFIG_UNUSED_SYMBOLS is not set
CONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set
# CONFIG_DEBUG_SECTION_MISMATCH is not set
CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_SHIRQ is not set
# CONFIG_DETECT_SOFTLOCKUP is not set
CONFIG_DETECT_HUNG_TASK=y
# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
CONFIG_SCHED_DEBUG=y
CONFIG_SCHEDSTATS=y
CONFIG_TIMER_STATS=y
CONFIG_DEBUG_OBJECTS=y
# CONFIG_DEBUG_OBJECTS_SELFTEST is not set
CONFIG_DEBUG_OBJECTS_FREE=y
# CONFIG_DEBUG_OBJECTS_TIMERS is not set
CONFIG_DEBUG_OBJECTS_ENABLE_DEFAULT=1
CONFIG_SLUB_DEBUG_ON=y
CONFIG_SLUB_STATS=y
CONFIG_DEBUG_KMEMLEAK=y
# CONFIG_DEBUG_KMEMLEAK_TEST is not set
# CONFIG_DEBUG_RT_MUTEXES is not set
CONFIG_RT_MUTEX_TESTER=y
CONFIG_DEBUG_SPINLOCK=y
CONFIG_DEBUG_MUTEXES=y
CONFIG_DEBUG_LOCK_ALLOC=y
# CONFIG_PROVE_LOCKING is not set
CONFIG_LOCKDEP=y
CONFIG_LOCK_STAT=y
# CONFIG_DEBUG_LOCKDEP is not set
CONFIG_DEBUG_SPINLOCK_SLEEP=y
CONFIG_DEBUG_LOCKING_API_SELFTESTS=y
CONFIG_STACKTRACE=y
CONFIG_DEBUG_BUGVERBOSE=y
CONFIG_DEBUG_VM=y
CONFIG_DEBUG_VIRTUAL=y
CONFIG_DEBUG_WRITECOUNT=y
CONFIG_DEBUG_MEMORY_INIT=y
CONFIG_DEBUG_LIST=y
CONFIG_DEBUG_SG=y
CONFIG_DEBUG_NOTIFIERS=y
CONFIG_ARCH_WANT_FRAME_POINTERS=y
CONFIG_FRAME_POINTER=y
CONFIG_BOOT_PRINTK_DELAY=y
CONFIG_RCU_TORTURE_TEST=y
CONFIG_RCU_TORTURE_TEST_RUNNABLE=y
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
# CONFIG_BACKTRACE_SELF_TEST is not set
CONFIG_FAULT_INJECTION=y
# CONFIG_FAILSLAB is not set
# CONFIG_FAIL_PAGE_ALLOC is not set
CONFIG_FAIL_MAKE_REQUEST=y
# CONFIG_FAIL_IO_TIMEOUT is not set
# CONFIG_FAULT_INJECTION_DEBUG_FS is not set
CONFIG_LATENCYTOP=y
# CONFIG_SYSCTL_SYSCALL_CHECK is not set
CONFIG_DEBUG_PAGEALLOC=y
CONFIG_USER_STACKTRACE_SUPPORT=y
CONFIG_HAVE_FUNCTION_TRACER=y
CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
CONFIG_HAVE_DYNAMIC_FTRACE=y
CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
CONFIG_HAVE_FTRACE_SYSCALLS=y
CONFIG_TRACING_SUPPORT=y
# CONFIG_FTRACE is not set
# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
# CONFIG_FIREWIRE_OHCI_REMOTE_DMA is not set
CONFIG_DYNAMIC_DEBUG=y
# CONFIG_DMA_API_DEBUG is not set
CONFIG_SAMPLES=y
# CONFIG_SAMPLE_MARKERS is not set
CONFIG_SAMPLE_TRACEPOINTS=m
# CONFIG_SAMPLE_KOBJECT is not set
# CONFIG_SAMPLE_HW_BREAKPOINT is not set
CONFIG_HAVE_ARCH_KGDB=y
CONFIG_KGDB=y
CONFIG_KGDB_SERIAL_CONSOLE=y
CONFIG_KGDB_TESTS=y
CONFIG_HAVE_ARCH_KMEMCHECK=y
CONFIG_STRICT_DEVMEM=y
CONFIG_X86_VERBOSE_BOOTUP=y
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=y
CONFIG_X86_PTDUMP=y
CONFIG_DEBUG_RODATA=y
CONFIG_DEBUG_RODATA_TEST=y
# CONFIG_DEBUG_NX_TEST is not set
# CONFIG_IOMMU_DEBUG is not set
CONFIG_IOMMU_STRESS=y
CONFIG_HAVE_MMIOTRACE_SUPPORT=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 is not set
# CONFIG_IO_DELAY_UDELAY is not set
CONFIG_IO_DELAY_NONE=y
CONFIG_DEFAULT_IO_DELAY_TYPE=3
CONFIG_DEBUG_BOOT_PARAMS=y
CONFIG_CPA_DEBUG=y
CONFIG_OPTIMIZE_INLINING=y

#
# Security options
#
CONFIG_KEYS=y
# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
CONFIG_SECURITY=y
CONFIG_SECURITYFS=y
CONFIG_SECURITY_NETWORK=y
CONFIG_SECURITY_NETWORK_XFRM=y
# CONFIG_SECURITY_PATH is not set
CONFIG_SECURITY_FILE_CAPABILITIES=y
CONFIG_SECURITY_SELINUX=y
# CONFIG_SECURITY_SELINUX_BOOTPARAM is not set
CONFIG_SECURITY_SELINUX_DISABLE=y
CONFIG_SECURITY_SELINUX_DEVELOP=y
CONFIG_SECURITY_SELINUX_AVC_STATS=y
CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1
# CONFIG_SECURITY_TOMOYO is not set
CONFIG_XOR_BLOCKS=m
CONFIG_ASYNC_CORE=m
CONFIG_ASYNC_MEMCPY=m
CONFIG_ASYNC_XOR=m
CONFIG_CRYPTO=y

#
# Crypto core or helper
#
CONFIG_CRYPTO_FIPS=y
CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_ALGAPI2=y
CONFIG_CRYPTO_AEAD=y
CONFIG_CRYPTO_AEAD2=y
CONFIG_CRYPTO_BLKCIPHER=y
CONFIG_CRYPTO_BLKCIPHER2=y
CONFIG_CRYPTO_HASH=y
CONFIG_CRYPTO_HASH2=y
CONFIG_CRYPTO_RNG=y
CONFIG_CRYPTO_RNG2=y
CONFIG_CRYPTO_PCOMP=y
CONFIG_CRYPTO_MANAGER=y
CONFIG_CRYPTO_MANAGER2=y
CONFIG_CRYPTO_GF128MUL=y
CONFIG_CRYPTO_NULL=y
CONFIG_CRYPTO_WORKQUEUE=y
# CONFIG_CRYPTO_CRYPTD is not set
CONFIG_CRYPTO_AUTHENC=y
# CONFIG_CRYPTO_TEST is not set

#
# Authenticated Encryption with Associated Data
#
# CONFIG_CRYPTO_CCM is not set
CONFIG_CRYPTO_GCM=y
CONFIG_CRYPTO_SEQIV=y

#
# Block modes
#
CONFIG_CRYPTO_CBC=y
CONFIG_CRYPTO_CTR=y
CONFIG_CRYPTO_CTS=m
CONFIG_CRYPTO_ECB=y
# CONFIG_CRYPTO_LRW is not set
CONFIG_CRYPTO_PCBC=m
CONFIG_CRYPTO_XTS=m

#
# Hash modes
#
CONFIG_CRYPTO_HMAC=y
# CONFIG_CRYPTO_XCBC is not set

#
# Digest
#
CONFIG_CRYPTO_CRC32C=y
CONFIG_CRYPTO_CRC32C_INTEL=m
CONFIG_CRYPTO_MD4=y
CONFIG_CRYPTO_MD5=y
CONFIG_CRYPTO_MICHAEL_MIC=y
CONFIG_CRYPTO_RMD128=m
# CONFIG_CRYPTO_RMD160 is not set
CONFIG_CRYPTO_RMD256=m
# CONFIG_CRYPTO_RMD320 is not set
CONFIG_CRYPTO_SHA1=y
CONFIG_CRYPTO_SHA256=m
CONFIG_CRYPTO_SHA512=y
CONFIG_CRYPTO_TGR192=y
CONFIG_CRYPTO_WP512=m

#
# Ciphers
#
CONFIG_CRYPTO_AES=y
CONFIG_CRYPTO_AES_X86_64=m
# CONFIG_CRYPTO_AES_NI_INTEL is not set
CONFIG_CRYPTO_ANUBIS=m
CONFIG_CRYPTO_ARC4=m
# CONFIG_CRYPTO_BLOWFISH is not set
# CONFIG_CRYPTO_CAMELLIA is not set
CONFIG_CRYPTO_CAST5=y
CONFIG_CRYPTO_CAST6=y
CONFIG_CRYPTO_DES=y
CONFIG_CRYPTO_FCRYPT=m
CONFIG_CRYPTO_KHAZAD=m
CONFIG_CRYPTO_SALSA20=y
CONFIG_CRYPTO_SALSA20_X86_64=y
CONFIG_CRYPTO_SEED=m
# CONFIG_CRYPTO_SERPENT is not set
CONFIG_CRYPTO_TEA=y
CONFIG_CRYPTO_TWOFISH=y
CONFIG_CRYPTO_TWOFISH_COMMON=y
CONFIG_CRYPTO_TWOFISH_X86_64=m

#
# Compression
#
CONFIG_CRYPTO_DEFLATE=m
CONFIG_CRYPTO_ZLIB=m
CONFIG_CRYPTO_LZO=m

#
# Random Number Generation
#
CONFIG_CRYPTO_ANSI_CPRNG=m
# CONFIG_CRYPTO_HW is not set
CONFIG_HAVE_KVM=y
CONFIG_HAVE_KVM_IRQCHIP=y
CONFIG_VIRTUALIZATION=y
CONFIG_KVM=y
CONFIG_KVM_INTEL=m
CONFIG_KVM_AMD=y
CONFIG_KVM_TRACE=y
CONFIG_VIRTIO=m
CONFIG_VIRTIO_RING=m
# CONFIG_VIRTIO_PCI is not set
CONFIG_VIRTIO_BALLOON=m
# CONFIG_BINARY_PRINTF is not set

#
# Library routines
#
CONFIG_BITREVERSE=y
CONFIG_GENERIC_FIND_FIRST_BIT=y
CONFIG_GENERIC_FIND_NEXT_BIT=y
CONFIG_GENERIC_FIND_LAST_BIT=y
CONFIG_CRC_CCITT=y
CONFIG_CRC16=y
CONFIG_CRC_T10DIF=m
CONFIG_CRC_ITU_T=y
CONFIG_CRC32=y
# CONFIG_CRC7 is not set
CONFIG_LIBCRC32C=y
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=y
CONFIG_LZO_COMPRESS=m
CONFIG_LZO_DECOMPRESS=m
CONFIG_TEXTSEARCH=y
CONFIG_TEXTSEARCH_KMP=y
CONFIG_TEXTSEARCH_BM=y
CONFIG_TEXTSEARCH_FSM=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y
CONFIG_HAS_DMA=y
CONFIG_CHECK_SIGNATURE=y
CONFIG_CPUMASK_OFFSTACK=y
CONFIG_NLATTR=y
CONFIG_FORCE_SUCCESSFUL_BUILD=y
CONFIG_FORCE_MINIMAL_CONFIG=y
CONFIG_FORCE_MINIMAL_CONFIG_64=y
CONFIG_FORCE_MINIMAL_CONFIG_PHYS=y

2009-06-17 11:36:21

by Ingo Molnar

[permalink] [raw]
Subject: Re: WARNING: at mm/page_alloc.c:1159 get_page_from_freelist+0x325/0x655()


and a separate warning popped up on another testbox:

[ 0.000007] ------------[ cut here ]------------
[ 0.000017] WARNING: at mm/page_alloc.c:1743 __alloc_pages_nodemask+0xfe/0x3fe()
[ 0.000020] Hardware name: 1951A26
[ 0.000022] Modules linked in:
[ 0.000027] Pid: 0, comm: swapper Not tainted 2.6.30-tip #6031
[ 0.000030] Call Trace:
[ 0.000037] [<c102c1ce>] warn_slowpath_common+0x60/0x77
[ 0.000042] [<c102c1f2>] warn_slowpath_null+0xd/0x10
[ 0.000046] [<c107cca0>] __alloc_pages_nodemask+0xfe/0x3fe
[ 0.000052] [<c10418df>] ? sched_clock_idle_wakeup_event+0x11/0x13
[ 0.000057] [<c107cfb3>] alloc_pages_node+0x13/0x15
[ 0.000060] [<c107cfe5>] __get_free_pages+0xe/0x1f
[ 0.000066] [<c1099aee>] __kmalloc+0x2a/0x10e
[ 0.000070] [<c1040271>] ? ktime_get+0x19/0x1b
[ 0.000077] [<c142fdf7>] profile_init+0x47/0x81
[ 0.000084] [<c16ed71a>] start_kernel+0x1b6/0x2c5
[ 0.000089] [<c16ed06a>] __init_begin+0x6a/0x6f
[ 0.000099] ---[ end trace 4eaa2a86a8e2da22 ]---
[ 0.000999] Console: colour VGA+ 80x25

Config attached here too.

Ingo


Attachments:
(No filename) (1.08 kB)
config (65.03 kB)
Download all attachments

2009-06-17 11:41:45

by Mel Gorman

[permalink] [raw]
Subject: Re: WARNING: at mm/page_alloc.c:1159 get_page_from_freelist+0x325/0x655()

On Wed, Jun 17, 2009 at 01:31:20PM +0200, Ingo Molnar wrote:
>
> a new warning started popping up today, in the new page allocator
> code. The allocation came from kmemleak:
>

This is not my changes as such. As part of another discussion, a warning
was added for high-order __GFP_NOFAIL allocations. The changelog for
commit dab48dab37d2770824420d1e01730a107fade1aa [page-allocator: warn if
__GFP_NOFAIL is used for a large allocation] has more details.

> WARNING: at mm/page_alloc.c:1159 get_page_from_freelist+0x325/0x655()
> Hardware name: System Product Name
> Modules linked in:
> Pid: 4367, comm: ifup Not tainted 2.6.30-tip-04303-g5ada65e-dirty #54431
> Call Trace:
> [<ffffffff810dba73>] ? get_page_from_freelist+0x325/0x655
> [<ffffffff8106f140>] warn_slowpath_common+0x88/0xcb
> [<ffffffff8106f1a5>] warn_slowpath_null+0x22/0x38
> [<ffffffff810dba73>] get_page_from_freelist+0x325/0x655
> [<ffffffff810dc18c>] __alloc_pages_nodemask+0x14c/0x5b0
> [<ffffffff811063e1>] ? deactivate_slab+0xce/0x16b
> [<ffffffff8103b1c8>] ? native_sched_clock+0x40/0x79
> [<ffffffff811063e1>] ? deactivate_slab+0xce/0x16b
> [<ffffffff811063e1>] ? deactivate_slab+0xce/0x16b
> [<ffffffff81102417>] alloc_pages_current+0xcc/0xeb
> [<ffffffff81107a78>] alloc_slab_page+0x2a/0x7e
> [<ffffffff81107b27>] new_slab+0x5b/0x210
> [<ffffffff811063fa>] ? deactivate_slab+0xe7/0x16b
> [<ffffffff81108253>] __slab_alloc+0x214/0x3da
> [<ffffffff8110f58d>] ? kmemleak_alloc+0x83/0x35a
> [<ffffffff8110f58d>] ? kmemleak_alloc+0x83/0x35a
> [<ffffffff8110863c>] kmem_cache_alloc+0xac/0x14e
> [<ffffffff8110f58d>] kmemleak_alloc+0x83/0x35a
> [<ffffffff812b6436>] ? cfq_get_queue+0x101/0x231

No super sure who is responsible here but could you check
/proc/slabinfo. Is cfq_queue now requiring high-order allocations for
its slabs?

> [<ffffffff81108511>] kmem_cache_alloc_node+0xf8/0x177
> [<ffffffff812b6436>] ? cfq_get_queue+0x101/0x231
> [<ffffffff812b6436>] cfq_get_queue+0x101/0x231
> [<ffffffff81847362>] ? _spin_lock_irqsave+0x7f/0xa1
> [<ffffffff812b68b1>] cfq_set_request+0x2a0/0x34c
> [<ffffffff812a390a>] elv_set_request+0x29/0x4e
> [<ffffffff812a7e3b>] get_request+0x208/0x2ea
> [<ffffffff812a8101>] ? __make_request+0x48/0x3c8
> [<ffffffff812a7f54>] get_request_wait+0x37/0x19c
> [<ffffffff812a8101>] ? __make_request+0x48/0x3c8
> [<ffffffff812a8332>] __make_request+0x279/0x3c8
> [<ffffffff812a6385>] generic_make_request+0x2ed/0x352
> [<ffffffff812a64bf>] submit_bio+0xd5/0xf2
> [<ffffffff81137aa8>] submit_bh+0x110/0x14a
> [<ffffffff81139982>] ll_rw_block+0xc4/0x120
> [<ffffffff81180bde>] ext3_bread+0x47/0x87
> [<ffffffff81183f4f>] ext3_find_entry+0x13a/0x5f2
> [<ffffffff8109999b>] ? __lock_acquire+0x1f2/0x40e
> [<ffffffff81125ed3>] ? d_alloc+0x19c/0x1ef
> [<ffffffff81098d7f>] ? lock_release_holdtime+0x3f/0x14c
> [<ffffffff81125ed3>] ? d_alloc+0x19c/0x1ef
> [<ffffffff81184cbd>] ext3_lookup+0x43/0x10c
> [<ffffffff8111b7cf>] do_lookup+0xe4/0x182
> [<ffffffff8111c652>] __link_path_walk+0x667/0x7d3
> [<ffffffff8111cdc1>] path_walk+0x78/0xf7
> [<ffffffff8111e157>] do_path_lookup+0x39/0xac
> [<ffffffff8111fa5f>] user_path_at+0x61/0xaf
> [<ffffffff8112c0c1>] ? mntput_no_expire+0x33/0xdb
> [<ffffffff81116230>] ? cp_new_stat+0xf8/0x119
> [<ffffffff8111645c>] vfs_fstatat+0x44/0x85
> [<ffffffff81116622>] vfs_stat+0x29/0x3f
> [<ffffffff81116661>] sys_newstat+0x29/0x5e
> [<ffffffff818469c8>] ? lockdep_sys_exit_thunk+0x35/0x67
> [<ffffffff81032f02>] system_call_fastpath+0x16/0x1b
> ---[ end trace 2fb5866b65128972 ]---
> 4k 262128 large 0 gb 0 x 262128[ffff880000000000-ffff88003ffef000] miss 0
>

--
Mel Gorman
Part-time Phd Student Linux Technology Center
University of Limerick IBM Dublin Software Lab

2009-06-17 12:12:10

by Catalin Marinas

[permalink] [raw]
Subject: Re: WARNING: at mm/page_alloc.c:1159 get_page_from_freelist+0x325/0x655()

On Wed, 2009-06-17 at 13:31 +0200, Ingo Molnar wrote:
> a new warning started popping up today, in the new page allocator
> code. The allocation came from kmemleak:
>
> WARNING: at mm/page_alloc.c:1159 get_page_from_freelist+0x325/0x655()
> Hardware name: System Product Name
> Modules linked in:
> Pid: 4367, comm: ifup Not tainted 2.6.30-tip-04303-g5ada65e-dirty #54431
> Call Trace:
> [<ffffffff810dba73>] ? get_page_from_freelist+0x325/0x655
> [<ffffffff8106f140>] warn_slowpath_common+0x88/0xcb
> [<ffffffff8106f1a5>] warn_slowpath_null+0x22/0x38
> [<ffffffff810dba73>] get_page_from_freelist+0x325/0x655
> [<ffffffff810dc18c>] __alloc_pages_nodemask+0x14c/0x5b0
> [<ffffffff811063e1>] ? deactivate_slab+0xce/0x16b
> [<ffffffff8103b1c8>] ? native_sched_clock+0x40/0x79
> [<ffffffff811063e1>] ? deactivate_slab+0xce/0x16b
> [<ffffffff811063e1>] ? deactivate_slab+0xce/0x16b
> [<ffffffff81102417>] alloc_pages_current+0xcc/0xeb
> [<ffffffff81107a78>] alloc_slab_page+0x2a/0x7e
> [<ffffffff81107b27>] new_slab+0x5b/0x210
> [<ffffffff811063fa>] ? deactivate_slab+0xe7/0x16b
> [<ffffffff81108253>] __slab_alloc+0x214/0x3da
> [<ffffffff8110f58d>] ? kmemleak_alloc+0x83/0x35a
> [<ffffffff8110f58d>] ? kmemleak_alloc+0x83/0x35a
> [<ffffffff8110863c>] kmem_cache_alloc+0xac/0x14e
> [<ffffffff8110f58d>] kmemleak_alloc+0x83/0x35a
> [<ffffffff812b6436>] ? cfq_get_queue+0x101/0x231
> [<ffffffff81108511>] kmem_cache_alloc_node+0xf8/0x177
> [<ffffffff812b6436>] ? cfq_get_queue+0x101/0x231
> [<ffffffff812b6436>] cfq_get_queue+0x101/0x231

Kmemleak needs to allocate memory for the pointer tracing and it
currently passes the same gfp flags as those used by the original
caller. In this case cfq_find_alloc_queue uses __GFP_NOFAIL.

The reason for this was to avoid GFP_ATOMIC if the caller wasn't
requiring it. I think the approach below is better:

diff --git a/mm/kmemleak.c b/mm/kmemleak.c
index 58ec86c..46c9c93 100644
--- a/mm/kmemleak.c
+++ b/mm/kmemleak.c
@@ -462,7 +462,7 @@ static void create_object(unsigned long ptr, size_t size, int min_count,
struct prio_tree_node *node;
struct stack_trace trace;

- object = kmem_cache_alloc(object_cache, gfp & ~GFP_SLAB_BUG_MASK);
+ object = kmem_cache_alloc(object_cache, gfp & (GFP_KERNEL | GFP_ATOMIC));
if (!object) {
kmemleak_panic("kmemleak: Cannot allocate a kmemleak_object "
"structure\n");
@@ -636,7 +636,7 @@ static void add_scan_area(unsigned long ptr, unsigned long offset,
return;
}

- area = kmem_cache_alloc(scan_area_cache, gfp & ~GFP_SLAB_BUG_MASK);
+ area = kmem_cache_alloc(scan_area_cache, gfp & (GFP_KERNEL | GFP_ATOMIC));
if (!area) {
kmemleak_warn("kmemleak: Cannot allocate a scan area\n");
goto out;

--
Catalin

2009-06-17 12:19:24

by Mel Gorman

[permalink] [raw]
Subject: [PATCH] profile: Suppress warning about large allocations when profile=1 is specified

On Wed, Jun 17, 2009 at 01:35:34PM +0200, Ingo Molnar wrote:
> and a separate warning popped up on another testbox:
>
> [ 0.000007] ------------[ cut here ]------------
> [ 0.000017] WARNING: at mm/page_alloc.c:1743 __alloc_pages_nodemask+0xfe/0x3fe()
> [ 0.000020] Hardware name: 1951A26
> [ 0.000022] Modules linked in:
> [ 0.000027] Pid: 0, comm: swapper Not tainted 2.6.30-tip #6031
> [ 0.000030] Call Trace:
> [ 0.000037] [<c102c1ce>] warn_slowpath_common+0x60/0x77
> [ 0.000042] [<c102c1f2>] warn_slowpath_null+0xd/0x10
> [ 0.000046] [<c107cca0>] __alloc_pages_nodemask+0xfe/0x3fe
> [ 0.000052] [<c10418df>] ? sched_clock_idle_wakeup_event+0x11/0x13
> [ 0.000057] [<c107cfb3>] alloc_pages_node+0x13/0x15
> [ 0.000060] [<c107cfe5>] __get_free_pages+0xe/0x1f
> [ 0.000066] [<c1099aee>] __kmalloc+0x2a/0x10e
> [ 0.000070] [<c1040271>] ? ktime_get+0x19/0x1b
> [ 0.000077] [<c142fdf7>] profile_init+0x47/0x81
> [ 0.000084] [<c16ed71a>] start_kernel+0x1b6/0x2c5
> [ 0.000089] [<c16ed06a>] __init_begin+0x6a/0x6f
> [ 0.000099] ---[ end trace 4eaa2a86a8e2da22 ]---
> [ 0.000999] Console: colour VGA+ 80x25
>
> Config attached here too.
>

Patch as follows

==== CUT HERE ====
profile: Suppress warning about large allocations when profile=1 is specified

When profile= is used, a large buffer is allocated early at boot. This can
be larger than what the page allocator can provide but the caller is able
to handle the situation. A warning is printed when too large an order is
given to the page allocator to indicate the caller might need fixing up
but the caller in this case is all right already. The warning looks
something like

[ 0.000007] ------------[ cut here ]------------
[ 0.000017] WARNING: at mm/page_alloc.c:1743 __alloc_pages_nodemask+0xfe/0x3fe()
[ 0.000020] Hardware name: 1951A26
[ 0.000022] Modules linked in:
[ 0.000027] Pid: 0, comm: swapper Not tainted 2.6.30-tip #6031
[ 0.000030] Call Trace:
[ 0.000037] [<c102c1ce>] warn_slowpath_common+0x60/0x77
[ 0.000042] [<c102c1f2>] warn_slowpath_null+0xd/0x10
[ 0.000046] [<c107cca0>] __alloc_pages_nodemask+0xfe/0x3fe
[ 0.000052] [<c10418df>] ? sched_clock_idle_wakeup_event+0x11/0x13
[ 0.000057] [<c107cfb3>] alloc_pages_node+0x13/0x15
[ 0.000060] [<c107cfe5>] __get_free_pages+0xe/0x1f
[ 0.000066] [<c1099aee>] __kmalloc+0x2a/0x10e
[ 0.000070] [<c1040271>] ? ktime_get+0x19/0x1b
[ 0.000077] [<c142fdf7>] profile_init+0x47/0x81
[ 0.000084] [<c16ed71a>] start_kernel+0x1b6/0x2c5
[ 0.000089] [<c16ed06a>] __init_begin+0x6a/0x6f
[ 0.000099] ---[ end trace 4eaa2a86a8e2da22 ]---
[ 0.000999] Console: colour VGA+ 80x25

This patch suppresses the warning for profile= when the order is too
high for the page allocator to satisfy.

Signed-off-by: Mel Gorman <[email protected]>
---
kernel/profile.c | 5 +++--
mm/page_alloc.c | 4 +++-
2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/kernel/profile.c b/kernel/profile.c
index 69911b5..6a1ad37 100644
--- a/kernel/profile.c
+++ b/kernel/profile.c
@@ -117,11 +117,12 @@ int __ref profile_init(void)

cpumask_copy(prof_cpu_mask, cpu_possible_mask);

- prof_buffer = kzalloc(buffer_bytes, GFP_KERNEL);
+ prof_buffer = kzalloc(buffer_bytes, GFP_KERNEL|__GFP_NOWARN);
if (prof_buffer)
return 0;

- prof_buffer = alloc_pages_exact(buffer_bytes, GFP_KERNEL|__GFP_ZERO);
+ prof_buffer = alloc_pages_exact(buffer_bytes,
+ GFP_KERNEL|__GFP_ZERO|__GFP_NOWARN);
if (prof_buffer)
return 0;

diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index a5f3c27..005b32d 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -1740,8 +1740,10 @@ __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order,
* be using allocators in order of preference for an area that is
* too large.
*/
- if (WARN_ON_ONCE(order >= MAX_ORDER))
+ if (order >= MAX_ORDER) {
+ WARN_ON_ONCE(!(gfp_mask & __GFP_NOWARN));
return NULL;
+ }

/*
* GFP_THISNODE (meaning __GFP_THISNODE, __GFP_NORETRY and

2009-06-17 12:28:17

by Mel Gorman

[permalink] [raw]
Subject: Re: WARNING: at mm/page_alloc.c:1159 get_page_from_freelist+0x325/0x655()

On Wed, Jun 17, 2009 at 01:11:17PM +0100, Catalin Marinas wrote:
> On Wed, 2009-06-17 at 13:31 +0200, Ingo Molnar wrote:
> > a new warning started popping up today, in the new page allocator
> > code. The allocation came from kmemleak:
> >
> > WARNING: at mm/page_alloc.c:1159 get_page_from_freelist+0x325/0x655()
> > Hardware name: System Product Name
> > Modules linked in:
> > Pid: 4367, comm: ifup Not tainted 2.6.30-tip-04303-g5ada65e-dirty #54431
> > Call Trace:
> > [<ffffffff810dba73>] ? get_page_from_freelist+0x325/0x655
> > [<ffffffff8106f140>] warn_slowpath_common+0x88/0xcb
> > [<ffffffff8106f1a5>] warn_slowpath_null+0x22/0x38
> > [<ffffffff810dba73>] get_page_from_freelist+0x325/0x655
> > [<ffffffff810dc18c>] __alloc_pages_nodemask+0x14c/0x5b0
> > [<ffffffff811063e1>] ? deactivate_slab+0xce/0x16b
> > [<ffffffff8103b1c8>] ? native_sched_clock+0x40/0x79
> > [<ffffffff811063e1>] ? deactivate_slab+0xce/0x16b
> > [<ffffffff811063e1>] ? deactivate_slab+0xce/0x16b
> > [<ffffffff81102417>] alloc_pages_current+0xcc/0xeb
> > [<ffffffff81107a78>] alloc_slab_page+0x2a/0x7e
> > [<ffffffff81107b27>] new_slab+0x5b/0x210
> > [<ffffffff811063fa>] ? deactivate_slab+0xe7/0x16b
> > [<ffffffff81108253>] __slab_alloc+0x214/0x3da
> > [<ffffffff8110f58d>] ? kmemleak_alloc+0x83/0x35a
> > [<ffffffff8110f58d>] ? kmemleak_alloc+0x83/0x35a
> > [<ffffffff8110863c>] kmem_cache_alloc+0xac/0x14e
> > [<ffffffff8110f58d>] kmemleak_alloc+0x83/0x35a
> > [<ffffffff812b6436>] ? cfq_get_queue+0x101/0x231
> > [<ffffffff81108511>] kmem_cache_alloc_node+0xf8/0x177
> > [<ffffffff812b6436>] ? cfq_get_queue+0x101/0x231
> > [<ffffffff812b6436>] cfq_get_queue+0x101/0x231
>
> Kmemleak needs to allocate memory for the pointer tracing and it
> currently passes the same gfp flags as those used by the original
> caller. In this case cfq_find_alloc_queue uses __GFP_NOFAIL.
>
> The reason for this was to avoid GFP_ATOMIC if the caller wasn't
> requiring it. I think the approach below is better:
>

How about defining a GFP_SLAB_KMEMLEAK_MASK the subset of flags that kmemleak
should use? Based on this patch, the following appears to be it's definition.

__GFP_WAIT | __GFP_IO | __GFP_FS | __GFP_HIGH

> diff --git a/mm/kmemleak.c b/mm/kmemleak.c
> index 58ec86c..46c9c93 100644
> --- a/mm/kmemleak.c
> +++ b/mm/kmemleak.c
> @@ -462,7 +462,7 @@ static void create_object(unsigned long ptr, size_t size, int min_count,
> struct prio_tree_node *node;
> struct stack_trace trace;
>
> - object = kmem_cache_alloc(object_cache, gfp & ~GFP_SLAB_BUG_MASK);
> + object = kmem_cache_alloc(object_cache, gfp & (GFP_KERNEL | GFP_ATOMIC));
> if (!object) {
> kmemleak_panic("kmemleak: Cannot allocate a kmemleak_object "
> "structure\n");
> @@ -636,7 +636,7 @@ static void add_scan_area(unsigned long ptr, unsigned long offset,
> return;
> }
>
> - area = kmem_cache_alloc(scan_area_cache, gfp & ~GFP_SLAB_BUG_MASK);
> + area = kmem_cache_alloc(scan_area_cache, gfp & (GFP_KERNEL | GFP_ATOMIC));
> if (!area) {
> kmemleak_warn("kmemleak: Cannot allocate a scan area\n");
> goto out;
>
> --
> Catalin
>

--
Mel Gorman
Part-time Phd Student Linux Technology Center
University of Limerick IBM Dublin Software Lab

2009-06-17 12:37:10

by Catalin Marinas

[permalink] [raw]
Subject: Re: WARNING: at mm/page_alloc.c:1159 get_page_from_freelist+0x325/0x655()

On Wed, 2009-06-17 at 13:28 +0100, Mel Gorman wrote:
> On Wed, Jun 17, 2009 at 01:11:17PM +0100, Catalin Marinas wrote:
> > On Wed, 2009-06-17 at 13:31 +0200, Ingo Molnar wrote:
> > > a new warning started popping up today, in the new page allocator
> > > code. The allocation came from kmemleak:
> > >
> > > WARNING: at mm/page_alloc.c:1159 get_page_from_freelist+0x325/0x655()
> > > Hardware name: System Product Name
> > > Modules linked in:
> > > Pid: 4367, comm: ifup Not tainted 2.6.30-tip-04303-g5ada65e-dirty #54431
> > > Call Trace:
> > > [<ffffffff810dba73>] ? get_page_from_freelist+0x325/0x655
> > > [<ffffffff8106f140>] warn_slowpath_common+0x88/0xcb
> > > [<ffffffff8106f1a5>] warn_slowpath_null+0x22/0x38
> > > [<ffffffff810dba73>] get_page_from_freelist+0x325/0x655
> > > [<ffffffff810dc18c>] __alloc_pages_nodemask+0x14c/0x5b0
> > > [<ffffffff811063e1>] ? deactivate_slab+0xce/0x16b
> > > [<ffffffff8103b1c8>] ? native_sched_clock+0x40/0x79
> > > [<ffffffff811063e1>] ? deactivate_slab+0xce/0x16b
> > > [<ffffffff811063e1>] ? deactivate_slab+0xce/0x16b
> > > [<ffffffff81102417>] alloc_pages_current+0xcc/0xeb
> > > [<ffffffff81107a78>] alloc_slab_page+0x2a/0x7e
> > > [<ffffffff81107b27>] new_slab+0x5b/0x210
> > > [<ffffffff811063fa>] ? deactivate_slab+0xe7/0x16b
> > > [<ffffffff81108253>] __slab_alloc+0x214/0x3da
> > > [<ffffffff8110f58d>] ? kmemleak_alloc+0x83/0x35a
> > > [<ffffffff8110f58d>] ? kmemleak_alloc+0x83/0x35a
> > > [<ffffffff8110863c>] kmem_cache_alloc+0xac/0x14e
> > > [<ffffffff8110f58d>] kmemleak_alloc+0x83/0x35a
> > > [<ffffffff812b6436>] ? cfq_get_queue+0x101/0x231
> > > [<ffffffff81108511>] kmem_cache_alloc_node+0xf8/0x177
> > > [<ffffffff812b6436>] ? cfq_get_queue+0x101/0x231
> > > [<ffffffff812b6436>] cfq_get_queue+0x101/0x231
> >
> > Kmemleak needs to allocate memory for the pointer tracing and it
> > currently passes the same gfp flags as those used by the original
> > caller. In this case cfq_find_alloc_queue uses __GFP_NOFAIL.
> >
> > The reason for this was to avoid GFP_ATOMIC if the caller wasn't
> > requiring it. I think the approach below is better:
> >
>
> How about defining a GFP_SLAB_KMEMLEAK_MASK the subset of flags that kmemleak
> should use? Based on this patch, the following appears to be it's definition.
>
> __GFP_WAIT | __GFP_IO | __GFP_FS | __GFP_HIGH

Do you mean defining one in the gfp.h file? I think this would be better
placed in the kmemleak.c file as no other part of Linux would be using
it.

I personally find defining the GFP_KMEMLEAK_MASK as (GFP_KERNEL |
GFP_ATOMIC) more readable than using the individual bits since this
states clearly what type of allocations would be allowed (and safer if
someone later decides to improve the GFP_KERNEL or GFP_ATOMIC
definitions).

--
Catalin

2009-06-17 12:40:42

by Mel Gorman

[permalink] [raw]
Subject: Re: WARNING: at mm/page_alloc.c:1159 get_page_from_freelist+0x325/0x655()

On Wed, Jun 17, 2009 at 01:36:00PM +0100, Catalin Marinas wrote:
> On Wed, 2009-06-17 at 13:28 +0100, Mel Gorman wrote:
> > On Wed, Jun 17, 2009 at 01:11:17PM +0100, Catalin Marinas wrote:
> > > On Wed, 2009-06-17 at 13:31 +0200, Ingo Molnar wrote:
> > > > a new warning started popping up today, in the new page allocator
> > > > code. The allocation came from kmemleak:
> > > >
> > > > WARNING: at mm/page_alloc.c:1159 get_page_from_freelist+0x325/0x655()
> > > > Hardware name: System Product Name
> > > > Modules linked in:
> > > > Pid: 4367, comm: ifup Not tainted 2.6.30-tip-04303-g5ada65e-dirty #54431
> > > > Call Trace:
> > > > [<ffffffff810dba73>] ? get_page_from_freelist+0x325/0x655
> > > > [<ffffffff8106f140>] warn_slowpath_common+0x88/0xcb
> > > > [<ffffffff8106f1a5>] warn_slowpath_null+0x22/0x38
> > > > [<ffffffff810dba73>] get_page_from_freelist+0x325/0x655
> > > > [<ffffffff810dc18c>] __alloc_pages_nodemask+0x14c/0x5b0
> > > > [<ffffffff811063e1>] ? deactivate_slab+0xce/0x16b
> > > > [<ffffffff8103b1c8>] ? native_sched_clock+0x40/0x79
> > > > [<ffffffff811063e1>] ? deactivate_slab+0xce/0x16b
> > > > [<ffffffff811063e1>] ? deactivate_slab+0xce/0x16b
> > > > [<ffffffff81102417>] alloc_pages_current+0xcc/0xeb
> > > > [<ffffffff81107a78>] alloc_slab_page+0x2a/0x7e
> > > > [<ffffffff81107b27>] new_slab+0x5b/0x210
> > > > [<ffffffff811063fa>] ? deactivate_slab+0xe7/0x16b
> > > > [<ffffffff81108253>] __slab_alloc+0x214/0x3da
> > > > [<ffffffff8110f58d>] ? kmemleak_alloc+0x83/0x35a
> > > > [<ffffffff8110f58d>] ? kmemleak_alloc+0x83/0x35a
> > > > [<ffffffff8110863c>] kmem_cache_alloc+0xac/0x14e
> > > > [<ffffffff8110f58d>] kmemleak_alloc+0x83/0x35a
> > > > [<ffffffff812b6436>] ? cfq_get_queue+0x101/0x231
> > > > [<ffffffff81108511>] kmem_cache_alloc_node+0xf8/0x177
> > > > [<ffffffff812b6436>] ? cfq_get_queue+0x101/0x231
> > > > [<ffffffff812b6436>] cfq_get_queue+0x101/0x231
> > >
> > > Kmemleak needs to allocate memory for the pointer tracing and it
> > > currently passes the same gfp flags as those used by the original
> > > caller. In this case cfq_find_alloc_queue uses __GFP_NOFAIL.
> > >
> > > The reason for this was to avoid GFP_ATOMIC if the caller wasn't
> > > requiring it. I think the approach below is better:
> > >
> >
> > How about defining a GFP_SLAB_KMEMLEAK_MASK the subset of flags that kmemleak
> > should use? Based on this patch, the following appears to be it's definition.
> >
> > __GFP_WAIT | __GFP_IO | __GFP_FS | __GFP_HIGH
>
> Do you mean defining one in the gfp.h file? I think this would be better
> placed in the kmemleak.c file as no other part of Linux would be using
> it.
>

Yes, I meant placing it in the gfp.h file but I don't feel super strongly
about it. Defining it in kmemleak.c is fine too and is easier to read than
placing the mask directly at the call site.

> I personally find defining the GFP_KMEMLEAK_MASK as (GFP_KERNEL |
> GFP_ATOMIC) more readable than using the individual bits since this
> states clearly what type of allocations would be allowed (and safer if
> someone later decides to improve the GFP_KERNEL or GFP_ATOMIC
> definitions).
>

That's fair enough.

--
Mel Gorman
Part-time Phd Student Linux Technology Center
University of Limerick IBM Dublin Software Lab

2009-06-17 12:52:53

by Catalin Marinas

[permalink] [raw]
Subject: [PATCH] kmemleak: Only use GFP_KERNEL|GFP_ATOMIC for the internal allocations

Kmemleak allocates memory for pointer tracking and it tries to avoid
using GFP_ATOMIC if the caller doesn't require it. However other gfp
flags may be passed by the caller which aren't required by kmemleak.
This patch filters the gfp flags so that only GFP_KERNEL | GFP_ATOMIC
are used.

Signed-off-by: Catalin Marinas <[email protected]>
---
mm/kmemleak.c | 7 +++++--
1 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/mm/kmemleak.c b/mm/kmemleak.c
index 58ec86c..25e2034 100644
--- a/mm/kmemleak.c
+++ b/mm/kmemleak.c
@@ -109,6 +109,9 @@

#define BYTES_PER_POINTER sizeof(void *)

+/* GFP bitmask for kmemleak internal allocations */
+#define GFP_KMEMLEAK_MASK (GFP_KERNEL | GFP_ATOMIC)
+
/* scanning area inside a memory block */
struct kmemleak_scan_area {
struct hlist_node node;
@@ -462,7 +465,7 @@ static void create_object(unsigned long ptr, size_t size, int min_count,
struct prio_tree_node *node;
struct stack_trace trace;

- object = kmem_cache_alloc(object_cache, gfp & ~GFP_SLAB_BUG_MASK);
+ object = kmem_cache_alloc(object_cache, gfp & GFP_KMEMLEAK_MASK);
if (!object) {
kmemleak_panic("kmemleak: Cannot allocate a kmemleak_object "
"structure\n");
@@ -636,7 +639,7 @@ static void add_scan_area(unsigned long ptr, unsigned long offset,
return;
}

- area = kmem_cache_alloc(scan_area_cache, gfp & ~GFP_SLAB_BUG_MASK);
+ area = kmem_cache_alloc(scan_area_cache, gfp & GFP_KMEMLEAK_MASK);
if (!area) {
kmemleak_warn("kmemleak: Cannot allocate a scan area\n");
goto out;

2009-06-17 13:01:39

by Pekka Enberg

[permalink] [raw]
Subject: Re: [PATCH] kmemleak: Only use GFP_KERNEL|GFP_ATOMIC for the internal allocations

Hi Catalin,

On Wed, Jun 17, 2009 at 3:52 PM, Catalin Marinas<[email protected]> wrote:
> Kmemleak allocates memory for pointer tracking and it tries to avoid
> using GFP_ATOMIC if the caller doesn't require it. However other gfp
> flags may be passed by the caller which aren't required by kmemleak.
> This patch filters the gfp flags so that only GFP_KERNEL | GFP_ATOMIC
> are used.
>
> Signed-off-by: Catalin Marinas <[email protected]>

Is this really safe? What if we're in a middle of a filesystem
operation that uses GFP_NOFAIL and all of a sudden kmemleak allocation
fails and causes a panic?

Pekka

> ---
> ?mm/kmemleak.c | ? ?7 +++++--
> ?1 files changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/mm/kmemleak.c b/mm/kmemleak.c
> index 58ec86c..25e2034 100644
> --- a/mm/kmemleak.c
> +++ b/mm/kmemleak.c
> @@ -109,6 +109,9 @@
>
> ?#define BYTES_PER_POINTER ? ? ?sizeof(void *)
>
> +/* GFP bitmask for kmemleak internal allocations */
> +#define GFP_KMEMLEAK_MASK ? ? ?(GFP_KERNEL | GFP_ATOMIC)
> +
> ?/* scanning area inside a memory block */
> ?struct kmemleak_scan_area {
> ? ? ? ?struct hlist_node node;
> @@ -462,7 +465,7 @@ static void create_object(unsigned long ptr, size_t size, int min_count,
> ? ? ? ?struct prio_tree_node *node;
> ? ? ? ?struct stack_trace trace;
>
> - ? ? ? object = kmem_cache_alloc(object_cache, gfp & ~GFP_SLAB_BUG_MASK);
> + ? ? ? object = kmem_cache_alloc(object_cache, gfp & GFP_KMEMLEAK_MASK);
> ? ? ? ?if (!object) {
> ? ? ? ? ? ? ? ?kmemleak_panic("kmemleak: Cannot allocate a kmemleak_object "
> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "structure\n");
> @@ -636,7 +639,7 @@ static void add_scan_area(unsigned long ptr, unsigned long offset,
> ? ? ? ? ? ? ? ?return;
> ? ? ? ?}
>
> - ? ? ? area = kmem_cache_alloc(scan_area_cache, gfp & ~GFP_SLAB_BUG_MASK);
> + ? ? ? area = kmem_cache_alloc(scan_area_cache, gfp & GFP_KMEMLEAK_MASK);
> ? ? ? ?if (!area) {
> ? ? ? ? ? ? ? ?kmemleak_warn("kmemleak: Cannot allocate a scan area\n");
> ? ? ? ? ? ? ? ?goto out;
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> More majordomo info at ?http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at ?http://www.tux.org/lkml/
>

2009-06-17 13:24:20

by Catalin Marinas

[permalink] [raw]
Subject: Re: [PATCH] kmemleak: Only use GFP_KERNEL|GFP_ATOMIC for the internal allocations

On Wed, 2009-06-17 at 16:01 +0300, Pekka Enberg wrote:
> On Wed, Jun 17, 2009 at 3:52 PM, Catalin Marinas<[email protected]> wrote:
> > Kmemleak allocates memory for pointer tracking and it tries to avoid
> > using GFP_ATOMIC if the caller doesn't require it. However other gfp
> > flags may be passed by the caller which aren't required by kmemleak.
> > This patch filters the gfp flags so that only GFP_KERNEL | GFP_ATOMIC
> > are used.
> >
> > Signed-off-by: Catalin Marinas <[email protected]>
>
> Is this really safe? What if we're in a middle of a filesystem
> operation that uses GFP_NOFAIL and all of a sudden kmemleak allocation
> fails and causes a panic?

A kmemleak_panic() call only disables the kmemleak but doesn't stop the
kernel. The __GFP_NOFAIL allocation had already happened and the pointer
returned to the caller.

If we pass the __GFP_NOFAIL flag via the kmemleak's alloc, we get the
warning reported by Ingo (though it's not clear to me why this happens
as a kmemleak_object cache allocation is 192 bytes on a 32 bit machine).

Are there (common) situations where we expect kmemleak's alloc to fail
without __GFP_NOFAIL?

--
Catalin

2009-06-17 13:30:55

by Pekka Enberg

[permalink] [raw]
Subject: Re: [PATCH] kmemleak: Only use GFP_KERNEL|GFP_ATOMIC for the internal allocations

On Wed, 2009-06-17 at 14:23 +0100, Catalin Marinas wrote:
> On Wed, 2009-06-17 at 16:01 +0300, Pekka Enberg wrote:
> > On Wed, Jun 17, 2009 at 3:52 PM, Catalin Marinas<[email protected]> wrote:
> > > Kmemleak allocates memory for pointer tracking and it tries to avoid
> > > using GFP_ATOMIC if the caller doesn't require it. However other gfp
> > > flags may be passed by the caller which aren't required by kmemleak.
> > > This patch filters the gfp flags so that only GFP_KERNEL | GFP_ATOMIC
> > > are used.
> > >
> > > Signed-off-by: Catalin Marinas <[email protected]>
> >
> > Is this really safe? What if we're in a middle of a filesystem
> > operation that uses GFP_NOFAIL and all of a sudden kmemleak allocation
> > fails and causes a panic?
>
> A kmemleak_panic() call only disables the kmemleak but doesn't stop the
> kernel. The __GFP_NOFAIL allocation had already happened and the pointer
> returned to the caller.

Ah, ok. I was confused by the name of kmemleak_panic() (which could use
renaming methinks).

Acked-by: Pekka Enberg <[email protected]>

Pekka

2009-06-17 15:37:37

by Pekka Enberg

[permalink] [raw]
Subject: Re: [PATCH] kmemleak: Rename kmemleak_panic to kmemleak_stop

On Wed, 2009-06-17 at 16:36 +0100, Catalin Marinas wrote:
> This is to avoid the confusion created by the "panic" word.
>
> Signed-off-by: Catalin Marinas <[email protected]>

Acked-by: Pekka Enberg <[email protected]>

2009-06-17 15:37:49

by Catalin Marinas

[permalink] [raw]
Subject: [PATCH] kmemleak: Rename kmemleak_panic to kmemleak_stop

This is to avoid the confusion created by the "panic" word.

Signed-off-by: Catalin Marinas <[email protected]>
---

(following Pekka's suggestion)

mm/kmemleak.c | 12 ++++++------
1 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/mm/kmemleak.c b/mm/kmemleak.c
index 25e2034..c1f538e 100644
--- a/mm/kmemleak.c
+++ b/mm/kmemleak.c
@@ -251,7 +251,7 @@ static void kmemleak_disable(void);
* recovered from. Kkmemleak will be disabled and further allocation/freeing
* tracing no longer available.
*/
-#define kmemleak_panic(x...) do { \
+#define kmemleak_stop(x...) do { \
kmemleak_warn(x); \
kmemleak_disable(); \
} while (0)
@@ -467,8 +467,8 @@ static void create_object(unsigned long ptr, size_t size, int min_count,

object = kmem_cache_alloc(object_cache, gfp & GFP_KMEMLEAK_MASK);
if (!object) {
- kmemleak_panic("kmemleak: Cannot allocate a kmemleak_object "
- "structure\n");
+ kmemleak_stop("kmemleak: Cannot allocate a kmemleak_object "
+ "structure\n");
return;
}

@@ -527,8 +527,8 @@ static void create_object(unsigned long ptr, size_t size, int min_count,
if (node != &object->tree_node) {
unsigned long flags;

- kmemleak_panic("kmemleak: Cannot insert 0x%lx into the object "
- "search tree (already existing)\n", ptr);
+ kmemleak_stop("kmemleak: Cannot insert 0x%lx into the object "
+ "search tree (already existing)\n", ptr);
object = lookup_object(ptr, 1);
spin_lock_irqsave(&object->lock, flags);
dump_object_info(object);
@@ -699,7 +699,7 @@ static void log_early(int op_type, const void *ptr, size_t size,
struct early_log *log;

if (crt_early_log >= ARRAY_SIZE(early_log)) {
- kmemleak_panic("kmemleak: Early log buffer exceeded\n");
+ kmemleak_stop("kmemleak: Early log buffer exceeded\n");
return;
}


2009-06-17 16:40:39

by Linus Torvalds

[permalink] [raw]
Subject: Re: WARNING: at mm/page_alloc.c:1159 get_page_from_freelist+0x325/0x655()



On Wed, 17 Jun 2009, Ingo Molnar wrote:
>
> a new warning started popping up today, in the new page allocator
> code. The allocation came from kmemleak:

We should probably print out the order.

Right now it warns about any order but 0, and I think that's likely bogus.
It's fine to allow small orders (I'd suggest 0-2), since we should always
be able to get those, and small kmalloc's generally do want more than one
page just to avoid crazy fragmentation issues.

See, for example, the whole 'slab_break_gfp_order' logic in mm/slab.c: it
very much expects to be able to use order-1 allocations for kmalloc() if
there is enough memory (where "enough" is actually just 32MB). And slub
seems to put some limit at PAGE_ALLOC_COSTLY_ORDER (3).

So apart from anything else (ie this particular case is possibly fixable
in kmemleak), I do think that we should likely allow at least order-1 and
possible order-2 allocations with __GFP_NOFAIL too.

Linus

2009-06-17 16:53:20

by Ingo Molnar

[permalink] [raw]
Subject: Re: WARNING: at mm/page_alloc.c:1159 get_page_from_freelist+0x325/0x655()


* Linus Torvalds <[email protected]> wrote:

> On Wed, 17 Jun 2009, Ingo Molnar wrote:
> >
> > a new warning started popping up today, in the new page allocator
> > code. The allocation came from kmemleak:
>
> We should probably print out the order.
>
> Right now it warns about any order but 0, and I think that's
> likely bogus. It's fine to allow small orders (I'd suggest 0-2),
> since we should always be able to get those, and small kmalloc's
> generally do want more than one page just to avoid crazy
> fragmentation issues.
>
> See, for example, the whole 'slab_break_gfp_order' logic in
> mm/slab.c: it very much expects to be able to use order-1
> allocations for kmalloc() if there is enough memory (where
> "enough" is actually just 32MB). And slub seems to put some limit
> at PAGE_ALLOC_COSTLY_ORDER (3).
>
> So apart from anything else (ie this particular case is possibly
> fixable in kmemleak), I do think that we should likely allow at
> least order-1 and possible order-2 allocations with __GFP_NOFAIL
> too.

I saw about half a dozen of different warning patterns during the
day, so the warning definitely feels a bit over-eager.

Ingo

2009-06-17 17:14:28

by Daniel Walker

[permalink] [raw]
Subject: Re: [PATCH] kmemleak: Rename kmemleak_panic to kmemleak_stop

On Wed, 2009-06-17 at 16:36 +0100, Catalin Marinas wrote:
> This is to avoid the confusion created by the "panic" word.
>
> Signed-off-by: Catalin Marinas <[email protected]>
> ---
>
> (following Pekka's suggestion)
>
> mm/kmemleak.c | 12 ++++++------
> 1 files changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/mm/kmemleak.c b/mm/kmemleak.c
> index 25e2034..c1f538e 100644
> --- a/mm/kmemleak.c
> +++ b/mm/kmemleak.c
> @@ -251,7 +251,7 @@ static void kmemleak_disable(void);
> * recovered from. Kkmemleak will be disabled and further allocation/freeing
> * tracing no longer available.

Looks like there's a little typo up there, "Kkmemleak" should be
"kmemleak" no ?

Daniel

2009-06-17 17:28:16

by Catalin Marinas

[permalink] [raw]
Subject: Re: [PATCH] kmemleak: Rename kmemleak_panic to kmemleak_stop

Daniel Walker <[email protected]> wrote:
> On Wed, 2009-06-17 at 16:36 +0100, Catalin Marinas wrote:
>> This is to avoid the confusion created by the "panic" word.
>>
>> Signed-off-by: Catalin Marinas <[email protected]>
>> ---
>>
>> (following Pekka's suggestion)
>>
>> mm/kmemleak.c | 12 ++++++------
>> 1 files changed, 6 insertions(+), 6 deletions(-)
>>
>> diff --git a/mm/kmemleak.c b/mm/kmemleak.c
>> index 25e2034..c1f538e 100644
>> --- a/mm/kmemleak.c
>> +++ b/mm/kmemleak.c
>> @@ -251,7 +251,7 @@ static void kmemleak_disable(void);
>> * recovered from. Kkmemleak will be disabled and further allocation/freeing
>> * tracing no longer available.
>
> Looks like there's a little typo up there, "Kkmemleak" should be
> "kmemleak" no ?

It seems that there are more places like this. I'll add a patch.

Thanks.

--
Catalin

2009-06-20 10:02:22

by Heinz Diehl

[permalink] [raw]
Subject: Re: [PATCH] profile: Suppress warning about large allocations when profile=1 is specified

On 17.06.2009, Mel Gorman wrote:

> Patch as follows
[....]

With 2.6.30-git14, I get this early in the boot process.
Don't know if it's related to this thread. In any case, your patch does not fix it:

[....]
WARNING: at mm/page_alloc.c:1744 level2_spare_pgt+0x8f70a/0x36c800()
Hardware name:
Modules linked in:
Pid: 1, comm: swapper Not tainted 2.6.30-git14 #1
Call Trace:
[<ffffffff8109770a>] ? level2_spare_pgt+0x8f70a/0x36c800
[<ffffffff8109770a>] ? level2_spare_pgt+0x8f70a/0x36c800
[<ffffffff81044a19>] ? level2_spare_pgt+0x3ca19/0x36c800
[<ffffffff8109770a>] ? level2_spare_pgt+0x8f70a/0x36c800
[<ffffffff810463f2>] ? level2_spare_pgt+0x3e3f2/0x36c800
[<ffffffff810bf8bb>] ? level2_spare_pgt+0xb78bb/0x36c800
[<ffffffff81096829>] ? level2_spare_pgt+0x8e829/0x36c800
[<ffffffff815281a2>] ? __smp_locks_end+0x33a4a/0x35773
[<ffffffff815280b0>] ? __smp_locks_end+0x33958/0x35773
[<ffffffff8100904b>] ? level2_spare_pgt+0x104b/0x36c800
[<ffffffff81119808>] ? level2_spare_pgt+0x111808/0x36c800
[<ffffffff81084df1>] ? level2_spare_pgt+0x7cdf1/0x36c800
[<ffffffff814f5665>] ? __smp_locks_end+0xf0d/0x35773
[<ffffffff8100ce0a>] ? level2_spare_pgt+0x4e0a/0x36c800
[<ffffffff814f54e9>] ? __smp_locks_end+0xd91/0x35773
[<ffffffff8100ce00>] ? level2_spare_pgt+0x4e00/0x36c800
---[ end trace 692ffa03e0502250 ]---
CCID: Activated CCID 2 (TCP-like)
registered taskstats version 1
Freeing unused kernel memory: 572k freed
[....]

Regards,
Heinz.

2009-06-20 19:50:13

by Mel Gorman

[permalink] [raw]
Subject: Re: [PATCH] profile: Suppress warning about large allocations when profile=1 is specified

On Sat, Jun 20, 2009 at 12:09:32PM +0200, Heinz Diehl wrote:
> On 17.06.2009, Mel Gorman wrote:
>
> > Patch as follows
> [....]
>
> With 2.6.30-git14, I get this early in the boot process.
> Don't know if it's related to this thread. In any case, your patch does not fix it:
>

It's sortof related in that it's another source of NOFAIL high-order
allocations.

> [....]
> WARNING: at mm/page_alloc.c:1744 level2_spare_pgt+0x8f70a/0x36c800()
> Hardware name:
> Modules linked in:
> Pid: 1, comm: swapper Not tainted 2.6.30-git14 #1

I can't figure out from this trace where the problem is coming from. Can
you post your .config and the full dmesg please?

> Call Trace:
> [<ffffffff8109770a>] ? level2_spare_pgt+0x8f70a/0x36c800
> [<ffffffff8109770a>] ? level2_spare_pgt+0x8f70a/0x36c800
> [<ffffffff81044a19>] ? level2_spare_pgt+0x3ca19/0x36c800
> [<ffffffff8109770a>] ? level2_spare_pgt+0x8f70a/0x36c800
> [<ffffffff810463f2>] ? level2_spare_pgt+0x3e3f2/0x36c800
> [<ffffffff810bf8bb>] ? level2_spare_pgt+0xb78bb/0x36c800
> [<ffffffff81096829>] ? level2_spare_pgt+0x8e829/0x36c800
> [<ffffffff815281a2>] ? __smp_locks_end+0x33a4a/0x35773
> [<ffffffff815280b0>] ? __smp_locks_end+0x33958/0x35773
> [<ffffffff8100904b>] ? level2_spare_pgt+0x104b/0x36c800
> [<ffffffff81119808>] ? level2_spare_pgt+0x111808/0x36c800
> [<ffffffff81084df1>] ? level2_spare_pgt+0x7cdf1/0x36c800
> [<ffffffff814f5665>] ? __smp_locks_end+0xf0d/0x35773
> [<ffffffff8100ce0a>] ? level2_spare_pgt+0x4e0a/0x36c800
> [<ffffffff814f54e9>] ? __smp_locks_end+0xd91/0x35773
> [<ffffffff8100ce00>] ? level2_spare_pgt+0x4e00/0x36c800
> ---[ end trace 692ffa03e0502250 ]---
> CCID: Activated CCID 2 (TCP-like)
> registered taskstats version 1
> Freeing unused kernel memory: 572k freed
> [....]
>
> Regards,
> Heinz.
>

--
Mel Gorman
Part-time Phd Student Linux Technology Center
University of Limerick IBM Dublin Software Lab

2009-06-20 21:41:39

by Heinz Diehl

[permalink] [raw]
Subject: Re: [PATCH] profile: Suppress warning about large allocations when profile=1 is specified

On 20.06.2009, Mel Gorman wrote:

> I can't figure out from this trace where the problem is coming from. Can
> you post your .config and the full dmesg please?

Yes, of course. It's attached.

Thanks,
Heinz.


Attachments:
(No filename) (210.00 B)
config.gz (18.69 kB)
dmesg.txt.gz (9.89 kB)
Download all attachments

2009-06-22 11:31:20

by Mel Gorman

[permalink] [raw]
Subject: Re: [PATCH] profile: Suppress warning about large allocations when profile=1 is specified

On Sat, Jun 20, 2009 at 11:48:35PM +0200, Heinz Diehl wrote:
> On 20.06.2009, Mel Gorman wrote:
>
> > I can't figure out from this trace where the problem is coming from. Can
> > you post your .config and the full dmesg please?
>
> Yes, of course. It's attached.
>

I have no idea why the stack trace is so badly managed but the problem appears
to be in DCCP so can you try the patch below please? It applies on top of the
profile=1 patch fix. If it works for you, I'll split out the patch properly
into three separate patches and repost.

Some questions though

1. Could DCCP use alloc_large_system_hash()?

2. Any idea why the stack trace for the warning was so useless?

==== CUT HERE ====
dccp: Suppress warning about large allocations from DCCP

The DCCP protocol tries to allocate some large hash tables during
initialisation using the largest size possible. The allocator warns if
the allocations are too large but the caller is able to handle
allocation failure. This patch disables the warnings in the case DCCP
requests too large an allocation.

Signed-off-by: Mel Gorman <[email protected]>
---
net/dccp/proto.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/net/dccp/proto.c b/net/dccp/proto.c
index 314a1b5..fd21676 100644
--- a/net/dccp/proto.c
+++ b/net/dccp/proto.c
@@ -1066,7 +1066,7 @@ static int __init dccp_init(void)
(dccp_hashinfo.ehash_size - 1))
dccp_hashinfo.ehash_size--;
dccp_hashinfo.ehash = (struct inet_ehash_bucket *)
- __get_free_pages(GFP_ATOMIC, ehash_order);
+ __get_free_pages(GFP_ATOMIC|__GFP_NOWARN, ehash_order);
} while (!dccp_hashinfo.ehash && --ehash_order > 0);

if (!dccp_hashinfo.ehash) {
@@ -1091,7 +1091,7 @@ static int __init dccp_init(void)
bhash_order > 0)
continue;
dccp_hashinfo.bhash = (struct inet_bind_hashbucket *)
- __get_free_pages(GFP_ATOMIC, bhash_order);
+ __get_free_pages(GFP_ATOMIC|__GFP_NOWARN, bhash_order);
} while (!dccp_hashinfo.bhash && --bhash_order >= 0);

if (!dccp_hashinfo.bhash) {

2009-06-22 13:49:33

by Heinz Diehl

[permalink] [raw]
Subject: Re: [PATCH] profile: Suppress warning about large allocations when profile=1 is specified

On 22.06.2009, Mel Gorman wrote:

> I have no idea why the stack trace is so badly managed but the problem appears
> to be in DCCP so can you try the patch below please? It applies on top of the
> profile=1 patch fix. If it works for you, I'll split out the patch properly
> into three separate patches and repost.

This patch, on top of your "profile=1" fix and applied to -git17,
does indeed fix the problem for me.

Thanks,
Heinz.

2009-06-22 19:58:53

by Mel Gorman

[permalink] [raw]
Subject: Re: [PATCH] profile: Suppress warning about large allocations when profile=1 is specified

On Mon, Jun 22, 2009 at 03:50:14PM +0200, Heinz Diehl wrote:
> On 22.06.2009, Mel Gorman wrote:
>
> > I have no idea why the stack trace is so badly managed but the problem appears
> > to be in DCCP so can you try the patch below please? It applies on top of the
> > profile=1 patch fix. If it works for you, I'll split out the patch properly
> > into three separate patches and repost.
>
> This patch, on top of your "profile=1" fix and applied to -git17,
> does indeed fix the problem for me.
>

Thanks for testing. I've posted a split-out set so this should get
ironed out over the next while.

--
Mel Gorman
Part-time Phd Student Linux Technology Center
University of Limerick IBM Dublin Software Lab

2009-06-22 20:27:28

by Arnaldo Carvalho de Melo

[permalink] [raw]
Subject: Re: [PATCH] profile: Suppress warning about large allocations when profile=1 is specified

Em Mon, Jun 22, 2009 at 12:31:05PM +0100, Mel Gorman escreveu:
> On Sat, Jun 20, 2009 at 11:48:35PM +0200, Heinz Diehl wrote:
> > On 20.06.2009, Mel Gorman wrote:
> >
> > > I can't figure out from this trace where the problem is coming from. Can
> > > you post your .config and the full dmesg please?
> >
> > Yes, of course. It's attached.
> >
>
> I have no idea why the stack trace is so badly managed but the problem appears
> to be in DCCP so can you try the patch below please? It applies on top of the
> profile=1 patch fix. If it works for you, I'll split out the patch properly
> into three separate patches and repost.
>
> Some questions though
>
> 1. Could DCCP use alloc_large_system_hash()?

Possibly. Ideally this should use whatever TCP is using now, as this
came more or less intact from there. IIRC it was not shared because TCP
used/uses alloc routines that were available only at boot time, DCCP
can't use it because it can be loaded as a module.

I'd say go with this patch and later, after FISL (this week) I'll look
at this again.

So, for the NOWARN bits:

Acked-by: Arnaldo Carvalho de Melo <[email protected]>

Thanks,

- Arnaldo

> 2. Any idea why the stack trace for the warning was so useless?
>
> ==== CUT HERE ====
> dccp: Suppress warning about large allocations from DCCP
>
> The DCCP protocol tries to allocate some large hash tables during
> initialisation using the largest size possible. The allocator warns if
> the allocations are too large but the caller is able to handle
> allocation failure. This patch disables the warnings in the case DCCP
> requests too large an allocation.
>
> Signed-off-by: Mel Gorman <[email protected]>
> ---
> net/dccp/proto.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/net/dccp/proto.c b/net/dccp/proto.c
> index 314a1b5..fd21676 100644
> --- a/net/dccp/proto.c
> +++ b/net/dccp/proto.c
> @@ -1066,7 +1066,7 @@ static int __init dccp_init(void)
> (dccp_hashinfo.ehash_size - 1))
> dccp_hashinfo.ehash_size--;
> dccp_hashinfo.ehash = (struct inet_ehash_bucket *)
> - __get_free_pages(GFP_ATOMIC, ehash_order);
> + __get_free_pages(GFP_ATOMIC|__GFP_NOWARN, ehash_order);
> } while (!dccp_hashinfo.ehash && --ehash_order > 0);
>
> if (!dccp_hashinfo.ehash) {
> @@ -1091,7 +1091,7 @@ static int __init dccp_init(void)
> bhash_order > 0)
> continue;
> dccp_hashinfo.bhash = (struct inet_bind_hashbucket *)
> - __get_free_pages(GFP_ATOMIC, bhash_order);
> + __get_free_pages(GFP_ATOMIC|__GFP_NOWARN, bhash_order);
> } while (!dccp_hashinfo.bhash && --bhash_order >= 0);
>
> if (!dccp_hashinfo.bhash) {