public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [bisected] 2.6.31 regression: fails to boot as xen guest
@ 2009-08-25 15:48 Arnd Hannemann
  2009-08-25 16:29 ` Pekka Enberg
  2009-08-26 11:54 ` Pasi Kärkkäinen
  0 siblings, 2 replies; 22+ messages in thread
From: Arnd Hannemann @ 2009-08-25 15:48 UTC (permalink / raw)
  To: LKML; +Cc: penberg, hannes, torvalds

Hi,

current 2.6.31 fails to boot on our xen host (32bit pae).
Unfortunately it fails in a way that there is absolutely no output
on the console. Config is as 32bit guest.

Git bisect gave the following:

83b519e8b9572c319c8e0c615ee5dd7272856090 is first bad commit
commit 83b519e8b9572c319c8e0c615ee5dd7272856090
Author: Pekka Enberg <penberg@cs.helsinki.fi>
Date:   Wed Jun 10 19:40:04 2009 +0300

    slab: setup allocators earlier in the boot sequence

    This patch makes kmalloc() available earlier in the boot sequence so we can get
    rid of some bootmem allocations. The bulk of the changes are due to
    kmem_cache_init() being called with interrupts disabled which requires some
    changes to allocator boostrap code.

    Note: 32-bit x86 does WP protect test in mem_init() so we must setup traps
    before we call mem_init() during boot as reported by Ingo Molnar:

      We have a hard crash in the WP-protect code:

      [    0.000000] Checking if this processor honours the WP bit even in supervisor mode...BUG: Int 14: CR2 ffcff000
      [    0.000000]      EDI 00000188  ESI 00000ac7  EBP c17eaf9c  ESP c17eaf8c
      [    0.000000]      EBX 000014e0  EDX 0000000e  ECX 01856067  EAX 00000001
      [    0.000000]      err 00000003  EIP c10135b1   CS 00000060  flg 00010002
      [    0.000000] Stack: c17eafa8 c17fd410 c16747bc c17eafc4 c17fd7e5 000011fd f8616000 c18237cc
      [    0.000000]        00099800 c17bb000 c17eafec c17f1668 000001c5 c17f1322 c166e039 c1822bf0
      [    0.000000]        c166e033 c153a014 c18237cc 00020800 c17eaff8 c17f106a 00020800 01ba5003
      [    0.000000] Pid: 0, comm: swapper Not tainted 2.6.30-tip-02161-g7a74539-dirty #52203
      [    0.000000] Call Trace:
      [    0.000000]  [<c15357c2>] ? printk+0x14/0x16
      [    0.000000]  [<c10135b1>] ? do_test_wp_bit+0x19/0x23
      [    0.000000]  [<c17fd410>] ? test_wp_bit+0x26/0x64
      [    0.000000]  [<c17fd7e5>] ? mem_init+0x1ba/0x1d8
      [    0.000000]  [<c17f1668>] ? start_kernel+0x164/0x2f7
      [    0.000000]  [<c17f1322>] ? unknown_bootoption+0x0/0x19c
      [    0.000000]  [<c17f106a>] ? __init_begin+0x6a/0x6f

    Acked-by: Johannes Weiner <hannes@cmpxchg.org>
    Acked-by Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Christoph Lameter <cl@linux-foundation.org>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: Matt Mackall <mpm@selenic.com>
    Cc: Nick Piggin <npiggin@suse.de>
    Cc: Yinghai Lu <yinghai@kernel.org>
    Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>

However a
git revert 83b519e8b9572c319c8e0c615ee5dd7272856090
to verify that current git without that commit would work,
didn't succeed right away, so I was not able to test that.

BTW: I only included Acked-by and Signed-off-by as Cc: and dropped
the other Cc: mentioned in the commit, hope that was ok...

Best regards,
Arnd

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [bisected] 2.6.31 regression: fails to boot as xen guest
  2009-08-25 15:48 [bisected] 2.6.31 regression: fails to boot as xen guest Arnd Hannemann
@ 2009-08-25 16:29 ` Pekka Enberg
  2009-08-25 16:49   ` Arnd Hannemann
  2009-08-26 11:54 ` Pasi Kärkkäinen
  1 sibling, 1 reply; 22+ messages in thread
From: Pekka Enberg @ 2009-08-25 16:29 UTC (permalink / raw)
  To: Arnd Hannemann
  Cc: LKML, hannes, torvalds, Jeremy Fitzhardinge, xen-devel,
	Ingo Molnar

Hi Arnd,

On Tue, Aug 25, 2009 at 6:48 PM, Arnd
Hannemann<hannemann@nets.rwth-aachen.de> wrote:
> current 2.6.31 fails to boot on our xen host (32bit pae).
> Unfortunately it fails in a way that there is absolutely no output
> on the console. Config is as 32bit guest.
>
> Git bisect gave the following:
>
> 83b519e8b9572c319c8e0c615ee5dd7272856090 is first bad commit
> commit 83b519e8b9572c319c8e0c615ee5dd7272856090
> Author: Pekka Enberg <penberg@cs.helsinki.fi>
> Date:   Wed Jun 10 19:40:04 2009 +0300
>
>    slab: setup allocators earlier in the boot sequence
>
>    This patch makes kmalloc() available earlier in the boot sequence so we can get
>    rid of some bootmem allocations. The bulk of the changes are due to
>    kmem_cache_init() being called with interrupts disabled which requires some
>    changes to allocator boostrap code.
>
>    Note: 32-bit x86 does WP protect test in mem_init() so we must setup traps
>    before we call mem_init() during boot as reported by Ingo Molnar:
>
>      We have a hard crash in the WP-protect code:
>
>      [    0.000000] Checking if this processor honours the WP bit even in supervisor mode...BUG: Int 14: CR2 ffcff000
>      [    0.000000]      EDI 00000188  ESI 00000ac7  EBP c17eaf9c  ESP c17eaf8c
>      [    0.000000]      EBX 000014e0  EDX 0000000e  ECX 01856067  EAX 00000001
>      [    0.000000]      err 00000003  EIP c10135b1   CS 00000060  flg 00010002
>      [    0.000000] Stack: c17eafa8 c17fd410 c16747bc c17eafc4 c17fd7e5 000011fd f8616000 c18237cc
>      [    0.000000]        00099800 c17bb000 c17eafec c17f1668 000001c5 c17f1322 c166e039 c1822bf0
>      [    0.000000]        c166e033 c153a014 c18237cc 00020800 c17eaff8 c17f106a 00020800 01ba5003
>      [    0.000000] Pid: 0, comm: swapper Not tainted 2.6.30-tip-02161-g7a74539-dirty #52203
>      [    0.000000] Call Trace:
>      [    0.000000]  [<c15357c2>] ? printk+0x14/0x16
>      [    0.000000]  [<c10135b1>] ? do_test_wp_bit+0x19/0x23
>      [    0.000000]  [<c17fd410>] ? test_wp_bit+0x26/0x64
>      [    0.000000]  [<c17fd7e5>] ? mem_init+0x1ba/0x1d8
>      [    0.000000]  [<c17f1668>] ? start_kernel+0x164/0x2f7
>      [    0.000000]  [<c17f1322>] ? unknown_bootoption+0x0/0x19c
>      [    0.000000]  [<c17f106a>] ? __init_begin+0x6a/0x6f
>
>    Acked-by: Johannes Weiner <hannes@cmpxchg.org>
>    Acked-by Linus Torvalds <torvalds@linux-foundation.org>
>    Cc: Christoph Lameter <cl@linux-foundation.org>
>    Cc: Ingo Molnar <mingo@elte.hu>
>    Cc: Matt Mackall <mpm@selenic.com>
>    Cc: Nick Piggin <npiggin@suse.de>
>    Cc: Yinghai Lu <yinghai@kernel.org>
>    Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
>
> However a
> git revert 83b519e8b9572c319c8e0c615ee5dd7272856090
> to verify that current git without that commit would work,
> didn't succeed right away, so I was not able to test that.

Thanks for doing the bisect! Can we also see your .config also?

I doubt this is a slab allocator initialization issue so I'm CC'ing
some Xen folks. Jeremy, I don't know Xen well but on quick read, the
only thing that I can see is that trap_init() is called before
sched_init() now. I see Xen doing preempt_enable()/preempt_disable so
maybe that's a problem now?

                                 Pekka

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [bisected] 2.6.31 regression: fails to boot as xen guest
  2009-08-25 16:29 ` Pekka Enberg
@ 2009-08-25 16:49   ` Arnd Hannemann
  2009-08-25 16:52     ` Pekka Enberg
  0 siblings, 1 reply; 22+ messages in thread
From: Arnd Hannemann @ 2009-08-25 16:49 UTC (permalink / raw)
  To: Pekka Enberg
  Cc: Arnd Hannemann, LKML, hannes@cmpxchg.org,
	torvalds@linux-foundation.org, Jeremy Fitzhardinge,
	xen-devel@lists.xensource.com, Ingo Molnar

[-- Attachment #1: Type: text/plain, Size: 3265 bytes --]

Hi Pekka,

Pekka Enberg wrote:
> On Tue, Aug 25, 2009 at 6:48 PM, Arnd
> Hannemann<hannemann@nets.rwth-aachen.de> wrote:
>> current 2.6.31 fails to boot on our xen host (32bit pae).
>> Unfortunately it fails in a way that there is absolutely no output
>> on the console. Config is as 32bit guest.
>>
>> Git bisect gave the following:
>>
>> 83b519e8b9572c319c8e0c615ee5dd7272856090 is first bad commit commit
>> 83b519e8b9572c319c8e0c615ee5dd7272856090 Author: Pekka Enberg
>> <penberg@cs.helsinki.fi> Date:   Wed Jun 10 19:40:04 2009 +0300
>>
>> slab: setup allocators earlier in the boot sequence
>>
>> This patch makes kmalloc() available earlier in the boot sequence
>> so we can get rid of some bootmem allocations. The bulk of the
>> changes are due to kmem_cache_init() being called with interrupts
>> disabled which requires some changes to allocator boostrap code.
>>
>> Note: 32-bit x86 does WP protect test in mem_init() so we must
>> setup traps before we call mem_init() during boot as reported by
>> Ingo Molnar:
>>
>> We have a hard crash in the WP-protect code:
>>
>> [    0.000000] Checking if this processor honours the WP bit even
>> in supervisor mode...BUG: Int 14: CR2 ffcff000 [    0.000000]
>> EDI 00000188  ESI 00000ac7  EBP c17eaf9c  ESP c17eaf8c [
>> 0.000000]      EBX 000014e0  EDX 0000000e  ECX 01856067  EAX
>> 00000001 [    0.000000]      err 00000003  EIP c10135b1   CS
>> 00000060  flg 00010002 [    0.000000] Stack: c17eafa8 c17fd410
>> c16747bc c17eafc4 c17fd7e5 000011fd f8616000 c18237cc [
>> 0.000000]        00099800 c17bb000 c17eafec c17f1668 000001c5
>> c17f1322 c166e039 c1822bf0 [    0.000000]        c166e033 c153a014
>> c18237cc 00020800 c17eaff8 c17f106a 00020800 01ba5003 [
>> 0.000000] Pid: 0, comm: swapper Not tainted
>> 2.6.30-tip-02161-g7a74539-dirty #52203 [    0.000000] Call Trace: [
>> 0.000000]  [<c15357c2>] ? printk+0x14/0x16 [    0.000000]
>> [<c10135b1>] ? do_test_wp_bit+0x19/0x23 [    0.000000]
>> [<c17fd410>] ? test_wp_bit+0x26/0x64 [    0.000000]  [<c17fd7e5>] ?
>> mem_init+0x1ba/0x1d8 [    0.000000]  [<c17f1668>] ?
>> start_kernel+0x164/0x2f7 [    0.000000]  [<c17f1322>] ?
>> unknown_bootoption+0x0/0x19c [    0.000000]  [<c17f106a>] ?
>> __init_begin+0x6a/0x6f
>>
>> Acked-by: Johannes Weiner <hannes@cmpxchg.org> Acked-by Linus
>> Torvalds <torvalds@linux-foundation.org> Cc: Christoph Lameter
>> <cl@linux-foundation.org> Cc: Ingo Molnar <mingo@elte.hu> Cc: Matt
>> Mackall <mpm@selenic.com> Cc: Nick Piggin <npiggin@suse.de> Cc:
>> Yinghai Lu <yinghai@kernel.org> Signed-off-by: Pekka Enberg
>> <penberg@cs.helsinki.fi>
>>
>> However a git revert 83b519e8b9572c319c8e0c615ee5dd7272856090 to
>> verify that current git without that commit would work, didn't
>> succeed right away, so I was not able to test that.
>
> Thanks for doing the bisect! Can we also see your .config also?

Config for -rc7 is attached. My bisect configs were based on that.

>
> I doubt this is a slab allocator initialization issue so I'm CC'ing
> some Xen folks. Jeremy, I don't know Xen well but on quick read, the
> only thing that I can see is that trap_init() is called before
> sched_init() now. I see Xen doing preempt_enable()/preempt_disable so
>  maybe that's a problem now?
>
> Pekka

Best regards,
Arnd


[-- Attachment #2: config --]
[-- Type: text/plain, Size: 42007 bytes --]

#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.31-rc7
# Tue Aug 25 15:37:54 2009
#
# CONFIG_64BIT is not set
CONFIG_X86_32=y
# CONFIG_X86_64 is not set
CONFIG_X86=y
CONFIG_OUTPUT_FORMAT="elf32-i386"
CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_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_HWEIGHT=y
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
# CONFIG_GENERIC_TIME_VSYSCALL is not set
CONFIG_ARCH_HAS_CPU_RELAX=y
CONFIG_ARCH_HAS_DEFAULT_IDLE=y
CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
CONFIG_HAVE_SETUP_PER_CPU_AREA=y
CONFIG_HAVE_DYNAMIC_PER_CPU_AREA=y
# CONFIG_HAVE_CPUMASK_OF_CPU_MAP is not set
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y
# CONFIG_ZONE_DMA32 is not set
CONFIG_ARCH_POPULATES_NODE_MAP=y
# CONFIG_AUDIT_ARCH is not set
CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
CONFIG_GENERIC_HARDIRQS=y
CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_GENERIC_PENDING_IRQ=y
CONFIG_USE_GENERIC_SMP_HELPERS=y
CONFIG_X86_32_SMP=y
CONFIG_X86_HT=y
CONFIG_X86_TRAMPOLINE=y
CONFIG_X86_32_LAZY_GS=y
CONFIG_KTIME_SCALAR=y
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
CONFIG_CONSTRUCTORS=y

#
# General setup
#
CONFIG_EXPERIMENTAL=y
CONFIG_LOCK_KERNEL=y
CONFIG_INIT_ENV_ARG_LIMIT=32
CONFIG_LOCALVERSION="-pae-um"
CONFIG_LOCALVERSION_AUTO=y
CONFIG_HAVE_KERNEL_GZIP=y
CONFIG_HAVE_KERNEL_BZIP2=y
CONFIG_HAVE_KERNEL_LZMA=y
CONFIG_KERNEL_GZIP=y
# CONFIG_KERNEL_BZIP2 is not set
# CONFIG_KERNEL_LZMA is not set
# CONFIG_SWAP is not set
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 is not set
# CONFIG_TASKSTATS is not set
# CONFIG_AUDIT is not set

#
# RCU Subsystem
#
# CONFIG_CLASSIC_RCU is not set
CONFIG_TREE_RCU=y
# CONFIG_PREEMPT_RCU is not set
# CONFIG_RCU_TRACE is not set
CONFIG_RCU_FANOUT=32
# CONFIG_RCU_FANOUT_EXACT 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=14
CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
# CONFIG_GROUP_SCHED is not set
# CONFIG_CGROUPS is not set
# CONFIG_SYSFS_DEPRECATED_V2 is not set
# CONFIG_RELAY is not set
CONFIG_NAMESPACES=y
# CONFIG_UTS_NS is not set
# CONFIG_IPC_NS is not set
# CONFIG_USER_NS is not set
# CONFIG_PID_NS is not set
# CONFIG_NET_NS is not set
CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE=""
CONFIG_RD_GZIP=y
CONFIG_RD_BZIP2=y
CONFIG_RD_LZMA=y
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
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 is not set
# 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 is not set
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_PCI_QUIRKS=y
CONFIG_SLUB_DEBUG=y
# CONFIG_STRIP_ASM_SYMS is not set
CONFIG_COMPAT_BRK=y
# CONFIG_SLAB is not set
CONFIG_SLUB=y
# CONFIG_SLOB is not set
# CONFIG_PROFILING is not set
# CONFIG_MARKERS 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_ATTRS=y
CONFIG_HAVE_DMA_API_DEBUG=y

#
# GCOV-based kernel profiling
#
# CONFIG_SLOW_WORK is not set
CONFIG_HAVE_GENERIC_DMA_COHERENT=y
CONFIG_SLABINFO=y
CONFIG_RT_MUTEXES=y
CONFIG_BASE_SMALL=0
CONFIG_MODULES=y
# CONFIG_MODULE_FORCE_LOAD is not set
CONFIG_MODULE_UNLOAD=y
CONFIG_MODULE_FORCE_UNLOAD=y
# CONFIG_MODVERSIONS is not set
# CONFIG_MODULE_SRCVERSION_ALL is not set
CONFIG_STOP_MACHINE=y
CONFIG_BLOCK=y
CONFIG_LBDAF=y
# CONFIG_BLK_DEV_BSG is not set
# CONFIG_BLK_DEV_INTEGRITY is not set

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

#
# Processor type and features
#
CONFIG_TICK_ONESHOT=y
# CONFIG_NO_HZ is not set
CONFIG_HIGH_RES_TIMERS=y
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
CONFIG_SMP=y
# CONFIG_SPARSE_IRQ is not set
CONFIG_X86_MPPARSE=y
# CONFIG_X86_BIGSMP is not set
# CONFIG_X86_EXTENDED_PLATFORM is not set
CONFIG_SCHED_OMIT_FRAME_POINTER=y
CONFIG_PARAVIRT_GUEST=y
CONFIG_XEN=y
CONFIG_XEN_MAX_DOMAIN_MEMORY=8
CONFIG_XEN_SAVE_RESTORE=y
# CONFIG_VMI is not set
# CONFIG_KVM_CLOCK is not set
# CONFIG_KVM_GUEST is not set
# CONFIG_LGUEST_GUEST is not set
CONFIG_PARAVIRT=y
CONFIG_PARAVIRT_SPINLOCKS=y
CONFIG_PARAVIRT_CLOCK=y
# CONFIG_PARAVIRT_DEBUG is not set
# CONFIG_MEMTEST is not set
# CONFIG_M386 is not set
# CONFIG_M486 is not set
# CONFIG_M586 is not set
# CONFIG_M586TSC is not set
# CONFIG_M586MMX is not set
# CONFIG_M686 is not set
# CONFIG_MPENTIUMII is not set
# CONFIG_MPENTIUMIII is not set
# CONFIG_MPENTIUMM is not set
CONFIG_MPENTIUM4=y
# CONFIG_MK6 is not set
# CONFIG_MK7 is not set
# CONFIG_MK8 is not set
# CONFIG_MCRUSOE is not set
# CONFIG_MEFFICEON is not set
# CONFIG_MWINCHIPC6 is not set
# CONFIG_MWINCHIP3D is not set
# CONFIG_MGEODEGX1 is not set
# CONFIG_MGEODE_LX is not set
# CONFIG_MCYRIXIII is not set
# CONFIG_MVIAC3_2 is not set
# CONFIG_MVIAC7 is not set
# CONFIG_MPSC is not set
# CONFIG_MCORE2 is not set
# CONFIG_GENERIC_CPU is not set
CONFIG_X86_GENERIC=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=7
CONFIG_X86_XADD=y
CONFIG_X86_WP_WORKS_OK=y
CONFIG_X86_INVLPG=y
CONFIG_X86_BSWAP=y
CONFIG_X86_POPAD_OK=y
CONFIG_X86_INTEL_USERCOPY=y
CONFIG_X86_USE_PPRO_CHECKSUM=y
CONFIG_X86_TSC=y
CONFIG_X86_CMPXCHG64=y
CONFIG_X86_CMOV=y
CONFIG_X86_MINIMUM_CPU_FAMILY=4
CONFIG_X86_DEBUGCTLMSR=y
CONFIG_CPU_SUP_INTEL=y
CONFIG_CPU_SUP_CYRIX_32=y
CONFIG_CPU_SUP_AMD=y
CONFIG_CPU_SUP_CENTAUR=y
CONFIG_CPU_SUP_TRANSMETA_32=y
CONFIG_CPU_SUP_UMC_32=y
# CONFIG_X86_DS is not set
# CONFIG_HPET_TIMER is not set
CONFIG_DMI=y
# CONFIG_IOMMU_HELPER is not set
# CONFIG_IOMMU_API is not set
CONFIG_NR_CPUS=2
# CONFIG_SCHED_SMT is not set
CONFIG_SCHED_MC=y
CONFIG_PREEMPT_NONE=y
# CONFIG_PREEMPT_VOLUNTARY is not set
# CONFIG_PREEMPT is not set
CONFIG_X86_LOCAL_APIC=y
CONFIG_X86_IO_APIC=y
# CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS is not set
# CONFIG_X86_MCE is not set
# CONFIG_X86_ANCIENT_MCE is not set
CONFIG_VM86=y
# CONFIG_TOSHIBA is not set
# CONFIG_I8K is not set
# CONFIG_X86_REBOOTFIXUPS is not set
# CONFIG_MICROCODE is not set
# CONFIG_X86_MSR is not set
# CONFIG_X86_CPUID is not set
# CONFIG_X86_CPU_DEBUG is not set
CONFIG_NOHIGHMEM=y
# CONFIG_HIGHMEM4G is not set
# CONFIG_HIGHMEM64G is not set
CONFIG_PAGE_OFFSET=0xC0000000
CONFIG_X86_PAE=y
CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
CONFIG_ARCH_FLATMEM_ENABLE=y
CONFIG_ARCH_SPARSEMEM_ENABLE=y
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y
# CONFIG_DISCONTIGMEM_MANUAL is not set
# CONFIG_SPARSEMEM_MANUAL is not set
CONFIG_FLATMEM=y
CONFIG_FLAT_NODE_MEM_MAP=y
CONFIG_SPARSEMEM_STATIC=y
CONFIG_PAGEFLAGS_EXTENDED=y
CONFIG_SPLIT_PTLOCK_CPUS=4
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_DEFAULT_MMAP_MIN_ADDR=4096
# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set
CONFIG_X86_RESERVE_LOW_64K=y
# CONFIG_MATH_EMULATION is not set
# CONFIG_MTRR is not set
# CONFIG_EFI is not set
CONFIG_SECCOMP=y
# CONFIG_CC_STACKPROTECTOR is not set
# CONFIG_HZ_100 is not set
CONFIG_HZ_250=y
# CONFIG_HZ_300 is not set
# CONFIG_HZ_1000 is not set
CONFIG_HZ=250
CONFIG_SCHED_HRTICK=y
# CONFIG_KEXEC is not set
CONFIG_PHYSICAL_START=0x1000000
# CONFIG_RELOCATABLE is not set
CONFIG_PHYSICAL_ALIGN=0x100000
CONFIG_HOTPLUG_CPU=y
# CONFIG_COMPAT_VDSO is not set
# CONFIG_CMDLINE_BOOL is not set

#
# Power management and ACPI options
#
CONFIG_PM=y
# CONFIG_PM_DEBUG is not set
CONFIG_PM_SLEEP_SMP=y
CONFIG_PM_SLEEP=y
# CONFIG_SUSPEND is not set
CONFIG_ACPI=y
# CONFIG_ACPI_PROCFS is not set
CONFIG_ACPI_PROCFS_POWER=y
CONFIG_ACPI_SYSFS_POWER=y
CONFIG_ACPI_PROC_EVENT=y
CONFIG_ACPI_AC=y
CONFIG_ACPI_BATTERY=y
CONFIG_ACPI_BUTTON=y
CONFIG_ACPI_FAN=y
# CONFIG_ACPI_DOCK is not set
CONFIG_ACPI_PROCESSOR=y
CONFIG_ACPI_HOTPLUG_CPU=y
CONFIG_ACPI_THERMAL=y
# CONFIG_ACPI_CUSTOM_DSDT is not set
CONFIG_ACPI_BLACKLIST_YEAR=0
# CONFIG_ACPI_DEBUG is not set
# CONFIG_ACPI_PCI_SLOT is not set
CONFIG_X86_PM_TIMER=y
CONFIG_ACPI_CONTAINER=y
# CONFIG_ACPI_SBS is not set
# CONFIG_APM is not set

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

#
# Bus options (PCI etc.)
#
CONFIG_PCI=y
# CONFIG_PCI_GOBIOS is not set
# CONFIG_PCI_GOMMCONFIG is not set
# CONFIG_PCI_GODIRECT is not set
# CONFIG_PCI_GOOLPC is not set
CONFIG_PCI_GOANY=y
CONFIG_PCI_BIOS=y
CONFIG_PCI_DIRECT=y
CONFIG_PCI_MMCONFIG=y
CONFIG_PCI_DOMAINS=y
CONFIG_PCIEPORTBUS=y
CONFIG_PCIEAER=y
# CONFIG_PCIE_ECRC is not set
# CONFIG_PCIEAER_INJECT is not set
# CONFIG_PCIEASPM is not set
CONFIG_ARCH_SUPPORTS_MSI=y
# CONFIG_PCI_MSI is not set
CONFIG_PCI_LEGACY=y
# CONFIG_PCI_DEBUG is not set
# CONFIG_PCI_STUB is not set
CONFIG_HT_IRQ=y
# CONFIG_PCI_IOV is not set
CONFIG_ISA_DMA_API=y
CONFIG_ISA=y
# CONFIG_EISA is not set
# CONFIG_MCA is not set
# CONFIG_SCx200 is not set
# CONFIG_OLPC is not set
# CONFIG_PCCARD is not set
# CONFIG_HOTPLUG_PCI is not set

#
# Executable file formats / Emulations
#
CONFIG_BINFMT_ELF=y
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
CONFIG_HAVE_AOUT=y
CONFIG_BINFMT_AOUT=y
CONFIG_BINFMT_MISC=y
CONFIG_HAVE_ATOMIC_IOMAP=y
CONFIG_NET=y

#
# Networking options
#
CONFIG_PACKET=y
# CONFIG_PACKET_MMAP is not set
CONFIG_UNIX=y
CONFIG_XFRM=y
# CONFIG_XFRM_USER is not set
# CONFIG_XFRM_SUB_POLICY is not set
# CONFIG_XFRM_MIGRATE is not set
# CONFIG_XFRM_STATISTICS is not set
# CONFIG_NET_KEY is not set
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
CONFIG_IP_ADVANCED_ROUTER=y
CONFIG_ASK_IP_FIB_HASH=y
# CONFIG_IP_FIB_TRIE is not set
CONFIG_IP_FIB_HASH=y
CONFIG_IP_MULTIPLE_TABLES=y
CONFIG_IP_ROUTE_MULTIPATH=y
# CONFIG_IP_ROUTE_VERBOSE is not set
CONFIG_IP_PNP=y
CONFIG_IP_PNP_DHCP=y
CONFIG_IP_PNP_BOOTP=y
# CONFIG_IP_PNP_RARP is not set
CONFIG_NET_IPIP=y
CONFIG_NET_IPGRE=y
CONFIG_NET_IPGRE_BROADCAST=y
CONFIG_IP_MROUTE=y
# CONFIG_IP_PIMSM_V1 is not set
# 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 is not set
# CONFIG_INET_XFRM_TUNNEL is not set
CONFIG_INET_TUNNEL=y
CONFIG_INET_XFRM_MODE_TRANSPORT=y
CONFIG_INET_XFRM_MODE_TUNNEL=y
CONFIG_INET_XFRM_MODE_BEET=y
# CONFIG_INET_LRO is not set
CONFIG_INET_DIAG=y
CONFIG_INET_TCP_DIAG=y
CONFIG_TCP_CONG_ADVANCED=y
CONFIG_TCP_CONG_BIC=y
CONFIG_TCP_CONG_CUBIC=y
CONFIG_TCP_CONG_WESTWOOD=y
CONFIG_TCP_CONG_HTCP=y
CONFIG_TCP_CONG_HSTCP=y
CONFIG_TCP_CONG_HYBLA=y
CONFIG_TCP_CONG_VEGAS=y
CONFIG_TCP_CONG_SCALABLE=y
CONFIG_TCP_CONG_LP=y
CONFIG_TCP_CONG_VENO=y
CONFIG_TCP_CONG_YEAH=y
CONFIG_TCP_CONG_ILLINOIS=y
# CONFIG_DEFAULT_BIC is not set
CONFIG_DEFAULT_CUBIC=y
# CONFIG_DEFAULT_HTCP is not set
# CONFIG_DEFAULT_VEGAS is not set
# CONFIG_DEFAULT_WESTWOOD is not set
# CONFIG_DEFAULT_RENO is not set
CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_TCP_MD5SIG is not set
CONFIG_IPV6=y
# CONFIG_IPV6_PRIVACY is not set
# CONFIG_IPV6_ROUTER_PREF is not set
# CONFIG_IPV6_OPTIMISTIC_DAD is not set
# CONFIG_INET6_AH is not set
# CONFIG_INET6_ESP is not set
# CONFIG_INET6_IPCOMP is not set
# CONFIG_IPV6_MIP6 is not set
# CONFIG_INET6_XFRM_TUNNEL is not set
# CONFIG_INET6_TUNNEL is not set
CONFIG_INET6_XFRM_MODE_TRANSPORT=y
CONFIG_INET6_XFRM_MODE_TUNNEL=y
CONFIG_INET6_XFRM_MODE_BEET=y
# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
CONFIG_IPV6_SIT=y
CONFIG_IPV6_NDISC_NODETYPE=y
# CONFIG_IPV6_TUNNEL is not set
# CONFIG_IPV6_MULTIPLE_TABLES is not set
# CONFIG_IPV6_MROUTE is not set
# CONFIG_NETWORK_SECMARK is not set
CONFIG_NETFILTER=y
# CONFIG_NETFILTER_DEBUG is not set
CONFIG_NETFILTER_ADVANCED=y
CONFIG_BRIDGE_NETFILTER=y

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

#
# IP: Netfilter Configuration
#
# CONFIG_NF_DEFRAG_IPV4 is not set
# CONFIG_NF_CONNTRACK_IPV4 is not set
CONFIG_IP_NF_QUEUE=y
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=m
CONFIG_IP_NF_FILTER=y
CONFIG_IP_NF_TARGET_REJECT=y
CONFIG_IP_NF_TARGET_LOG=m
CONFIG_IP_NF_TARGET_ULOG=m
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_ARPTABLES=y
CONFIG_IP_NF_ARPFILTER=y
CONFIG_IP_NF_ARP_MANGLE=y

#
# IPv6: Netfilter Configuration
#
# CONFIG_NF_CONNTRACK_IPV6 is not set
# CONFIG_IP6_NF_QUEUE is not set
CONFIG_IP6_NF_IPTABLES=m
# CONFIG_IP6_NF_MATCH_AH is not set
CONFIG_IP6_NF_MATCH_EUI64=m
CONFIG_IP6_NF_MATCH_FRAG=m
CONFIG_IP6_NF_MATCH_OPTS=m
CONFIG_IP6_NF_MATCH_HL=m
CONFIG_IP6_NF_MATCH_IPV6HEADER=m
# CONFIG_IP6_NF_MATCH_MH is not set
CONFIG_IP6_NF_MATCH_RT=m
CONFIG_IP6_NF_TARGET_HL=m
CONFIG_IP6_NF_TARGET_LOG=m
CONFIG_IP6_NF_FILTER=m
CONFIG_IP6_NF_TARGET_REJECT=m
CONFIG_IP6_NF_MANGLE=m
CONFIG_IP6_NF_RAW=m
# CONFIG_BRIDGE_NF_EBTABLES is not set
# CONFIG_IP_DCCP is not set
# CONFIG_IP_SCTP is not set
# CONFIG_TIPC is not set
# CONFIG_ATM is not set
CONFIG_STP=y
CONFIG_BRIDGE=y
# CONFIG_NET_DSA is not set
CONFIG_VLAN_8021Q=y
# CONFIG_VLAN_8021Q_GVRP is not set
# CONFIG_DECNET is not set
CONFIG_LLC=y
# CONFIG_LLC2 is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
# CONFIG_PHONET is not set
# CONFIG_IEEE802154 is not set
CONFIG_NET_SCHED=y

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

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

#
# Network testing
#
CONFIG_NET_PKTGEN=m
# CONFIG_HAMRADIO is not set
# CONFIG_CAN is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
# CONFIG_AF_RXRPC is not set
CONFIG_FIB_RULES=y
CONFIG_WIRELESS=y
CONFIG_CFG80211=y
# CONFIG_CFG80211_REG_DEBUG is not set
# CONFIG_WIRELESS_OLD_REGULATORY is not set
CONFIG_WIRELESS_EXT=y
CONFIG_WIRELESS_EXT_SYSFS=y
# CONFIG_LIB80211 is not set
# CONFIG_MAC80211 is not set
CONFIG_MAC80211_DEFAULT_PS_VALUE=0
# CONFIG_WIMAX is not set
# CONFIG_RFKILL is not set
# CONFIG_NET_9P is not set

#
# Device Drivers
#

#
# Generic Driver Options
#
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
CONFIG_FW_LOADER=y
CONFIG_FIRMWARE_IN_KERNEL=y
CONFIG_EXTRA_FIRMWARE=""
# CONFIG_DEBUG_DRIVER is not set
# CONFIG_DEBUG_DEVRES is not set
CONFIG_SYS_HYPERVISOR=y
# CONFIG_CONNECTOR is not set
# CONFIG_MTD is not set
# CONFIG_PARPORT is not set
CONFIG_PNP=y
CONFIG_PNP_DEBUG_MESSAGES=y

#
# Protocols
#
# CONFIG_ISAPNP is not set
# CONFIG_PNPBIOS is not set
CONFIG_PNPACPI=y
CONFIG_BLK_DEV=y
# CONFIG_BLK_DEV_FD is not set
# CONFIG_BLK_DEV_XD is not set
# CONFIG_BLK_CPQ_DA is not set
# CONFIG_BLK_CPQ_CISS_DA is not set
# CONFIG_BLK_DEV_DAC960 is not set
# CONFIG_BLK_DEV_UMEM is not set
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=y
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
# CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_SX8 is not set
# CONFIG_BLK_DEV_UB is not set
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_BLK_DEV_RAM_SIZE=4096
# CONFIG_BLK_DEV_XIP is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
CONFIG_XEN_BLKDEV_FRONTEND=y
# CONFIG_BLK_DEV_HD is not set
CONFIG_MISC_DEVICES=y
# CONFIG_IBM_ASM is not set
# CONFIG_PHANTOM is not set
# CONFIG_SGI_IOC4 is not set
# CONFIG_TIFM_CORE is not set
# CONFIG_ENCLOSURE_SERVICES is not set
# CONFIG_HP_ILO is not set
# CONFIG_C2PORT is not set

#
# EEPROM support
#
# CONFIG_EEPROM_93CX6 is not set
# CONFIG_CB710_CORE is not set
CONFIG_HAVE_IDE=y
CONFIG_IDE=y

#
# Please see Documentation/ide/ide.txt for help/info on IDE drives
#
# CONFIG_BLK_DEV_IDE_SATA is not set
CONFIG_IDE_GD=y
CONFIG_IDE_GD_ATA=y
# CONFIG_IDE_GD_ATAPI is not set
# CONFIG_BLK_DEV_IDECD is not set
# CONFIG_BLK_DEV_IDETAPE is not set
# CONFIG_BLK_DEV_IDEACPI is not set
# CONFIG_IDE_TASK_IOCTL is not set
CONFIG_IDE_PROC_FS=y

#
# IDE chipset support/bugfixes
#
# CONFIG_IDE_GENERIC is not set
# CONFIG_BLK_DEV_PLATFORM is not set
# CONFIG_BLK_DEV_CMD640 is not set
# CONFIG_BLK_DEV_IDEPNP is not set

#
# PCI IDE chipsets support
#
# CONFIG_BLK_DEV_GENERIC is not set
# CONFIG_BLK_DEV_OPTI621 is not set
# CONFIG_BLK_DEV_RZ1000 is not set
# CONFIG_BLK_DEV_AEC62XX is not set
# CONFIG_BLK_DEV_ALI15X3 is not set
# CONFIG_BLK_DEV_AMD74XX is not set
# CONFIG_BLK_DEV_ATIIXP is not set
# CONFIG_BLK_DEV_CMD64X is not set
# CONFIG_BLK_DEV_TRIFLEX is not set
# CONFIG_BLK_DEV_CS5520 is not set
# CONFIG_BLK_DEV_CS5530 is not set
# CONFIG_BLK_DEV_CS5535 is not set
# CONFIG_BLK_DEV_CS5536 is not set
# CONFIG_BLK_DEV_HPT366 is not set
# CONFIG_BLK_DEV_JMICRON is not set
# CONFIG_BLK_DEV_SC1200 is not set
# CONFIG_BLK_DEV_PIIX is not set
# CONFIG_BLK_DEV_IT8172 is not set
# CONFIG_BLK_DEV_IT8213 is not set
# CONFIG_BLK_DEV_IT821X is not set
# CONFIG_BLK_DEV_NS87415 is not set
# CONFIG_BLK_DEV_PDC202XX_OLD is not set
# CONFIG_BLK_DEV_PDC202XX_NEW is not set
# CONFIG_BLK_DEV_SVWKS is not set
# CONFIG_BLK_DEV_SIIMAGE is not set
# CONFIG_BLK_DEV_SIS5513 is not set
# CONFIG_BLK_DEV_SLC90E66 is not set
# CONFIG_BLK_DEV_TRM290 is not set
# CONFIG_BLK_DEV_VIA82CXXX is not set
# CONFIG_BLK_DEV_TC86C001 is not set

#
# Other IDE chipsets support
#

#
# Note: most of these also require special kernel boot parameters
#
# CONFIG_BLK_DEV_4DRIVES is not set
# CONFIG_BLK_DEV_ALI14XX is not set
# CONFIG_BLK_DEV_DTC2278 is not set
# CONFIG_BLK_DEV_HT6560B is not set
# CONFIG_BLK_DEV_QD65XX is not set
# CONFIG_BLK_DEV_UMC8672 is not set
# CONFIG_BLK_DEV_IDEDMA is not set

#
# SCSI device support
#
# CONFIG_RAID_ATTRS is not set
# CONFIG_SCSI is not set
# CONFIG_SCSI_DMA is not set
# CONFIG_SCSI_NETLINK is not set
# CONFIG_ATA is not set
# CONFIG_MD is not set
# CONFIG_FUSION is not set

#
# IEEE 1394 (FireWire) support
#

#
# You can enable one or both FireWire driver stacks.
#

#
# See the help texts for more information.
#
# CONFIG_FIREWIRE is not set
# CONFIG_IEEE1394 is not set
# CONFIG_I2O is not set
# CONFIG_MACINTOSH_DRIVERS is not set
CONFIG_NETDEVICES=y
CONFIG_IFB=m
CONFIG_DUMMY=m
CONFIG_BONDING=m
# CONFIG_MACVLAN is not set
# CONFIG_EQUALIZER is not set
CONFIG_TUN=y
CONFIG_VETH=m
# CONFIG_NET_SB1000 is not set
# CONFIG_ARCNET is not set
# CONFIG_PHYLIB is not set
CONFIG_NET_ETHERNET=y
# CONFIG_MII is not set
# CONFIG_HAPPYMEAL is not set
# CONFIG_SUNGEM is not set
# CONFIG_CASSINI is not set
# CONFIG_NET_VENDOR_3COM is not set
# CONFIG_LANCE is not set
# CONFIG_NET_VENDOR_SMC is not set
# CONFIG_ETHOC is not set
# CONFIG_NET_VENDOR_RACAL is not set
# CONFIG_DNET is not set
# CONFIG_NET_TULIP is not set
# CONFIG_AT1700 is not set
# CONFIG_DEPCA is not set
# CONFIG_HP100 is not set
# CONFIG_NET_ISA is not set
# CONFIG_IBM_NEW_EMAC_ZMII is not set
# CONFIG_IBM_NEW_EMAC_RGMII is not set
# CONFIG_IBM_NEW_EMAC_TAH is not set
# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
# CONFIG_NET_PCI is not set
# CONFIG_B44 is not set
# CONFIG_CS89x0 is not set
# CONFIG_KS8842 is not set
# CONFIG_ATL2 is not set
# CONFIG_NETDEV_1000 is not set
# CONFIG_NETDEV_10000 is not set
# CONFIG_TR is not set

#
# Wireless LAN
#
# CONFIG_WLAN_PRE80211 is not set
# CONFIG_WLAN_80211 is not set

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

#
# USB Network Adapters
#
# CONFIG_USB_CATC is not set
# CONFIG_USB_KAWETH is not set
# CONFIG_USB_PEGASUS is not set
# CONFIG_USB_RTL8150 is not set
# CONFIG_USB_USBNET is not set
# CONFIG_WAN is not set
CONFIG_XEN_NETDEV_FRONTEND=y
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
CONFIG_NETCONSOLE=m
# CONFIG_NETCONSOLE_DYNAMIC is not set
CONFIG_NETPOLL=y
# CONFIG_NETPOLL_TRAP is not set
CONFIG_NET_POLL_CONTROLLER=y
# CONFIG_ISDN is not set
# CONFIG_PHONE is not set

#
# Input device support
#
CONFIG_INPUT=y
# CONFIG_INPUT_FF_MEMLESS is not set
# CONFIG_INPUT_POLLDEV is not set

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

#
# Input Device Drivers
#
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_LKKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
# CONFIG_KEYBOARD_STOWAWAY is not set
# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_INPUT_MOUSE is not set
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TABLET is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
# CONFIG_INPUT_MISC is not set

#
# Hardware I/O ports
#
CONFIG_SERIO=y
CONFIG_SERIO_I8042=y
CONFIG_SERIO_SERPORT=y
# CONFIG_SERIO_CT82C710 is not set
# CONFIG_SERIO_PCIPS2 is not set
CONFIG_SERIO_LIBPS2=y
# CONFIG_SERIO_RAW is not set
# CONFIG_GAMEPORT 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 is not set
CONFIG_DEVKMEM=y
# CONFIG_SERIAL_NONSTANDARD is not set
# CONFIG_NOZOMI is not set

#
# Serial drivers
#
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_FIX_EARLYCON_MEM=y
CONFIG_SERIAL_8250_PCI=y
CONFIG_SERIAL_8250_PNP=y
CONFIG_SERIAL_8250_NR_UARTS=4
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
# CONFIG_SERIAL_8250_EXTENDED is not set

#
# Non-8250 serial port support
#
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
# CONFIG_SERIAL_JSM is not set
CONFIG_UNIX98_PTYS=y
# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
# CONFIG_LEGACY_PTYS is not set
CONFIG_HVC_DRIVER=y
CONFIG_HVC_IRQ=y
CONFIG_HVC_XEN=y
# CONFIG_IPMI_HANDLER is not set
CONFIG_HW_RANDOM=y
# CONFIG_HW_RANDOM_TIMERIOMEM is not set
# CONFIG_HW_RANDOM_INTEL is not set
# CONFIG_HW_RANDOM_AMD is not set
CONFIG_HW_RANDOM_GEODE=y
# CONFIG_HW_RANDOM_VIA is not set
CONFIG_NVRAM=y
CONFIG_RTC=y
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
# CONFIG_SONYPI is not set
# CONFIG_MWAVE is not set
# CONFIG_PC8736x_GPIO is not set
# CONFIG_NSC_GPIO is not set
CONFIG_CS5535_GPIO=y
# CONFIG_RAW_DRIVER is not set
# CONFIG_HPET is not set
# CONFIG_HANGCHECK_TIMER is not set
# CONFIG_TCG_TPM is not set
# CONFIG_TELCLOCK is not set
CONFIG_DEVPORT=y
# CONFIG_I2C is not set
# CONFIG_SPI is not set

#
# PPS support
#
# CONFIG_PPS is not set
CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
# CONFIG_GPIOLIB is not set
# CONFIG_W1 is not set
CONFIG_POWER_SUPPLY=y
# CONFIG_POWER_SUPPLY_DEBUG is not set
# CONFIG_PDA_POWER is not set
# CONFIG_BATTERY_DS2760 is not set
# CONFIG_HWMON is not set
CONFIG_THERMAL=y
# CONFIG_WATCHDOG is not set
CONFIG_SSB_POSSIBLE=y

#
# Sonics Silicon Backplane
#
# CONFIG_SSB is not set

#
# Multifunction device drivers
#
# CONFIG_MFD_CORE is not set
# CONFIG_MFD_SM501 is not set
# CONFIG_HTC_PASIC3 is not set
# CONFIG_MFD_TMIO is not set
# CONFIG_REGULATOR is not set
# CONFIG_MEDIA_SUPPORT is not set

#
# Graphics support
#
# CONFIG_AGP is not set
# CONFIG_DRM is not set
# CONFIG_VGASTATE is not set
# CONFIG_VIDEO_OUTPUT_CONTROL is not set
# CONFIG_FB is not set
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set

#
# Display device support
#
# CONFIG_DISPLAY_SUPPORT is not set

#
# Console display driver support
#
CONFIG_VGA_CONSOLE=y
# CONFIG_VGACON_SOFT_SCROLLBACK is not set
# CONFIG_MDA_CONSOLE is not set
CONFIG_DUMMY_CONSOLE=y
# CONFIG_SOUND is not set
# CONFIG_HID_SUPPORT is not set
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 is not set
# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set

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

#
# USB Host Controller Drivers
#
# CONFIG_USB_C67X00_HCD is not set
# CONFIG_USB_XHCI_HCD is not set
CONFIG_USB_EHCI_HCD=y
# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
# CONFIG_USB_EHCI_TT_NEWSCHED is not set
# CONFIG_USB_OXU210HP_HCD is not set
# CONFIG_USB_ISP116X_HCD is not set
# CONFIG_USB_ISP1760_HCD is not set
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 is not set
# CONFIG_USB_R8A66597_HCD is not set
# CONFIG_USB_WHCI_HCD is not set
# CONFIG_USB_HWA_HCD is not set

#
# USB Device Class drivers
#
# CONFIG_USB_ACM is not set
# CONFIG_USB_PRINTER is not set
# CONFIG_USB_WDM is not set
# 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_LIBUSUAL is not set

#
# USB Imaging devices
#
# CONFIG_USB_MDC800 is not set

#
# USB port drivers
#
# CONFIG_USB_SERIAL is not set

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

#
# OTG and related infrastructure
#
# CONFIG_NOP_USB_XCEIV is not set
# CONFIG_UWB is not set
# CONFIG_MMC is not set
# CONFIG_MEMSTICK is not set
# CONFIG_NEW_LEDS is not set
# CONFIG_ACCESSIBILITY is not set
# CONFIG_INFINIBAND is not set
# CONFIG_EDAC is not set
# CONFIG_RTC_CLASS is not set
# CONFIG_DMADEVICES is not set
# CONFIG_AUXDISPLAY is not set
# CONFIG_UIO is not set

#
# TI VLYNQ
#
CONFIG_XEN_BALLOON=y
CONFIG_XEN_SCRUB_PAGES=y
CONFIG_XEN_DEV_EVTCHN=y
CONFIG_XENFS=y
CONFIG_XEN_COMPAT_XENFS=y
CONFIG_XEN_SYS_HYPERVISOR=y
# CONFIG_STAGING is not set
# CONFIG_X86_PLATFORM_DEVICES is not set

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

#
# File systems
#
CONFIG_EXT2_FS=y
# CONFIG_EXT2_FS_XATTR is not set
# 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 is not set
# CONFIG_EXT3_FS_SECURITY is not set
# CONFIG_EXT4_FS is not set
CONFIG_JBD=y
CONFIG_FS_MBCACHE=y
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
# CONFIG_FS_POSIX_ACL is not set
# CONFIG_XFS_FS is not set
# CONFIG_GFS2_FS is not set
# CONFIG_OCFS2_FS is not set
# CONFIG_BTRFS_FS is not set
CONFIG_FILE_LOCKING=y
CONFIG_FSNOTIFY=y
CONFIG_DNOTIFY=y
CONFIG_INOTIFY=y
CONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not set
# CONFIG_AUTOFS_FS is not set
CONFIG_AUTOFS4_FS=y
# CONFIG_FUSE_FS is not set

#
# Caches
#
# CONFIG_FSCACHE is not set

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

#
# DOS/FAT/NT Filesystems
#
CONFIG_FAT_FS=y
CONFIG_MSDOS_FS=y
CONFIG_VFAT_FS=y
CONFIG_FAT_DEFAULT_CODEPAGE=437
CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
# CONFIG_NTFS_FS is not set

#
# Pseudo filesystems
#
CONFIG_PROC_FS=y
CONFIG_PROC_KCORE=y
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 is not set
CONFIG_MISC_FILESYSTEMS=y
# CONFIG_ADFS_FS is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_HFSPLUS_FS is not set
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_CRAMFS is not set
# CONFIG_SQUASHFS is not set
# CONFIG_VXFS_FS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_OMFS_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
# CONFIG_ROMFS_FS is not set
# CONFIG_SYSV_FS is not set
# CONFIG_UFS_FS is not set
# CONFIG_NILFS2_FS is not set
CONFIG_NETWORK_FILESYSTEMS=y
CONFIG_NFS_FS=y
CONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not set
# CONFIG_NFS_V4 is not set
CONFIG_ROOT_NFS=y
# CONFIG_NFSD is not set
CONFIG_LOCKD=y
CONFIG_LOCKD_V4=y
CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=y
# CONFIG_RPCSEC_GSS_KRB5 is not set
# CONFIG_RPCSEC_GSS_SPKM3 is not set
# CONFIG_SMB_FS is not set
# CONFIG_CIFS is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set

#
# Partition Types
#
# CONFIG_PARTITION_ADVANCED is not set
CONFIG_MSDOS_PARTITION=y
CONFIG_NLS=y
CONFIG_NLS_DEFAULT="iso8859-1"
CONFIG_NLS_CODEPAGE_437=y
# CONFIG_NLS_CODEPAGE_737 is not set
# CONFIG_NLS_CODEPAGE_775 is not set
# CONFIG_NLS_CODEPAGE_850 is not set
# CONFIG_NLS_CODEPAGE_852 is not set
# CONFIG_NLS_CODEPAGE_855 is not set
# CONFIG_NLS_CODEPAGE_857 is not set
# CONFIG_NLS_CODEPAGE_860 is not set
# CONFIG_NLS_CODEPAGE_861 is not set
# CONFIG_NLS_CODEPAGE_862 is not set
# CONFIG_NLS_CODEPAGE_863 is not set
# CONFIG_NLS_CODEPAGE_864 is not set
# CONFIG_NLS_CODEPAGE_865 is not set
# CONFIG_NLS_CODEPAGE_866 is not set
# CONFIG_NLS_CODEPAGE_869 is not set
# CONFIG_NLS_CODEPAGE_936 is not set
# CONFIG_NLS_CODEPAGE_950 is not set
# CONFIG_NLS_CODEPAGE_932 is not set
# CONFIG_NLS_CODEPAGE_949 is not set
# CONFIG_NLS_CODEPAGE_874 is not set
# CONFIG_NLS_ISO8859_8 is not set
# CONFIG_NLS_CODEPAGE_1250 is not set
# CONFIG_NLS_CODEPAGE_1251 is not set
# CONFIG_NLS_ASCII is not set
CONFIG_NLS_ISO8859_1=y
# CONFIG_NLS_ISO8859_2 is not set
# CONFIG_NLS_ISO8859_3 is not set
# CONFIG_NLS_ISO8859_4 is not set
# CONFIG_NLS_ISO8859_5 is not set
# CONFIG_NLS_ISO8859_6 is not set
# CONFIG_NLS_ISO8859_7 is not set
# CONFIG_NLS_ISO8859_9 is not set
# CONFIG_NLS_ISO8859_13 is not set
# CONFIG_NLS_ISO8859_14 is not set
# CONFIG_NLS_ISO8859_15 is not set
# CONFIG_NLS_KOI8_R is not set
# CONFIG_NLS_KOI8_U is not set
# CONFIG_NLS_UTF8 is not set
# CONFIG_DLM is not set

#
# Kernel hacking
#
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
CONFIG_PRINTK_TIME=y
CONFIG_ENABLE_WARN_DEPRECATED=y
CONFIG_ENABLE_MUST_CHECK=y
CONFIG_FRAME_WARN=1024
CONFIG_MAGIC_SYSRQ=y
# CONFIG_UNUSED_SYMBOLS is not set
# CONFIG_DEBUG_FS is not set
# CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_SHIRQ is not set
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
CONFIG_DETECT_HUNG_TASK=y
# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
CONFIG_SCHED_DEBUG=y
# CONFIG_SCHEDSTATS is not set
# CONFIG_TIMER_STATS is not set
# CONFIG_DEBUG_OBJECTS is not set
# CONFIG_SLUB_DEBUG_ON is not set
# CONFIG_SLUB_STATS is not set
# CONFIG_DEBUG_KMEMLEAK is not set
# CONFIG_DEBUG_RT_MUTEXES is not set
# CONFIG_RT_MUTEX_TESTER is not set
# CONFIG_DEBUG_SPINLOCK is not set
# CONFIG_DEBUG_MUTEXES is not set
# CONFIG_DEBUG_LOCK_ALLOC is not set
# CONFIG_PROVE_LOCKING is not set
# CONFIG_LOCK_STAT is not set
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
# CONFIG_DEBUG_KOBJECT is not set
CONFIG_DEBUG_BUGVERBOSE=y
# CONFIG_DEBUG_INFO is not set
# CONFIG_DEBUG_VM is not set
# CONFIG_DEBUG_VIRTUAL is not set
# CONFIG_DEBUG_WRITECOUNT is not set
CONFIG_DEBUG_MEMORY_INIT=y
# CONFIG_DEBUG_LIST is not set
# CONFIG_DEBUG_SG is not set
# CONFIG_DEBUG_NOTIFIERS is not set
CONFIG_ARCH_WANT_FRAME_POINTERS=y
# CONFIG_FRAME_POINTER is not set
# CONFIG_BOOT_PRINTK_DELAY is not set
# CONFIG_RCU_TORTURE_TEST is not set
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
# CONFIG_BACKTRACE_SELF_TEST is not set
# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
# CONFIG_FAULT_INJECTION is not set
# CONFIG_LATENCYTOP is not set
# CONFIG_SYSCTL_SYSCALL_CHECK is not set
# CONFIG_DEBUG_PAGEALLOC is not set
CONFIG_USER_STACKTRACE_SUPPORT=y
CONFIG_HAVE_FUNCTION_TRACER=y
CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y
CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
CONFIG_HAVE_DYNAMIC_FTRACE=y
CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
CONFIG_HAVE_FTRACE_SYSCALLS=y
CONFIG_TRACING_SUPPORT=y
CONFIG_FTRACE=y
# CONFIG_FUNCTION_TRACER is not set
# CONFIG_IRQSOFF_TRACER is not set
# CONFIG_SYSPROF_TRACER is not set
# CONFIG_SCHED_TRACER is not set
# CONFIG_ENABLE_DEFAULT_TRACERS is not set
# CONFIG_FTRACE_SYSCALLS is not set
# CONFIG_BOOT_TRACER is not set
CONFIG_BRANCH_PROFILE_NONE=y
# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
# CONFIG_PROFILE_ALL_BRANCHES is not set
# CONFIG_POWER_TRACER is not set
# CONFIG_STACK_TRACER is not set
# CONFIG_KMEMTRACE is not set
# CONFIG_WORKQUEUE_TRACER is not set
# CONFIG_BLK_DEV_IO_TRACE is not set
# CONFIG_MMIOTRACE is not set
# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
# CONFIG_DMA_API_DEBUG is not set
# CONFIG_SAMPLES is not set
CONFIG_HAVE_ARCH_KGDB=y
# CONFIG_KGDB is not set
CONFIG_HAVE_ARCH_KMEMCHECK=y
# CONFIG_KMEMCHECK is not set
# CONFIG_STRICT_DEVMEM is not set
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 is not set
# CONFIG_X86_PTDUMP is not set
# CONFIG_DEBUG_RODATA is not set
# CONFIG_DEBUG_NX_TEST is not set
# CONFIG_4KSTACKS is not set
CONFIG_DOUBLEFAULT=y
# CONFIG_IOMMU_STRESS is not set
CONFIG_HAVE_MMIOTRACE_SUPPORT=y
CONFIG_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=y
# CONFIG_IO_DELAY_0XED is not set
# CONFIG_IO_DELAY_UDELAY is not set
# CONFIG_IO_DELAY_NONE is not set
CONFIG_DEFAULT_IO_DELAY_TYPE=0
# CONFIG_CPA_DEBUG is not set
# CONFIG_OPTIMIZE_INLINING is not set

#
# Security options
#
# CONFIG_KEYS is not set
# CONFIG_SECURITY is not set
# CONFIG_SECURITYFS is not set
# CONFIG_SECURITY_FILE_CAPABILITIES is not set
# CONFIG_IMA is not set
CONFIG_CRYPTO=y

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

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

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

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

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

#
# Ciphers
#
# CONFIG_CRYPTO_AES is not set
# CONFIG_CRYPTO_AES_586 is not set
# CONFIG_CRYPTO_ANUBIS is not set
# CONFIG_CRYPTO_ARC4 is not set
# CONFIG_CRYPTO_BLOWFISH is not set
# CONFIG_CRYPTO_CAMELLIA is not set
# CONFIG_CRYPTO_CAST5 is not set
# CONFIG_CRYPTO_CAST6 is not set
CONFIG_CRYPTO_DES=y
# CONFIG_CRYPTO_FCRYPT is not set
# CONFIG_CRYPTO_KHAZAD is not set
# CONFIG_CRYPTO_SALSA20 is not set
# CONFIG_CRYPTO_SALSA20_586 is not set
# CONFIG_CRYPTO_SEED is not set
# CONFIG_CRYPTO_SERPENT is not set
# CONFIG_CRYPTO_TEA is not set
# CONFIG_CRYPTO_TWOFISH is not set
# CONFIG_CRYPTO_TWOFISH_586 is not set

#
# Compression
#
# CONFIG_CRYPTO_DEFLATE is not set
# CONFIG_CRYPTO_ZLIB is not set
# CONFIG_CRYPTO_LZO is not set

#
# Random Number Generation
#
# CONFIG_CRYPTO_ANSI_CPRNG is not set
CONFIG_CRYPTO_HW=y
# CONFIG_CRYPTO_DEV_PADLOCK is not set
# CONFIG_CRYPTO_DEV_GEODE is not set
# CONFIG_CRYPTO_DEV_HIFN_795X is not set
CONFIG_HAVE_KVM=y
CONFIG_HAVE_KVM_IRQCHIP=y
CONFIG_VIRTUALIZATION=y
# CONFIG_KVM is not set
# CONFIG_LGUEST is not set
# CONFIG_VIRTIO_PCI is not set
# CONFIG_VIRTIO_BALLOON is not set
# 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 is not set
# CONFIG_CRC16 is not set
# CONFIG_CRC_T10DIF is not set
CONFIG_CRC_ITU_T=y
CONFIG_CRC32=y
# CONFIG_CRC7 is not set
CONFIG_LIBCRC32C=m
CONFIG_ZLIB_INFLATE=y
CONFIG_DECOMPRESS_GZIP=y
CONFIG_DECOMPRESS_BZIP2=y
CONFIG_DECOMPRESS_LZMA=y
CONFIG_TEXTSEARCH=y
CONFIG_TEXTSEARCH_KMP=m
CONFIG_TEXTSEARCH_BM=m
CONFIG_TEXTSEARCH_FSM=m
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y
CONFIG_HAS_DMA=y
CONFIG_NLATTR=y

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [bisected] 2.6.31 regression: fails to boot as xen guest
  2009-08-25 16:49   ` Arnd Hannemann
@ 2009-08-25 16:52     ` Pekka Enberg
  2009-08-25 17:49       ` Arnd Hannemann
  2009-08-25 18:06       ` Jeremy Fitzhardinge
  0 siblings, 2 replies; 22+ messages in thread
From: Pekka Enberg @ 2009-08-25 16:52 UTC (permalink / raw)
  To: Arnd Hannemann
  Cc: Arnd Hannemann, LKML, hannes@cmpxchg.org,
	torvalds@linux-foundation.org, Jeremy Fitzhardinge,
	xen-devel@lists.xensource.com, Ingo Molnar

Hi Arnd,

On Tue, 2009-08-25 at 18:49 +0200, Arnd Hannemann wrote:
> > Thanks for doing the bisect! Can we also see your .config also?
> 
> Config for -rc7 is attached. My bisect configs were based on that

Thanks! While we wait for the Xen people, you can try the following
patch to see if we can narrow the bug down to trap_init().

			Pekka

diff --git a/arch/x86/mm/init_32.c b/arch/x86/mm/init_32.c
index 3cd7711..7e8e4e4 100644
--- a/arch/x86/mm/init_32.c
+++ b/arch/x86/mm/init_32.c
@@ -956,8 +956,10 @@ void __init mem_init(void)
 	BUG_ON(VMALLOC_START				>= VMALLOC_END);
 	BUG_ON((unsigned long)high_memory		> VMALLOC_START);
 
+#if 0
 	if (boot_cpu_data.wp_works_ok < 0)
 		test_wp_bit();
+#endif
 
 	save_pg_dir();
 	zap_low_mappings(true);
diff --git a/init/main.c b/init/main.c
index 2d9d6bd..5c4dacb 100644
--- a/init/main.c
+++ b/init/main.c
@@ -603,7 +603,6 @@ asmlinkage void __init start_kernel(void)
 	pidhash_init();
 	vfs_caches_init_early();
 	sort_main_extable();
-	trap_init();
 	mm_init();
 	/*
 	 * Set up the scheduler prior starting any interrupts (such as the
@@ -621,6 +620,7 @@ asmlinkage void __init start_kernel(void)
 				"enabled *very* early, fixing it\n");
 		local_irq_disable();
 	}
+	trap_init();
 	rcu_init();
 	/* init some links before init_ISA_irqs() */
 	early_irq_init();



^ permalink raw reply related	[flat|nested] 22+ messages in thread

* Re: [bisected] 2.6.31 regression: fails to boot as xen guest
  2009-08-25 16:52     ` Pekka Enberg
@ 2009-08-25 17:49       ` Arnd Hannemann
  2009-08-25 18:03         ` Pekka Enberg
  2009-08-25 18:06       ` Jeremy Fitzhardinge
  1 sibling, 1 reply; 22+ messages in thread
From: Arnd Hannemann @ 2009-08-25 17:49 UTC (permalink / raw)
  To: Pekka Enberg
  Cc: Arnd Hannemann, LKML, hannes@cmpxchg.org,
	torvalds@linux-foundation.org, Jeremy Fitzhardinge,
	xen-devel@lists.xensource.com, Ingo Molnar

Hi Pekka,

Pekka Enberg wrote:
> On Tue, 2009-08-25 at 18:49 +0200, Arnd Hannemann wrote:
>>> Thanks for doing the bisect! Can we also see your .config also?
>> Config for -rc7 is attached. My bisect configs were based on that
>
> Thanks! While we wait for the Xen people, you can try the following
> patch to see if we can narrow the bug down to trap_init().

Yes seems to be trap_init().
-rc7 with this patch applied boots up to the prompt.

Best regards, Arnd

>
> diff --git a/arch/x86/mm/init_32.c b/arch/x86/mm/init_32.c index
> 3cd7711..7e8e4e4 100644 --- a/arch/x86/mm/init_32.c +++
> b/arch/x86/mm/init_32.c @@ -956,8 +956,10 @@ void __init
> mem_init(void) BUG_ON(VMALLOC_START                >= VMALLOC_END);
> BUG_ON((unsigned long)high_memory        > VMALLOC_START);
>
> +#if 0 if (boot_cpu_data.wp_works_ok < 0) test_wp_bit(); +#endif
>
> save_pg_dir(); zap_low_mappings(true); diff --git a/init/main.c
> b/init/main.c index 2d9d6bd..5c4dacb 100644 --- a/init/main.c +++
> b/init/main.c @@ -603,7 +603,6 @@ asmlinkage void __init
> start_kernel(void) pidhash_init(); vfs_caches_init_early();
> sort_main_extable(); -    trap_init(); mm_init(); /* * Set up the
> scheduler prior starting any interrupts (such as the @@ -621,6 +620,7
> @@ asmlinkage void __init start_kernel(void) "enabled *very* early,
> fixing it\n"); local_irq_disable(); } +    trap_init(); rcu_init(); /*
> init some links before init_ISA_irqs() */ early_irq_init();
>
>


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [bisected] 2.6.31 regression: fails to boot as xen guest
  2009-08-25 17:49       ` Arnd Hannemann
@ 2009-08-25 18:03         ` Pekka Enberg
  2009-08-25 18:08           ` Jeremy Fitzhardinge
                             ` (2 more replies)
  0 siblings, 3 replies; 22+ messages in thread
From: Pekka Enberg @ 2009-08-25 18:03 UTC (permalink / raw)
  To: Arnd Hannemann
  Cc: Arnd Hannemann, LKML, hannes@cmpxchg.org,
	torvalds@linux-foundation.org, Jeremy Fitzhardinge,
	xen-devel@lists.xensource.com, Ingo Molnar,
	Benjamin Herrenschmidt

On Tue, 2009-08-25 at 19:49 +0200, Arnd Hannemann wrote:
> Hi Pekka,
> 
> Pekka Enberg wrote:
> > On Tue, 2009-08-25 at 18:49 +0200, Arnd Hannemann wrote:
> >>> Thanks for doing the bisect! Can we also see your .config also?
> >> Config for -rc7 is attached. My bisect configs were based on that
> >
> > Thanks! While we wait for the Xen people, you can try the following
> > patch to see if we can narrow the bug down to trap_init().
> 
> Yes seems to be trap_init().
> -rc7 with this patch applied boots up to the prompt.

Thanks for testing! Ingo, what do you think of the following patch?
AFAICT, x86-32 is the only architecture playing with traps in mem_init()
so this should be the safest fix for 2.6.31.

			Pekka

>From b739e3c3baa6312664b4ea676bdf73df27fcecbc Mon Sep 17 00:00:00 2001
From: Pekka Enberg <penberg@cs.helsinki.fi>
Date: Tue, 25 Aug 2009 20:55:25 +0300
Subject: [PATCH] x86: Move WP bit testing to trap_init()

Commit 83b519e8b9572c319c8e0c615ee5dd7272856090 ("slab: setup allocators
earlier in the boot sequence") moved trap_init() earlier in the boot
sequence to avoid a hard crash with 32-bit x86 in mem_init().

Unfortunately the change broke Xen so make trap_init() later and move
the WP bit test from mem_init() to trap_init().

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
---
 arch/x86/kernel/traps.c |   57 +++++++++++++++++++++++++++++++++++++++++++++++
 arch/x86/mm/init_32.c   |   56 ----------------------------------------------
 init/main.c             |    2 +-
 3 files changed, 58 insertions(+), 57 deletions(-)

diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
index 5204332..2084408 100644
--- a/arch/x86/kernel/traps.c
+++ b/arch/x86/kernel/traps.c
@@ -906,6 +906,60 @@ dotraplinkage void do_iret_error(struct pt_regs *regs, long error_code)
 		return;
 	do_trap(32, SIGILL, "iret exception", regs, error_code, &info);
 }
+
+static noinline int do_test_wp_bit(void);
+
+/*
+ * Test if the WP bit works in supervisor mode. It isn't supported on 386's
+ * and also on some strange 486's. All 586+'s are OK. This used to involve
+ * black magic jumps to work around some nasty CPU bugs, but fortunately the
+ * switch to using exceptions got rid of all that.
+ */
+static void __init test_wp_bit(void)
+{
+	printk(KERN_INFO
+  "Checking if this processor honours the WP bit even in supervisor mode...");
+
+	/* Any page-aligned address will do, the test is non-destructive */
+	__set_fixmap(FIX_WP_TEST, __pa(&swapper_pg_dir), PAGE_READONLY);
+	boot_cpu_data.wp_works_ok = do_test_wp_bit();
+	clear_fixmap(FIX_WP_TEST);
+
+	if (!boot_cpu_data.wp_works_ok) {
+		printk(KERN_CONT "No.\n");
+#ifdef CONFIG_X86_WP_WORKS_OK
+		panic(
+  "This kernel doesn't support CPU's with broken WP. Recompile it for a 386!");
+#endif
+	} else {
+		printk(KERN_CONT "Ok.\n");
+	}
+}
+
+/*
+ * This function cannot be __init, since exceptions don't work in that
+ * section.  Put this after the callers, so that it cannot be inlined.
+ */
+static noinline int do_test_wp_bit(void)
+{
+	char tmp_reg;
+	int flag;
+
+	__asm__ __volatile__(
+		"	movb %0, %1	\n"
+		"1:	movb %1, %0	\n"
+		"	xorl %2, %2	\n"
+		"2:			\n"
+		_ASM_EXTABLE(1b,2b)
+		:"=m" (*(char *)fix_to_virt(FIX_WP_TEST)),
+		 "=q" (tmp_reg),
+		 "=r" (flag)
+		:"2" (1)
+		:"memory");
+
+	return flag;
+}
+
 #endif
 
 void __init trap_init(void)
@@ -982,5 +1036,8 @@ void __init trap_init(void)
 
 #ifdef CONFIG_X86_32
 	x86_quirk_trap_init();
+
+	if (boot_cpu_data.wp_works_ok < 0)
+		test_wp_bit();
 #endif
 }
diff --git a/arch/x86/mm/init_32.c b/arch/x86/mm/init_32.c
index 3cd7711..e22bb8a 100644
--- a/arch/x86/mm/init_32.c
+++ b/arch/x86/mm/init_32.c
@@ -54,8 +54,6 @@
 
 unsigned long highstart_pfn, highend_pfn;
 
-static noinline int do_test_wp_bit(void);
-
 bool __read_mostly __vmalloc_start_set = false;
 
 static __init void *alloc_low_page(void)
@@ -830,33 +828,6 @@ void __init paging_init(void)
 	zone_sizes_init();
 }
 
-/*
- * Test if the WP bit works in supervisor mode. It isn't supported on 386's
- * and also on some strange 486's. All 586+'s are OK. This used to involve
- * black magic jumps to work around some nasty CPU bugs, but fortunately the
- * switch to using exceptions got rid of all that.
- */
-static void __init test_wp_bit(void)
-{
-	printk(KERN_INFO
-  "Checking if this processor honours the WP bit even in supervisor mode...");
-
-	/* Any page-aligned address will do, the test is non-destructive */
-	__set_fixmap(FIX_WP_TEST, __pa(&swapper_pg_dir), PAGE_READONLY);
-	boot_cpu_data.wp_works_ok = do_test_wp_bit();
-	clear_fixmap(FIX_WP_TEST);
-
-	if (!boot_cpu_data.wp_works_ok) {
-		printk(KERN_CONT "No.\n");
-#ifdef CONFIG_X86_WP_WORKS_OK
-		panic(
-  "This kernel doesn't support CPU's with broken WP. Recompile it for a 386!");
-#endif
-	} else {
-		printk(KERN_CONT "Ok.\n");
-	}
-}
-
 static struct kcore_list kcore_mem, kcore_vmalloc;
 
 void __init mem_init(void)
@@ -956,9 +927,6 @@ void __init mem_init(void)
 	BUG_ON(VMALLOC_START				>= VMALLOC_END);
 	BUG_ON((unsigned long)high_memory		> VMALLOC_START);
 
-	if (boot_cpu_data.wp_works_ok < 0)
-		test_wp_bit();
-
 	save_pg_dir();
 	zap_low_mappings(true);
 }
@@ -975,30 +943,6 @@ int arch_add_memory(int nid, u64 start, u64 size)
 }
 #endif
 
-/*
- * This function cannot be __init, since exceptions don't work in that
- * section.  Put this after the callers, so that it cannot be inlined.
- */
-static noinline int do_test_wp_bit(void)
-{
-	char tmp_reg;
-	int flag;
-
-	__asm__ __volatile__(
-		"	movb %0, %1	\n"
-		"1:	movb %1, %0	\n"
-		"	xorl %2, %2	\n"
-		"2:			\n"
-		_ASM_EXTABLE(1b,2b)
-		:"=m" (*(char *)fix_to_virt(FIX_WP_TEST)),
-		 "=q" (tmp_reg),
-		 "=r" (flag)
-		:"2" (1)
-		:"memory");
-
-	return flag;
-}
-
 #ifdef CONFIG_DEBUG_RODATA
 const int rodata_test_data = 0xC3;
 EXPORT_SYMBOL_GPL(rodata_test_data);
diff --git a/init/main.c b/init/main.c
index 2d9d6bd..5c4dacb 100644
--- a/init/main.c
+++ b/init/main.c
@@ -603,7 +603,6 @@ asmlinkage void __init start_kernel(void)
 	pidhash_init();
 	vfs_caches_init_early();
 	sort_main_extable();
-	trap_init();
 	mm_init();
 	/*
 	 * Set up the scheduler prior starting any interrupts (such as the
@@ -621,6 +620,7 @@ asmlinkage void __init start_kernel(void)
 				"enabled *very* early, fixing it\n");
 		local_irq_disable();
 	}
+	trap_init();
 	rcu_init();
 	/* init some links before init_ISA_irqs() */
 	early_irq_init();
-- 
1.5.6.3




^ permalink raw reply related	[flat|nested] 22+ messages in thread

* Re: [bisected] 2.6.31 regression: fails to boot as xen guest
  2009-08-25 16:52     ` Pekka Enberg
  2009-08-25 17:49       ` Arnd Hannemann
@ 2009-08-25 18:06       ` Jeremy Fitzhardinge
  2009-08-25 18:14         ` Pekka Enberg
  1 sibling, 1 reply; 22+ messages in thread
From: Jeremy Fitzhardinge @ 2009-08-25 18:06 UTC (permalink / raw)
  To: Pekka Enberg
  Cc: Arnd Hannemann, Arnd Hannemann, LKML, hannes@cmpxchg.org,
	torvalds@linux-foundation.org, xen-devel@lists.xensource.com,
	Ingo Molnar

On 08/25/09 09:52, Pekka Enberg wrote:
> Hi Arnd,
>
> On Tue, 2009-08-25 at 18:49 +0200, Arnd Hannemann wrote:
>   
>>> Thanks for doing the bisect! Can we also see your .config also?
>>>       
>> Config for -rc7 is attached. My bisect configs were based on that
>>     
> Thanks! While we wait for the Xen people, you can try the following
> patch to see if we can narrow the bug down to trap_init().
>   

I think there's a problem that the side-effect of this change is that
interrupt initialization comes later, and so the dynamically allocated
arrays are not set up when the first interrupt comes in.

However, this particular change shouldn't have any effect on interrupts
being enabled early, right?

I have a local workaround which simply reverts the arrays back to
statically allocated, but it isn't very satisfactory (large memory hit,
esp if you're not running Xen).

    J

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [bisected] 2.6.31 regression: fails to boot as xen guest
  2009-08-25 18:03         ` Pekka Enberg
@ 2009-08-25 18:08           ` Jeremy Fitzhardinge
  2009-08-25 18:22           ` Arnd Hannemann
  2009-08-26  9:59           ` Benjamin Herrenschmidt
  2 siblings, 0 replies; 22+ messages in thread
From: Jeremy Fitzhardinge @ 2009-08-25 18:08 UTC (permalink / raw)
  To: Pekka Enberg
  Cc: Arnd Hannemann, Arnd Hannemann, LKML, hannes@cmpxchg.org,
	torvalds@linux-foundation.org, xen-devel@lists.xensource.com,
	Ingo Molnar, Benjamin Herrenschmidt

On 08/25/09 11:03, Pekka Enberg wrote:
> On Tue, 2009-08-25 at 19:49 +0200, Arnd Hannemann wrote:
>   
>> Hi Pekka,
>>
>> Pekka Enberg wrote:
>>     
>>> On Tue, 2009-08-25 at 18:49 +0200, Arnd Hannemann wrote:
>>>       
>>>>> Thanks for doing the bisect! Can we also see your .config also?
>>>>>           
>>>> Config for -rc7 is attached. My bisect configs were based on that
>>>>         
>>> Thanks! While we wait for the Xen people, you can try the following
>>> patch to see if we can narrow the bug down to trap_init().
>>>       
>> Yes seems to be trap_init().
>> -rc7 with this patch applied boots up to the prompt.
>>     
> Thanks for testing! Ingo, what do you think of the following patch?
> AFAICT, x86-32 is the only architecture playing with traps in mem_init()
> so this should be the safest fix for 2.6.31.
>   

Huh, interesting.  I wonder if this is the same as the problem I'd been
chasing or separate...

    J

> 			Pekka
>
> >From b739e3c3baa6312664b4ea676bdf73df27fcecbc Mon Sep 17 00:00:00 2001
> From: Pekka Enberg <penberg@cs.helsinki.fi>
> Date: Tue, 25 Aug 2009 20:55:25 +0300
> Subject: [PATCH] x86: Move WP bit testing to trap_init()
>
> Commit 83b519e8b9572c319c8e0c615ee5dd7272856090 ("slab: setup allocators
> earlier in the boot sequence") moved trap_init() earlier in the boot
> sequence to avoid a hard crash with 32-bit x86 in mem_init().
>
> Unfortunately the change broke Xen so make trap_init() later and move
> the WP bit test from mem_init() to trap_init().
>
> Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
> ---
>  arch/x86/kernel/traps.c |   57 +++++++++++++++++++++++++++++++++++++++++++++++
>  arch/x86/mm/init_32.c   |   56 ----------------------------------------------
>  init/main.c             |    2 +-
>  3 files changed, 58 insertions(+), 57 deletions(-)
>
> diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
> index 5204332..2084408 100644
> --- a/arch/x86/kernel/traps.c
> +++ b/arch/x86/kernel/traps.c
> @@ -906,6 +906,60 @@ dotraplinkage void do_iret_error(struct pt_regs *regs, long error_code)
>  		return;
>  	do_trap(32, SIGILL, "iret exception", regs, error_code, &info);
>  }
> +
> +static noinline int do_test_wp_bit(void);
> +
> +/*
> + * Test if the WP bit works in supervisor mode. It isn't supported on 386's
> + * and also on some strange 486's. All 586+'s are OK. This used to involve
> + * black magic jumps to work around some nasty CPU bugs, but fortunately the
> + * switch to using exceptions got rid of all that.
> + */
> +static void __init test_wp_bit(void)
> +{
> +	printk(KERN_INFO
> +  "Checking if this processor honours the WP bit even in supervisor mode...");
> +
> +	/* Any page-aligned address will do, the test is non-destructive */
> +	__set_fixmap(FIX_WP_TEST, __pa(&swapper_pg_dir), PAGE_READONLY);
> +	boot_cpu_data.wp_works_ok = do_test_wp_bit();
> +	clear_fixmap(FIX_WP_TEST);
> +
> +	if (!boot_cpu_data.wp_works_ok) {
> +		printk(KERN_CONT "No.\n");
> +#ifdef CONFIG_X86_WP_WORKS_OK
> +		panic(
> +  "This kernel doesn't support CPU's with broken WP. Recompile it for a 386!");
> +#endif
> +	} else {
> +		printk(KERN_CONT "Ok.\n");
> +	}
> +}
> +
> +/*
> + * This function cannot be __init, since exceptions don't work in that
> + * section.  Put this after the callers, so that it cannot be inlined.
> + */
> +static noinline int do_test_wp_bit(void)
> +{
> +	char tmp_reg;
> +	int flag;
> +
> +	__asm__ __volatile__(
> +		"	movb %0, %1	\n"
> +		"1:	movb %1, %0	\n"
> +		"	xorl %2, %2	\n"
> +		"2:			\n"
> +		_ASM_EXTABLE(1b,2b)
> +		:"=m" (*(char *)fix_to_virt(FIX_WP_TEST)),
> +		 "=q" (tmp_reg),
> +		 "=r" (flag)
> +		:"2" (1)
> +		:"memory");
> +
> +	return flag;
> +}
> +
>  #endif
>  
>  void __init trap_init(void)
> @@ -982,5 +1036,8 @@ void __init trap_init(void)
>  
>  #ifdef CONFIG_X86_32
>  	x86_quirk_trap_init();
> +
> +	if (boot_cpu_data.wp_works_ok < 0)
> +		test_wp_bit();
>  #endif
>  }
> diff --git a/arch/x86/mm/init_32.c b/arch/x86/mm/init_32.c
> index 3cd7711..e22bb8a 100644
> --- a/arch/x86/mm/init_32.c
> +++ b/arch/x86/mm/init_32.c
> @@ -54,8 +54,6 @@
>  
>  unsigned long highstart_pfn, highend_pfn;
>  
> -static noinline int do_test_wp_bit(void);
> -
>  bool __read_mostly __vmalloc_start_set = false;
>  
>  static __init void *alloc_low_page(void)
> @@ -830,33 +828,6 @@ void __init paging_init(void)
>  	zone_sizes_init();
>  }
>  
> -/*
> - * Test if the WP bit works in supervisor mode. It isn't supported on 386's
> - * and also on some strange 486's. All 586+'s are OK. This used to involve
> - * black magic jumps to work around some nasty CPU bugs, but fortunately the
> - * switch to using exceptions got rid of all that.
> - */
> -static void __init test_wp_bit(void)
> -{
> -	printk(KERN_INFO
> -  "Checking if this processor honours the WP bit even in supervisor mode...");
> -
> -	/* Any page-aligned address will do, the test is non-destructive */
> -	__set_fixmap(FIX_WP_TEST, __pa(&swapper_pg_dir), PAGE_READONLY);
> -	boot_cpu_data.wp_works_ok = do_test_wp_bit();
> -	clear_fixmap(FIX_WP_TEST);
> -
> -	if (!boot_cpu_data.wp_works_ok) {
> -		printk(KERN_CONT "No.\n");
> -#ifdef CONFIG_X86_WP_WORKS_OK
> -		panic(
> -  "This kernel doesn't support CPU's with broken WP. Recompile it for a 386!");
> -#endif
> -	} else {
> -		printk(KERN_CONT "Ok.\n");
> -	}
> -}
> -
>  static struct kcore_list kcore_mem, kcore_vmalloc;
>  
>  void __init mem_init(void)
> @@ -956,9 +927,6 @@ void __init mem_init(void)
>  	BUG_ON(VMALLOC_START				>= VMALLOC_END);
>  	BUG_ON((unsigned long)high_memory		> VMALLOC_START);
>  
> -	if (boot_cpu_data.wp_works_ok < 0)
> -		test_wp_bit();
> -
>  	save_pg_dir();
>  	zap_low_mappings(true);
>  }
> @@ -975,30 +943,6 @@ int arch_add_memory(int nid, u64 start, u64 size)
>  }
>  #endif
>  
> -/*
> - * This function cannot be __init, since exceptions don't work in that
> - * section.  Put this after the callers, so that it cannot be inlined.
> - */
> -static noinline int do_test_wp_bit(void)
> -{
> -	char tmp_reg;
> -	int flag;
> -
> -	__asm__ __volatile__(
> -		"	movb %0, %1	\n"
> -		"1:	movb %1, %0	\n"
> -		"	xorl %2, %2	\n"
> -		"2:			\n"
> -		_ASM_EXTABLE(1b,2b)
> -		:"=m" (*(char *)fix_to_virt(FIX_WP_TEST)),
> -		 "=q" (tmp_reg),
> -		 "=r" (flag)
> -		:"2" (1)
> -		:"memory");
> -
> -	return flag;
> -}
> -
>  #ifdef CONFIG_DEBUG_RODATA
>  const int rodata_test_data = 0xC3;
>  EXPORT_SYMBOL_GPL(rodata_test_data);
> diff --git a/init/main.c b/init/main.c
> index 2d9d6bd..5c4dacb 100644
> --- a/init/main.c
> +++ b/init/main.c
> @@ -603,7 +603,6 @@ asmlinkage void __init start_kernel(void)
>  	pidhash_init();
>  	vfs_caches_init_early();
>  	sort_main_extable();
> -	trap_init();
>  	mm_init();
>  	/*
>  	 * Set up the scheduler prior starting any interrupts (such as the
> @@ -621,6 +620,7 @@ asmlinkage void __init start_kernel(void)
>  				"enabled *very* early, fixing it\n");
>  		local_irq_disable();
>  	}
> +	trap_init();
>  	rcu_init();
>  	/* init some links before init_ISA_irqs() */
>  	early_irq_init();
>   


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [bisected] 2.6.31 regression: fails to boot as xen guest
  2009-08-25 18:06       ` Jeremy Fitzhardinge
@ 2009-08-25 18:14         ` Pekka Enberg
  0 siblings, 0 replies; 22+ messages in thread
From: Pekka Enberg @ 2009-08-25 18:14 UTC (permalink / raw)
  To: Jeremy Fitzhardinge
  Cc: Arnd Hannemann, Arnd Hannemann, LKML, hannes@cmpxchg.org,
	torvalds@linux-foundation.org, xen-devel@lists.xensource.com,
	Ingo Molnar

On Tue, 2009-08-25 at 11:06 -0700, Jeremy Fitzhardinge wrote:
> On 08/25/09 09:52, Pekka Enberg wrote:
> > Hi Arnd,
> >
> > On Tue, 2009-08-25 at 18:49 +0200, Arnd Hannemann wrote:
> >   
> >>> Thanks for doing the bisect! Can we also see your .config also?
> >>>       
> >> Config for -rc7 is attached. My bisect configs were based on that
> >>     
> > Thanks! While we wait for the Xen people, you can try the following
> > patch to see if we can narrow the bug down to trap_init().
> >   
> 
> I think there's a problem that the side-effect of this change is that
> interrupt initialization comes later, and so the dynamically allocated
> arrays are not set up when the first interrupt comes in.

Which interrupt initialization is that? We call trap_init() _earlier_
now.

> However, this particular change shouldn't have any effect on interrupts
> being enabled early, right?

Yeah, interrupt enabling should not be affected.

			Pekka


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [bisected] 2.6.31 regression: fails to boot as xen guest
  2009-08-25 18:03         ` Pekka Enberg
  2009-08-25 18:08           ` Jeremy Fitzhardinge
@ 2009-08-25 18:22           ` Arnd Hannemann
  2009-08-25 18:25             ` Ingo Molnar
  2009-08-25 18:58             ` Pekka Enberg
  2009-08-26  9:59           ` Benjamin Herrenschmidt
  2 siblings, 2 replies; 22+ messages in thread
From: Arnd Hannemann @ 2009-08-25 18:22 UTC (permalink / raw)
  To: Pekka Enberg
  Cc: Arnd Hannemann, LKML, hannes@cmpxchg.org,
	torvalds@linux-foundation.org, Jeremy Fitzhardinge,
	xen-devel@lists.xensource.com, Ingo Molnar,
	Benjamin Herrenschmidt

Pekka Enberg wrote:
> On Tue, 2009-08-25 at 19:49 +0200, Arnd Hannemann wrote:
>> Hi Pekka,
>>
>> Pekka Enberg wrote:
>>> On Tue, 2009-08-25 at 18:49 +0200, Arnd Hannemann wrote:
>>>>> Thanks for doing the bisect! Can we also see your .config
>>>>> also?
>>>> Config for -rc7 is attached. My bisect configs were based on
>>>> that
>>> Thanks! While we wait for the Xen people, you can try the
>>> following patch to see if we can narrow the bug down to
>>> trap_init().
>> Yes seems to be trap_init(). -rc7 with this patch applied boots up
>> to the prompt.
>
> Thanks for testing! Ingo, what do you think of the following patch?
> AFAICT, x86-32 is the only architecture playing with traps in
> mem_init() so this should be the safest fix for 2.6.31.

Hmm, -rc7 + this fix does not work for me :-/
Still hangs before any output...

Best regards,
Arnd

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [bisected] 2.6.31 regression: fails to boot as xen guest
  2009-08-25 18:22           ` Arnd Hannemann
@ 2009-08-25 18:25             ` Ingo Molnar
  2009-08-25 18:30               ` Jeremy Fitzhardinge
  2009-08-25 18:58             ` Pekka Enberg
  1 sibling, 1 reply; 22+ messages in thread
From: Ingo Molnar @ 2009-08-25 18:25 UTC (permalink / raw)
  To: Arnd Hannemann
  Cc: Pekka Enberg, Arnd Hannemann, LKML, hannes@cmpxchg.org,
	torvalds@linux-foundation.org, Jeremy Fitzhardinge,
	xen-devel@lists.xensource.com, Benjamin Herrenschmidt


* Arnd Hannemann <hannemann@nets.rwth-aachen.de> wrote:

> Pekka Enberg wrote:
> > On Tue, 2009-08-25 at 19:49 +0200, Arnd Hannemann wrote:
> >> Hi Pekka,
> >>
> >> Pekka Enberg wrote:
> >>> On Tue, 2009-08-25 at 18:49 +0200, Arnd Hannemann wrote:
> >>>>> Thanks for doing the bisect! Can we also see your .config
> >>>>> also?
> >>>> Config for -rc7 is attached. My bisect configs were based on
> >>>> that
> >>> Thanks! While we wait for the Xen people, you can try the
> >>> following patch to see if we can narrow the bug down to
> >>> trap_init().
> >> Yes seems to be trap_init(). -rc7 with this patch applied boots up
> >> to the prompt.
> >
> > Thanks for testing! Ingo, what do you think of the following patch?
> > AFAICT, x86-32 is the only architecture playing with traps in
> > mem_init() so this should be the safest fix for 2.6.31.
> 
> Hmm, -rc7 + this fix does not work for me :-/
> Still hangs before any output...

does earlyprintk=vga tell you anything about precisely where it 
hangs?

	Ingo

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [bisected] 2.6.31 regression: fails to boot as xen guest
  2009-08-25 18:25             ` Ingo Molnar
@ 2009-08-25 18:30               ` Jeremy Fitzhardinge
  2009-08-25 18:38                 ` Arnd Hannemann
  0 siblings, 1 reply; 22+ messages in thread
From: Jeremy Fitzhardinge @ 2009-08-25 18:30 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Arnd Hannemann, Pekka Enberg, Arnd Hannemann, LKML,
	hannes@cmpxchg.org, torvalds@linux-foundation.org,
	xen-devel@lists.xensource.com, Benjamin Herrenschmidt

On 08/25/09 11:25, Ingo Molnar wrote:
> * Arnd Hannemann <hannemann@nets.rwth-aachen.de> wrote:
>
>   
>> Pekka Enberg wrote:
>>     
>>> On Tue, 2009-08-25 at 19:49 +0200, Arnd Hannemann wrote:
>>>       
>>>> Hi Pekka,
>>>>
>>>> Pekka Enberg wrote:
>>>>         
>>>>> On Tue, 2009-08-25 at 18:49 +0200, Arnd Hannemann wrote:
>>>>>           
>>>>>>> Thanks for doing the bisect! Can we also see your .config
>>>>>>> also?
>>>>>>>               
>>>>>> Config for -rc7 is attached. My bisect configs were based on
>>>>>> that
>>>>>>             
>>>>> Thanks! While we wait for the Xen people, you can try the
>>>>> following patch to see if we can narrow the bug down to
>>>>> trap_init().
>>>>>           
>>>> Yes seems to be trap_init(). -rc7 with this patch applied boots up
>>>> to the prompt.
>>>>         
>>> Thanks for testing! Ingo, what do you think of the following patch?
>>> AFAICT, x86-32 is the only architecture playing with traps in
>>> mem_init() so this should be the safest fix for 2.6.31.
>>>       
>> Hmm, -rc7 + this fix does not work for me :-/
>> Still hangs before any output...
>>     
> does earlyprintk=vga tell you anything about precisely where it 
> hangs?
>   

It's a Xen domain, so it should be earlyprintk=xen

    J

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [bisected] 2.6.31 regression: fails to boot as xen guest
  2009-08-25 18:30               ` Jeremy Fitzhardinge
@ 2009-08-25 18:38                 ` Arnd Hannemann
  2009-08-25 18:43                   ` Pekka Enberg
  2009-08-25 19:30                   ` Jeremy Fitzhardinge
  0 siblings, 2 replies; 22+ messages in thread
From: Arnd Hannemann @ 2009-08-25 18:38 UTC (permalink / raw)
  To: Jeremy Fitzhardinge
  Cc: Ingo Molnar, Arnd Hannemann, Pekka Enberg, LKML,
	hannes@cmpxchg.org, torvalds@linux-foundation.org,
	xen-devel@lists.xensource.com, Benjamin Herrenschmidt

Jeremy Fitzhardinge wrote:
> On 08/25/09 11:25, Ingo Molnar wrote:
>> * Arnd Hannemann <hannemann@nets.rwth-aachen.de> wrote:
>>
>>
>>> Pekka Enberg wrote:
>>>
>>>> On Tue, 2009-08-25 at 19:49 +0200, Arnd Hannemann wrote:
>>>>
>>>>> Hi Pekka,
>>>>>
>>>>> Pekka Enberg wrote:
>>>>>
>>>>>> On Tue, 2009-08-25 at 18:49 +0200, Arnd Hannemann wrote:
>>>>>>
>>>>>>>> Thanks for doing the bisect! Can we also see your
>>>>>>>> .config also?
>>>>>>>>
>>>>>>> Config for -rc7 is attached. My bisect configs were based
>>>>>>> on that
>>>>>>>
>>>>>> Thanks! While we wait for the Xen people, you can try the
>>>>>> following patch to see if we can narrow the bug down to
>>>>>> trap_init().
>>>>>>
>>>>> Yes seems to be trap_init(). -rc7 with this patch applied
>>>>> boots up to the prompt.
>>>>>
>>>> Thanks for testing! Ingo, what do you think of the following
>>>> patch? AFAICT, x86-32 is the only architecture playing with
>>>> traps in mem_init() so this should be the safest fix for
>>>> 2.6.31.
>>>>
>>> Hmm, -rc7 + this fix does not work for me :-/ Still hangs before
>>> any output...
>>>
>> does earlyprintk=vga tell you anything about precisely where it
>> hangs?
>>
>
> It's a Xen domain, so it should be earlyprintk=xen
>
> J
>
Here is the output with earlyprintk=xen and the second patch from pekka
applied:

(early) [    0.000000] Initializing CPU#0
(early) [    0.000000] Checking if this processor honours the WP bit
even in supervisor mode...(early)
(early) [    0.000000] BUG: unable to handle kernel (early) NULL pointer
dereference(early)  at (null)
(early) [    0.000000] IP:(early)  [<c1192993>]
xen_evtchn_do_upcall+0xd3/0x160
(early) [    0.000000] *pdpt = 0000000008386001 (early)
(early) [    0.000000] Thread overran stack, or stack corrupted
(early) [    0.000000] Oops: 0000 [#1] (early) SMP (early)
(early) [    0.000000] last sysfs file:
(early) [    0.000000] Modules linked in:(early)
(early) [    0.000000]
(early) [    0.000000] Pid: 0, comm: swapper Not tainted
(2.6.31-rc7-pae-um #10)
(early) [    0.000000] EIP: 0061:[<c1192993>] EFLAGS: 00010046 CPU: 0
(early) [    0.000000] EIP is at xen_evtchn_do_upcall+0xd3/0x160
(early) [    0.000000] EAX: 00000004 EBX: 00000000 ECX: 00000004 EDX:
ffffffff
(early) [    0.000000] ESI: fffffffe EDI: 00000000 EBP: 00000000 ESP:
c1413e64
(early) [    0.000000]  DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: e021
(early) [    0.000000] Process swapper (pid: 0, ti=c1412000
task=c13d11a0 task.ti=c1412000)
(early) [    0.000000] Stack:
(early) [    0.000000]  f5793000(early)  c146d9f0(early) 
c146d9f0(early)  00000000(early)  c1413e9c(early)  00000000(early) 
00000000(early)  c3a01020(early)
(early) [    0.000000] <0>(early)  00000000(early)  eec06067(early) 
c000cff8(early)  00000000(early)  00000000(early)  c10086d7(early) 
eec06067(early)  c000cff8(early)
(early) [    0.000000] <0>(early)  f55ff000(early)  c000cff8(early) 
00000000(early)  00000000(early)  c13d7d60(early)  c101e021(early) 
c141e021(early)  c10100d8(early)
(early) [    0.000000] Call Trace:
(early) [    0.000000]  [<c10086d7>] ? xen_do_upcall+0x7/0xc
(early) [    0.000000]  [<c101e021>] ? ptep_set_access_flags+0x1/0x80
(early) [    0.000000]  [<c141e021>] ? find_e820_area_size+0x51/0x330
(early)


Best regards,
Arnd


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [bisected] 2.6.31 regression: fails to boot as xen guest
  2009-08-25 18:38                 ` Arnd Hannemann
@ 2009-08-25 18:43                   ` Pekka Enberg
  2009-08-25 19:31                     ` Jeremy Fitzhardinge
  2009-08-25 19:30                   ` Jeremy Fitzhardinge
  1 sibling, 1 reply; 22+ messages in thread
From: Pekka Enberg @ 2009-08-25 18:43 UTC (permalink / raw)
  To: Arnd Hannemann
  Cc: Jeremy Fitzhardinge, Ingo Molnar, Arnd Hannemann, LKML,
	hannes@cmpxchg.org, torvalds@linux-foundation.org,
	xen-devel@lists.xensource.com, Benjamin Herrenschmidt

On Tue, 2009-08-25 at 20:38 +0200, Arnd Hannemann wrote:
> >>> Hmm, -rc7 + this fix does not work for me :-/ Still hangs before
> >>> any output...
> >>>
> >> does earlyprintk=vga tell you anything about precisely where it
> >> hangs?
> >>
> >
> > It's a Xen domain, so it should be earlyprintk=xen
> >
> > J
> >
> Here is the output with earlyprintk=xen and the second patch from pekka
> applied:
> 
> (early) [    0.000000] Initializing CPU#0
> (early) [    0.000000] Checking if this processor honours the WP bit
> even in supervisor mode...(early)
> (early) [    0.000000] BUG: unable to handle kernel (early) NULL pointer
> dereference(early)  at (null)
> (early) [    0.000000] IP:(early)  [<c1192993>]
> xen_evtchn_do_upcall+0xd3/0x160
> (early) [    0.000000] *pdpt = 0000000008386001 (early)
> (early) [    0.000000] Thread overran stack, or stack corrupted
> (early) [    0.000000] Oops: 0000 [#1] (early) SMP (early)
> (early) [    0.000000] last sysfs file:
> (early) [    0.000000] Modules linked in:(early)
> (early) [    0.000000]
> (early) [    0.000000] Pid: 0, comm: swapper Not tainted
> (2.6.31-rc7-pae-um #10)
> (early) [    0.000000] EIP: 0061:[<c1192993>] EFLAGS: 00010046 CPU: 0
> (early) [    0.000000] EIP is at xen_evtchn_do_upcall+0xd3/0x160
> (early) [    0.000000] EAX: 00000004 EBX: 00000000 ECX: 00000004 EDX:
> ffffffff
> (early) [    0.000000] ESI: fffffffe EDI: 00000000 EBP: 00000000 ESP:
> c1413e64
> (early) [    0.000000]  DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: e021
> (early) [    0.000000] Process swapper (pid: 0, ti=c1412000
> task=c13d11a0 task.ti=c1412000)
> (early) [    0.000000] Stack:
> (early) [    0.000000]  f5793000(early)  c146d9f0(early) 
> c146d9f0(early)  00000000(early)  c1413e9c(early)  00000000(early) 
> 00000000(early)  c3a01020(early)
> (early) [    0.000000] <0>(early)  00000000(early)  eec06067(early) 
> c000cff8(early)  00000000(early)  00000000(early)  c10086d7(early) 
> eec06067(early)  c000cff8(early)
> (early) [    0.000000] <0>(early)  f55ff000(early)  c000cff8(early) 
> 00000000(early)  00000000(early)  c13d7d60(early)  c101e021(early) 
> c141e021(early)  c10100d8(early)
> (early) [    0.000000] Call Trace:
> (early) [    0.000000]  [<c10086d7>] ? xen_do_upcall+0x7/0xc
> (early) [    0.000000]  [<c101e021>] ? ptep_set_access_flags+0x1/0x80
> (early) [    0.000000]  [<c141e021>] ? find_e820_area_size+0x51/0x330
> (early)

Aha, the previous patch worked because I #ifdef the WP test completely.
Jeremy, the root cause here is that we do the WP test much earlier than
before. Even with the test moved to trap_init(), we do it early compared
to what we did before.

I guess Xen is not prepared to handle traps this early in the boot
sequence? Can we fix that?

			Pekka


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [bisected] 2.6.31 regression: fails to boot as xen guest
  2009-08-25 18:22           ` Arnd Hannemann
  2009-08-25 18:25             ` Ingo Molnar
@ 2009-08-25 18:58             ` Pekka Enberg
  2009-08-25 19:07               ` Pekka Enberg
  1 sibling, 1 reply; 22+ messages in thread
From: Pekka Enberg @ 2009-08-25 18:58 UTC (permalink / raw)
  To: Arnd Hannemann
  Cc: Arnd Hannemann, LKML, hannes@cmpxchg.org,
	torvalds@linux-foundation.org, Jeremy Fitzhardinge,
	xen-devel@lists.xensource.com, Ingo Molnar,
	Benjamin Herrenschmidt

On Tue, 2009-08-25 at 20:22 +0200, Arnd Hannemann wrote:
> Pekka Enberg wrote:
> > On Tue, 2009-08-25 at 19:49 +0200, Arnd Hannemann wrote:
> >> Hi Pekka,
> >>
> >> Pekka Enberg wrote:
> >>> On Tue, 2009-08-25 at 18:49 +0200, Arnd Hannemann wrote:
> >>>>> Thanks for doing the bisect! Can we also see your .config
> >>>>> also?
> >>>> Config for -rc7 is attached. My bisect configs were based on
> >>>> that
> >>> Thanks! While we wait for the Xen people, you can try the
> >>> following patch to see if we can narrow the bug down to
> >>> trap_init().
> >> Yes seems to be trap_init(). -rc7 with this patch applied boots up
> >> to the prompt.
> >
> > Thanks for testing! Ingo, what do you think of the following patch?
> > AFAICT, x86-32 is the only architecture playing with traps in
> > mem_init() so this should be the safest fix for 2.6.31.
> 
> Hmm, -rc7 + this fix does not work for me :-/
> Still hangs before any output...

Arnd, does this work for you?

			Pekka

diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 13ffa5d..b86472d 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -50,6 +50,7 @@ config X86
 	select HAVE_KERNEL_BZIP2
 	select HAVE_KERNEL_LZMA
 	select HAVE_ARCH_KMEMCHECK
+	select HAVE_ARCH_MEM_INIT_LATE if X86_32
 
 config OUTPUT_FORMAT
 	string
diff --git a/arch/x86/mm/init_32.c b/arch/x86/mm/init_32.c
index 3cd7711..488ed4b 100644
--- a/arch/x86/mm/init_32.c
+++ b/arch/x86/mm/init_32.c
@@ -956,13 +956,17 @@ void __init mem_init(void)
 	BUG_ON(VMALLOC_START				>= VMALLOC_END);
 	BUG_ON((unsigned long)high_memory		> VMALLOC_START);
 
-	if (boot_cpu_data.wp_works_ok < 0)
-		test_wp_bit();
-
 	save_pg_dir();
 	zap_low_mappings(true);
 }
 
+void __init mem_init_late(void)
+{
+	/* Interrupts are enabled at this point. */
+	if (boot_cpu_data.wp_works_ok < 0)
+		test_wp_bit();
+}
+
 #ifdef CONFIG_MEMORY_HOTPLUG
 int arch_add_memory(int nid, u64 start, u64 size)
 {
diff --git a/include/linux/mm.h b/include/linux/mm.h
index 9a72cc7..eefcfbe 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -1052,6 +1052,14 @@ extern void si_meminfo(struct sysinfo * val);
 extern void si_meminfo_node(struct sysinfo *val, int nid);
 extern int after_bootmem;
 
+#ifdef CONFIG_HAVE_ARCH_MEM_INIT_LATE
+extern void mem_init_late(void);
+#else
+static inline void mem_init_late(void)
+{
+}
+#endif
+
 #ifdef CONFIG_NUMA
 extern void setup_per_cpu_pageset(void);
 #else
diff --git a/init/main.c b/init/main.c
index 2d9d6bd..45d8dbd 100644
--- a/init/main.c
+++ b/init/main.c
@@ -643,6 +643,7 @@ asmlinkage void __init start_kernel(void)
 	set_gfp_allowed_mask(__GFP_BITS_MASK);
 
 	kmem_cache_init_late();
+	mem_init_late();
 
 	/*
 	 * HACK ALERT! This is early. We're enabling the console before



^ permalink raw reply related	[flat|nested] 22+ messages in thread

* Re: [bisected] 2.6.31 regression: fails to boot as xen guest
  2009-08-25 18:58             ` Pekka Enberg
@ 2009-08-25 19:07               ` Pekka Enberg
  2009-08-25 19:13                 ` Arnd Hannemann
  0 siblings, 1 reply; 22+ messages in thread
From: Pekka Enberg @ 2009-08-25 19:07 UTC (permalink / raw)
  To: Arnd Hannemann
  Cc: Arnd Hannemann, LKML, hannes@cmpxchg.org,
	torvalds@linux-foundation.org, Jeremy Fitzhardinge,
	xen-devel@lists.xensource.com, Ingo Molnar,
	Benjamin Herrenschmidt

On Tue, 2009-08-25 at 21:58 +0300, Pekka Enberg wrote:
> On Tue, 2009-08-25 at 20:22 +0200, Arnd Hannemann wrote:
> > Pekka Enberg wrote:
> > > On Tue, 2009-08-25 at 19:49 +0200, Arnd Hannemann wrote:
> > >> Hi Pekka,
> > >>
> > >> Pekka Enberg wrote:
> > >>> On Tue, 2009-08-25 at 18:49 +0200, Arnd Hannemann wrote:
> > >>>>> Thanks for doing the bisect! Can we also see your .config
> > >>>>> also?
> > >>>> Config for -rc7 is attached. My bisect configs were based on
> > >>>> that
> > >>> Thanks! While we wait for the Xen people, you can try the
> > >>> following patch to see if we can narrow the bug down to
> > >>> trap_init().
> > >> Yes seems to be trap_init(). -rc7 with this patch applied boots up
> > >> to the prompt.
> > >
> > > Thanks for testing! Ingo, what do you think of the following patch?
> > > AFAICT, x86-32 is the only architecture playing with traps in
> > > mem_init() so this should be the safest fix for 2.6.31.
> > 
> > Hmm, -rc7 + this fix does not work for me :-/
> > Still hangs before any output...
> 
> Arnd, does this work for you?

Here's a version of the patch that actually compiles. :-)

			Pekka

diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 13ffa5d..b6ff185 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -50,6 +50,7 @@ config X86
 	select HAVE_KERNEL_BZIP2
 	select HAVE_KERNEL_LZMA
 	select HAVE_ARCH_KMEMCHECK
+	select HAVE_ARCH_MEM_INIT_LATE if X86_32
 
 config OUTPUT_FORMAT
 	string
@@ -86,6 +87,10 @@ config STACKTRACE_SUPPORT
 config HAVE_LATENCYTOP_SUPPORT
 	def_bool y
 
+config HAVE_ARCH_MEM_INIT_LATE
+	def_bool y
+	depends on X86_32
+
 config FAST_CMPXCHG_LOCAL
 	bool
 	default y
diff --git a/arch/x86/mm/init_32.c b/arch/x86/mm/init_32.c
index 3cd7711..488ed4b 100644
--- a/arch/x86/mm/init_32.c
+++ b/arch/x86/mm/init_32.c
@@ -956,13 +956,17 @@ void __init mem_init(void)
 	BUG_ON(VMALLOC_START				>= VMALLOC_END);
 	BUG_ON((unsigned long)high_memory		> VMALLOC_START);
 
-	if (boot_cpu_data.wp_works_ok < 0)
-		test_wp_bit();
-
 	save_pg_dir();
 	zap_low_mappings(true);
 }
 
+void __init mem_init_late(void)
+{
+	/* Interrupts are enabled at this point. */
+	if (boot_cpu_data.wp_works_ok < 0)
+		test_wp_bit();
+}
+
 #ifdef CONFIG_MEMORY_HOTPLUG
 int arch_add_memory(int nid, u64 start, u64 size)
 {
diff --git a/include/linux/mm.h b/include/linux/mm.h
index 9a72cc7..eefcfbe 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -1052,6 +1052,14 @@ extern void si_meminfo(struct sysinfo * val);
 extern void si_meminfo_node(struct sysinfo *val, int nid);
 extern int after_bootmem;
 
+#ifdef CONFIG_HAVE_ARCH_MEM_INIT_LATE
+extern void mem_init_late(void);
+#else
+static inline void mem_init_late(void)
+{
+}
+#endif
+
 #ifdef CONFIG_NUMA
 extern void setup_per_cpu_pageset(void);
 #else
diff --git a/init/main.c b/init/main.c
index 2d9d6bd..45d8dbd 100644
--- a/init/main.c
+++ b/init/main.c
@@ -643,6 +643,7 @@ asmlinkage void __init start_kernel(void)
 	set_gfp_allowed_mask(__GFP_BITS_MASK);
 
 	kmem_cache_init_late();
+	mem_init_late();
 
 	/*
 	 * HACK ALERT! This is early. We're enabling the console before



^ permalink raw reply related	[flat|nested] 22+ messages in thread

* Re: [bisected] 2.6.31 regression: fails to boot as xen guest
  2009-08-25 19:07               ` Pekka Enberg
@ 2009-08-25 19:13                 ` Arnd Hannemann
  0 siblings, 0 replies; 22+ messages in thread
From: Arnd Hannemann @ 2009-08-25 19:13 UTC (permalink / raw)
  To: Pekka Enberg
  Cc: Arnd Hannemann, LKML, hannes@cmpxchg.org,
	torvalds@linux-foundation.org, Jeremy Fitzhardinge,
	xen-devel@lists.xensource.com, Ingo Molnar,
	Benjamin Herrenschmidt

Pekka Enberg wrote:
> On Tue, 2009-08-25 at 21:58 +0300, Pekka Enberg wrote:
>> On Tue, 2009-08-25 at 20:22 +0200, Arnd Hannemann wrote:
>>> Pekka Enberg wrote:
>>>> On Tue, 2009-08-25 at 19:49 +0200, Arnd Hannemann wrote:
>>>>> Hi Pekka,
>>>>>
>>>>> Pekka Enberg wrote:
>>>>>> On Tue, 2009-08-25 at 18:49 +0200, Arnd Hannemann wrote:
>>>>>>>> Thanks for doing the bisect! Can we also see your
>>>>>>>> .config also?
>>>>>>> Config for -rc7 is attached. My bisect configs were based
>>>>>>> on that
>>>>>> Thanks! While we wait for the Xen people, you can try the
>>>>>> following patch to see if we can narrow the bug down to
>>>>>> trap_init().
>>>>> Yes seems to be trap_init(). -rc7 with this patch applied
>>>>> boots up to the prompt.
>>>> Thanks for testing! Ingo, what do you think of the following
>>>> patch? AFAICT, x86-32 is the only architecture playing with
>>>> traps in mem_init() so this should be the safest fix for
>>>> 2.6.31.
>>> Hmm, -rc7 + this fix does not work for me :-/ Still hangs before
>>> any output...
>> Arnd, does this work for you?
>
> Here's a version of the patch that actually compiles. :-)

Great, this actually works, too :-)
Boots up to the prompt.

Best regards,
Arnd



^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [bisected] 2.6.31 regression: fails to boot as xen guest
  2009-08-25 18:38                 ` Arnd Hannemann
  2009-08-25 18:43                   ` Pekka Enberg
@ 2009-08-25 19:30                   ` Jeremy Fitzhardinge
  1 sibling, 0 replies; 22+ messages in thread
From: Jeremy Fitzhardinge @ 2009-08-25 19:30 UTC (permalink / raw)
  To: Arnd Hannemann
  Cc: Ingo Molnar, Arnd Hannemann, Pekka Enberg, LKML,
	hannes@cmpxchg.org, torvalds@linux-foundation.org,
	xen-devel@lists.xensource.com, Benjamin Herrenschmidt

On 08/25/09 11:38, Arnd Hannemann wrote:
> Jeremy Fitzhardinge wrote:
>   
>> On 08/25/09 11:25, Ingo Molnar wrote:
>>     
>>> * Arnd Hannemann <hannemann@nets.rwth-aachen.de> wrote:
>>>
>>>
>>>       
>>>> Pekka Enberg wrote:
>>>>
>>>>         
>>>>> On Tue, 2009-08-25 at 19:49 +0200, Arnd Hannemann wrote:
>>>>>
>>>>>           
>>>>>> Hi Pekka,
>>>>>>
>>>>>> Pekka Enberg wrote:
>>>>>>
>>>>>>             
>>>>>>> On Tue, 2009-08-25 at 18:49 +0200, Arnd Hannemann wrote:
>>>>>>>
>>>>>>>               
>>>>>>>>> Thanks for doing the bisect! Can we also see your
>>>>>>>>> .config also?
>>>>>>>>>
>>>>>>>>>                   
>>>>>>>> Config for -rc7 is attached. My bisect configs were based
>>>>>>>> on that
>>>>>>>>
>>>>>>>>                 
>>>>>>> Thanks! While we wait for the Xen people, you can try the
>>>>>>> following patch to see if we can narrow the bug down to
>>>>>>> trap_init().
>>>>>>>
>>>>>>>               
>>>>>> Yes seems to be trap_init(). -rc7 with this patch applied
>>>>>> boots up to the prompt.
>>>>>>
>>>>>>             
>>>>> Thanks for testing! Ingo, what do you think of the following
>>>>> patch? AFAICT, x86-32 is the only architecture playing with
>>>>> traps in mem_init() so this should be the safest fix for
>>>>> 2.6.31.
>>>>>
>>>>>           
>>>> Hmm, -rc7 + this fix does not work for me :-/ Still hangs before
>>>> any output...
>>>>
>>>>         
>>> does earlyprintk=vga tell you anything about precisely where it
>>> hangs?
>>>
>>>       
>> It's a Xen domain, so it should be earlyprintk=xen
>>
>> J
>>
>>     
> Here is the output with earlyprintk=xen and the second patch from pekka
> applied:
>
> (early) [    0.000000] Initializing CPU#0
> (early) [    0.000000] Checking if this processor honours the WP bit
> even in supervisor mode...(early)
> (early) [    0.000000] BUG: unable to handle kernel (early) NULL pointer
> dereference(early)  at (null)
> (early) [    0.000000] IP:(early)  [<c1192993>]
> xen_evtchn_do_upcall+0xd3/0x160
>   

OK, that's the same problem I've seen; its trying to enable and delver
interrupts before init_IRQ has been called, so the various allocated
arrays aren't set up.

Ingo, I'm assuming that interrupts aren't supposed to be enabled this early?

Thanks,
    J

> (early) [    0.000000] *pdpt = 0000000008386001 (early)
> (early) [    0.000000] Thread overran stack, or stack corrupted
> (early) [    0.000000] Oops: 0000 [#1] (early) SMP (early)
> (early) [    0.000000] last sysfs file:
> (early) [    0.000000] Modules linked in:(early)
> (early) [    0.000000]
> (early) [    0.000000] Pid: 0, comm: swapper Not tainted
> (2.6.31-rc7-pae-um #10)
> (early) [    0.000000] EIP: 0061:[<c1192993>] EFLAGS: 00010046 CPU: 0
> (early) [    0.000000] EIP is at xen_evtchn_do_upcall+0xd3/0x160
> (early) [    0.000000] EAX: 00000004 EBX: 00000000 ECX: 00000004 EDX:
> ffffffff
> (early) [    0.000000] ESI: fffffffe EDI: 00000000 EBP: 00000000 ESP:
> c1413e64
> (early) [    0.000000]  DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: e021
> (early) [    0.000000] Process swapper (pid: 0, ti=c1412000
> task=c13d11a0 task.ti=c1412000)
> (early) [    0.000000] Stack:
> (early) [    0.000000]  f5793000(early)  c146d9f0(early) 
> c146d9f0(early)  00000000(early)  c1413e9c(early)  00000000(early) 
> 00000000(early)  c3a01020(early)
> (early) [    0.000000] <0>(early)  00000000(early)  eec06067(early) 
> c000cff8(early)  00000000(early)  00000000(early)  c10086d7(early) 
> eec06067(early)  c000cff8(early)
> (early) [    0.000000] <0>(early)  f55ff000(early)  c000cff8(early) 
> 00000000(early)  00000000(early)  c13d7d60(early)  c101e021(early) 
> c141e021(early)  c10100d8(early)
> (early) [    0.000000] Call Trace:
> (early) [    0.000000]  [<c10086d7>] ? xen_do_upcall+0x7/0xc
> (early) [    0.000000]  [<c101e021>] ? ptep_set_access_flags+0x1/0x80
> (early) [    0.000000]  [<c141e021>] ? find_e820_area_size+0x51/0x330
> (early)
>
>
> Best regards,
> Arnd
>
>   


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [bisected] 2.6.31 regression: fails to boot as xen guest
  2009-08-25 18:43                   ` Pekka Enberg
@ 2009-08-25 19:31                     ` Jeremy Fitzhardinge
  0 siblings, 0 replies; 22+ messages in thread
From: Jeremy Fitzhardinge @ 2009-08-25 19:31 UTC (permalink / raw)
  To: Pekka Enberg
  Cc: Arnd Hannemann, Ingo Molnar, Arnd Hannemann, LKML,
	hannes@cmpxchg.org, torvalds@linux-foundation.org,
	xen-devel@lists.xensource.com, Benjamin Herrenschmidt

On 08/25/09 11:43, Pekka Enberg wrote:
> Aha, the previous patch worked because I #ifdef the WP test completely.
> Jeremy, the root cause here is that we do the WP test much earlier than
> before. Even with the test moved to trap_init(), we do it early compared
> to what we did before.
>
> I guess Xen is not prepared to handle traps this early in the boot
> sequence? Can we fix that?
>   

The crash is in the event (interrupt) path, which shouldn't be involved
in trap handling at all.  I'm wondering if interrupts are getting
enabled as a side-effect of handling the trap.

    J

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [bisected] 2.6.31 regression: fails to boot as xen guest
  2009-08-25 18:03         ` Pekka Enberg
  2009-08-25 18:08           ` Jeremy Fitzhardinge
  2009-08-25 18:22           ` Arnd Hannemann
@ 2009-08-26  9:59           ` Benjamin Herrenschmidt
  2 siblings, 0 replies; 22+ messages in thread
From: Benjamin Herrenschmidt @ 2009-08-26  9:59 UTC (permalink / raw)
  To: Pekka Enberg
  Cc: Arnd Hannemann, Arnd Hannemann, LKML, hannes@cmpxchg.org,
	torvalds@linux-foundation.org, Jeremy Fitzhardinge,
	xen-devel@lists.xensource.com, Ingo Molnar


> Thanks for testing! Ingo, what do you think of the following patch?
> AFAICT, x86-32 is the only architecture playing with traps in mem_init()
> so this should be the safest fix for 2.6.31.

PowerPC trap_init() is a nop, so Ack.

Cheers,
Ben.

> 			Pekka
> 
> >From b739e3c3baa6312664b4ea676bdf73df27fcecbc Mon Sep 17 00:00:00 2001
> From: Pekka Enberg <penberg@cs.helsinki.fi>
> Date: Tue, 25 Aug 2009 20:55:25 +0300
> Subject: [PATCH] x86: Move WP bit testing to trap_init()
> 
> Commit 83b519e8b9572c319c8e0c615ee5dd7272856090 ("slab: setup allocators
> earlier in the boot sequence") moved trap_init() earlier in the boot
> sequence to avoid a hard crash with 32-bit x86 in mem_init().
> 
> Unfortunately the change broke Xen so make trap_init() later and move
> the WP bit test from mem_init() to trap_init().
> 
> Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
> ---
>  arch/x86/kernel/traps.c |   57 +++++++++++++++++++++++++++++++++++++++++++++++
>  arch/x86/mm/init_32.c   |   56 ----------------------------------------------
>  init/main.c             |    2 +-
>  3 files changed, 58 insertions(+), 57 deletions(-)
> 
> diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
> index 5204332..2084408 100644
> --- a/arch/x86/kernel/traps.c
> +++ b/arch/x86/kernel/traps.c
> @@ -906,6 +906,60 @@ dotraplinkage void do_iret_error(struct pt_regs *regs, long error_code)
>  		return;
>  	do_trap(32, SIGILL, "iret exception", regs, error_code, &info);
>  }
> +
> +static noinline int do_test_wp_bit(void);
> +
> +/*
> + * Test if the WP bit works in supervisor mode. It isn't supported on 386's
> + * and also on some strange 486's. All 586+'s are OK. This used to involve
> + * black magic jumps to work around some nasty CPU bugs, but fortunately the
> + * switch to using exceptions got rid of all that.
> + */
> +static void __init test_wp_bit(void)
> +{
> +	printk(KERN_INFO
> +  "Checking if this processor honours the WP bit even in supervisor mode...");
> +
> +	/* Any page-aligned address will do, the test is non-destructive */
> +	__set_fixmap(FIX_WP_TEST, __pa(&swapper_pg_dir), PAGE_READONLY);
> +	boot_cpu_data.wp_works_ok = do_test_wp_bit();
> +	clear_fixmap(FIX_WP_TEST);
> +
> +	if (!boot_cpu_data.wp_works_ok) {
> +		printk(KERN_CONT "No.\n");
> +#ifdef CONFIG_X86_WP_WORKS_OK
> +		panic(
> +  "This kernel doesn't support CPU's with broken WP. Recompile it for a 386!");
> +#endif
> +	} else {
> +		printk(KERN_CONT "Ok.\n");
> +	}
> +}
> +
> +/*
> + * This function cannot be __init, since exceptions don't work in that
> + * section.  Put this after the callers, so that it cannot be inlined.
> + */
> +static noinline int do_test_wp_bit(void)
> +{
> +	char tmp_reg;
> +	int flag;
> +
> +	__asm__ __volatile__(
> +		"	movb %0, %1	\n"
> +		"1:	movb %1, %0	\n"
> +		"	xorl %2, %2	\n"
> +		"2:			\n"
> +		_ASM_EXTABLE(1b,2b)
> +		:"=m" (*(char *)fix_to_virt(FIX_WP_TEST)),
> +		 "=q" (tmp_reg),
> +		 "=r" (flag)
> +		:"2" (1)
> +		:"memory");
> +
> +	return flag;
> +}
> +
>  #endif
>  
>  void __init trap_init(void)
> @@ -982,5 +1036,8 @@ void __init trap_init(void)
>  
>  #ifdef CONFIG_X86_32
>  	x86_quirk_trap_init();
> +
> +	if (boot_cpu_data.wp_works_ok < 0)
> +		test_wp_bit();
>  #endif
>  }
> diff --git a/arch/x86/mm/init_32.c b/arch/x86/mm/init_32.c
> index 3cd7711..e22bb8a 100644
> --- a/arch/x86/mm/init_32.c
> +++ b/arch/x86/mm/init_32.c
> @@ -54,8 +54,6 @@
>  
>  unsigned long highstart_pfn, highend_pfn;
>  
> -static noinline int do_test_wp_bit(void);
> -
>  bool __read_mostly __vmalloc_start_set = false;
>  
>  static __init void *alloc_low_page(void)
> @@ -830,33 +828,6 @@ void __init paging_init(void)
>  	zone_sizes_init();
>  }
>  
> -/*
> - * Test if the WP bit works in supervisor mode. It isn't supported on 386's
> - * and also on some strange 486's. All 586+'s are OK. This used to involve
> - * black magic jumps to work around some nasty CPU bugs, but fortunately the
> - * switch to using exceptions got rid of all that.
> - */
> -static void __init test_wp_bit(void)
> -{
> -	printk(KERN_INFO
> -  "Checking if this processor honours the WP bit even in supervisor mode...");
> -
> -	/* Any page-aligned address will do, the test is non-destructive */
> -	__set_fixmap(FIX_WP_TEST, __pa(&swapper_pg_dir), PAGE_READONLY);
> -	boot_cpu_data.wp_works_ok = do_test_wp_bit();
> -	clear_fixmap(FIX_WP_TEST);
> -
> -	if (!boot_cpu_data.wp_works_ok) {
> -		printk(KERN_CONT "No.\n");
> -#ifdef CONFIG_X86_WP_WORKS_OK
> -		panic(
> -  "This kernel doesn't support CPU's with broken WP. Recompile it for a 386!");
> -#endif
> -	} else {
> -		printk(KERN_CONT "Ok.\n");
> -	}
> -}
> -
>  static struct kcore_list kcore_mem, kcore_vmalloc;
>  
>  void __init mem_init(void)
> @@ -956,9 +927,6 @@ void __init mem_init(void)
>  	BUG_ON(VMALLOC_START				>= VMALLOC_END);
>  	BUG_ON((unsigned long)high_memory		> VMALLOC_START);
>  
> -	if (boot_cpu_data.wp_works_ok < 0)
> -		test_wp_bit();
> -
>  	save_pg_dir();
>  	zap_low_mappings(true);
>  }
> @@ -975,30 +943,6 @@ int arch_add_memory(int nid, u64 start, u64 size)
>  }
>  #endif
>  
> -/*
> - * This function cannot be __init, since exceptions don't work in that
> - * section.  Put this after the callers, so that it cannot be inlined.
> - */
> -static noinline int do_test_wp_bit(void)
> -{
> -	char tmp_reg;
> -	int flag;
> -
> -	__asm__ __volatile__(
> -		"	movb %0, %1	\n"
> -		"1:	movb %1, %0	\n"
> -		"	xorl %2, %2	\n"
> -		"2:			\n"
> -		_ASM_EXTABLE(1b,2b)
> -		:"=m" (*(char *)fix_to_virt(FIX_WP_TEST)),
> -		 "=q" (tmp_reg),
> -		 "=r" (flag)
> -		:"2" (1)
> -		:"memory");
> -
> -	return flag;
> -}
> -
>  #ifdef CONFIG_DEBUG_RODATA
>  const int rodata_test_data = 0xC3;
>  EXPORT_SYMBOL_GPL(rodata_test_data);
> diff --git a/init/main.c b/init/main.c
> index 2d9d6bd..5c4dacb 100644
> --- a/init/main.c
> +++ b/init/main.c
> @@ -603,7 +603,6 @@ asmlinkage void __init start_kernel(void)
>  	pidhash_init();
>  	vfs_caches_init_early();
>  	sort_main_extable();
> -	trap_init();
>  	mm_init();
>  	/*
>  	 * Set up the scheduler prior starting any interrupts (such as the
> @@ -621,6 +620,7 @@ asmlinkage void __init start_kernel(void)
>  				"enabled *very* early, fixing it\n");
>  		local_irq_disable();
>  	}
> +	trap_init();
>  	rcu_init();
>  	/* init some links before init_ISA_irqs() */
>  	early_irq_init();


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [bisected] 2.6.31 regression: fails to boot as xen guest
  2009-08-25 15:48 [bisected] 2.6.31 regression: fails to boot as xen guest Arnd Hannemann
  2009-08-25 16:29 ` Pekka Enberg
@ 2009-08-26 11:54 ` Pasi Kärkkäinen
  2009-08-26 12:00   ` Pekka Enberg
  1 sibling, 1 reply; 22+ messages in thread
From: Pasi Kärkkäinen @ 2009-08-26 11:54 UTC (permalink / raw)
  To: Arnd Hannemann; +Cc: LKML, penberg, hannes, torvalds

On Tue, Aug 25, 2009 at 05:48:01PM +0200, Arnd Hannemann wrote:
> Hi,
> 
> current 2.6.31 fails to boot on our xen host (32bit pae).
> Unfortunately it fails in a way that there is absolutely no output
> on the console. Config is as 32bit guest.
> 

Did you try "console=hvc0 earlyprintk=xen" kernel cmdline options? 

-- Pasi

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [bisected] 2.6.31 regression: fails to boot as xen guest
  2009-08-26 11:54 ` Pasi Kärkkäinen
@ 2009-08-26 12:00   ` Pekka Enberg
  0 siblings, 0 replies; 22+ messages in thread
From: Pekka Enberg @ 2009-08-26 12:00 UTC (permalink / raw)
  To: Pasi Kärkkäinen; +Cc: Arnd Hannemann, LKML, hannes, torvalds

On Wed, 2009-08-26 at 14:54 +0300, Pasi Kärkkäinen wrote:
> On Tue, Aug 25, 2009 at 05:48:01PM +0200, Arnd Hannemann wrote:
> > Hi,
> > 
> > current 2.6.31 fails to boot on our xen host (32bit pae).
> > Unfortunately it fails in a way that there is absolutely no output
> > on the console. Config is as 32bit guest.
> > 
> 
> Did you try "console=hvc0 earlyprintk=xen" kernel cmdline options? 

FYI, the bug is already fixed in -tip:

http://git.kernel.org/?p=linux/kernel/git/mingo/linux-2.6-x86.git;a=commitdiff;h=d560bc61575efae43595cbcb56d0ba3b9450139c


^ permalink raw reply	[flat|nested] 22+ messages in thread

end of thread, other threads:[~2009-08-26 12:00 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-08-25 15:48 [bisected] 2.6.31 regression: fails to boot as xen guest Arnd Hannemann
2009-08-25 16:29 ` Pekka Enberg
2009-08-25 16:49   ` Arnd Hannemann
2009-08-25 16:52     ` Pekka Enberg
2009-08-25 17:49       ` Arnd Hannemann
2009-08-25 18:03         ` Pekka Enberg
2009-08-25 18:08           ` Jeremy Fitzhardinge
2009-08-25 18:22           ` Arnd Hannemann
2009-08-25 18:25             ` Ingo Molnar
2009-08-25 18:30               ` Jeremy Fitzhardinge
2009-08-25 18:38                 ` Arnd Hannemann
2009-08-25 18:43                   ` Pekka Enberg
2009-08-25 19:31                     ` Jeremy Fitzhardinge
2009-08-25 19:30                   ` Jeremy Fitzhardinge
2009-08-25 18:58             ` Pekka Enberg
2009-08-25 19:07               ` Pekka Enberg
2009-08-25 19:13                 ` Arnd Hannemann
2009-08-26  9:59           ` Benjamin Herrenschmidt
2009-08-25 18:06       ` Jeremy Fitzhardinge
2009-08-25 18:14         ` Pekka Enberg
2009-08-26 11:54 ` Pasi Kärkkäinen
2009-08-26 12:00   ` Pekka Enberg

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox