linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/2] NR_CPUS: increase maximum NR_CPUS to 4096
@ 2008-04-05  1:30 Mike Travis
  2008-04-05  1:30 ` [PATCH 1/2] boot: increase stack size for kernel boot loader decompressor Mike Travis
                   ` (2 more replies)
  0 siblings, 3 replies; 26+ messages in thread
From: Mike Travis @ 2008-04-05  1:30 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: Thomas Gleixner, H. Peter Anvin, Andrew Morton, linux-kernel


  * Increases the limit of NR_CPUS to 4096 and introduces a
    boolean called "MAXSMP" which when set (e.g. "allyesconfig")
    will set NR_CPUS = 4096 and NODES_SHIFT = 9 (512).

    I've been running this config (4k NR_CPUS, 512 Max Nodes)
    on an AMD box with 2 dual-cores and 4gb memory as well as an
    Intel box with 4 single-core cpus and 8Mb.  I've also
    successfully booted it in a simulated 2cpus/1Gb environment.

Based on:
	git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
    +   x86/latest          .../x86/linux-2.6-x86.git
    +   sched-devel/latest  .../mingo/linux-2.6-sched-devel.git

Signed-off-by: Mike Travis <travis@sgi.com>
---

Memory usage effects from upping NR_CPUS to 4096 and MAX_NUMANODES to 512.

255-akpm2: akpm2 config with NR_CPUS=255  / NUMA_NODE_SHIFT=6
4k-akpm2:  akpm2 config with NR_CPUS=4096 / NUMA_NODE_SHIFT=9

====== Data (-l 1000)
    1 - 255-akpm2
    2 - 4k-akpm2

      .1.       .2.    ..final..
  1114112  +3899392 5013504  +350%  irq_desc(.data.cacheline_aligned)
   313344  +4177920 4491264 +1333%  irq_cfg(.data.read_mostly)
    76800   +537600  614400  +700%  early_node_map(.init.data)
    32640   +491648  524288 +1506%  boot_pageset(.bss)
    32640   +491648  524288 +1506%  boot_cpu_pda(.data.cacheline_aligned)
    23040   +161280  184320  +700%  initkmem_list3(.init.data)
     5632    +39424   45056  +700%  node_devices(.bss)
     4096    +28672   32768  +700%  plat_node_bdata(.bss)
     2656    +34312   36968 +1291%  cache_cache(.data)
     2048    +14336   16384  +700%  rio_devs(.init.data)
     2048   +260096  262144 +12700%  node_to_cpumask_map(.data.read_mostly)
     2040    +30728   32768 +1506%  centrino_model(.bss)
     2040    +30728   32768 +1506%  centrino_cpu(.bss)
     2040    +30728   32768 +1506%  _cpu_pda(.data.read_mostly)
     1024     +1024    2048  +100%  pxm_to_node_map(.data)
     1024     +7168    8192  +700%  nodes_add(.bss)
     1024     +7168    8192  +700%  nodes(.init.data)
     1024     +7168    8192  +700%  hugepage_freelists(.bss)
     1020    +15364   16384 +1506%  x86_cpu_to_node_map_init(.data)
     1020    +15364   16384 +1506%  cpu_set_freq(.bss)
     1020    +15364   16384 +1506%  cpu_min_freq(.bss)
     1020    +15364   16384 +1506%  cpu_max_freq(.bss)
     1020    +15364   16384 +1506%  cpu_is_managed(.bss)
     1020    +15364   16384 +1506%  cpu_cur_freq(.bss)
      512     +3584    4096  +700%  zone_movable_pfn(.init.data)
      512     +3584    4096  +700%  scal_devs(.init.data)
      512     +3584    4096  +700%  node_data(.data.read_mostly)
      510     +7682    8192 +1506%  x86_cpu_to_apicid_init(.init.data)
      510     +7682    8192 +1506%  x86_bios_cpu_apicid_init(.init.data)
        0     +4096    4096      .  tvec_base_done(.data)
        0     +2048    2048      .  surplus_huge_pages_node(.bss)
        0     +2048    2048      .  nr_huge_pages_node(.bss)
        0     +2048    2048      .  node_to_pxm_map(.data)
        0     +2048    2048      .  node_order(.bss)
        0     +2048    2048      .  node_load(.bss)
        0     +2048    2048      .  free_huge_pages_node(.bss)
        0     +2048    2048      .  fake_node_to_pxm_map(.init.data)
        0     +1552    1552      .  def_root_domain(.bss)

====== Sections (-l 500)
    1 - 255-akpm2
    2 - 4k-akpm2

       .1.        .2.    ..final..
  63092788  +10579589 73672377   +16%  Total
  41514099     +93823 41607922    <1%  .debug_info
   6648945      -2268  6646677    <1%  .debug_loc
   3365341      +7483  3372824    <1%  .text
   2631073      -1672  2629401    <1%  .debug_line
   1320219     +31557  1351776    +2%  .debug_abbrev
   1149568   +4391040  5540608  +381%  .data.cacheline_aligned
   1106192      -4784  1101408    <1%  .debug_ranges
    732736    +728832  1461568   +99%  .bss
    329672   +4474992  4804664 +1357%  .data.read_mostly
    285576    +100320   385896   +35%  .data
    173664    +751936   925600  +432%  .init.data
     40824      +7808    48632   +19%  .data.percpu

====== Text/Data ()
    1 - 255-akpm2
    2 - 4k-akpm2

      .1.       .2.    ..final..
  3364864     +8192   3373056    <1%  TextSize
  1552384   +100352   1652736    +6%  DataSize
   733184   +729088   1462272   +99%  BssSize
   393216   +757760   1150976  +192%  InitSize
    40960     +8192     49152   +20%  PerCPU
  1529856  +8869888  10399744  +579%  OtherSize
  7614464  +10473472 18087936  +137%  Totals

====== PerCPU ()
    1 - 255-akpm2
    2 - 4k-akpm2

    .1.    .2.    ..final..
  18432  -2048 16384   -11%  kstat
  10240  -2048  8192   -20%  init_tss
   2048  -2048     .  -100%  fdtable_defer_list
      0  +2048  2048      .  node_domains
      0  +2048  2048      .  lru_add_active_pvecs
      0  +2048  2048      .  cpuidle_devices
      0  +2048  2048      .  cpu_mask
      0  +2048  2048      .  cpu_info
      0  +2048  2048      .  cpu_core_map
      0  +2048  2048      .  core_domains
  30720  +8192 38912   +26%  Totals

====== Stack (-l 1000)
    1 - 255-akpm2
    2 - 4k-akpm2

  .1.    .2.    ..final..
    0  +4216 4216      .  show_schedstat
    0  +2744 2744      .  build_sched_domains
    0  +2152 2152      .  centrino_target
    0  +1640 1640      .  setup_IO_APIC
    0  +1592 1592      .  move_task_off_dead_cpu
    0  +1576 1576      .  setup_IO_APIC_irq
    0  +1560 1560      .  tick_notify
    0  +1560 1560      .  __assign_irq_vector
    0  +1552 1552      .  arch_setup_msi_irq
    0  +1552 1552      .  arch_setup_ht_irq
    0  +1544 1544      .  tick_do_periodic_broadcast
    0  +1544 1544      .  irq_affinity_write_proc
    0  +1144 1144      .  threshold_create_device
    0  +1112 1112      .  sched_balance_self
    0  +1064 1064      .  _cpu_down
    0  +1056 1056      .  __smp_call_function_mask
    0  +1048 1048      .  store_threshold_limit
    0  +1048 1048      .  set_ioapic_affinity_irq
    0  +1048 1048      .  acpi_processor_set_throttling
    0  +1048 1048      .  acpi_map_lsapic
    0  +1040 1040      .  store_interrupt_enable
    0  +1040 1040      .  set_msi_irq_affinity
    0  +1040 1040      .  set_ht_irq_affinity
    0  +1032 1032      .  store_error_count
    0  +1032 1032      .  show_error_count
    0  +1032 1032      .  setup_ioapic_dest
    0  +1032 1032      .  sched_setaffinity
    0  +1032 1032      .  physflat_send_IPI_allbutself
    0  +1032 1032      .  native_flush_tlb_others
    0  +1032 1032      .  move_masked_irq
    0  +1032 1032      .  flat_send_IPI_allbutself
    0  +1024 1024      .  pci_bus_show_cpuaffinity
    0  +1024 1024      .  machine_crash_shutdown
    0  +1024 1024      .  local_cpus_show
    0  +1024 1024      .  irq_complete_move
    0  +1024 1024      .  ioapic_retrigger_irq
    0  +1024 1024      .  fixup_irqs
    0  +1024 1024      .  create_irq

====== MemInfo ()
    1 - 255-akpm2
    2 - 4k-akpm2

          .1.        .2.    ..final..
     30146560    +786432    30932992    +2%  Active
      1018880     +64512     1083392    +6%  Active(Node.0)
      6517760    +132096     6649856    +2%  Active(Node.1)
     17465344     -12288    17453056    <1%  AnonPages
      2932736     +69632     3002368    +2%  AnonPages(Node.0)
     14532608     -81920    14450688    <1%  AnonPages(Node.1)
      5804032    +327680     6131712    +5%  Buffers
     57851904  +17252352    75104256   +29%  Cached
  10078793728   -5058560 10073735168    <1%  CommitLimit
     73453568   +1028096    74481664    +1%  Committed_AS
       184320    -184320           .  -100%  Dirty
        20480     -20480           .  -100%  Dirty(Node.0)
       163840    -163840           .  -100%  Dirty(Node.1)
      3391488    +352256     3743744   +10%  FilePages(Node.0)
     60264448  +17227776    77492224   +28%  FilePages(Node.1)
     50900992  +16818176    67719168   +33%  Inactive
       561152     +41984      603136    +7%  Inactive(Node.0)
     12164096   +4162560    16326656   +34%  Inactive(Node.1)
      8847360     +16384     8863744    <1%  Mapped
       290816     +45056      335872   +15%  Mapped(Node.0)
      8556544     -28672     8527872    <1%  Mapped(Node.1)
   4014837760  -54091776  3960745984    -1%  MemFree
   2012188672  -16060416  1996128256    <1%  MemFree(Node.0)
   2002522112  -38031360  1964490752    -1%  MemFree(Node.1)
   4151279616  -10117120  4141162496    <1%  MemTotal
    134877184  +16060416   150937600   +11%  MemUsed(Node.0)
    143912960  +38031360   181944320   +26%  MemUsed(Node.1)
      2306048      -8192     2297856    <1%  PageTables
       872448     +32768      905216    +3%  PageTables(Node.0)
      1433600     -40960     1392640    -2%  PageTables(Node.1)
      8290304    +217088     8507392    +2%  SReclaimable
      1155072    -184320      970752   -15%  SReclaimable(Node.0)
      7135232    +401408     7536640    +5%  SReclaimable(Node.1)
     12480512  +11087872    23568384   +88%  SUnreclaim
      4730880   +6569984    11300864  +138%  SUnreclaim(Node.0)
      7749632   +4517888    12267520   +58%  SUnreclaim(Node.1)
     20770816  +11304960    32075776   +54%  Slab
      5885952   +6385664    12271616  +108%  Slab(Node.0)
     14884864   +4919296    19804160   +33%  Slab(Node.1)
    159670272      -4096   159666176    <1%  VmallocUsed
  23140846592  +33765376 23174611968    +0%  Totals


Memory usage in a simulated 2cpu/1gb environment using the
default configuration and NR_CPUS=4096, MAX Nodes=512:

Memory: 1013440k/1048576k available 
(3588k kernel code, 33728k reserved, 1962k data, 1212k init)

	MemTotal:      1014652 kB
	MemFree:        991364 kB
	Buffers:           192 kB
	Cached:           3436 kB
	SwapCached:          0 kB
	Active:           1636 kB
	Inactive:         2648 kB
	SwapTotal:           0 kB
	SwapFree:            0 kB
	Dirty:              20 kB
	Writeback:           0 kB
	AnonPages:         656 kB
	Mapped:           1412 kB
	Slab:            12752 kB
	SReclaimable:      236 kB
	SUnreclaim:      12516 kB
	PageTables:         36 kB
	NFS_Unstable:        0 kB
	Bounce:              0 kB
	CommitLimit:    507324 kB
	Committed_AS:        0 kB
	VmallocTotal: 34359738367 kB
	VmallocUsed:      4896 kB
	VmallocChunk: 34359733471 kB
	HugePages_Total:     0
	HugePages_Free:      0
	HugePages_Rsvd:      0
	HugePages_Surp:      0
	Hugepagesize:     2048 kB

-- 

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

* [PATCH 1/2] boot: increase stack size for kernel boot loader decompressor
  2008-04-05  1:30 [PATCH 0/2] NR_CPUS: increase maximum NR_CPUS to 4096 Mike Travis
@ 2008-04-05  1:30 ` Mike Travis
  2008-04-05 13:46   ` Alexander van Heukelum
  2008-04-05  1:30 ` [PATCH 2/2] x86: Modify Kconfig to allow up to 4096 cpus Mike Travis
  2008-04-08 21:53 ` [PATCH 0/2] NR_CPUS: increase maximum NR_CPUS to 4096 Yinghai Lu
  2 siblings, 1 reply; 26+ messages in thread
From: Mike Travis @ 2008-04-05  1:30 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: Thomas Gleixner, H. Peter Anvin, Andrew Morton, linux-kernel

[-- Attachment #1: compressed-head_64 --]
[-- Type: text/plain, Size: 784 bytes --]

  * Increase stack size for the kernel bootloader decompressor.  This is
    needed to boot a kernel with NR_CPUS = 4096.  I tested with 8k stack
    size but that wasn't sufficient.

Based on:
	git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
    +   x86/latest          .../x86/linux-2.6-x86.git
    +   sched-devel/latest  .../mingo/linux-2.6-sched-devel.git

Signed-off-by: Mike Travis <travis@sgi.com>
---
 arch/x86/boot/compressed/head_64.S |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- linux-2.6.25-rc5.orig/arch/x86/boot/compressed/head_64.S
+++ linux-2.6.25-rc5/arch/x86/boot/compressed/head_64.S
@@ -314,5 +314,5 @@ gdt_end:
 /* Stack for uncompression */
 	.balign 4
 user_stack:
-	.fill 4096,4,0
+	.fill 16384,4,0
 user_stack_end:

-- 

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

* [PATCH 2/2] x86: Modify Kconfig to allow up to 4096 cpus
  2008-04-05  1:30 [PATCH 0/2] NR_CPUS: increase maximum NR_CPUS to 4096 Mike Travis
  2008-04-05  1:30 ` [PATCH 1/2] boot: increase stack size for kernel boot loader decompressor Mike Travis
@ 2008-04-05  1:30 ` Mike Travis
  2008-04-08 21:53 ` [PATCH 0/2] NR_CPUS: increase maximum NR_CPUS to 4096 Yinghai Lu
  2 siblings, 0 replies; 26+ messages in thread
From: Mike Travis @ 2008-04-05  1:30 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: Thomas Gleixner, H. Peter Anvin, Andrew Morton, linux-kernel

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

  * Increase the limit of NR_CPUS to 4096 and introduce a boolean
    called "MAXSMP" which when set (e.g. "allyesconfig"), will set
    NR_CPUS = 4096 and NODES_SHIFT = 9 (512).
    
  * Changed max setting for NODES_SHIFT from 15 to 9 to accurately
    reflect the real limit.

Based on:
	git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
    +   x86/latest          .../x86/linux-2.6-x86.git
    +   sched-devel/latest  .../mingo/linux-2.6-sched-devel.git

Signed-off-by: Mike Travis <travis@sgi.com>
---
 arch/x86/Kconfig |   37 ++++++++++++++++++++++++++++++++-----
 1 file changed, 32 insertions(+), 5 deletions(-)

--- linux-2.6.x86.sched.orig/arch/x86/Kconfig
+++ linux-2.6.x86.sched/arch/x86/Kconfig
@@ -526,20 +526,35 @@ config SWIOTLB
 	  access 32-bits of memory can be used on systems with more than
 	  3 GB of memory. If unsure, say Y.
 
+config MAXSMP
+	bool "Configure Maximum number of SMP Processors and NUMA Nodes"
+	depends on X86_64 && SMP
+	default n
+	help
+	  Configure maximum number of CPUS and NUMA Nodes for this architecture.
+	  If unsure, say N.
+
+if MAXSMP
+config NR_CPUS
+	int
+	default "4096"
+endif
 
+if !MAXSMP
 config NR_CPUS
-	int "Maximum number of CPUs (2-255)"
-	range 2 255
+	int "Maximum number of CPUs (2-4096)"
+	range 2 4096
 	depends on SMP
 	default "32" if X86_NUMAQ || X86_SUMMIT || X86_BIGSMP || X86_ES7000
 	default "8"
 	help
 	  This allows you to specify the maximum number of CPUs which this
-	  kernel will support.  The maximum supported value is 255 and the
+	  kernel will support.  The maximum supported value is 4096 and the
 	  minimum value which makes sense is 2.
 
 	  This is purely to save memory - each supported CPU adds
 	  approximately eight kilobytes to the kernel image.
+endif
 
 config SCHED_SMT
 	bool "SMT (Hyperthreading) scheduler support"
@@ -921,13 +936,25 @@ config NUMA_EMU
 	  into virtual nodes when booted with "numa=fake=N", where N is the
 	  number of nodes. This is only useful for debugging.
 
+if MAXSMP
+
 config NODES_SHIFT
-	int "Max num nodes shift(1-15)"
-	range 1 15  if X86_64
+	int
+	default "9"
+endif
+
+if !MAXSMP
+config NODES_SHIFT
+	int "Maximum NUMA Nodes (as a power of 2)"
+	range 1 9   if X86_64
 	default "6" if X86_64
 	default "4" if X86_NUMAQ
 	default "3"
 	depends on NEED_MULTIPLE_NODES
+	help
+	  Specify the maximum number of NUMA Nodes available on the target
+	  system.  Increases memory reserved to accomodate various tables.
+endif
 
 config HAVE_ARCH_BOOTMEM_NODE
 	def_bool y

-- 

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

* Re: [PATCH 1/2] boot: increase stack size for kernel boot loader decompressor
  2008-04-05  1:30 ` [PATCH 1/2] boot: increase stack size for kernel boot loader decompressor Mike Travis
@ 2008-04-05 13:46   ` Alexander van Heukelum
  2008-04-07 18:14     ` Mike Travis
  0 siblings, 1 reply; 26+ messages in thread
From: Alexander van Heukelum @ 2008-04-05 13:46 UTC (permalink / raw)
  To: Mike Travis
  Cc: Ingo Molnar, Thomas Gleixner, H. Peter Anvin, Andrew Morton,
	linux-kernel

On Fri, Apr 04, 2008 at 06:30:15PM -0700, Mike Travis wrote:
>   * Increase stack size for the kernel bootloader decompressor.  This is
>     needed to boot a kernel with NR_CPUS = 4096.  I tested with 8k stack
>     size but that wasn't sufficient.
> 
> Based on:
> 	git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
>     +   x86/latest          .../x86/linux-2.6-x86.git
>     +   sched-devel/latest  .../mingo/linux-2.6-sched-devel.git
> 
> Signed-off-by: Mike Travis <travis@sgi.com>
> ---
>  arch/x86/boot/compressed/head_64.S |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> --- linux-2.6.25-rc5.orig/arch/x86/boot/compressed/head_64.S
> +++ linux-2.6.25-rc5/arch/x86/boot/compressed/head_64.S
> @@ -314,5 +314,5 @@ gdt_end:
>  /* Stack for uncompression */
>  	.balign 4
>  user_stack:
> -	.fill 4096,4,0
> +	.fill 16384,4,0
--------------^^^ * ^

Changed from 16K to 64K. I wonder what is using so much space on
this stack?

>  user_stack_end:
> 
> -- 

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

* Re: [PATCH 1/2] boot: increase stack size for kernel boot loader decompressor
  2008-04-05 13:46   ` Alexander van Heukelum
@ 2008-04-07 18:14     ` Mike Travis
  2008-04-07 21:44       ` Alexander van Heukelum
  0 siblings, 1 reply; 26+ messages in thread
From: Mike Travis @ 2008-04-07 18:14 UTC (permalink / raw)
  To: Alexander van Heukelum
  Cc: Ingo Molnar, Thomas Gleixner, H. Peter Anvin, Andrew Morton,
	linux-kernel

Alexander van Heukelum wrote:
> On Fri, Apr 04, 2008 at 06:30:15PM -0700, Mike Travis wrote:
>>   * Increase stack size for the kernel bootloader decompressor.  This is
>>     needed to boot a kernel with NR_CPUS = 4096.  I tested with 8k stack
>>     size but that wasn't sufficient.
>>
>> Based on:
>> 	git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
>>     +   x86/latest          .../x86/linux-2.6-x86.git
>>     +   sched-devel/latest  .../mingo/linux-2.6-sched-devel.git
>>
>> Signed-off-by: Mike Travis <travis@sgi.com>
>> ---
>>  arch/x86/boot/compressed/head_64.S |    2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> --- linux-2.6.25-rc5.orig/arch/x86/boot/compressed/head_64.S
>> +++ linux-2.6.25-rc5/arch/x86/boot/compressed/head_64.S
>> @@ -314,5 +314,5 @@ gdt_end:
>>  /* Stack for uncompression */
>>  	.balign 4
>>  user_stack:
>> -	.fill 4096,4,0
>> +	.fill 16384,4,0
> --------------^^^ * ^
> 
> Changed from 16K to 64K. I wonder what is using so much space on
> this stack?
> 
>>  user_stack_end:
>>
>> -- 

Hi,

That is a good question.  It's pretty difficult to debug at that early
stage (any ideas are certainly welcome!).  It's mostly hit and miss (and
handy access to the reset button ;-)  I could do some further research
but since it's "throwaway" memory (at least I think it is), then I didn't
think it important to pursue.

And thanks for the correction, I thought I was bumping a byte count, not
a word count.

Thanks,
Mike

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

* Re: [PATCH 1/2] boot: increase stack size for kernel boot loader decompressor
  2008-04-07 18:14     ` Mike Travis
@ 2008-04-07 21:44       ` Alexander van Heukelum
  2008-04-08  8:23         ` Ingo Molnar
  2008-04-08 12:20         ` Alexander van Heukelum
  0 siblings, 2 replies; 26+ messages in thread
From: Alexander van Heukelum @ 2008-04-07 21:44 UTC (permalink / raw)
  To: Mike Travis
  Cc: Ingo Molnar, Thomas Gleixner, H. Peter Anvin, Andrew Morton,
	linux-kernel, heukelum

On Mon, Apr 07, 2008 at 11:14:16AM -0700, Mike Travis wrote:
> Alexander van Heukelum wrote:
> > On Fri, Apr 04, 2008 at 06:30:15PM -0700, Mike Travis wrote:
> >>   * Increase stack size for the kernel bootloader decompressor.  This is
> >>     needed to boot a kernel with NR_CPUS = 4096.  I tested with 8k stack
> >>     size but that wasn't sufficient.
> >>
> >> Based on:
> >> 	git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
> >>     +   x86/latest          .../x86/linux-2.6-x86.git
> >>     +   sched-devel/latest  .../mingo/linux-2.6-sched-devel.git
> >>
> >> Signed-off-by: Mike Travis <travis@sgi.com>
> >> ---
> >>  arch/x86/boot/compressed/head_64.S |    2 +-
> >>  1 file changed, 1 insertion(+), 1 deletion(-)
> >>
> >> --- linux-2.6.25-rc5.orig/arch/x86/boot/compressed/head_64.S
> >> +++ linux-2.6.25-rc5/arch/x86/boot/compressed/head_64.S
> >> @@ -314,5 +314,5 @@ gdt_end:
> >>  /* Stack for uncompression */
> >>  	.balign 4
> >>  user_stack:
> >> -	.fill 4096,4,0
> >> +	.fill 16384,4,0
> > --------------^^^ * ^
> > 
> > Changed from 16K to 64K. I wonder what is using so much space on
> > this stack?
> > 
> >>  user_stack_end:
> >>
> >> -- 
> 
> Hi,
> 
> That is a good question.  It's pretty difficult to debug at that early
> stage (any ideas are certainly welcome!).  It's mostly hit and miss (and
> handy access to the reset button ;-)  I could do some further research
> but since it's "throwaway" memory (at least I think it is), then I didn't
> think it important to pursue.

It's certainly not important enough to put much time in. I tried
MAXSMP on top of just Ingo's -x86 with qemu, though, but it wouldn't
crash. I set the stack size to 16 bytes, and it still booted happily
(of course there is still about 11 kilobytes of inflate code which
is then overwritten by stack use).

I did see that the malloc space that the inflate code is using is
taken from _after_ the end of the bss. I don't see how this is
protected from being used/overwritten. Changing the stack size changes
the memory layout a bit... maybe you were so unlucky to create a
vmlinux image that was just barely smaller than some threshold and
increasing the stack size made the decompression/relocation area be
located somewhere else?

Test patch follows.

Greetings,
	Alexander

> Thanks,
> Mike

diff --git a/arch/x86/boot/compressed/vmlinux_32.lds b/arch/x86/boot/compressed/vmlinux_32.lds
index bb3c483..c858e30 100644
--- a/arch/x86/boot/compressed/vmlinux_32.lds
+++ b/arch/x86/boot/compressed/vmlinux_32.lds
@@ -39,5 +39,6 @@ SECTIONS
 		*(.bss.*)
 		*(COMMON)
 		_end = . ;
+		_real_end = . + 0x4000;
 	}
 }
diff --git a/arch/x86/boot/compressed/vmlinux_64.lds b/arch/x86/boot/compressed/vmlinux_64.lds
index 7e5c720..9bef3cd 100644
--- a/arch/x86/boot/compressed/vmlinux_64.lds
+++ b/arch/x86/boot/compressed/vmlinux_64.lds
@@ -44,5 +44,6 @@ SECTIONS
 		pgtable = . ;
 		. = . + 4096 * 6;
 		_heap = .;
+		_heap_end = . + 0x7000;
 	}
 }


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

* Re: [PATCH 1/2] boot: increase stack size for kernel boot loader decompressor
  2008-04-07 21:44       ` Alexander van Heukelum
@ 2008-04-08  8:23         ` Ingo Molnar
  2008-04-08 10:54           ` [PATCH] x86: cleanup boot-heap usage Alexander van Heukelum
                             ` (2 more replies)
  2008-04-08 12:20         ` Alexander van Heukelum
  1 sibling, 3 replies; 26+ messages in thread
From: Ingo Molnar @ 2008-04-08  8:23 UTC (permalink / raw)
  To: Alexander van Heukelum
  Cc: Mike Travis, Thomas Gleixner, H. Peter Anvin, Andrew Morton,
	linux-kernel, heukelum, Yinghai Lu


* Alexander van Heukelum <heukelum@mailshack.com> wrote:

> I did see that the malloc space that the inflate code is using is 
> taken from _after_ the end of the bss. I don't see how this is 
> protected from being used/overwritten. Changing the stack size changes 
> the memory layout a bit... maybe you were so unlucky to create a 
> vmlinux image that was just barely smaller than some threshold and 
> increasing the stack size made the decompression/relocation area be 
> located somewhere else?
> 
> Test patch follows.

that's a really interesting theory.

FWIIW, i've been booting allyesconfig bzImages for a long time (with 
only minimal amount of drivers disabled - mostly old ISA ones that 
assume the presence of the real hardware), and they boot and work fine 
on both 32-bit and 64-bit typical whitebox PCs. That means huge bzImages 
that decompresses into a ~41 MB kernel image. I'd expect that to be a 
rather severe test of the decompressor.

	Ingo

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

* [PATCH] x86: cleanup boot-heap usage
  2008-04-08  8:23         ` Ingo Molnar
@ 2008-04-08 10:54           ` Alexander van Heukelum
  2008-04-08 18:39             ` Yinghai Lu
  2008-04-08 14:56           ` [PATCH 1/2] boot: increase stack size for kernel boot loader decompressor Mike Travis
  2008-04-08 17:54           ` Yinghai Lu
  2 siblings, 1 reply; 26+ messages in thread
From: Alexander van Heukelum @ 2008-04-08 10:54 UTC (permalink / raw)
  To: Ingo Molnar, H. Peter Anvin
  Cc: Mike Travis, Thomas Gleixner, Andrew Morton, linux-kernel,
	heukelum, Yinghai Lu

The kernel decompressor wrapper uses memory located beyond the
end of the image. This might lead to hard to debug problems,
but even if it can be proven to be safe, it is at the very
least unclean. I don't see any advantages either, unless you
count it not being zeroed out as an advantage. This patch
moves the boot-heap area to the bss segment.

Signed-off-by: Alexander van Heukelum <heukelum@fastmail.fm>

---

On Tue, Apr 08, 2008 at 10:23:54AM +0200, Ingo Molnar wrote:
> * Alexander van Heukelum <heukelum@mailshack.com> wrote:
> > I did see that the malloc space that the inflate code is using is 
> > taken from _after_ the end of the bss. I don't see how this is 
> > protected from being used/overwritten. Changing the stack size changes 
> > the memory layout a bit... maybe you were so unlucky to create a 
> > vmlinux image that was just barely smaller than some threshold and 
> > increasing the stack size made the decompression/relocation area be 
> > located somewhere else?
> > 
> > Test patch follows.
> 
> that's a really interesting theory.
> 
> FWIIW, i've been booting allyesconfig bzImages for a long time (with 
> only minimal amount of drivers disabled - mostly old ISA ones that 
> assume the presence of the real hardware), and they boot and work fine 
> on both 32-bit and 64-bit typical whitebox PCs. That means huge bzImages 
> that decompresses into a ~41 MB kernel image. I'd expect that to be a 
> rather severe test of the decompressor.
> 
> 	Ingo

Hi Ingo,

Even if this patch might not solve the problem, I think it
is a good clean-up that is suitable for -x86? qemu is happy
with it.

Greetings,
	Alexander

 arch/x86/boot/compressed/head_32.S |   15 +++++++++------
 arch/x86/boot/compressed/head_64.S |   22 +++++++++++++---------
 arch/x86/boot/compressed/misc.c    |    8 +-------
 include/asm-x86/boot.h             |    8 ++++++++
 4 files changed, 31 insertions(+), 22 deletions(-)

diff --git a/arch/x86/boot/compressed/head_32.S b/arch/x86/boot/compressed/head_32.S
index 036e635..ba7736c 100644
--- a/arch/x86/boot/compressed/head_32.S
+++ b/arch/x86/boot/compressed/head_32.S
@@ -130,7 +130,7 @@ relocated:
 /*
  * Setup the stack for the decompressor
  */
-	leal stack_end(%ebx), %esp
+	leal boot_stack_end(%ebx), %esp
 
 /*
  * Do the decompression, and jump to the new kernel..
@@ -142,8 +142,8 @@ relocated:
 	pushl %eax	# input_len
 	leal input_data(%ebx), %eax
 	pushl %eax	# input_data
-	leal _end(%ebx), %eax
-	pushl %eax	# end of the image as third argument
+	leal boot_heap(%ebx), %eax
+	pushl %eax	# heap area as third argument
 	pushl %esi	# real mode pointer as second arg
 	call decompress_kernel
 	addl $20, %esp
@@ -181,7 +181,10 @@ relocated:
 	jmp *%ebp
 
 .bss
+/* Stack and heap for uncompression */
 .balign 4
-stack:
-	.fill 4096, 1, 0
-stack_end:
+boot_heap:
+	.fill BOOT_HEAP_SIZE, 1, 0
+boot_stack:
+	.fill BOOT_STACK_SIZE, 1, 0
+boot_stack_end:
diff --git a/arch/x86/boot/compressed/head_64.S b/arch/x86/boot/compressed/head_64.S
index e8657b9..7a212a6 100644
--- a/arch/x86/boot/compressed/head_64.S
+++ b/arch/x86/boot/compressed/head_64.S
@@ -28,6 +28,7 @@
 #include <asm/segment.h>
 #include <asm/pgtable.h>
 #include <asm/page.h>
+#include <asm/boot.h>
 #include <asm/msr.h>
 #include <asm/asm-offsets.h>
 
@@ -62,7 +63,7 @@ startup_32:
 	subl	$1b, %ebp
 
 /* setup a stack and make sure cpu supports long mode. */
-	movl	$user_stack_end, %eax
+	movl	$boot_stack_end, %eax
 	addl	%ebp, %eax
 	movl	%eax, %esp
 
@@ -274,7 +275,7 @@ relocated:
 	stosb
 
 	/* Setup the stack */
-	leaq	user_stack_end(%rip), %rsp
+	leaq	boot_stack_end(%rip), %rsp
 
 	/* zero EFLAGS after setting rsp */
 	pushq	$0
@@ -285,7 +286,7 @@ relocated:
  */
 	pushq	%rsi			# Save the real mode argument
 	movq	%rsi, %rdi		# real mode address
-	leaq	_heap(%rip), %rsi	# _heap
+	leaq	boot_heap(%rip), %rsi	# malloc area for uncompression
 	leaq	input_data(%rip), %rdx  # input_data
 	movl	input_len(%rip), %eax
 	movq	%rax, %rcx		# input_len
@@ -310,9 +311,12 @@ gdt:
 	.quad	0x0080890000000000	/* TS descriptor */
 	.quad   0x0000000000000000	/* TS continued */
 gdt_end:
-	.bss
-/* Stack for uncompression */
-	.balign 4
-user_stack:
-	.fill 4096,4,0
-user_stack_end:
+
+.bss
+/* Stack and heap for uncompression */
+.balign 4
+boot_heap:
+	.fill BOOT_HEAP_SIZE, 1, 0
+boot_stack:
+	.fill BOOT_STACK_SIZE, 1, 0
+boot_stack_end:
diff --git a/arch/x86/boot/compressed/misc.c b/arch/x86/boot/compressed/misc.c
index dad4e69..90456ce 100644
--- a/arch/x86/boot/compressed/misc.c
+++ b/arch/x86/boot/compressed/misc.c
@@ -217,12 +217,6 @@ static void putstr(const char *);
 static memptr free_mem_ptr;
 static memptr free_mem_end_ptr;
 
-#ifdef CONFIG_X86_64
-#define HEAP_SIZE             0x7000
-#else
-#define HEAP_SIZE             0x4000
-#endif
-
 static char *vidmem;
 static int vidport;
 static int lines, cols;
@@ -449,7 +443,7 @@ asmlinkage void decompress_kernel(void *rmode, memptr heap,
 
 	window = output;		/* Output buffer (Normally at 1M) */
 	free_mem_ptr     = heap;	/* Heap */
-	free_mem_end_ptr = heap + HEAP_SIZE;
+	free_mem_end_ptr = heap + BOOT_HEAP_SIZE;
 	inbuf  = input_data;		/* Input buffer */
 	insize = input_len;
 	inptr  = 0;
diff --git a/include/asm-x86/boot.h b/include/asm-x86/boot.h
index ed8affb..2faed7e 100644
--- a/include/asm-x86/boot.h
+++ b/include/asm-x86/boot.h
@@ -17,4 +17,12 @@
 				+ (CONFIG_PHYSICAL_ALIGN - 1)) \
 				& ~(CONFIG_PHYSICAL_ALIGN - 1))
 
+#ifdef CONFIG_X86_64
+#define BOOT_HEAP_SIZE	0x7000
+#define BOOT_STACK_SIZE	0x4000
+#else
+#define BOOT_HEAP_SIZE	0x4000
+#define BOOT_STACK_SIZE	0x1000
+#endif
+
 #endif /* _ASM_BOOT_H */


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

* Re: [PATCH 1/2] boot: increase stack size for kernel boot loader decompressor
  2008-04-07 21:44       ` Alexander van Heukelum
  2008-04-08  8:23         ` Ingo Molnar
@ 2008-04-08 12:20         ` Alexander van Heukelum
  2008-04-08 13:41           ` Ingo Molnar
  1 sibling, 1 reply; 26+ messages in thread
From: Alexander van Heukelum @ 2008-04-08 12:20 UTC (permalink / raw)
  To: Ingo Molnar, Mike Travis
  Cc: Thomas Gleixner, H. Peter Anvin, Andrew Morton, linux-kernel, heukelum

Hi Ingo,

I see you have applied the following patch to x86#for-akpm. It was
really ment for testing only. I think you ment to use this one instead?

[PATCH 1/2] boot: increase stack size for kernel boot loader decompressor
http://lkml.org/lkml/2008/3/25/497

Otherwise, please consider [PATCH] x86: cleanup boot-heap usage instead.
http://lkml.org/lkml/2008/4/8/90

Greetings,
	Alexander

On Mon, Apr 07, 2008 at 11:44:34PM +0200, Alexander van Heukelum wrote:
> diff --git a/arch/x86/boot/compressed/vmlinux_32.lds b/arch/x86/boot/compressed/vmlinux_32.lds
> index bb3c483..c858e30 100644
> --- a/arch/x86/boot/compressed/vmlinux_32.lds
> +++ b/arch/x86/boot/compressed/vmlinux_32.lds
> @@ -39,5 +39,6 @@ SECTIONS
>  		*(.bss.*)
>  		*(COMMON)
>  		_end = . ;
> +		_real_end = . + 0x4000;
>  	}
>  }
> diff --git a/arch/x86/boot/compressed/vmlinux_64.lds b/arch/x86/boot/compressed/vmlinux_64.lds
> index 7e5c720..9bef3cd 100644
> --- a/arch/x86/boot/compressed/vmlinux_64.lds
> +++ b/arch/x86/boot/compressed/vmlinux_64.lds
> @@ -44,5 +44,6 @@ SECTIONS
>  		pgtable = . ;
>  		. = . + 4096 * 6;
>  		_heap = .;
> +		_heap_end = . + 0x7000;
>  	}
>  }


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

* Re: [PATCH 1/2] boot: increase stack size for kernel boot loader decompressor
  2008-04-08 12:20         ` Alexander van Heukelum
@ 2008-04-08 13:41           ` Ingo Molnar
  2008-04-08 15:10             ` Mike Travis
  0 siblings, 1 reply; 26+ messages in thread
From: Ingo Molnar @ 2008-04-08 13:41 UTC (permalink / raw)
  To: Alexander van Heukelum
  Cc: Mike Travis, Thomas Gleixner, H. Peter Anvin, Andrew Morton,
	linux-kernel, heukelum


* Alexander van Heukelum <heukelum@mailshack.com> wrote:

> Hi Ingo,
> 
> I see you have applied the following patch to x86#for-akpm. It was 
> really ment for testing only. I think you ment to use this one 
> instead?

yep, i wanted to see how it holds up in testing - it's OK so far. I've 
got your other, fuller one queued up meanwhile - it's not pushed out 
yet.

	Ingo

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

* Re: [PATCH 1/2] boot: increase stack size for kernel boot loader decompressor
  2008-04-08  8:23         ` Ingo Molnar
  2008-04-08 10:54           ` [PATCH] x86: cleanup boot-heap usage Alexander van Heukelum
@ 2008-04-08 14:56           ` Mike Travis
  2008-04-08 17:54           ` Yinghai Lu
  2 siblings, 0 replies; 26+ messages in thread
From: Mike Travis @ 2008-04-08 14:56 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Alexander van Heukelum, Thomas Gleixner, H. Peter Anvin,
	Andrew Morton, linux-kernel, heukelum, Yinghai Lu

Ingo Molnar wrote:
> * Alexander van Heukelum <heukelum@mailshack.com> wrote:
> 
>> I did see that the malloc space that the inflate code is using is 
>> taken from _after_ the end of the bss. I don't see how this is 
>> protected from being used/overwritten. Changing the stack size changes 
>> the memory layout a bit... maybe you were so unlucky to create a 
>> vmlinux image that was just barely smaller than some threshold and 
>> increasing the stack size made the decompression/relocation area be 
>> located somewhere else?
>>
>> Test patch follows.
> 
> that's a really interesting theory.
> 
> FWIIW, i've been booting allyesconfig bzImages for a long time (with 
> only minimal amount of drivers disabled - mostly old ISA ones that 
> assume the presence of the real hardware), and they boot and work fine 
> on both 32-bit and 64-bit typical whitebox PCs. That means huge bzImages 
> that decompresses into a ~41 MB kernel image. I'd expect that to be a 
> rather severe test of the decompressor.
> 
> 	Ingo

Well admittedly, I did discover this problem way early in booting
up a 4k NR_CPU kernel (obviously ;-).  Once it booted, I haven't
revisited that problem again.  I wonder if it's a pathological case
of a single bitstream that causes expansion instead of compression?
Note I was using the akpm2 config script with NR_CPUS=4096 and
NODES_SHIFT=9 (plus some other tweaks specific to our AMD and Intel
boxes.)

Thanks,
Mike

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

* Re: [PATCH 1/2] boot: increase stack size for kernel boot loader decompressor
  2008-04-08 13:41           ` Ingo Molnar
@ 2008-04-08 15:10             ` Mike Travis
  2008-04-08 15:39               ` Ingo Molnar
  0 siblings, 1 reply; 26+ messages in thread
From: Mike Travis @ 2008-04-08 15:10 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Alexander van Heukelum, Thomas Gleixner, H. Peter Anvin,
	Andrew Morton, linux-kernel, heukelum

Ingo Molnar wrote:
> * Alexander van Heukelum <heukelum@mailshack.com> wrote:
> 
>> Hi Ingo,
>>
>> I see you have applied the following patch to x86#for-akpm. It was 
>> really ment for testing only. I think you ment to use this one 
>> instead?
> 
> yep, i wanted to see how it holds up in testing - it's OK so far. I've 
> got your other, fuller one queued up meanwhile - it's not pushed out 
> yet.
> 
> 	Ingo

I will try it out on my failing case as soon as I can...

Thanks,
Mike

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

* Re: [PATCH 1/2] boot: increase stack size for kernel boot loader decompressor
  2008-04-08 15:10             ` Mike Travis
@ 2008-04-08 15:39               ` Ingo Molnar
  2008-04-08 19:09                 ` Mike Travis
  2008-04-08 21:48                 ` Mike Travis
  0 siblings, 2 replies; 26+ messages in thread
From: Ingo Molnar @ 2008-04-08 15:39 UTC (permalink / raw)
  To: Mike Travis
  Cc: Alexander van Heukelum, Thomas Gleixner, H. Peter Anvin,
	Andrew Morton, linux-kernel, heukelum


* Mike Travis <travis@sgi.com> wrote:

> Ingo Molnar wrote:
> > * Alexander van Heukelum <heukelum@mailshack.com> wrote:
> > 
> >> Hi Ingo,
> >>
> >> I see you have applied the following patch to x86#for-akpm. It was 
> >> really ment for testing only. I think you ment to use this one 
> >> instead?
> > 
> > yep, i wanted to see how it holds up in testing - it's OK so far. I've 
> > got your other, fuller one queued up meanwhile - it's not pushed out 
> > yet.
> > 
> > 	Ingo
> 
> I will try it out on my failing case as soon as I can...

more test results: i just booted an allyesconfig 64-bit (MAXSMP, etc.) 
kernel on x86 native hardware successfully - that has Alexander's patch 
included but not your boot tweak. (has all your other patches included)

would you expect a real 4K CPUs system to boot any differently? So early 
during bootup all x86 hardware is just a uniprocessor, so i'd be 
surprised if there was any difference.

[ in any case, if the tweak still makes a real difference for you we can 
  still apply it because it does not hurt anyone - but lets try to avoid 
  black voodoo tweaks as much as possible :) ]

btw,. booting up MAXSMP is pretty impressive:

  CONFIG_NR_CPUS=4096

shows how far Linux scalability has come :)

i've got a bugreport for you though: MAXSMP does not suspend+resume 
correctly ;-) It gets this far:

[  146.348790] PM: Syncing filesystems ... done.
[  146.353488] PM: Preparing system for mem sleep
[  146.360204] Freezing user space processes ... (elapsed 0.00 seconds) done.
[  146.367172] Freezing remaining freezable tasks ... (elapsed 0.93 seconds) done.
[  147.309618] PM: Entering mem sleep
[  147.313032] Suspending console(s)

then reboots spontaneously instead of resuming. (I use the 
suspend+resume self-test feature below to conduct automated 
suspend/resume tests.)

	Ingo

------------------------->
Subject: suspend: sleepy linux self-test
From: David Brownell <david-b@pacbell.net>

See the appended; it includes more of Ingo's suggestions.

Since this is increasingly unrelated to the "sleepy linux" concept
(a version of what systems like OLPC, N700, and N800 are doing), I
got rid of the "sleepy.c" file.

- Dave

============ CUT HERE
Boot-time test for system suspend states (STR or standby).  The generic
RTC framework triggers wakeup alarms, used to exit those states.

  - Measures some aspects of suspend time; uses "jiffies".  This
    should probably use a clocksource instead, since those often
    work properly even while IRQs are disabled.

  - Includes a command line parameter, which needs work yet ... it
    currently turns this test off, but it should also let the target
    state be specified (and maybe even default to "no test").

Lightly tested on an ARM system, which reported that suspending devices
took 7 msec and resuming them took 132 msec:

  * The PCMCIA stack misbehaved a bit.  It didn't finish enumerating
    the card before it suspended, so the wakeup event came from the
    CF card IRQ not from the RTC!

  * The MMC stack misbehaved more seriously.  It wants to remove devices
    during the suspend sequence (quite needlessly, on this hardware),
    which now makes Linux unhappy.

Workaround in both cases was to take the memory card out before booting.

Also includes some Kconfig tweaks to help reduce configuration bugs on
x86, by avoiding the legacy RTC driver when the generic RTC framework
is enabled ... those should become a separate patch.

Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
 drivers/char/Kconfig |    5 +
 drivers/rtc/Kconfig  |    1 
 kernel/power/Kconfig |   10 +++
 kernel/power/main.c  |  163 +++++++++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 178 insertions(+), 1 deletion(-)

Index: linux/drivers/char/Kconfig
===================================================================
--- linux.orig/drivers/char/Kconfig
+++ linux/drivers/char/Kconfig
@@ -704,9 +704,12 @@ config NVRAM
 	  To compile this driver as a module, choose M here: the
 	  module will be called nvram.
 
+comment "You are using the RTC framework, not the legacy CMOS RTC driver"
+	depends on RTC_DRV_CMOS
+
 config RTC
 	tristate "Enhanced Real Time Clock Support"
-	depends on !PPC && !PARISC && !IA64 && !M68K && !SPARC && !FRV && !ARM && !SUPERH && !S390
+	depends on !PPC && !PARISC && !IA64 && !M68K && !SPARC && !FRV && !ARM && !SUPERH && !S390 && !RTC_DRV_CMOS
 	---help---
 	  If you say Y here and create a character special file /dev/rtc with
 	  major number 10 and minor number 135 using mknod ("man mknod"), you
Index: linux/drivers/rtc/Kconfig
===================================================================
--- linux.orig/drivers/rtc/Kconfig
+++ linux/drivers/rtc/Kconfig
@@ -303,6 +303,7 @@ comment "Platform RTC drivers"
 config RTC_DRV_CMOS
 	tristate "PC-style 'CMOS'"
 	depends on X86 || ALPHA || ARM || M32R || ATARI || PPC || MIPS
+	default y if X86
 	help
 	  Say "yes" here to get direct support for the real time clock
 	  found in every PC or ACPI-based system, and some other boards.
Index: linux/kernel/power/Kconfig
===================================================================
--- linux.orig/kernel/power/Kconfig
+++ linux/kernel/power/Kconfig
@@ -104,6 +104,16 @@ config SUSPEND
 	  powered and thus its contents are preserved, such as the
 	  suspend-to-RAM state (e.g. the ACPI S3 state).
 
+config PM_TEST_SUSPEND
+	bool "Test suspend/resume and wakealarm during bootup"
+	depends on SUSPEND && PM_DEBUG && RTC_LIB=y
+	---help---
+	This option will suspend your machine during bootup, and make
+	it wake up a few seconds later using the RTC's wakeup alarm.
+
+	You probably want to have your system's RTC driver statically
+	linked, ensuring that it's available when this test runs.
+
 config SUSPEND_FREEZER
 	bool "Enable freezer for suspend to RAM/standby" \
 		if ARCH_WANTS_FREEZER_CONTROL || BROKEN
Index: linux/kernel/power/main.c
===================================================================
--- linux.orig/kernel/power/main.c
+++ linux/kernel/power/main.c
@@ -132,6 +132,52 @@ static inline int suspend_test(int level
 
 #ifdef CONFIG_SUSPEND
 
+#ifdef CONFIG_PM_TEST_SUSPEND
+
+/*
+ * We test the system suspend code by setting an RTC wakealarm a short
+ * time in the future, then suspending.  Suspending the devices won't
+ * normally take long ... some systems only need a few milliseconds.
+ *
+ * The time it takes is system-specific though, so when we test this
+ * during system bootup we allow a LOT of time.
+ */
+#define TEST_SUSPEND_SECONDS	5
+
+static unsigned long suspend_test_start_time;
+
+static void suspend_test_start(void)
+{
+	/* FIXME Use better timebase than "jiffies", ideally a clocksource.
+	 * What we want is a hardware counter that will work correctly even
+	 * during the irqs-are-off stages of the suspend/resume cycle...
+	 */
+	suspend_test_start_time = jiffies;
+}
+
+static void suspend_test_finish(const char *label)
+{
+	long nj = jiffies - suspend_test_start_time;
+	unsigned msec;
+
+	msec = jiffies_to_msecs((nj >= 0) ? nj : -nj);
+	pr_info("PM: %s took %d.%03d seconds\n", label,
+			msec / 1000, msec % 1000);
+	WARN_ON_ONCE(msec > ((TEST_SUSPEND_SECONDS+5) * 1000));
+}
+
+#else
+
+static void suspend_test_start(void)
+{
+}
+
+static void suspend_test_finish(const char *label)
+{
+}
+
+#endif
+
 /* This is just an arbitrary number */
 #define FREE_PAGE_NUMBER (100)
 
@@ -264,11 +310,14 @@ int suspend_devices_and_enter(suspend_st
 			goto Close;
 	}
 	suspend_console();
+
+	suspend_test_start();
 	error = device_suspend(PMSG_SUSPEND);
 	if (error) {
 		printk(KERN_ERR "PM: Some devices failed to suspend\n");
 		goto Resume_console;
 	}
+	suspend_test_finish("suspend devices");
 
 	if (suspend_test(TEST_DEVICES))
 		goto Resume_devices;
@@ -291,7 +340,9 @@ int suspend_devices_and_enter(suspend_st
 	if (suspend_ops->finish)
 		suspend_ops->finish();
  Resume_devices:
+	suspend_test_start();
 	device_resume();
+	suspend_test_finish("resume devices");
  Resume_console:
 	resume_console();
  Close:
@@ -515,3 +566,115 @@ static int __init pm_init(void)
 }
 
 core_initcall(pm_init);
+
+
+#ifdef CONFIG_PM_TEST_SUSPEND
+
+#include <linux/rtc.h>
+
+/*
+ * To test system suspend, we need a hands-off mechanism to resume the
+ * system.  RTCs with wakeup alarms are the the most common mechanism
+ * that's self-contained.
+ */
+
+static void __init test_wakealarm(struct rtc_device *rtc, suspend_state_t state)
+{
+	static char	err_readtime [] __initdata =
+		KERN_ERR "PM: can't read %s time, err %d\n";
+	static char	err_wakealarm [] __initdata =
+		KERN_ERR "PM: can't set %s wakealarm, err %d\n";
+	static char	err_suspend [] __initdata =
+		KERN_ERR "PM: suspend test failed, error %d\n";
+	static char	info_test [] __initdata =
+		KERN_INFO "PM: test RTC wakeup from '%s' suspend\n";
+
+	unsigned long		now;
+	struct rtc_wkalrm	alm;
+	int			status;
+
+	/* this may fail if the RTC hasn't been initialized */
+	status = rtc_read_time(rtc, &alm.time);
+	if (status < 0) {
+		printk(err_readtime, rtc->dev.bus_id, status);
+		return;
+	}
+	rtc_tm_to_time(&alm.time, &now);
+
+	memset(&alm, 0, sizeof alm);
+	rtc_time_to_tm(now + TEST_SUSPEND_SECONDS, &alm.time);
+	alm.enabled = true;
+
+	status = rtc_set_alarm(rtc, &alm);
+	if (status < 0) {
+		printk(err_wakealarm, rtc->dev.bus_id, status);
+		return;
+	}
+
+	if (state == PM_SUSPEND_MEM) {
+		printk(info_test, pm_states[state]);
+		status = pm_suspend(state);
+		if (status == -ENODEV)
+			state = PM_SUSPEND_STANDBY;
+	}
+	if (state == PM_SUSPEND_STANDBY) {
+		printk(info_test, pm_states[state]);
+		status = pm_suspend(state);
+	}
+	if (status < 0)
+		printk(err_suspend, status);
+}
+
+static int __init has_wakealarm(struct device *dev, void *name_ptr)
+{
+	struct rtc_device *candidate = to_rtc_device(dev);
+
+	if (!candidate->ops->set_alarm)
+		return 0;
+	if (!device_may_wakeup(candidate->dev.parent))
+		return 0;
+
+	*(char **)name_ptr = dev->bus_id;
+	return 1;
+}
+
+/*
+ * We normally test Suspend-to-RAM, with standby as a backup when
+ * the system doesn't support that state.  But we also need to be
+ * able to disable the powerup test, and tell it to ignore STR since
+ * the RTC may not work then.
+ */
+static suspend_state_t test_state __initdata = PM_SUSPEND_MEM;
+
+static int __init setup_test_suspend(char *value)
+{
+	/* FIXME accept "standby", etc */
+	test_state = PM_SUSPEND_ON;
+	return 0;
+}
+__setup("test_suspend", setup_test_suspend);
+
+static int __init test_suspend(void)
+{
+	static char	warn_no_rtc[] __initdata =
+		KERN_WARNING "PM: no wakealarm-capable RTC driver is ready\n";
+
+	char			*pony = NULL;
+	struct rtc_device	*rtc = NULL;
+
+	class_find_device(rtc_class, &pony, has_wakealarm);
+	if (pony)
+		rtc = rtc_class_open(pony);
+
+	if (rtc) {
+		if (test_state != PM_SUSPEND_ON)
+			test_wakealarm(rtc, test_state);
+		rtc_class_close(rtc);
+	} else
+		printk(warn_no_rtc);
+
+	return 0;
+}
+late_initcall(test_suspend);
+
+#endif /* CONFIG_PM_TEST_SUSPEND */


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

* Re: [PATCH 1/2] boot: increase stack size for kernel boot loader decompressor
  2008-04-08  8:23         ` Ingo Molnar
  2008-04-08 10:54           ` [PATCH] x86: cleanup boot-heap usage Alexander van Heukelum
  2008-04-08 14:56           ` [PATCH 1/2] boot: increase stack size for kernel boot loader decompressor Mike Travis
@ 2008-04-08 17:54           ` Yinghai Lu
  2008-04-09 15:08             ` Alexander van Heukelum
  2 siblings, 1 reply; 26+ messages in thread
From: Yinghai Lu @ 2008-04-08 17:54 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Alexander van Heukelum, Mike Travis, Thomas Gleixner,
	H. Peter Anvin, Andrew Morton, linux-kernel, heukelum

On Tue, Apr 8, 2008 at 1:23 AM, Ingo Molnar <mingo@elte.hu> wrote:
>
>  * Alexander van Heukelum <heukelum@mailshack.com> wrote:
>
>  > I did see that the malloc space that the inflate code is using is
>  > taken from _after_ the end of the bss. I don't see how this is
>  > protected from being used/overwritten. Changing the stack size changes
>  > the memory layout a bit... maybe you were so unlucky to create a
>  > vmlinux image that was just barely smaller than some threshold and
>  > increasing the stack size made the decompression/relocation area be
>  > located somewhere else?
>  >
>  > Test patch follows.
>
>  that's a really interesting theory.
>
>  FWIIW, i've been booting allyesconfig bzImages for a long time (with
>  only minimal amount of drivers disabled - mostly old ISA ones that
>  assume the presence of the real hardware), and they boot and work fine
>  on both 32-bit and 64-bit typical whitebox PCs. That means huge bzImages
>  that decompresses into a ~41 MB kernel image. I'd expect that to be a
>  rather severe test of the decompressor.

i don't that Alexander's patch is needed.

also because Alex move heap before _end,
we may need add some extra for buffer offset

        /* Replace the compressed data size with the uncompressed size */
        subl    input_len(%ebp), %ebx
        movl    output_len(%ebp), %eax
        addl    %eax, %ebx
        /* Add 8 bytes for every 32K input block */
        shrl    $12, %eax
        addl    %eax, %ebx
        /* Add 32K + 18 bytes of extra slack and align on a 4K boundary */
        addl    $(32768 + 18 + 4095), %ebx
        andl    $~4095, %ebx =============================> need add
heap size too.
....



        /* Replace the compressed data size with the uncompressed size */
        movl    input_len(%rip), %eax
        subq    %rax, %rbx
        movl    output_len(%rip), %eax
        addq    %rax, %rbx
        /* Add 8 bytes for every 32K input block */
        shrq    $12, %rax
        addq    %rax, %rbx
        /* Add 32K + 18 bytes of extra slack and align on a 4K boundary */
        addq    $(32768 + 18 + 4095), %rbx
=============================> need add heap size too.
        andq    $~4095, %rbx

do we need to move pgtable before _end?

YH

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

* Re: [PATCH] x86: cleanup boot-heap usage
  2008-04-08 10:54           ` [PATCH] x86: cleanup boot-heap usage Alexander van Heukelum
@ 2008-04-08 18:39             ` Yinghai Lu
  0 siblings, 0 replies; 26+ messages in thread
From: Yinghai Lu @ 2008-04-08 18:39 UTC (permalink / raw)
  To: Alexander van Heukelum, Eric W. Biederman
  Cc: Ingo Molnar, H. Peter Anvin, Mike Travis, Thomas Gleixner,
	Andrew Morton, linux-kernel, heukelum

On Tue, Apr 8, 2008 at 3:54 AM, Alexander van Heukelum
<heukelum@mailshack.com> wrote:
> The kernel decompressor wrapper uses memory located beyond the
>  end of the image. This might lead to hard to debug problems,
>  but even if it can be proven to be safe, it is at the very
>  least unclean. I don't see any advantages either, unless you
>  count it not being zeroed out as an advantage. This patch
>  moves the boot-heap area to the bss segment.
>
>  Signed-off-by: Alexander van Heukelum <heukelum@fastmail.fm>
>
>  ---
>
>  On Tue, Apr 08, 2008 at 10:23:54AM +0200, Ingo Molnar wrote:
>  > * Alexander van Heukelum <heukelum@mailshack.com> wrote:
>  > > I did see that the malloc space that the inflate code is using is
>  > > taken from _after_ the end of the bss. I don't see how this is
>  > > protected from being used/overwritten. Changing the stack size changes
>  > > the memory layout a bit... maybe you were so unlucky to create a
>  > > vmlinux image that was just barely smaller than some threshold and
>  > > increasing the stack size made the decompression/relocation area be
>  > > located somewhere else?
the compressed image is copied to end of buff ( with extra code size
for from relocated: in .text to _end)
and do the on possition decompressed. .text section is near end.

YH

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

* Re: [PATCH 1/2] boot: increase stack size for kernel boot loader decompressor
  2008-04-08 15:39               ` Ingo Molnar
@ 2008-04-08 19:09                 ` Mike Travis
  2008-04-08 21:48                 ` Mike Travis
  1 sibling, 0 replies; 26+ messages in thread
From: Mike Travis @ 2008-04-08 19:09 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Alexander van Heukelum, Thomas Gleixner, H. Peter Anvin,
	Andrew Morton, linux-kernel, heukelum

Ingo Molnar wrote:
> * Mike Travis <travis@sgi.com> wrote:
> 
>> Ingo Molnar wrote:
>>> * Alexander van Heukelum <heukelum@mailshack.com> wrote:
>>>
>>>> Hi Ingo,
>>>>
>>>> I see you have applied the following patch to x86#for-akpm. It was 
>>>> really ment for testing only. I think you ment to use this one 
>>>> instead?
>>> yep, i wanted to see how it holds up in testing - it's OK so far. I've 
>>> got your other, fuller one queued up meanwhile - it's not pushed out 
>>> yet.
>>>
>>> 	Ingo
>> I will try it out on my failing case as soon as I can...
> 
> more test results: i just booted an allyesconfig 64-bit (MAXSMP, etc.) 
> kernel on x86 native hardware successfully - that has Alexander's patch 
> included but not your boot tweak. (has all your other patches included)
> 
> would you expect a real 4K CPUs system to boot any differently? So early 
> during bootup all x86 hardware is just a uniprocessor, so i'd be 
> surprised if there was any difference.
> 
> [ in any case, if the tweak still makes a real difference for you we can 
>   still apply it because it does not hurt anyone - but lets try to avoid 
>   black voodoo tweaks as much as possible :) ]

Yes, my patch is not needed.  I booted the akpm2 config with 512 possible
cpus (8 real) on an Intel box with 8gig total ram.  It booted fine and is
running some cpuset and sched-domain tests now.

One problem though, even though it has slots for extra cpus to be brought
online there is no /sys/devices/cpu/cpuXX/online file to actually bring
them online.  This was shown in a simulated run I did with 64 real cpus
and 12 of them disabled.  They showed up in the 'possible' map but no
way to bring them online.  [Unless there's a trick I don't know about.
Nothing is mentioned in Documentation/cpu-hotplug.txt about this.]

> 
> btw,. booting up MAXSMP is pretty impressive:
> 
>   CONFIG_NR_CPUS=4096
> 
> shows how far Linux scalability has come :)
> 
> i've got a bugreport for you though: MAXSMP does not suspend+resume 
> correctly ;-) It gets this far:
> 
> [  146.348790] PM: Syncing filesystems ... done.
> [  146.353488] PM: Preparing system for mem sleep
> [  146.360204] Freezing user space processes ... (elapsed 0.00 seconds) done.
> [  146.367172] Freezing remaining freezable tasks ... (elapsed 0.93 seconds) done.
> [  147.309618] PM: Entering mem sleep
> [  147.313032] Suspending console(s)
> 
> then reboots spontaneously instead of resuming. (I use the 
> suspend+resume self-test feature below to conduct automated 
> suspend/resume tests.)
> 
> 	Ingo

I will try it out.  Yes, please send me any tests I can add to my suite.

Thanks!
Mike



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

* Re: [PATCH 1/2] boot: increase stack size for kernel boot loader decompressor
  2008-04-08 15:39               ` Ingo Molnar
  2008-04-08 19:09                 ` Mike Travis
@ 2008-04-08 21:48                 ` Mike Travis
  1 sibling, 0 replies; 26+ messages in thread
From: Mike Travis @ 2008-04-08 21:48 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Alexander van Heukelum, Thomas Gleixner, H. Peter Anvin,
	Andrew Morton, linux-kernel, heukelum

Ingo Molnar wrote:

> i've got a bugreport for you though: MAXSMP does not suspend+resume 
> correctly ;-) It gets this far:
> 
> [  146.348790] PM: Syncing filesystems ... done.
> [  146.353488] PM: Preparing system for mem sleep
> [  146.360204] Freezing user space processes ... (elapsed 0.00 seconds) done.
> [  146.367172] Freezing remaining freezable tasks ... (elapsed 0.93 seconds) done.
> [  147.309618] PM: Entering mem sleep
> [  147.313032] Suspending console(s)
> 
> then reboots spontaneously instead of resuming. (I use the 
> suspend+resume self-test feature below to conduct automated 
> suspend/resume tests.)

Here are my test results.  It worked fine on the Intel box, but
hung hard on the AMD box.  I'll do some further testing to narrow
it down.

Thanks,
Mike

------------------------------------------------------------
Intel box:

PM: test RTC wakeup from 'mem' suspend
PM: test RTC wakeup from 'standby' suspend
PM: Syncing filesystems ... done.
PM: Preparing system for standby sleep
Freezing user space processes ... (elapsed 0.00 seconds) done.
Freezing remaining freezable tasks ... (elapsed 0.00 seconds) done.
PM: Entering standby sleep
Suspending console(s)
        .
<whole lot of suspend messages deleted>
        .
processor ACPI0007:07: suspend
        .
        .
processor ACPI0007:00: suspend
        .
PM: suspend devices took 1.072 seconds
ACPI: Preparing to enter system sleep state S1
Disabling non-boot CPUs ...
CPU0 attaching NULL sched-domain.
        .
        .
CPU7 attaching NULL sched-domain.
CPU 1 is now offline
        .
        .
CPU 7 is now offline
SMP alternatives: switching to UP code
CPU0 attaching sched-domain:
 domain 0: span 0
  groups: 0
CPU7 is down
        .
        .
pci 0000:00:00.0: LATE suspend
Back to C!
pci 0000:00:00.0: EARLY resume
        .
        .
Enabling non-boot CPUs ...
CPU0 attaching NULL sched-domain.
SMP alternatives: switching to SMP code
Booting processor 1/4 ip 6000
Initializing CPU#1
        .
        .
CPU1 is up
        .
        .
CPU7 is up
        .
        .
processor ACPI0007:00: resuming
        .
        .
processor ACPI0007:07: resuming
        .
        .
PM: resume devices took 7.256 seconds
PM: Finishing wakeup.
Restarting tasks ... done.


------------------------------------------------------------
AMD box:

PM: test RTC wakeup from 'mem' suspend
PM: Syncing filesystems ... done.
PM: Preparing system for mem sleep
Freezing user space processes ... (elapsed 0.00 seconds) done.
Freezing remaining freezable tasks ... <7>PM: Adding info for No Bus:mouse0
PM: Adding info for No Bus:event3
PM: Adding info for ieee1394:00e0810000270e1d
PM: Adding info for No Bus:00e0810000270e1d
ieee1394: Host added: ID:BUS[0-00:1023]  GUID[00e0810000270e1d]
(elapsed 0.20 seconds) done.
PM: Entering mem sleep
Suspending console(s)

(and the system is hung hard, doesn't even accept sysreq input.)
------------------------------------------------------------

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

* Re: [PATCH 0/2] NR_CPUS: increase maximum NR_CPUS to 4096
  2008-04-05  1:30 [PATCH 0/2] NR_CPUS: increase maximum NR_CPUS to 4096 Mike Travis
  2008-04-05  1:30 ` [PATCH 1/2] boot: increase stack size for kernel boot loader decompressor Mike Travis
  2008-04-05  1:30 ` [PATCH 2/2] x86: Modify Kconfig to allow up to 4096 cpus Mike Travis
@ 2008-04-08 21:53 ` Yinghai Lu
  2008-04-08 22:03   ` Mike Travis
  2 siblings, 1 reply; 26+ messages in thread
From: Yinghai Lu @ 2008-04-08 21:53 UTC (permalink / raw)
  To: Mike Travis
  Cc: Ingo Molnar, Thomas Gleixner, H. Peter Anvin, Andrew Morton,
	linux-kernel

On Fri, Apr 4, 2008 at 6:30 PM, Mike Travis <travis@sgi.com> wrote:
>
>   * Increases the limit of NR_CPUS to 4096 and introduces a
>     boolean called "MAXSMP" which when set (e.g. "allyesconfig")
>     will set NR_CPUS = 4096 and NODES_SHIFT = 9 (512).
>
>     I've been running this config (4k NR_CPUS, 512 Max Nodes)
>     on an AMD box with 2 dual-cores and 4gb memory as well as an
>     Intel box with 4 single-core cpus and 8Mb.  I've also
>     successfully booted it in a simulated 2cpus/1Gb environment.
>
>  Based on:
>         git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
>     +   x86/latest          .../x86/linux-2.6-x86.git
>     +   sched-devel/latest  .../mingo/linux-2.6-sched-devel.git
>
>  Signed-off-by: Mike Travis <travis@sgi.com>

got

------------[ cut here ]------------
WARNING: at kernel/sched_fair.c:815 hrtick_start_fair+0x69/0x156()
Modules linked in:
Pid: 1, comm: swapper Not tainted
2.6.25-rc8-x86-latest.git-smp-01033-ga39ae31-dirty #77

Call Trace:
 [<ffffffff802596ce>] warn_on_slowpath+0x67/0x8e
 [<ffffffff8024b266>] hrtick_start_fair+0x69/0x156
 [<ffffffff8024a619>] ? dequeue_entity+0x2a/0xf8
 [<ffffffff8025547d>] dequeue_task_fair+0x5f/0x7e
 [<ffffffff80248ea3>] dequeue_task+0x22/0x44
 [<ffffffff80248efe>] deactivate_task+0x39/0x69
 [<ffffffff80a57c31>] schedule+0x1b9/0x5c5
 [<ffffffff80270dff>] ? autoremove_wake_function+0x20/0x5e
 [<ffffffff80a58338>] schedule_timeout+0x31/0xd7
 [<ffffffff8024db1a>] ? __wake_up+0x52/0x75
 [<ffffffff80a578a3>] wait_for_common+0x103/0x189
 [<ffffffff8024f29b>] ? default_wake_function+0x0/0x36
 [<ffffffff80a57a62>] wait_for_completion+0x2b/0x41
 [<ffffffff8026c0d2>] call_usermodehelper_exec+0x87/0xe5
 [<ffffffff80561073>] kobject_uevent_env+0x3d0/0x424
 [<ffffffff805610e5>] kobject_uevent+0x1e/0x34
 [<ffffffff805f2dbd>] device_add+0x2f9/0x494
 [<ffffffff805f2f80>] device_register+0x28/0x43
 [<ffffffff80577abf>] pcie_port_device_register+0x3f1/0x43e
 [<ffffffff80972165>] ? pcibios_set_master+0x8d/0xa8
 [<ffffffff80a24a1c>] pcie_portdrv_probe+0x79/0xbb
 [<ffffffff80574173>] pci_call_probe+0xe5/0x146
 [<ffffffff80574331>] pci_device_probe+0x64/0xa2
 [<ffffffff805f5946>] driver_probe_device+0xcf/0x16d
 [<ffffffff8031d708>] ? sysfs_addrm_finish+0x2f/0x22b
 [<ffffffff805f5b0b>] ? __driver_attach+0x0/0xbe
 [<ffffffff805f5b79>] __driver_attach+0x6e/0xbe
 [<ffffffff805f4999>] bus_for_each_dev+0x5e/0xa2
 [<ffffffff805f571f>] driver_attach+0x2f/0x45
 [<ffffffff805f5430>] bus_add_driver+0xc6/0x226
 [<ffffffff805f45a4>] ? bus_put+0x29/0x3f
 [<ffffffff805f5e66>] driver_register+0x6d/0xfc
 [<ffffffff805745fa>] __pci_register_driver+0x62/0xb0
 [<ffffffff818b25db>] pcie_portdrv_init+0x4a/0x72
 [<ffffffff81890bcf>] kernel_init+0x1b4/0x340
 [<ffffffff80225308>] child_rip+0xa/0x12
 [<ffffffff81890a1b>] ? kernel_init+0x0/0x340
 [<ffffffff802252fe>] ? child_rip+0x0/0x12

---[ end trace e26645195698f5cf ]---
BUG: unable to handle kernel NULL pointer dereference at 0000000000000148
IP: [<ffffffff8024b3cf>] pick_next_task_fair+0x7c/0xbb
PGD 0
Oops: 0000 [1] SMP
CPU 28
Modules linked in:
Pid: 1, comm: swapper Not tainted
2.6.25-rc8-x86-latest.git-smp-01033-ga39ae31-dirty #77
RIP: 0010:[<ffffffff8024b3cf>]  [<ffffffff8024b3cf>]
pick_next_task_fair+0x7c/0xbb
RSP: 0018:ffff81081cc5cd70  EFLAGS: 00010046
RAX: 0000000000000000 RBX: ffff81383c21a280 RCX: 0000000000000000
RDX: ffff81383c224080 RSI: ffff81383c224080 RDI: 0000000063e15417
RBP: ffff81081cc5cda0 R08: 0000000000000000 R09: ffff81383c224108
R10: 0000000000000001 R11: 0000000000000000 R12: 0000000000000000
R13: ffff81383c224080 R14: ffff81383c224080 R15: 000000000000001c
FS:  0000000000000000(0000) GS:ffff81401cc3c600(0000) knlGS:0000000000000000
CS:  0010 DS: 0018 ES: 0018 CR0: 000000008005003b
CR2: 0000000000000148 CR3: 0000000000201000 CR4: 00000000000006e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Process swapper (pid: 1, threadinfo ffff81081cc5c000, task ffff81401cc52000)
Stack:  ffff81081cc5cda0 0000000063e15417 ffffffff80a81840 0000000000000000
 00000000fffeecfd ffff81383c224080 ffff81081cc5ce70 ffffffff80a57d28
 ffff81081cc5ce00 ffff81081cc5ce20 ffffffff81963080 ffffffff81963080
Call Trace:
 [<ffffffff80a57d28>] schedule+0x2b0/0x5c5
 [<ffffffff80270dff>] ? autoremove_wake_function+0x20/0x5e
 [<ffffffff80a58338>] schedule_timeout+0x31/0xd7
 [<ffffffff8024db1a>] ? __wake_up+0x52/0x75
 [<ffffffff80a578a3>] wait_for_common+0x103/0x189
 [<ffffffff8024f29b>] ? default_wake_function+0x0/0x36
 [<ffffffff80a57a62>] wait_for_completion+0x2b/0x41
 [<ffffffff8026c0d2>] call_usermodehelper_exec+0x87/0xe5
 [<ffffffff80561073>] kobject_uevent_env+0x3d0/0x424
 [<ffffffff805610e5>] kobject_uevent+0x1e/0x34
 [<ffffffff805f2dbd>] device_add+0x2f9/0x494
 [<ffffffff805f2f80>] device_register+0x28/0x43
 [<ffffffff80577abf>] pcie_port_device_register+0x3f1/0x43e
 [<ffffffff80972165>] ? pcibios_set_master+0x8d/0xa8
 [<ffffffff80a24a1c>] pcie_portdrv_probe+0x79/0xbb
 [<ffffffff80574173>] pci_call_probe+0xe5/0x146
 [<ffffffff80574331>] pci_device_probe+0x64/0xa2
 [<ffffffff805f5946>] driver_probe_device+0xcf/0x16d
 [<ffffffff8031d708>] ? sysfs_addrm_finish+0x2f/0x22b
 [<ffffffff805f5b0b>] ? __driver_attach+0x0/0xbe
 [<ffffffff805f5b79>] __driver_attach+0x6e/0xbe
 [<ffffffff805f4999>] bus_for_each_dev+0x5e/0xa2
 [<ffffffff805f571f>] driver_attach+0x2f/0x45
 [<ffffffff805f5430>] bus_add_driver+0xc6/0x226
 [<ffffffff805f45a4>] ? bus_put+0x29/0x3f
 [<ffffffff805f5e66>] driver_register+0x6d/0xfc
 [<ffffffff805745fa>] __pci_register_driver+0x62/0xb0
 [<ffffffff818b25db>] pcie_portdrv_init+0x4a/0x72
 [<ffffffff81890bcf>] kernel_init+0x1b4/0x340
 [<ffffffff80225308>] child_rip+0xa/0x12
 [<ffffffff81890a1b>] ? kernel_init+0x0/0x340
 [<ffffffff802252fe>] ? child_rip+0x0/0x12


Code: 24 40 78 1c 8b 3d 36 05 b3 00 48 89 da be 00 04 00 00 e8 7a eb
ff ff 49 39 c6 7f 04 4c 8b 63 48 4c 89 e6 4
8 89 df e8 29 f1 ff ff <49> 8b 9c 24 48 01 00 00 48 85 db 75 a5 49 8d
5c 24 c8 4c 89 ef
RIP  [<ffffffff8024b3cf>] pick_next_task_fair+0x7c/0xbb
 RSP <ffff81081cc5cd70>
CR2: 0000000000000148
---[ end trace e26645195698f5cf ]---

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

* Re: [PATCH 0/2] NR_CPUS: increase maximum NR_CPUS to 4096
  2008-04-08 21:53 ` [PATCH 0/2] NR_CPUS: increase maximum NR_CPUS to 4096 Yinghai Lu
@ 2008-04-08 22:03   ` Mike Travis
  2008-04-08 22:32     ` Yinghai Lu
  0 siblings, 1 reply; 26+ messages in thread
From: Mike Travis @ 2008-04-08 22:03 UTC (permalink / raw)
  To: Yinghai Lu
  Cc: Ingo Molnar, Thomas Gleixner, H. Peter Anvin, Andrew Morton,
	linux-kernel

Yinghai Lu wrote:
> On Fri, Apr 4, 2008 at 6:30 PM, Mike Travis <travis@sgi.com> wrote:
>>   * Increases the limit of NR_CPUS to 4096 and introduces a
>>     boolean called "MAXSMP" which when set (e.g. "allyesconfig")
>>     will set NR_CPUS = 4096 and NODES_SHIFT = 9 (512).
>>
>>     I've been running this config (4k NR_CPUS, 512 Max Nodes)
>>     on an AMD box with 2 dual-cores and 4gb memory as well as an
>>     Intel box with 4 single-core cpus and 8Mb.  I've also
>>     successfully booted it in a simulated 2cpus/1Gb environment.
>>
>>  Based on:
>>         git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
>>     +   x86/latest          .../x86/linux-2.6-x86.git
>>     +   sched-devel/latest  .../mingo/linux-2.6-sched-devel.git
>>
>>  Signed-off-by: Mike Travis <travis@sgi.com>
> 
> got

Hi Yinghai,

Thanks for the feedback!  Would you send me your config file and
other details (like cpu type/mem size/etc.) and I'll attempt
to reproduce the failure.

(My problem is that only the AMD box is a real "workstation", the
Intel box is a dual quad-cpu server so it's really deficient in I/O.)

Thanks,
Mike
> 
> ------------[ cut here ]------------
> WARNING: at kernel/sched_fair.c:815 hrtick_start_fair+0x69/0x156()
> Modules linked in:
> Pid: 1, comm: swapper Not tainted
> 2.6.25-rc8-x86-latest.git-smp-01033-ga39ae31-dirty #77
> 
> Call Trace:
>  [<ffffffff802596ce>] warn_on_slowpath+0x67/0x8e
>  [<ffffffff8024b266>] hrtick_start_fair+0x69/0x156
>  [<ffffffff8024a619>] ? dequeue_entity+0x2a/0xf8
>  [<ffffffff8025547d>] dequeue_task_fair+0x5f/0x7e
>  [<ffffffff80248ea3>] dequeue_task+0x22/0x44
>  [<ffffffff80248efe>] deactivate_task+0x39/0x69
>  [<ffffffff80a57c31>] schedule+0x1b9/0x5c5
>  [<ffffffff80270dff>] ? autoremove_wake_function+0x20/0x5e
>  [<ffffffff80a58338>] schedule_timeout+0x31/0xd7
>  [<ffffffff8024db1a>] ? __wake_up+0x52/0x75
>  [<ffffffff80a578a3>] wait_for_common+0x103/0x189
>  [<ffffffff8024f29b>] ? default_wake_function+0x0/0x36
>  [<ffffffff80a57a62>] wait_for_completion+0x2b/0x41
>  [<ffffffff8026c0d2>] call_usermodehelper_exec+0x87/0xe5
>  [<ffffffff80561073>] kobject_uevent_env+0x3d0/0x424
>  [<ffffffff805610e5>] kobject_uevent+0x1e/0x34
>  [<ffffffff805f2dbd>] device_add+0x2f9/0x494
>  [<ffffffff805f2f80>] device_register+0x28/0x43
>  [<ffffffff80577abf>] pcie_port_device_register+0x3f1/0x43e
>  [<ffffffff80972165>] ? pcibios_set_master+0x8d/0xa8
>  [<ffffffff80a24a1c>] pcie_portdrv_probe+0x79/0xbb
>  [<ffffffff80574173>] pci_call_probe+0xe5/0x146
>  [<ffffffff80574331>] pci_device_probe+0x64/0xa2
>  [<ffffffff805f5946>] driver_probe_device+0xcf/0x16d
>  [<ffffffff8031d708>] ? sysfs_addrm_finish+0x2f/0x22b
>  [<ffffffff805f5b0b>] ? __driver_attach+0x0/0xbe
>  [<ffffffff805f5b79>] __driver_attach+0x6e/0xbe
>  [<ffffffff805f4999>] bus_for_each_dev+0x5e/0xa2
>  [<ffffffff805f571f>] driver_attach+0x2f/0x45
>  [<ffffffff805f5430>] bus_add_driver+0xc6/0x226
>  [<ffffffff805f45a4>] ? bus_put+0x29/0x3f
>  [<ffffffff805f5e66>] driver_register+0x6d/0xfc
>  [<ffffffff805745fa>] __pci_register_driver+0x62/0xb0
>  [<ffffffff818b25db>] pcie_portdrv_init+0x4a/0x72
>  [<ffffffff81890bcf>] kernel_init+0x1b4/0x340
>  [<ffffffff80225308>] child_rip+0xa/0x12
>  [<ffffffff81890a1b>] ? kernel_init+0x0/0x340
>  [<ffffffff802252fe>] ? child_rip+0x0/0x12
> 
> ---[ end trace e26645195698f5cf ]---
> BUG: unable to handle kernel NULL pointer dereference at 0000000000000148
> IP: [<ffffffff8024b3cf>] pick_next_task_fair+0x7c/0xbb
> PGD 0
> Oops: 0000 [1] SMP
> CPU 28
> Modules linked in:
> Pid: 1, comm: swapper Not tainted
> 2.6.25-rc8-x86-latest.git-smp-01033-ga39ae31-dirty #77
> RIP: 0010:[<ffffffff8024b3cf>]  [<ffffffff8024b3cf>]
> pick_next_task_fair+0x7c/0xbb
> RSP: 0018:ffff81081cc5cd70  EFLAGS: 00010046
> RAX: 0000000000000000 RBX: ffff81383c21a280 RCX: 0000000000000000
> RDX: ffff81383c224080 RSI: ffff81383c224080 RDI: 0000000063e15417
> RBP: ffff81081cc5cda0 R08: 0000000000000000 R09: ffff81383c224108
> R10: 0000000000000001 R11: 0000000000000000 R12: 0000000000000000
> R13: ffff81383c224080 R14: ffff81383c224080 R15: 000000000000001c
> FS:  0000000000000000(0000) GS:ffff81401cc3c600(0000) knlGS:0000000000000000
> CS:  0010 DS: 0018 ES: 0018 CR0: 000000008005003b
> CR2: 0000000000000148 CR3: 0000000000201000 CR4: 00000000000006e0
> DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
> Process swapper (pid: 1, threadinfo ffff81081cc5c000, task ffff81401cc52000)
> Stack:  ffff81081cc5cda0 0000000063e15417 ffffffff80a81840 0000000000000000
>  00000000fffeecfd ffff81383c224080 ffff81081cc5ce70 ffffffff80a57d28
>  ffff81081cc5ce00 ffff81081cc5ce20 ffffffff81963080 ffffffff81963080
> Call Trace:
>  [<ffffffff80a57d28>] schedule+0x2b0/0x5c5
>  [<ffffffff80270dff>] ? autoremove_wake_function+0x20/0x5e
>  [<ffffffff80a58338>] schedule_timeout+0x31/0xd7
>  [<ffffffff8024db1a>] ? __wake_up+0x52/0x75
>  [<ffffffff80a578a3>] wait_for_common+0x103/0x189
>  [<ffffffff8024f29b>] ? default_wake_function+0x0/0x36
>  [<ffffffff80a57a62>] wait_for_completion+0x2b/0x41
>  [<ffffffff8026c0d2>] call_usermodehelper_exec+0x87/0xe5
>  [<ffffffff80561073>] kobject_uevent_env+0x3d0/0x424
>  [<ffffffff805610e5>] kobject_uevent+0x1e/0x34
>  [<ffffffff805f2dbd>] device_add+0x2f9/0x494
>  [<ffffffff805f2f80>] device_register+0x28/0x43
>  [<ffffffff80577abf>] pcie_port_device_register+0x3f1/0x43e
>  [<ffffffff80972165>] ? pcibios_set_master+0x8d/0xa8
>  [<ffffffff80a24a1c>] pcie_portdrv_probe+0x79/0xbb
>  [<ffffffff80574173>] pci_call_probe+0xe5/0x146
>  [<ffffffff80574331>] pci_device_probe+0x64/0xa2
>  [<ffffffff805f5946>] driver_probe_device+0xcf/0x16d
>  [<ffffffff8031d708>] ? sysfs_addrm_finish+0x2f/0x22b
>  [<ffffffff805f5b0b>] ? __driver_attach+0x0/0xbe
>  [<ffffffff805f5b79>] __driver_attach+0x6e/0xbe
>  [<ffffffff805f4999>] bus_for_each_dev+0x5e/0xa2
>  [<ffffffff805f571f>] driver_attach+0x2f/0x45
>  [<ffffffff805f5430>] bus_add_driver+0xc6/0x226
>  [<ffffffff805f45a4>] ? bus_put+0x29/0x3f
>  [<ffffffff805f5e66>] driver_register+0x6d/0xfc
>  [<ffffffff805745fa>] __pci_register_driver+0x62/0xb0
>  [<ffffffff818b25db>] pcie_portdrv_init+0x4a/0x72
>  [<ffffffff81890bcf>] kernel_init+0x1b4/0x340
>  [<ffffffff80225308>] child_rip+0xa/0x12
>  [<ffffffff81890a1b>] ? kernel_init+0x0/0x340
>  [<ffffffff802252fe>] ? child_rip+0x0/0x12
> 
> 
> Code: 24 40 78 1c 8b 3d 36 05 b3 00 48 89 da be 00 04 00 00 e8 7a eb
> ff ff 49 39 c6 7f 04 4c 8b 63 48 4c 89 e6 4
> 8 89 df e8 29 f1 ff ff <49> 8b 9c 24 48 01 00 00 48 85 db 75 a5 49 8d
> 5c 24 c8 4c 89 ef
> RIP  [<ffffffff8024b3cf>] pick_next_task_fair+0x7c/0xbb
>  RSP <ffff81081cc5cd70>
> CR2: 0000000000000148
> ---[ end trace e26645195698f5cf ]---


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

* Re: [PATCH 0/2] NR_CPUS: increase maximum NR_CPUS to 4096
  2008-04-08 22:03   ` Mike Travis
@ 2008-04-08 22:32     ` Yinghai Lu
  0 siblings, 0 replies; 26+ messages in thread
From: Yinghai Lu @ 2008-04-08 22:32 UTC (permalink / raw)
  To: Mike Travis
  Cc: Ingo Molnar, Thomas Gleixner, H. Peter Anvin, Andrew Morton,
	linux-kernel

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

On Tue, Apr 8, 2008 at 3:03 PM, Mike Travis <travis@sgi.com> wrote:
> Yinghai Lu wrote:
>  > On Fri, Apr 4, 2008 at 6:30 PM, Mike Travis <travis@sgi.com> wrote:
>  >>   * Increases the limit of NR_CPUS to 4096 and introduces a
>  >>     boolean called "MAXSMP" which when set (e.g. "allyesconfig")
>  >>     will set NR_CPUS = 4096 and NODES_SHIFT = 9 (512).
>  >>
>  >>     I've been running this config (4k NR_CPUS, 512 Max Nodes)
>  >>     on an AMD box with 2 dual-cores and 4gb memory as well as an
>  >>     Intel box with 4 single-core cpus and 8Mb.  I've also
>  >>     successfully booted it in a simulated 2cpus/1Gb environment.
>  >>
>  >>  Based on:
>  >>         git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
>  >>     +   x86/latest          .../x86/linux-2.6-x86.git
>  >>     +   sched-devel/latest  .../mingo/linux-2.6-sched-devel.git
>  >>
>  >>  Signed-off-by: Mike Travis <travis@sgi.com>
>  >
>  > got
>
>  Hi Yinghai,
>
>  Thanks for the feedback!  Would you send me your config file and
>  other details (like cpu type/mem size/etc.) and I'll attempt
>  to reproduce the failure.
>
>  (My problem is that only the AMD box is a real "workstation", the
>  Intel box is a dual quad-cpu server so it's really deficient in I/O.)
>

AMD quadcore eight sockets and 256G RAM

if I set NR_CPUS to 128 instead of 4096 it will be ok.

YH

[-- Attachment #2: config.4096 --]
[-- Type: application/octet-stream, Size: 48769 bytes --]

#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.25-rc8
# Tue Apr  8 15:33:19 2008
#
CONFIG_64BIT=y
# CONFIG_X86_32 is not set
CONFIG_X86_64=y
CONFIG_X86=y
# CONFIG_GENERIC_LOCKBREAK is not set
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_SEMAPHORE_SLEEPERS=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_FIND_FIRST_BIT=y
CONFIG_GENERIC_FIND_NEXT_BIT=y
CONFIG_GENERIC_HWEIGHT=y
# CONFIG_GENERIC_GPIO is not set
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
CONFIG_DMI=y
CONFIG_RWSEM_GENERIC_SPINLOCK=y
# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
# CONFIG_ARCH_HAS_ILOG2_U32 is not set
# CONFIG_ARCH_HAS_ILOG2_U64 is not set
CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_GENERIC_TIME_VSYSCALL=y
CONFIG_ARCH_HAS_CPU_RELAX=y
CONFIG_HAVE_SETUP_PER_CPU_AREA=y
CONFIG_HAVE_CPUMASK_OF_CPU_MAP=y
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y
CONFIG_ZONE_DMA32=y
CONFIG_ARCH_POPULATES_NODE_MAP=y
CONFIG_AUDIT_ARCH=y
CONFIG_ARCH_SUPPORTS_AOUT=y
CONFIG_GENERIC_HARDIRQS=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_GENERIC_PENDING_IRQ=y
CONFIG_X86_SMP=y
CONFIG_X86_64_SMP=y
CONFIG_X86_HT=y
CONFIG_X86_TRAMPOLINE=y
# CONFIG_KTIME_SCALAR is not set
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"

#
# General setup
#
CONFIG_EXPERIMENTAL=y
CONFIG_LOCK_KERNEL=y
CONFIG_INIT_ENV_ARG_LIMIT=32
CONFIG_LOCALVERSION="-smp"
CONFIG_LOCALVERSION_AUTO=y
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
CONFIG_SYSVIPC_SYSCTL=y
CONFIG_POSIX_MQUEUE=y
CONFIG_BSD_PROCESS_ACCT=y
# CONFIG_BSD_PROCESS_ACCT_V3 is not set
CONFIG_TASKSTATS=y
# CONFIG_TASK_DELAY_ACCT is not set
# CONFIG_TASK_XACCT is not set
# CONFIG_AUDIT is not set
CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
CONFIG_LOG_BUF_SHIFT=19
CONFIG_CGROUPS=y
# CONFIG_CGROUP_DEBUG is not set
CONFIG_CGROUP_NS=y
CONFIG_CPUSETS=y
CONFIG_GROUP_SCHED=y
CONFIG_FAIR_GROUP_SCHED=y
CONFIG_RT_GROUP_SCHED=y
CONFIG_USER_SCHED=y
# CONFIG_CGROUP_SCHED is not set
CONFIG_CGROUP_CPUACCT=y
CONFIG_RESOURCE_COUNTERS=y
# CONFIG_CGROUP_MEM_RES_CTLR is not set
# CONFIG_SYSFS_DEPRECATED_V2 is not set
CONFIG_PROC_PID_CPUSET=y
CONFIG_RELAY=y
CONFIG_NAMESPACES=y
CONFIG_UTS_NS=y
CONFIG_IPC_NS=y
CONFIG_USER_NS=y
CONFIG_PID_NS=y
CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE="/home/yhlu/xx/xx/kernel/default-files /home/yhlu/xx/xx/kernel/root"
CONFIG_INITRAMFS_ROOT_UID=0
CONFIG_INITRAMFS_ROOT_GID=0
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SYSCTL=y
# CONFIG_EMBEDDED is not set
CONFIG_UID16=y
CONFIG_SYSCTL_SYSCALL=y
CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y
# CONFIG_KALLSYMS_EXTRA_PASS is not set
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_COMPAT_BRK=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_ANON_INODES=y
CONFIG_EPOLL=y
CONFIG_SIGNALFD=y
CONFIG_TIMERFD=y
CONFIG_EVENTFD=y
CONFIG_SHMEM=y
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_SLUB_DEBUG=y
# CONFIG_SLAB is not set
CONFIG_SLUB=y
# CONFIG_SLOB is not set
# CONFIG_PROFILING is not set
CONFIG_MARKERS=y
CONFIG_HAVE_OPROFILE=y
CONFIG_KPROBES=y
CONFIG_KRETPROBES=y
CONFIG_HAVE_KPROBES=y
CONFIG_HAVE_KRETPROBES=y
CONFIG_PROC_PAGE_MONITOR=y
CONFIG_SLABINFO=y
CONFIG_RT_MUTEXES=y
# CONFIG_TINY_SHMEM is not set
CONFIG_BASE_SMALL=0
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
CONFIG_MODULE_FORCE_UNLOAD=y
# CONFIG_MODVERSIONS is not set
# CONFIG_MODULE_SRCVERSION_ALL is not set
# CONFIG_KMOD is not set
CONFIG_STOP_MACHINE=y
CONFIG_BLOCK=y
# CONFIG_BLK_DEV_IO_TRACE is not set
CONFIG_BLK_DEV_BSG=y
CONFIG_BLOCK_COMPAT=y

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

#
# Processor type and features
#
CONFIG_TICK_ONESHOT=y
CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
CONFIG_SMP=y
CONFIG_X86_PC=y
# CONFIG_X86_ELAN is not set
# CONFIG_X86_VOYAGER is not set
# CONFIG_X86_NUMAQ is not set
# CONFIG_X86_SUMMIT is not set
# CONFIG_X86_BIGSMP is not set
# CONFIG_X86_VISWS is not set
# CONFIG_X86_GENERICARCH is not set
# CONFIG_X86_ES7000 is not set
# CONFIG_X86_RDC321X is not set
# CONFIG_X86_VSMP is not set
# CONFIG_PARAVIRT_GUEST is not set
CONFIG_MEMTEST_BOOTPARAM=y
CONFIG_MEMTEST_BOOTPARAM_VALUE=0
# CONFIG_M386 is not set
# CONFIG_M486 is not set
# CONFIG_M586 is not set
# CONFIG_M586TSC is not set
# CONFIG_M586MMX is not set
# CONFIG_M686 is not set
# CONFIG_MPENTIUMII is not set
# CONFIG_MPENTIUMIII is not set
# CONFIG_MPENTIUMM is not set
# CONFIG_MPENTIUM4 is not set
# CONFIG_MK6 is not set
# CONFIG_MK7 is not set
# CONFIG_MK8 is not set
# CONFIG_MCRUSOE is not set
# CONFIG_MEFFICEON is not set
# CONFIG_MWINCHIPC6 is not set
# CONFIG_MWINCHIP2 is not set
# CONFIG_MWINCHIP3D is not set
# CONFIG_MGEODEGX1 is not set
# CONFIG_MGEODE_LX is not set
# CONFIG_MCYRIXIII is not set
# CONFIG_MVIAC3_2 is not set
# CONFIG_MVIAC7 is not set
# CONFIG_MPSC is not set
# CONFIG_MCORE2 is not set
CONFIG_GENERIC_CPU=y
CONFIG_X86_L1_CACHE_BYTES=128
CONFIG_X86_INTERNODE_CACHE_BYTES=128
CONFIG_X86_CMPXCHG=y
CONFIG_X86_L1_CACHE_SHIFT=7
CONFIG_X86_GOOD_APIC=y
CONFIG_X86_TSC=y
CONFIG_X86_CMOV=y
CONFIG_X86_MINIMUM_CPU_FAMILY=64
CONFIG_X86_DEBUGCTLMSR=y
CONFIG_HPET_TIMER=y
CONFIG_HPET_EMULATE_RTC=y
CONFIG_GART_IOMMU=y
# CONFIG_CALGARY_IOMMU is not set
CONFIG_IOMMU_HELPER=y
CONFIG_SWIOTLB=y
# CONFIG_MAXSMP is not set
CONFIG_NR_CPUS=4096
# 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_MCE=y
CONFIG_X86_MCE_INTEL=y
CONFIG_X86_MCE_AMD=y
# CONFIG_I8K is not set
# CONFIG_MICROCODE is not set
CONFIG_X86_MSR=y
CONFIG_X86_CPUID=y
CONFIG_NUMA=y
CONFIG_K8_NUMA=y
CONFIG_X86_64_ACPI_NUMA=y
# CONFIG_NUMA_EMU is not set
CONFIG_NODES_SHIFT=6
CONFIG_ARCH_SPARSEMEM_DEFAULT=y
CONFIG_ARCH_SPARSEMEM_ENABLE=y
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
CONFIG_SELECT_MEMORY_MODEL=y
# CONFIG_FLATMEM_MANUAL is not set
# CONFIG_DISCONTIGMEM_MANUAL is not set
CONFIG_SPARSEMEM_MANUAL=y
CONFIG_SPARSEMEM=y
CONFIG_NEED_MULTIPLE_NODES=y
CONFIG_HAVE_MEMORY_PRESENT=y
# CONFIG_SPARSEMEM_STATIC is not set
CONFIG_SPARSEMEM_EXTREME=y
CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
CONFIG_SPARSEMEM_VMEMMAP=y
# CONFIG_MEMORY_HOTPLUG is not set
CONFIG_SPLIT_PTLOCK_CPUS=4
CONFIG_MIGRATION=y
CONFIG_RESOURCES_64BIT=y
CONFIG_ZONE_DMA_FLAG=1
CONFIG_BOUNCE=y
CONFIG_VIRT_TO_BUS=y
CONFIG_MTRR=y
# CONFIG_X86_PAT is not set
# CONFIG_EFI is not set
CONFIG_SECCOMP=y
CONFIG_CC_STACKPROTECTOR_ALL=y
CONFIG_CC_STACKPROTECTOR=y
# 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=y
CONFIG_CRASH_DUMP=y
CONFIG_PHYSICAL_START=0x200000
CONFIG_RELOCATABLE=y
CONFIG_PHYSICAL_ALIGN=0x200000
CONFIG_HOTPLUG_CPU=y
CONFIG_COMPAT_VDSO=y
CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y

#
# Power management options
#
CONFIG_PM=y
# CONFIG_PM_LEGACY is not set
# CONFIG_PM_DEBUG is not set
CONFIG_PM_SLEEP_SMP=y
CONFIG_PM_SLEEP=y
CONFIG_SUSPEND=y
CONFIG_SUSPEND_FREEZER=y
# CONFIG_HIBERNATION is not set
CONFIG_ACPI=y
CONFIG_ACPI_SLEEP=y
# CONFIG_ACPI_PROCFS is not set
# CONFIG_ACPI_PROCFS_POWER is not set
CONFIG_ACPI_SYSFS_POWER=y
# CONFIG_ACPI_PROC_EVENT is not set
CONFIG_ACPI_AC=y
CONFIG_ACPI_BATTERY=y
CONFIG_ACPI_BUTTON=y
CONFIG_ACPI_FAN=y
CONFIG_ACPI_DOCK=y
# CONFIG_ACPI_BAY is not set
CONFIG_ACPI_PROCESSOR=y
CONFIG_ACPI_HOTPLUG_CPU=y
CONFIG_ACPI_THERMAL=y
CONFIG_ACPI_NUMA=y
# CONFIG_ACPI_WMI is not set
# CONFIG_ACPI_ASUS is not set
# CONFIG_ACPI_TOSHIBA is not set
CONFIG_ACPI_CUSTOM_DSDT_FILE=""
# CONFIG_ACPI_CUSTOM_DSDT is not set
CONFIG_ACPI_BLACKLIST_YEAR=0
CONFIG_ACPI_DEBUG=y
# CONFIG_ACPI_DEBUG_FUNC_TRACE is not set
CONFIG_ACPI_EC=y
CONFIG_ACPI_POWER=y
CONFIG_ACPI_SYSTEM=y
CONFIG_X86_PM_TIMER=y
CONFIG_ACPI_CONTAINER=y
# CONFIG_ACPI_SBS is not set

#
# CPU Frequency scaling
#
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_TABLE=y
# CONFIG_CPU_FREQ_DEBUG is not set
CONFIG_CPU_FREQ_STAT=y
# CONFIG_CPU_FREQ_STAT_DETAILS is not set
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set

#
# CPUFreq processor drivers
#
CONFIG_X86_ACPI_CPUFREQ=y
CONFIG_X86_POWERNOW_K8=y
CONFIG_X86_POWERNOW_K8_ACPI=y
# CONFIG_X86_SPEEDSTEP_CENTRINO is not set
# CONFIG_X86_P4_CLOCKMOD is not set

#
# shared options
#
# CONFIG_X86_ACPI_CPUFREQ_PROC_INTF is not set
# CONFIG_X86_SPEEDSTEP_LIB is not set
# CONFIG_CPU_IDLE is not set

#
# Bus options (PCI etc.)
#
CONFIG_PCI=y
CONFIG_PCI_DIRECT=y
CONFIG_PCI_MMCONFIG=y
CONFIG_PCI_DOMAINS=y
# CONFIG_DMAR is not set
CONFIG_PCIEPORTBUS=y
CONFIG_HOTPLUG_PCI_PCIE=y
CONFIG_PCIEAER=y
CONFIG_ARCH_SUPPORTS_MSI=y
CONFIG_PCI_MSI=y
# CONFIG_PCI_LEGACY is not set
CONFIG_PCI_DEBUG=y
CONFIG_HT_IRQ=y
CONFIG_ISA_DMA_API=y
CONFIG_K8_NB=y
# CONFIG_PCCARD is not set
CONFIG_HOTPLUG_PCI=y
# CONFIG_HOTPLUG_PCI_FAKE is not set
CONFIG_HOTPLUG_PCI_ACPI=y
# CONFIG_HOTPLUG_PCI_ACPI_IBM is not set
# CONFIG_HOTPLUG_PCI_CPCI is not set
# CONFIG_HOTPLUG_PCI_SHPC is not set

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

#
# Networking
#
CONFIG_NET=y

#
# Networking options
#
CONFIG_PACKET=y
CONFIG_PACKET_MMAP=y
CONFIG_UNIX=y
# CONFIG_NET_KEY is not set
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_FIB_HASH=y
CONFIG_IP_PNP=y
CONFIG_IP_PNP_DHCP=y
CONFIG_IP_PNP_BOOTP=y
CONFIG_IP_PNP_RARP=y
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
# CONFIG_IP_MROUTE is not set
# CONFIG_ARPD is not set
# CONFIG_SYN_COOKIES is not set
# 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 is not set
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
# CONFIG_INET_XFRM_MODE_BEET is not set
CONFIG_INET_LRO=y
CONFIG_INET_DIAG=y
CONFIG_INET_TCP_DIAG=y
# CONFIG_TCP_CONG_ADVANCED is not set
CONFIG_TCP_CONG_CUBIC=y
CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_TCP_MD5SIG is not set
# CONFIG_IPV6 is not set
# CONFIG_INET6_XFRM_TUNNEL is not set
# CONFIG_INET6_TUNNEL is not set
# CONFIG_NETWORK_SECMARK is not set
# CONFIG_NETFILTER is not set
# CONFIG_IP_DCCP is not set
CONFIG_IP_SCTP=y
# CONFIG_SCTP_DBG_MSG is not set
# CONFIG_SCTP_DBG_OBJCNT is not set
# CONFIG_SCTP_HMAC_NONE is not set
# CONFIG_SCTP_HMAC_SHA1 is not set
CONFIG_SCTP_HMAC_MD5=y
# CONFIG_TIPC is not set
# CONFIG_ATM is not set
# CONFIG_BRIDGE is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
# CONFIG_LLC2 is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
# CONFIG_NET_SCHED is not set

#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_NET_TCPPROBE is not set
# CONFIG_HAMRADIO is not set
# CONFIG_CAN is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
# CONFIG_AF_RXRPC is not set

#
# Wireless
#
# CONFIG_CFG80211 is not set
# CONFIG_WIRELESS_EXT is not set
# CONFIG_MAC80211 is not set
# CONFIG_IEEE80211 is not set
# CONFIG_RFKILL is not set
# CONFIG_NET_9P is not set

#
# Device Drivers
#

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

#
# Protocols
#
CONFIG_PNPACPI=y
CONFIG_BLK_DEV=y
# CONFIG_BLK_DEV_FD is not set
# CONFIG_BLK_CPQ_DA is not set
# CONFIG_BLK_CPQ_CISS_DA is not set
# CONFIG_BLK_DEV_DAC960 is not set
# CONFIG_BLK_DEV_UMEM is not set
# CONFIG_BLK_DEV_COW_COMMON is not 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=65536
# CONFIG_BLK_DEV_XIP is not set
# CONFIG_CDROM_PKTCDVD is not set
CONFIG_ATA_OVER_ETH=y
CONFIG_MISC_DEVICES=y
# CONFIG_IBM_ASM is not set
# CONFIG_PHANTOM is not set
# CONFIG_EEPROM_93CX6 is not set
# CONFIG_SGI_IOC4 is not set
CONFIG_TIFM_CORE=y
CONFIG_TIFM_7XX1=y
# CONFIG_SONY_LAPTOP is not set
# CONFIG_THINKPAD_ACPI is not set
# CONFIG_INTEL_MENLOW is not set
CONFIG_ENCLOSURE_SERVICES=y
CONFIG_HAVE_IDE=y
# CONFIG_IDE is not set

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

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

#
# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
#
CONFIG_SCSI_MULTI_LUN=y
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_LOGGING=y
# CONFIG_SCSI_SCAN_ASYNC is not set
CONFIG_SCSI_WAIT_SCAN=m

#
# SCSI Transports
#
CONFIG_SCSI_SPI_ATTRS=y
CONFIG_SCSI_FC_ATTRS=y
CONFIG_SCSI_FC_TGT_ATTRS=y
CONFIG_SCSI_ISCSI_ATTRS=y
CONFIG_SCSI_SAS_ATTRS=y
CONFIG_SCSI_SAS_LIBSAS=y
CONFIG_SCSI_SAS_ATA=y
CONFIG_SCSI_SAS_HOST_SMP=y
# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set
CONFIG_SCSI_SRP_ATTRS=y
CONFIG_SCSI_SRP_TGT_ATTRS=y
CONFIG_SCSI_LOWLEVEL=y
CONFIG_ISCSI_TCP=y
# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
# CONFIG_SCSI_3W_9XXX is not set
# CONFIG_SCSI_ACARD is not set
CONFIG_SCSI_AACRAID=y
CONFIG_SCSI_AIC7XXX=y
CONFIG_AIC7XXX_CMDS_PER_DEVICE=32
CONFIG_AIC7XXX_RESET_DELAY_MS=5000
# CONFIG_AIC7XXX_BUILD_FIRMWARE is not set
# CONFIG_AIC7XXX_DEBUG_ENABLE is not set
CONFIG_AIC7XXX_DEBUG_MASK=0
CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
# CONFIG_SCSI_AIC7XXX_OLD is not set
CONFIG_SCSI_AIC79XX=y
CONFIG_AIC79XX_CMDS_PER_DEVICE=32
CONFIG_AIC79XX_RESET_DELAY_MS=5000
# CONFIG_AIC79XX_BUILD_FIRMWARE is not set
# CONFIG_AIC79XX_DEBUG_ENABLE is not set
CONFIG_AIC79XX_DEBUG_MASK=0
CONFIG_AIC79XX_REG_PRETTY_PRINT=y
CONFIG_SCSI_AIC94XX=y
# CONFIG_AIC94XX_DEBUG is not set
# CONFIG_SCSI_ADVANSYS is not set
# CONFIG_SCSI_ARCMSR is not set
CONFIG_MEGARAID_NEWGEN=y
CONFIG_MEGARAID_MM=y
CONFIG_MEGARAID_MAILBOX=y
CONFIG_MEGARAID_LEGACY=y
CONFIG_MEGARAID_SAS=y
# CONFIG_SCSI_HPTIOP is not set
# CONFIG_SCSI_BUSLOGIC is not set
# CONFIG_SCSI_DMX3191D is not set
# CONFIG_SCSI_EATA is not set
# CONFIG_SCSI_FUTURE_DOMAIN is not set
# CONFIG_SCSI_GDTH is not set
# CONFIG_SCSI_IPS is not set
# CONFIG_SCSI_INITIO is not set
# CONFIG_SCSI_INIA100 is not set
CONFIG_SCSI_MVSAS=y
# CONFIG_SCSI_STEX is not set
# CONFIG_SCSI_SYM53C8XX_2 is not set
# CONFIG_SCSI_IPR is not set
CONFIG_SCSI_QLOGIC_1280=y
CONFIG_SCSI_QLA_FC=y
CONFIG_SCSI_QLA_ISCSI=y
CONFIG_SCSI_LPFC=y
# CONFIG_SCSI_DC395x is not set
# CONFIG_SCSI_DC390T is not set
# CONFIG_SCSI_DEBUG is not set
CONFIG_SCSI_SRP=y
CONFIG_ATA=y
# CONFIG_ATA_NONSTANDARD is not set
CONFIG_ATA_ACPI=y
CONFIG_SATA_AHCI=y
CONFIG_SATA_SVW=y
CONFIG_ATA_PIIX=y
CONFIG_SATA_MV=y
CONFIG_SATA_NV=y
# CONFIG_PDC_ADMA is not set
# CONFIG_SATA_QSTOR is not set
# CONFIG_SATA_PROMISE is not set
# CONFIG_SATA_SX4 is not set
CONFIG_SATA_SIL=y
# CONFIG_SATA_SIL24 is not set
# CONFIG_SATA_SIS is not set
# CONFIG_SATA_ULI is not set
CONFIG_SATA_VIA=y
# CONFIG_SATA_VITESSE is not set
# CONFIG_SATA_INIC162X is not set
# CONFIG_PATA_ACPI is not set
# CONFIG_PATA_ALI is not set
CONFIG_PATA_AMD=y
# CONFIG_PATA_ARTOP is not set
CONFIG_PATA_ATIIXP=y
# CONFIG_PATA_CMD640_PCI is not set
# CONFIG_PATA_CMD64X is not set
# CONFIG_PATA_CS5520 is not set
# CONFIG_PATA_CS5530 is not set
# CONFIG_PATA_CYPRESS is not set
# CONFIG_PATA_EFAR is not set
# CONFIG_ATA_GENERIC is not set
# CONFIG_PATA_HPT366 is not set
# CONFIG_PATA_HPT37X is not set
# CONFIG_PATA_HPT3X2N is not set
# CONFIG_PATA_HPT3X3 is not set
# CONFIG_PATA_IT821X is not set
# CONFIG_PATA_IT8213 is not set
# CONFIG_PATA_JMICRON is not set
# CONFIG_PATA_TRIFLEX is not set
# CONFIG_PATA_MARVELL is not set
# CONFIG_PATA_MPIIX is not set
# CONFIG_PATA_OLDPIIX is not set
# CONFIG_PATA_NETCELL is not set
# CONFIG_PATA_NINJA32 is not set
# CONFIG_PATA_NS87410 is not set
# CONFIG_PATA_NS87415 is not set
# CONFIG_PATA_OPTI is not set
# CONFIG_PATA_OPTIDMA is not set
# CONFIG_PATA_PDC_OLD is not set
# CONFIG_PATA_RADISYS is not set
# CONFIG_PATA_RZ1000 is not set
# CONFIG_PATA_SC1200 is not set
CONFIG_PATA_SERVERWORKS=y
# CONFIG_PATA_PDC2027X is not set
# CONFIG_PATA_SIL680 is not set
# CONFIG_PATA_SIS is not set
CONFIG_PATA_VIA=y
# CONFIG_PATA_WINBOND is not set
CONFIG_MD=y
CONFIG_BLK_DEV_MD=y
CONFIG_MD_LINEAR=y
CONFIG_MD_RAID0=y
CONFIG_MD_RAID1=y
CONFIG_MD_RAID10=y
CONFIG_MD_RAID456=y
CONFIG_MD_RAID5_RESHAPE=y
CONFIG_MD_MULTIPATH=y
CONFIG_MD_FAULTY=y
CONFIG_BLK_DEV_DM=y
CONFIG_DM_DEBUG=y
CONFIG_DM_CRYPT=y
CONFIG_DM_SNAPSHOT=y
CONFIG_DM_MIRROR=y
CONFIG_DM_ZERO=y
CONFIG_DM_MULTIPATH=y
CONFIG_DM_MULTIPATH_EMC=y
CONFIG_DM_MULTIPATH_RDAC=y
CONFIG_DM_MULTIPATH_HP=y
CONFIG_DM_DELAY=y
CONFIG_DM_UEVENT=y
CONFIG_FUSION=y
CONFIG_FUSION_SPI=y
CONFIG_FUSION_FC=y
CONFIG_FUSION_SAS=y
CONFIG_FUSION_MAX_SGE=128
CONFIG_FUSION_CTL=y
CONFIG_FUSION_LAN=y
# CONFIG_FUSION_LOGGING is not set

#
# IEEE 1394 (FireWire) support
#
# CONFIG_FIREWIRE is not set
CONFIG_IEEE1394=y

#
# Subsystem Options
#
# CONFIG_IEEE1394_VERBOSEDEBUG is not set

#
# Controllers
#
# CONFIG_IEEE1394_PCILYNX is not set
CONFIG_IEEE1394_OHCI1394=y

#
# Protocols
#
CONFIG_IEEE1394_VIDEO1394=y
CONFIG_IEEE1394_SBP2=y
# CONFIG_IEEE1394_SBP2_PHYS_DMA is not set
CONFIG_IEEE1394_ETH1394_ROM_ENTRY=y
CONFIG_IEEE1394_ETH1394=y
# CONFIG_IEEE1394_DV1394 is not set
CONFIG_IEEE1394_RAWIO=y
# CONFIG_I2O is not set
# CONFIG_MACINTOSH_DRIVERS is not set
CONFIG_NETDEVICES=y
# CONFIG_NETDEVICES_MULTIQUEUE is not set
# CONFIG_DUMMY is not set
# CONFIG_BONDING is not set
CONFIG_MACVLAN=y
# CONFIG_EQUALIZER is not set
CONFIG_TUN=y
CONFIG_VETH=y
# CONFIG_NET_SB1000 is not set
# CONFIG_ARCNET is not set
CONFIG_PHYLIB=y

#
# MII PHY device drivers
#
CONFIG_MARVELL_PHY=y
# CONFIG_DAVICOM_PHY is not set
# CONFIG_QSEMI_PHY is not set
CONFIG_LXT_PHY=y
# CONFIG_CICADA_PHY is not set
# CONFIG_VITESSE_PHY is not set
# CONFIG_SMSC_PHY is not set
CONFIG_BROADCOM_PHY=y
# CONFIG_ICPLUS_PHY is not set
# CONFIG_REALTEK_PHY is not set
# CONFIG_FIXED_PHY is not set
# CONFIG_MDIO_BITBANG is not set
CONFIG_NET_ETHERNET=y
CONFIG_MII=y
# CONFIG_HAPPYMEAL is not set
# CONFIG_SUNGEM is not set
# CONFIG_CASSINI is not set
# CONFIG_NET_VENDOR_3COM is not set
# CONFIG_ENC28J60 is not set
# CONFIG_NET_TULIP is not set
# CONFIG_HP100 is not set
# CONFIG_IBM_NEW_EMAC_ZMII is not set
# CONFIG_IBM_NEW_EMAC_RGMII is not set
# CONFIG_IBM_NEW_EMAC_TAH is not set
# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
CONFIG_NET_PCI=y
# CONFIG_PCNET32 is not set
# CONFIG_AMD8111_ETH is not set
# CONFIG_ADAPTEC_STARFIRE is not set
# CONFIG_B44 is not set
CONFIG_FORCEDETH=y
# CONFIG_FORCEDETH_NAPI is not set
# CONFIG_EEPRO100 is not set
# CONFIG_E100 is not set
# CONFIG_FEALNX is not set
# CONFIG_NATSEMI is not set
# CONFIG_NE2K_PCI is not set
# CONFIG_8139CP is not set
# CONFIG_8139TOO is not set
# CONFIG_R6040 is not set
# CONFIG_SIS900 is not set
# CONFIG_EPIC100 is not set
# CONFIG_SUNDANCE is not set
# CONFIG_VIA_RHINE is not set
# CONFIG_SC92031 is not set
CONFIG_NETDEV_1000=y
# CONFIG_ACENIC is not set
# CONFIG_DL2K is not set
CONFIG_E1000=y
# CONFIG_E1000_NAPI is not set
# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
CONFIG_E1000E=y
CONFIG_E1000E_ENABLED=y
# CONFIG_IP1000 is not set
CONFIG_IGB=y
# CONFIG_NS83820 is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_R8169 is not set
# CONFIG_SIS190 is not set
CONFIG_SKGE=y
# CONFIG_SKGE_DEBUG is not set
CONFIG_SKY2=y
# CONFIG_SKY2_DEBUG is not set
# CONFIG_SK98LIN is not set
# CONFIG_VIA_VELOCITY is not set
CONFIG_TIGON3=y
CONFIG_BNX2=y
CONFIG_QLA3XXX=y
# CONFIG_ATL1 is not set
CONFIG_NETDEV_10000=y
# CONFIG_CHELSIO_T1 is not set
# CONFIG_CHELSIO_T3 is not set
CONFIG_IXGBE=y
CONFIG_IXGB=y
# CONFIG_IXGB_NAPI is not set
# CONFIG_S2IO is not set
CONFIG_MYRI10GE=y
CONFIG_NETXEN_NIC=y
CONFIG_NIU=y
CONFIG_MLX4_CORE=y
CONFIG_MLX4_DEBUG=y
# CONFIG_TEHUTI is not set
CONFIG_BNX2X=y
# CONFIG_TR is not set

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

#
# 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=y
# CONFIG_USB_NET_AX8817X is not set
# CONFIG_USB_NET_CDCETHER is not set
# CONFIG_USB_NET_DM9601 is not set
# CONFIG_USB_NET_GL620A is not set
CONFIG_USB_NET_NET1080=y
CONFIG_USB_NET_PLUSB=y
# CONFIG_USB_NET_MCS7830 is not set
# CONFIG_USB_NET_RNDIS_HOST is not set
# CONFIG_USB_NET_CDC_SUBSET is not set
# CONFIG_USB_NET_ZAURUS is not set
# CONFIG_WAN is not set
CONFIG_FDDI=y
# CONFIG_DEFXX is not set
CONFIG_SKFP=y
# CONFIG_HIPPI is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
CONFIG_NET_FC=y
# CONFIG_NETCONSOLE is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
# CONFIG_ISDN is not set
# CONFIG_PHONE is not set

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

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

#
# Input Device Drivers
#
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_LKKBD is not set
# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
# CONFIG_KEYBOARD_STOWAWAY is not set
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=y
CONFIG_MOUSE_PS2_ALPS=y
CONFIG_MOUSE_PS2_LOGIPS2PP=y
CONFIG_MOUSE_PS2_SYNAPTICS=y
CONFIG_MOUSE_PS2_LIFEBOOK=y
CONFIG_MOUSE_PS2_TRACKPOINT=y
# CONFIG_MOUSE_PS2_TOUCHKIT is not set
# CONFIG_MOUSE_SERIAL is not set
# CONFIG_MOUSE_APPLETOUCH is not set
# CONFIG_MOUSE_VSXXXAA is not set
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TABLET is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
CONFIG_INPUT_MISC=y
CONFIG_INPUT_PCSPKR=y
# CONFIG_INPUT_APANEL is not set
# CONFIG_INPUT_ATLAS_BTNS is not set
# CONFIG_INPUT_ATI_REMOTE is not set
# CONFIG_INPUT_ATI_REMOTE2 is not set
# CONFIG_INPUT_KEYSPAN_REMOTE is not set
# CONFIG_INPUT_POWERMATE is not set
# CONFIG_INPUT_YEALINK is not set
# CONFIG_INPUT_UINPUT 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=y
CONFIG_SERIO_LIBPS2=y
CONFIG_SERIO_RAW=y
# CONFIG_GAMEPORT is not set

#
# Character devices
#
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
# CONFIG_VT_HW_CONSOLE_BINDING is not set
# 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=y
# CONFIG_SERIAL_8250_MANY_PORTS is not set
# CONFIG_SERIAL_8250_SHARE_IRQ is not set
# CONFIG_SERIAL_8250_DETECT_IRQ is not set
# CONFIG_SERIAL_8250_RSA is not set

#
# Non-8250 serial port support
#
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_SERIAL_JSM=y
CONFIG_UNIX98_PTYS=y
CONFIG_LEGACY_PTYS=y
CONFIG_LEGACY_PTY_COUNT=256
# CONFIG_IPMI_HANDLER is not set
CONFIG_HW_RANDOM=y
CONFIG_HW_RANDOM_INTEL=y
CONFIG_HW_RANDOM_AMD=y
CONFIG_NVRAM=y
# CONFIG_RTC is not set
# CONFIG_GEN_RTC is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
# CONFIG_MWAVE is not set
# CONFIG_PC8736x_GPIO is not set
CONFIG_RAW_DRIVER=y
CONFIG_MAX_RAW_DEVS=256
CONFIG_HPET=y
# CONFIG_HPET_RTC_IRQ is not set
CONFIG_HPET_MMAP=y
# CONFIG_HANGCHECK_TIMER is not set
CONFIG_TCG_TPM=y
CONFIG_TCG_TIS=y
CONFIG_TCG_NSC=y
CONFIG_TCG_ATMEL=y
CONFIG_TCG_INFINEON=y
# CONFIG_TELCLOCK is not set
CONFIG_DEVPORT=y
CONFIG_I2C=y
CONFIG_I2C_BOARDINFO=y
CONFIG_I2C_CHARDEV=y

#
# I2C Algorithms
#
# CONFIG_I2C_ALGOBIT is not set
# CONFIG_I2C_ALGOPCF is not set
CONFIG_I2C_ALGOPCA=y

#
# I2C Hardware Bus support
#
# CONFIG_I2C_ALI1535 is not set
# CONFIG_I2C_ALI1563 is not set
# CONFIG_I2C_ALI15X3 is not set
CONFIG_I2C_AMD756=y
# CONFIG_I2C_AMD756_S4882 is not set
CONFIG_I2C_AMD8111=y
# CONFIG_I2C_I801 is not set
# CONFIG_I2C_I810 is not set
# CONFIG_I2C_PIIX4 is not set
CONFIG_I2C_NFORCE2=y
# CONFIG_I2C_OCORES is not set
# CONFIG_I2C_PARPORT_LIGHT is not set
# CONFIG_I2C_PROSAVAGE is not set
# CONFIG_I2C_SAVAGE4 is not set
# CONFIG_I2C_SIMTEC is not set
# CONFIG_I2C_SIS5595 is not set
# CONFIG_I2C_SIS630 is not set
# CONFIG_I2C_SIS96X is not set
# CONFIG_I2C_TAOS_EVM is not set
# CONFIG_I2C_STUB is not set
# CONFIG_I2C_TINY_USB is not set
# CONFIG_I2C_VIA is not set
# CONFIG_I2C_VIAPRO is not set
# CONFIG_I2C_VOODOO3 is not set

#
# Miscellaneous I2C Chip support
#
# CONFIG_DS1682 is not set
CONFIG_SENSORS_EEPROM=y
CONFIG_SENSORS_PCF8574=y
# CONFIG_PCF8575 is not set
# CONFIG_SENSORS_PCF8591 is not set
# CONFIG_TPS65010 is not set
CONFIG_SENSORS_MAX6875=y
# CONFIG_SENSORS_TSL2550 is not set
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not set
# CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_I2C_DEBUG_CHIP is not set

#
# SPI support
#
CONFIG_SPI=y
# CONFIG_SPI_DEBUG is not set
CONFIG_SPI_MASTER=y

#
# SPI Master Controller Drivers
#
CONFIG_SPI_BITBANG=y

#
# SPI Protocol Masters
#
CONFIG_SPI_AT25=y
# CONFIG_SPI_SPIDEV is not set
# CONFIG_SPI_TLE62X0 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=y
CONFIG_HWMON_VID=y
# CONFIG_SENSORS_ABITUGURU is not set
# CONFIG_SENSORS_ABITUGURU3 is not set
# CONFIG_SENSORS_AD7418 is not set
# CONFIG_SENSORS_ADM1021 is not set
# CONFIG_SENSORS_ADM1025 is not set
CONFIG_SENSORS_ADM1026=y
# CONFIG_SENSORS_ADM1029 is not set
# CONFIG_SENSORS_ADM1031 is not set
# CONFIG_SENSORS_ADM9240 is not set
# CONFIG_SENSORS_ADT7470 is not set
# CONFIG_SENSORS_ADT7473 is not set
CONFIG_SENSORS_K8TEMP=y
# CONFIG_SENSORS_ASB100 is not set
# CONFIG_SENSORS_ATXP1 is not set
# CONFIG_SENSORS_DS1621 is not set
CONFIG_SENSORS_I5K_AMB=y
# CONFIG_SENSORS_F71805F is not set
# CONFIG_SENSORS_F71882FG is not set
# CONFIG_SENSORS_F75375S is not set
# CONFIG_SENSORS_FSCHER is not set
# CONFIG_SENSORS_FSCPOS is not set
# CONFIG_SENSORS_FSCHMD is not set
# CONFIG_SENSORS_GL518SM is not set
# CONFIG_SENSORS_GL520SM is not set
CONFIG_SENSORS_CORETEMP=y
CONFIG_SENSORS_IT87=y
# CONFIG_SENSORS_LM63 is not set
# CONFIG_SENSORS_LM70 is not set
# CONFIG_SENSORS_LM75 is not set
# CONFIG_SENSORS_LM77 is not set
# CONFIG_SENSORS_LM78 is not set
# CONFIG_SENSORS_LM80 is not set
CONFIG_SENSORS_LM83=y
# CONFIG_SENSORS_LM85 is not set
# CONFIG_SENSORS_LM87 is not set
# CONFIG_SENSORS_LM90 is not set
# CONFIG_SENSORS_LM92 is not set
# CONFIG_SENSORS_LM93 is not set
# CONFIG_SENSORS_MAX1619 is not set
# CONFIG_SENSORS_MAX6650 is not set
# CONFIG_SENSORS_PC87360 is not set
CONFIG_SENSORS_PC87427=y
# CONFIG_SENSORS_SIS5595 is not set
CONFIG_SENSORS_DME1737=y
# CONFIG_SENSORS_SMSC47M1 is not set
# CONFIG_SENSORS_SMSC47M192 is not set
CONFIG_SENSORS_SMSC47B397=y
# CONFIG_SENSORS_ADS7828 is not set
# CONFIG_SENSORS_THMC50 is not set
# CONFIG_SENSORS_VIA686A is not set
# CONFIG_SENSORS_VT1211 is not set
# CONFIG_SENSORS_VT8231 is not set
# CONFIG_SENSORS_W83781D is not set
# CONFIG_SENSORS_W83791D is not set
# CONFIG_SENSORS_W83792D is not set
# CONFIG_SENSORS_W83793 is not set
# CONFIG_SENSORS_W83L785TS is not set
# CONFIG_SENSORS_W83L786NG is not set
CONFIG_SENSORS_W83627HF=y
# CONFIG_SENSORS_W83627EHF is not set
# CONFIG_SENSORS_HDAPS is not set
# CONFIG_SENSORS_APPLESMC is not set
# CONFIG_HWMON_DEBUG_CHIP is not set
CONFIG_THERMAL=y
# CONFIG_WATCHDOG is not set

#
# Sonics Silicon Backplane
#
CONFIG_SSB_POSSIBLE=y
# CONFIG_SSB is not set

#
# Multifunction device drivers
#
# CONFIG_MFD_SM501 is not set

#
# Multimedia devices
#
# CONFIG_VIDEO_DEV is not set
# CONFIG_DVB_CORE is not set
# CONFIG_DAB is not set

#
# Graphics support
#
CONFIG_AGP=y
CONFIG_AGP_AMD64=y
# CONFIG_AGP_INTEL is not set
# CONFIG_AGP_SIS is not set
# CONFIG_AGP_VIA 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_VIDEO_SELECT is not set
CONFIG_DUMMY_CONSOLE=y

#
# Sound
#
CONFIG_SOUND=y

#
# Advanced Linux Sound Architecture
#
CONFIG_SND=y
CONFIG_SND_TIMER=y
CONFIG_SND_PCM=y
CONFIG_SND_HWDEP=y
CONFIG_SND_RAWMIDI=y
# CONFIG_SND_SEQUENCER is not set
# CONFIG_SND_MIXER_OSS is not set
# CONFIG_SND_PCM_OSS is not set
# CONFIG_SND_DYNAMIC_MINORS is not set
# CONFIG_SND_SUPPORT_OLD_API is not set
CONFIG_SND_VERBOSE_PROCFS=y
# CONFIG_SND_VERBOSE_PRINTK is not set
# CONFIG_SND_DEBUG is not set

#
# Generic devices
#
CONFIG_SND_MPU401_UART=y
CONFIG_SND_AC97_CODEC=y
# CONFIG_SND_DUMMY is not set
# CONFIG_SND_MTPAV is not set
CONFIG_SND_SERIAL_U16550=y
CONFIG_SND_MPU401=y

#
# PCI devices
#
# CONFIG_SND_AD1889 is not set
# CONFIG_SND_ALS300 is not set
# CONFIG_SND_ALS4000 is not set
# CONFIG_SND_ALI5451 is not set
# CONFIG_SND_ATIIXP is not set
# CONFIG_SND_ATIIXP_MODEM is not set
# CONFIG_SND_AU8810 is not set
# CONFIG_SND_AU8820 is not set
# CONFIG_SND_AU8830 is not set
# CONFIG_SND_AZT3328 is not set
# CONFIG_SND_BT87X is not set
# CONFIG_SND_CA0106 is not set
# CONFIG_SND_CMIPCI is not set
# CONFIG_SND_OXYGEN is not set
# CONFIG_SND_CS4281 is not set
# CONFIG_SND_CS46XX is not set
# CONFIG_SND_CS5530 is not set
# CONFIG_SND_DARLA20 is not set
# CONFIG_SND_GINA20 is not set
# CONFIG_SND_LAYLA20 is not set
# CONFIG_SND_DARLA24 is not set
# CONFIG_SND_GINA24 is not set
# CONFIG_SND_LAYLA24 is not set
# CONFIG_SND_MONA is not set
# CONFIG_SND_MIA is not set
# CONFIG_SND_ECHO3G is not set
# CONFIG_SND_INDIGO is not set
# CONFIG_SND_INDIGOIO is not set
# CONFIG_SND_INDIGODJ is not set
# CONFIG_SND_EMU10K1 is not set
# CONFIG_SND_EMU10K1X is not set
# CONFIG_SND_ENS1370 is not set
# CONFIG_SND_ENS1371 is not set
# CONFIG_SND_ES1938 is not set
# CONFIG_SND_ES1968 is not set
# CONFIG_SND_FM801 is not set
CONFIG_SND_HDA_INTEL=y
# CONFIG_SND_HDA_HWDEP is not set
CONFIG_SND_HDA_CODEC_REALTEK=y
CONFIG_SND_HDA_CODEC_ANALOG=y
CONFIG_SND_HDA_CODEC_SIGMATEL=y
CONFIG_SND_HDA_CODEC_VIA=y
CONFIG_SND_HDA_CODEC_ATIHDMI=y
CONFIG_SND_HDA_CODEC_CONEXANT=y
CONFIG_SND_HDA_CODEC_CMEDIA=y
CONFIG_SND_HDA_CODEC_SI3054=y
CONFIG_SND_HDA_GENERIC=y
# CONFIG_SND_HDA_POWER_SAVE is not set
# CONFIG_SND_HDSP is not set
# CONFIG_SND_HDSPM is not set
# CONFIG_SND_HIFIER is not set
# CONFIG_SND_ICE1712 is not set
# CONFIG_SND_ICE1724 is not set
CONFIG_SND_INTEL8X0=y
CONFIG_SND_INTEL8X0M=y
# CONFIG_SND_KORG1212 is not set
# CONFIG_SND_MAESTRO3 is not set
# CONFIG_SND_MIXART is not set
# CONFIG_SND_NM256 is not set
# CONFIG_SND_PCXHR is not set
# CONFIG_SND_RIPTIDE is not set
# CONFIG_SND_RME32 is not set
# CONFIG_SND_RME96 is not set
# CONFIG_SND_RME9652 is not set
# CONFIG_SND_SONICVIBES is not set
# CONFIG_SND_TRIDENT is not set
# CONFIG_SND_VIA82XX is not set
# CONFIG_SND_VIA82XX_MODEM is not set
# CONFIG_SND_VIRTUOSO is not set
# CONFIG_SND_VX222 is not set
# CONFIG_SND_YMFPCI is not set
# CONFIG_SND_AC97_POWER_SAVE is not set

#
# SPI devices
#

#
# USB devices
#
CONFIG_SND_USB_AUDIO=y
# CONFIG_SND_USB_USX2Y is not set
CONFIG_SND_USB_CAIAQ=y
CONFIG_SND_USB_CAIAQ_INPUT=y

#
# System on Chip audio support
#
CONFIG_SND_SOC=y

#
# SoC Audio support for SuperH
#

#
# ALSA SoC audio for Freescale SOCs
#

#
# Open Sound System
#
# CONFIG_SOUND_PRIME is not set
CONFIG_AC97_BUS=y
CONFIG_HID_SUPPORT=y
CONFIG_HID=y
# CONFIG_HID_DEBUG is not set
# CONFIG_HIDRAW is not set

#
# USB Input Devices
#
CONFIG_USB_HID=y
# CONFIG_USB_HIDINPUT_POWERBOOK is not set
# CONFIG_HID_FF is not set
CONFIG_USB_HIDDEV=y
CONFIG_USB_SUPPORT=y
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB_ARCH_HAS_OHCI=y
CONFIG_USB_ARCH_HAS_EHCI=y
CONFIG_USB=y
# CONFIG_USB_DEBUG is not set
CONFIG_USB_ANNOUNCE_NEW_DEVICES=y

#
# Miscellaneous USB options
#
CONFIG_USB_DEVICEFS=y
# CONFIG_USB_DEVICE_CLASS is not set
# CONFIG_USB_DYNAMIC_MINORS is not set
# CONFIG_USB_SUSPEND is not set
# CONFIG_USB_PERSIST is not set
# CONFIG_USB_OTG is not set

#
# USB Host Controller Drivers
#
CONFIG_USB_EHCI_HCD=y
CONFIG_USB_EHCI_ROOT_HUB_TT=y
# CONFIG_USB_EHCI_TT_NEWSCHED is not set
# CONFIG_USB_ISP116X_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

#
# USB Device Class drivers
#
# CONFIG_USB_ACM is not set
# CONFIG_USB_PRINTER is not set

#
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
#

#
# may also be needed; see USB_STORAGE Help for more information
#
CONFIG_USB_STORAGE=y
# CONFIG_USB_STORAGE_DEBUG is not set
# CONFIG_USB_STORAGE_DATAFAB is not set
# CONFIG_USB_STORAGE_FREECOM is not set
CONFIG_USB_STORAGE_ISD200=y
# CONFIG_USB_STORAGE_DPCM is not set
CONFIG_USB_STORAGE_USBAT=y
# CONFIG_USB_STORAGE_SDDR09 is not set
# CONFIG_USB_STORAGE_SDDR55 is not set
# CONFIG_USB_STORAGE_JUMPSHOT is not set
# CONFIG_USB_STORAGE_ALAUDA is not set
# CONFIG_USB_STORAGE_KARMA is not set
# CONFIG_USB_LIBUSUAL is not set

#
# USB Imaging devices
#
# CONFIG_USB_MDC800 is not set
# CONFIG_USB_MICROTEK is not set
# CONFIG_USB_MON is not set

#
# USB port drivers
#
CONFIG_USB_SERIAL=y
CONFIG_USB_SERIAL_CONSOLE=y
CONFIG_USB_EZUSB=y
CONFIG_USB_SERIAL_GENERIC=y
# CONFIG_USB_SERIAL_AIRCABLE is not set
# CONFIG_USB_SERIAL_AIRPRIME is not set
# CONFIG_USB_SERIAL_ARK3116 is not set
# CONFIG_USB_SERIAL_BELKIN is not set
# CONFIG_USB_SERIAL_CH341 is not set
# CONFIG_USB_SERIAL_WHITEHEAT is not set
# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
# CONFIG_USB_SERIAL_CP2101 is not set
# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
# CONFIG_USB_SERIAL_EMPEG is not set
# CONFIG_USB_SERIAL_FTDI_SIO is not set
# CONFIG_USB_SERIAL_FUNSOFT is not set
# CONFIG_USB_SERIAL_VISOR is not set
# CONFIG_USB_SERIAL_IPAQ is not set
# CONFIG_USB_SERIAL_IR is not set
# CONFIG_USB_SERIAL_EDGEPORT is not set
# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
# CONFIG_USB_SERIAL_GARMIN is not set
# CONFIG_USB_SERIAL_IPW is not set
# CONFIG_USB_SERIAL_IUU is not set
# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
# CONFIG_USB_SERIAL_KEYSPAN is not set
# CONFIG_USB_SERIAL_KLSI is not set
# CONFIG_USB_SERIAL_KOBIL_SCT is not set
# CONFIG_USB_SERIAL_MCT_U232 is not set
# CONFIG_USB_SERIAL_MOS7720 is not set
# CONFIG_USB_SERIAL_MOS7840 is not set
# CONFIG_USB_SERIAL_NAVMAN is not set
CONFIG_USB_SERIAL_PL2303=y
# CONFIG_USB_SERIAL_OTI6858 is not set
# CONFIG_USB_SERIAL_HP4X is not set
# CONFIG_USB_SERIAL_SAFE is not set
# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
# CONFIG_USB_SERIAL_TI is not set
# CONFIG_USB_SERIAL_CYBERJACK is not set
# CONFIG_USB_SERIAL_XIRCOM is not set
# CONFIG_USB_SERIAL_OPTION is not set
# CONFIG_USB_SERIAL_OMNINET is not set
CONFIG_USB_SERIAL_DEBUG=y

#
# USB Miscellaneous drivers
#
# CONFIG_USB_EMI62 is not set
# CONFIG_USB_EMI26 is not set
# CONFIG_USB_ADUTUX is not set
# CONFIG_USB_AUERSWALD is not set
# CONFIG_USB_RIO500 is not set
# CONFIG_USB_LEGOTOWER is not set
CONFIG_USB_LCD=y
# CONFIG_USB_BERRY_CHARGE is not set
CONFIG_USB_LED=y
CONFIG_USB_CYPRESS_CY7C63=y
CONFIG_USB_CYTHERM=y
# CONFIG_USB_PHIDGET 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_GADGET is not set
CONFIG_MMC=y
# CONFIG_MMC_DEBUG is not set
# CONFIG_MMC_UNSAFE_RESUME is not set

#
# MMC/SD Card Drivers
#
CONFIG_MMC_BLOCK=y
CONFIG_MMC_BLOCK_BOUNCE=y
# CONFIG_SDIO_UART is not set

#
# MMC/SD Host Controller Drivers
#
CONFIG_MMC_SDHCI=y
# CONFIG_MMC_RICOH_MMC is not set
CONFIG_MMC_WBSD=y
CONFIG_MMC_TIFM_SD=y
# CONFIG_MMC_SPI is not set
# CONFIG_MEMSTICK is not set
CONFIG_NEW_LEDS=y
CONFIG_LEDS_CLASS=y

#
# LED drivers
#
# CONFIG_LEDS_CLEVO_MAIL is not set

#
# LED Triggers
#
CONFIG_LEDS_TRIGGERS=y
CONFIG_LEDS_TRIGGER_TIMER=y
CONFIG_LEDS_TRIGGER_HEARTBEAT=y
CONFIG_INFINIBAND=y
CONFIG_INFINIBAND_USER_MAD=y
CONFIG_INFINIBAND_USER_ACCESS=y
CONFIG_INFINIBAND_USER_MEM=y
CONFIG_INFINIBAND_ADDR_TRANS=y
CONFIG_INFINIBAND_MTHCA=y
CONFIG_INFINIBAND_MTHCA_DEBUG=y
CONFIG_INFINIBAND_IPATH=y
CONFIG_INFINIBAND_AMSO1100=y
# CONFIG_INFINIBAND_AMSO1100_DEBUG is not set
CONFIG_MLX4_INFINIBAND=y
# CONFIG_INFINIBAND_NES is not set
CONFIG_INFINIBAND_IPOIB=y
CONFIG_INFINIBAND_IPOIB_CM=y
CONFIG_INFINIBAND_IPOIB_DEBUG=y
# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set
CONFIG_INFINIBAND_SRP=y
CONFIG_INFINIBAND_ISER=y
# CONFIG_EDAC is not set
CONFIG_RTC_LIB=y
CONFIG_RTC_CLASS=y
CONFIG_RTC_HCTOSYS=y
CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
# CONFIG_RTC_DEBUG is not set

#
# RTC interfaces
#
CONFIG_RTC_INTF_SYSFS=y
CONFIG_RTC_INTF_PROC=y
CONFIG_RTC_INTF_DEV=y
# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
# CONFIG_RTC_DRV_TEST is not set

#
# I2C RTC drivers
#
# CONFIG_RTC_DRV_DS1307 is not set
# CONFIG_RTC_DRV_DS1374 is not set
# CONFIG_RTC_DRV_DS1672 is not set
# CONFIG_RTC_DRV_MAX6900 is not set
# CONFIG_RTC_DRV_RS5C372 is not set
# CONFIG_RTC_DRV_ISL1208 is not set
# CONFIG_RTC_DRV_X1205 is not set
# CONFIG_RTC_DRV_PCF8563 is not set
# CONFIG_RTC_DRV_PCF8583 is not set
# CONFIG_RTC_DRV_M41T80 is not set
# CONFIG_RTC_DRV_S35390A is not set

#
# SPI RTC drivers
#
# CONFIG_RTC_DRV_MAX6902 is not set
# CONFIG_RTC_DRV_R9701 is not set
# CONFIG_RTC_DRV_RS5C348 is not set

#
# Platform RTC drivers
#
CONFIG_RTC_DRV_CMOS=y
# CONFIG_RTC_DRV_DS1511 is not set
# CONFIG_RTC_DRV_DS1553 is not set
# CONFIG_RTC_DRV_DS1742 is not set
# CONFIG_RTC_DRV_STK17TA8 is not set
# CONFIG_RTC_DRV_M48T86 is not set
# CONFIG_RTC_DRV_M48T59 is not set
# CONFIG_RTC_DRV_V3020 is not set

#
# on-CPU RTC drivers
#
# CONFIG_DMADEVICES is not set

#
# Userspace I/O
#
CONFIG_UIO=y
# CONFIG_UIO_CIF is not set

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

#
# File systems
#
CONFIG_EXT2_FS=y
CONFIG_EXT2_FS_XATTR=y
CONFIG_EXT2_FS_POSIX_ACL=y
CONFIG_EXT2_FS_SECURITY=y
# CONFIG_EXT2_FS_XIP is not set
CONFIG_EXT3_FS=y
CONFIG_EXT3_FS_XATTR=y
CONFIG_EXT3_FS_POSIX_ACL=y
CONFIG_EXT3_FS_SECURITY=y
# CONFIG_EXT4DEV_FS is not set
CONFIG_JBD=y
# CONFIG_JBD_DEBUG is not set
CONFIG_FS_MBCACHE=y
CONFIG_REISERFS_FS=y
# CONFIG_REISERFS_CHECK is not set
CONFIG_REISERFS_PROC_INFO=y
CONFIG_REISERFS_FS_XATTR=y
CONFIG_REISERFS_FS_POSIX_ACL=y
CONFIG_REISERFS_FS_SECURITY=y
CONFIG_JFS_FS=y
CONFIG_JFS_POSIX_ACL=y
CONFIG_JFS_SECURITY=y
# CONFIG_JFS_DEBUG is not set
CONFIG_JFS_STATISTICS=y
CONFIG_FS_POSIX_ACL=y
CONFIG_XFS_FS=y
# CONFIG_XFS_QUOTA is not set
CONFIG_XFS_SECURITY=y
CONFIG_XFS_POSIX_ACL=y
# CONFIG_XFS_RT is not set
CONFIG_GFS2_FS=y
CONFIG_GFS2_FS_LOCKING_NOLOCK=y
CONFIG_GFS2_FS_LOCKING_DLM=y
CONFIG_OCFS2_FS=y
CONFIG_OCFS2_DEBUG_MASKLOG=y
# CONFIG_OCFS2_DEBUG_FS is not set
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=y

#
# CD-ROM/DVD Filesystems
#
CONFIG_ISO9660_FS=y
CONFIG_JOLIET=y
CONFIG_ZISOFS=y
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=y
# CONFIG_NTFS_DEBUG is not set
# CONFIG_NTFS_RW is not set

#
# Pseudo filesystems
#
CONFIG_PROC_FS=y
CONFIG_PROC_KCORE=y
CONFIG_PROC_VMCORE=y
CONFIG_PROC_SYSCTL=y
CONFIG_SYSFS=y
CONFIG_TMPFS=y
# CONFIG_TMPFS_POSIX_ACL is not set
CONFIG_HUGETLBFS=y
CONFIG_HUGETLB_PAGE=y
CONFIG_CONFIGFS_FS=y

#
# Miscellaneous filesystems
#
# 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=y
CONFIG_VXFS_FS=y
CONFIG_MINIX_FS=y
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
CONFIG_ROMFS_FS=y
# CONFIG_SYSV_FS is not set
CONFIG_UFS_FS=y
# CONFIG_UFS_FS_WRITE is not set
# CONFIG_UFS_DEBUG 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=y
CONFIG_NFS_DIRECTIO=y
# CONFIG_NFSD is not set
CONFIG_ROOT_NFS=y
CONFIG_LOCKD=y
CONFIG_LOCKD_V4=y
CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=y
CONFIG_SUNRPC_GSS=y
CONFIG_SUNRPC_XPRT_RDMA=y
CONFIG_SUNRPC_BIND34=y
CONFIG_RPCSEC_GSS_KRB5=y
# CONFIG_RPCSEC_GSS_SPKM3 is not set
# CONFIG_SMB_FS is not set
CONFIG_CIFS=y
CONFIG_CIFS_STATS=y
# CONFIG_CIFS_STATS2 is not set
# CONFIG_CIFS_WEAK_PW_HASH is not set
CONFIG_CIFS_XATTR=y
CONFIG_CIFS_POSIX=y
# CONFIG_CIFS_DEBUG2 is not set
# CONFIG_CIFS_EXPERIMENTAL is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set

#
# Partition Types
#
CONFIG_PARTITION_ADVANCED=y
# CONFIG_ACORN_PARTITION is not set
# CONFIG_OSF_PARTITION is not set
# CONFIG_AMIGA_PARTITION is not set
# CONFIG_ATARI_PARTITION is not set
# CONFIG_MAC_PARTITION is not set
CONFIG_MSDOS_PARTITION=y
CONFIG_BSD_DISKLABEL=y
# CONFIG_MINIX_SUBPARTITION is not set
CONFIG_SOLARIS_X86_PARTITION=y
# CONFIG_UNIXWARE_DISKLABEL is not set
CONFIG_LDM_PARTITION=y
# CONFIG_LDM_DEBUG is not set
# CONFIG_SGI_PARTITION is not set
# CONFIG_ULTRIX_PARTITION is not set
CONFIG_SUN_PARTITION=y
# CONFIG_KARMA_PARTITION is not set
CONFIG_EFI_PARTITION=y
# CONFIG_SYSV68_PARTITION is not set
CONFIG_NLS=y
CONFIG_NLS_DEFAULT="utf8"
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=y
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=y
CONFIG_DLM=y
# CONFIG_DLM_DEBUG is not set

#
# Kernel hacking
#
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
# CONFIG_PRINTK_TIME is not set
CONFIG_ENABLE_WARN_DEPRECATED=y
CONFIG_ENABLE_MUST_CHECK=y
CONFIG_MAGIC_SYSRQ=y
# CONFIG_UNUSED_SYMBOLS is not set
CONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y
CONFIG_DEBUG_SHIRQ=y
CONFIG_DETECT_SOFTLOCKUP=y
CONFIG_SCHED_DEBUG=y
CONFIG_SCHEDSTATS=y
CONFIG_TIMER_STATS=y
# CONFIG_SLUB_DEBUG_ON is not set
# CONFIG_SLUB_STATS 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_STACKTRACE=y
# CONFIG_DEBUG_KOBJECT is not set
CONFIG_DEBUG_BUGVERBOSE=y
# CONFIG_DEBUG_INFO is not set
# CONFIG_DEBUG_VM is not set
# CONFIG_DEBUG_LIST is not set
# CONFIG_DEBUG_SG is not set
CONFIG_FRAME_POINTER=y
# CONFIG_BOOT_PRINTK_DELAY is not set
# CONFIG_RCU_TORTURE_TEST is not set
# CONFIG_KPROBES_SANITY_TEST is not set
# CONFIG_BACKTRACE_SELF_TEST is not set
CONFIG_LKDTM=m
# CONFIG_FAULT_INJECTION is not set
CONFIG_LATENCYTOP=y
# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
CONFIG_SAMPLES=y
CONFIG_SAMPLE_MARKERS=m
CONFIG_SAMPLE_KOBJECT=m
# CONFIG_SAMPLE_KPROBES is not set
# CONFIG_KGDB is not set
CONFIG_HAVE_ARCH_KGDB=y
CONFIG_NONPROMISC_DEVMEM=y
CONFIG_EARLY_PRINTK=y
CONFIG_DEBUG_STACKOVERFLOW=y
# CONFIG_DEBUG_STACK_USAGE is not set
# CONFIG_DEBUG_PAGEALLOC is not set
# CONFIG_DEBUG_PER_CPU_MAPS is not set
CONFIG_X86_PTDUMP=y
# CONFIG_DEBUG_RODATA is not set
# CONFIG_DIRECT_GBPAGES is not set
# CONFIG_DEBUG_NX_TEST is not set
CONFIG_X86_MPPARSE=y
# CONFIG_IOMMU_DEBUG is not set
# CONFIG_MMIOTRACE is not set
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_DEBUG_BOOT_PARAMS is not set
# CONFIG_CPA_DEBUG is not set
CONFIG_OPTIMIZE_INLINING=y

#
# Security options
#
# CONFIG_KEYS is not set
# CONFIG_SECURITY is not set
# CONFIG_SECURITY_FILE_CAPABILITIES is not set
CONFIG_XOR_BLOCKS=y
CONFIG_ASYNC_CORE=y
CONFIG_ASYNC_MEMCPY=y
CONFIG_ASYNC_XOR=y
CONFIG_CRYPTO=y
CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_BLKCIPHER=y
# CONFIG_CRYPTO_SEQIV is not set
CONFIG_CRYPTO_HASH=y
CONFIG_CRYPTO_MANAGER=y
CONFIG_CRYPTO_HMAC=y
# CONFIG_CRYPTO_XCBC is not set
# CONFIG_CRYPTO_NULL is not set
# CONFIG_CRYPTO_MD4 is not set
CONFIG_CRYPTO_MD5=y
CONFIG_CRYPTO_SHA1=y
# CONFIG_CRYPTO_SHA256 is not set
# CONFIG_CRYPTO_SHA512 is not set
# CONFIG_CRYPTO_WP512 is not set
# CONFIG_CRYPTO_TGR192 is not set
# CONFIG_CRYPTO_GF128MUL is not set
# CONFIG_CRYPTO_ECB is not set
CONFIG_CRYPTO_CBC=y
# CONFIG_CRYPTO_PCBC is not set
# CONFIG_CRYPTO_LRW is not set
# CONFIG_CRYPTO_XTS is not set
# CONFIG_CRYPTO_CTR is not set
# CONFIG_CRYPTO_GCM is not set
# CONFIG_CRYPTO_CCM is not set
# CONFIG_CRYPTO_CRYPTD is not set
CONFIG_CRYPTO_DES=y
# CONFIG_CRYPTO_FCRYPT is not set
# CONFIG_CRYPTO_BLOWFISH is not set
# CONFIG_CRYPTO_TWOFISH is not set
# CONFIG_CRYPTO_TWOFISH_X86_64 is not set
# CONFIG_CRYPTO_SERPENT is not set
# CONFIG_CRYPTO_AES is not set
# CONFIG_CRYPTO_AES_X86_64 is not set
# CONFIG_CRYPTO_CAST5 is not set
# CONFIG_CRYPTO_CAST6 is not set
# CONFIG_CRYPTO_TEA is not set
# CONFIG_CRYPTO_ARC4 is not set
# CONFIG_CRYPTO_KHAZAD is not set
# CONFIG_CRYPTO_ANUBIS is not set
# CONFIG_CRYPTO_SEED is not set
# CONFIG_CRYPTO_SALSA20 is not set
# CONFIG_CRYPTO_SALSA20_X86_64 is not set
# CONFIG_CRYPTO_DEFLATE is not set
# CONFIG_CRYPTO_MICHAEL_MIC is not set
CONFIG_CRYPTO_CRC32C=y
# CONFIG_CRYPTO_CAMELLIA is not set
# CONFIG_CRYPTO_TEST is not set
# CONFIG_CRYPTO_AUTHENC is not set
# CONFIG_CRYPTO_LZO is not set
# CONFIG_CRYPTO_HW is not set
CONFIG_HAVE_KVM=y
CONFIG_VIRTUALIZATION=y
CONFIG_KVM=y
CONFIG_KVM_INTEL=y
CONFIG_KVM_AMD=y
# CONFIG_VIRTIO_PCI is not set
# CONFIG_VIRTIO_BALLOON is not set

#
# Library routines
#
CONFIG_BITREVERSE=y
# CONFIG_CRC_CCITT is not set
# CONFIG_CRC16 is not set
# CONFIG_CRC_ITU_T is not set
CONFIG_CRC32=y
# CONFIG_CRC7 is not set
CONFIG_LIBCRC32C=y
CONFIG_ZLIB_INFLATE=y
CONFIG_PLIST=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y
CONFIG_HAS_DMA=y

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

* Re: [PATCH 1/2] boot: increase stack size for kernel boot loader decompressor
  2008-04-08 17:54           ` Yinghai Lu
@ 2008-04-09 15:08             ` Alexander van Heukelum
  2008-04-09 17:58               ` Yinghai Lu
  2008-04-09 17:59               ` Yinghai Lu
  0 siblings, 2 replies; 26+ messages in thread
From: Alexander van Heukelum @ 2008-04-09 15:08 UTC (permalink / raw)
  To: Yinghai Lu, Ingo Molnar
  Cc: Alexander van Heukelum, Mike Travis, Thomas Gleixner,
	H. Peter Anvin, Andrew Morton, linux-kernel


On Tue, 8 Apr 2008 10:54:15 -0700, "Yinghai Lu" <yhlu.kernel@gmail.com>
said:
> On Tue, Apr 8, 2008 at 1:23 AM, Ingo Molnar <mingo@elte.hu> wrote:
> >
> >  * Alexander van Heukelum <heukelum@mailshack.com> wrote:
> >
> >  > I did see that the malloc space that the inflate code is using is
> >  > taken from _after_ the end of the bss. I don't see how this is
> >  > protected from being used/overwritten. Changing the stack size changes
> >  > the memory layout a bit... maybe you were so unlucky to create a
> >  > vmlinux image that was just barely smaller than some threshold and
> >  > increasing the stack size made the decompression/relocation area be
> >  > located somewhere else?
> >  >
> >  > Test patch follows.
> >
> >  that's a really interesting theory.
> >
> >  FWIIW, i've been booting allyesconfig bzImages for a long time (with
> >  only minimal amount of drivers disabled - mostly old ISA ones that
> >  assume the presence of the real hardware), and they boot and work fine
> >  on both 32-bit and 64-bit typical whitebox PCs. That means huge bzImages
> >  that decompresses into a ~41 MB kernel image. I'd expect that to be a
> >  rather severe test of the decompressor.
> 
> i don't that Alexander's patch is needed.

Hello Yinghai Lu,

Indeed, I now think it is not needed either. The decompression is
done in-place nowadays: the (compressed) image is moved to a high
memory address first, then the decompression is done starting at
the low end of the buffer. It is guaranteed that the output never
overwrites the input, and the decompression code, the stack, and
the heap are all at higher addresses than the input buffer. The
same goes for the pagetables needed for x86_64.

> also because Alex move heap before _end,
> we may need add some extra for buffer offset
> 
>         /* Replace the compressed data size with the uncompressed size */
>         subl    input_len(%ebp), %ebx
>         movl    output_len(%ebp), %eax
>         addl    %eax, %ebx
>         /* Add 8 bytes for every 32K input block */
>         shrl    $12, %eax
>         addl    %eax, %ebx
>         /* Add 32K + 18 bytes of extra slack and align on a 4K boundary
>         */
>         addl    $(32768 + 18 + 4095), %ebx
>         andl    $~4095, %ebx =============================> need add
> heap size too.
> ....

No, that size is accounted for automatically: the code computes the
buffer size needed (including slack) minus the buffer size that is
already available (in the embedded gzip-file). The image is moved
by this amount (rounded up to a page). So that part is fine.

> 
> 
>         /* Replace the compressed data size with the uncompressed size */
>         movl    input_len(%rip), %eax
>         subq    %rax, %rbx
>         movl    output_len(%rip), %eax
>         addq    %rax, %rbx
>         /* Add 8 bytes for every 32K input block */
>         shrq    $12, %rax
>         addq    %rax, %rbx
>         /* Add 32K + 18 bytes of extra slack and align on a 4K boundary
>         */
>         addq    $(32768 + 18 + 4095), %rbx
> =============================> need add heap size too.
>         andq    $~4095, %rbx
> 
> do we need to move pgtable before _end?

I just tried, but it fails: The pgtable is built and enabled in the
32-bit
setup code, but the kernel image is moved in the 64-bit part...
overwriting
the pagetable with zeroes ;).

I can't think of an obvious safe place to put the pagetables, though.
One
option is to move the image in the 32-bit code and tell the 64-bit part
somehow not to do it again... by calling into the 64-bit code at a
different
place, for example.

Greetings,
    Alexander

> YH
-- 
  Alexander van Heukelum
  heukelum@fastmail.fm

-- 
http://www.fastmail.fm - Send your email first class


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

* Re: [PATCH 1/2] boot: increase stack size for kernel boot loader decompressor
  2008-04-09 15:08             ` Alexander van Heukelum
@ 2008-04-09 17:58               ` Yinghai Lu
  2008-04-09 17:59               ` Yinghai Lu
  1 sibling, 0 replies; 26+ messages in thread
From: Yinghai Lu @ 2008-04-09 17:58 UTC (permalink / raw)
  To: Alexander van Heukelum
  Cc: Ingo Molnar, Alexander van Heukelum, Mike Travis,
	Thomas Gleixner, H. Peter Anvin, Andrew Morton, linux-kernel

On Wed, Apr 9, 2008 at 8:08 AM, Alexander van Heukelum
<heukelum@fastmail.fm> wrote:
>
>  On Tue, 8 Apr 2008 10:54:15 -0700, "Yinghai Lu" <yhlu.kernel@gmail.com>
>  said:
>
> > On Tue, Apr 8, 2008 at 1:23 AM, Ingo Molnar <mingo@elte.hu> wrote:
>  > >
>  > >  * Alexander van Heukelum <heukelum@mailshack.com> wrote:
>  > >
>  > >  > I did see that the malloc space that the inflate code is using is
>  > >  > taken from _after_ the end of the bss. I don't see how this is
>  > >  > protected from being used/overwritten. Changing the stack size changes
>  > >  > the memory layout a bit... maybe you were so unlucky to create a
>  > >  > vmlinux image that was just barely smaller than some threshold and
>  > >  > increasing the stack size made the decompression/relocation area be
>  > >  > located somewhere else?
>  > >  >
>  > >  > Test patch follows.
>  > >
>  > >  that's a really interesting theory.
>  > >
>  > >  FWIIW, i've been booting allyesconfig bzImages for a long time (with
>  > >  only minimal amount of drivers disabled - mostly old ISA ones that
>  > >  assume the presence of the real hardware), and they boot and work fine
>  > >  on both 32-bit and 64-bit typical whitebox PCs. That means huge bzImages
>  > >  that decompresses into a ~41 MB kernel image. I'd expect that to be a
>  > >  rather severe test of the decompressor.
>  >
>  > i don't that Alexander's patch is needed.
>
>  Hello Yinghai Lu,
>
>  Indeed, I now think it is not needed either. The decompression is
>  done in-place nowadays: the (compressed) image is moved to a high
>  memory address first, then the decompression is done starting at
>  the low end of the buffer. It is guaranteed that the output never
>  overwrites the input, and the decompression code, the stack, and
>  the heap are all at higher addresses than the input buffer. The
>  same goes for the pagetables needed for x86_64.
>
>
>  > also because Alex move heap before _end,
>  > we may need add some extra for buffer offset
>  >
>  >         /* Replace the compressed data size with the uncompressed size */
>  >         subl    input_len(%ebp), %ebx
>  >         movl    output_len(%ebp), %eax
>  >         addl    %eax, %ebx
>  >         /* Add 8 bytes for every 32K input block */
>  >         shrl    $12, %eax
>  >         addl    %eax, %ebx
>  >         /* Add 32K + 18 bytes of extra slack and align on a 4K boundary
>  >         */
>  >         addl    $(32768 + 18 + 4095), %ebx
>  >         andl    $~4095, %ebx =============================> need add
>  > heap size too.
>  > ....
>
>  No, that size is accounted for automatically: the code computes the
>  buffer size needed (including slack) minus the buffer size that is
>  already available (in the embedded gzip-file). The image is moved
>  by this amount (rounded up to a page). So that part is fine.

yes, that don't need to changed.

...
>  > do we need to move pgtable before _end?
>
>  I just tried, but it fails: The pgtable is built and enabled in the
>  32-bit
>  setup code, but the kernel image is moved in the 64-bit part...
>  overwriting
>  the pagetable with zeroes ;).
>
>  I can't think of an obvious safe place to put the pagetables, though.
>  One
>  option is to move the image in the 32-bit code and tell the 64-bit part
>  somehow not to do it again... by calling into the 64-bit code at a
>  different
>  place, for example.

current pgtable table is safe, before arch/x86/kernel/head_64.S using
new pgtable.

YH

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

* Re: [PATCH 1/2] boot: increase stack size for kernel boot loader decompressor
  2008-04-09 15:08             ` Alexander van Heukelum
  2008-04-09 17:58               ` Yinghai Lu
@ 2008-04-09 17:59               ` Yinghai Lu
  1 sibling, 0 replies; 26+ messages in thread
From: Yinghai Lu @ 2008-04-09 17:59 UTC (permalink / raw)
  To: Alexander van Heukelum
  Cc: Ingo Molnar, Alexander van Heukelum, Mike Travis,
	Thomas Gleixner, H. Peter Anvin, Andrew Morton, linux-kernel

On Wed, Apr 9, 2008 at 8:08 AM, Alexander van Heukelum
<heukelum@fastmail.fm> wrote:
>
>  On Tue, 8 Apr 2008 10:54:15 -0700, "Yinghai Lu" <yhlu.kernel@gmail.com>
>  said:
>
> > On Tue, Apr 8, 2008 at 1:23 AM, Ingo Molnar <mingo@elte.hu> wrote:
>  > >
>  > >  * Alexander van Heukelum <heukelum@mailshack.com> wrote:
>  > >
>  > >  > I did see that the malloc space that the inflate code is using is
>  > >  > taken from _after_ the end of the bss. I don't see how this is
>  > >  > protected from being used/overwritten. Changing the stack size changes
>  > >  > the memory layout a bit... maybe you were so unlucky to create a
>  > >  > vmlinux image that was just barely smaller than some threshold and
>  > >  > increasing the stack size made the decompression/relocation area be
>  > >  > located somewhere else?
>  > >  >
>  > >  > Test patch follows.
>  > >
>  > >  that's a really interesting theory.
>  > >
>  > >  FWIIW, i've been booting allyesconfig bzImages for a long time (with
>  > >  only minimal amount of drivers disabled - mostly old ISA ones that
>  > >  assume the presence of the real hardware), and they boot and work fine
>  > >  on both 32-bit and 64-bit typical whitebox PCs. That means huge bzImages
>  > >  that decompresses into a ~41 MB kernel image. I'd expect that to be a
>  > >  rather severe test of the decompressor.
>  >
>  > i don't that Alexander's patch is needed.
>
>  Hello Yinghai Lu,
>
>  Indeed, I now think it is not needed either. The decompression is
>  done in-place nowadays: the (compressed) image is moved to a high
>  memory address first, then the decompression is done starting at
>  the low end of the buffer. It is guaranteed that the output never
>  overwrites the input, and the decompression code, the stack, and
>  the heap are all at higher addresses than the input buffer. The
>  same goes for the pagetables needed for x86_64.
>
>
>  > also because Alex move heap before _end,
>  > we may need add some extra for buffer offset
>  >
>  >         /* Replace the compressed data size with the uncompressed size */
>  >         subl    input_len(%ebp), %ebx
>  >         movl    output_len(%ebp), %eax
>  >         addl    %eax, %ebx
>  >         /* Add 8 bytes for every 32K input block */
>  >         shrl    $12, %eax
>  >         addl    %eax, %ebx
>  >         /* Add 32K + 18 bytes of extra slack and align on a 4K boundary
>  >         */
>  >         addl    $(32768 + 18 + 4095), %ebx
>  >         andl    $~4095, %ebx =============================> need add
>  > heap size too.
>  > ....
>
>  No, that size is accounted for automatically: the code computes the
>  buffer size needed (including slack) minus the buffer size that is
>  already available (in the embedded gzip-file). The image is moved
>  by this amount (rounded up to a page). So that part is fine.

just wonder if Ingo have very big vmlinux, that +32K + 18 formula still works.

YH

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

* Re: [PATCH 0/2] NR_CPUS: increase maximum NR_CPUS to 4096
  2008-03-26  6:19 ` Ingo Molnar
@ 2008-03-26 15:59   ` Mike Travis
  0 siblings, 0 replies; 26+ messages in thread
From: Mike Travis @ 2008-03-26 15:59 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: Andrew Morton, linux-mm, linux-kernel

Ingo Molnar wrote:
> * Mike Travis <travis@sgi.com> wrote:
> 
>> Increases the limit of NR_CPUS to 4096 and introduces a boolean called 
>> "MAXSMP" which when set (e.g. "allyesconfig") will set NR_CPUS = 4096 
>> and NODES_SHIFT = 9 (512).
>>
>> I've been running this config (4k NR_CPUS, 512 Max Nodes) on an AMD 
>> box with 2 dual-cores and 4gb memory.  I've also successfully booted 
>> it in a simulated 2cpus/1Gb environment.
> 
> cool!
> 
> this depends on the cpumask changes to work correctly (i.e. to boot at 
> all), right?
> 
> 	Ingo


Yes, it overflows the stack quite quickly without the cpumask changes.
I didn't do any testing to see what's the minimal set of changes.

Thanks,
Mike

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

* Re: [PATCH 0/2] NR_CPUS: increase maximum NR_CPUS to 4096
  2008-03-26  1:41 Mike Travis
@ 2008-03-26  6:19 ` Ingo Molnar
  2008-03-26 15:59   ` Mike Travis
  0 siblings, 1 reply; 26+ messages in thread
From: Ingo Molnar @ 2008-03-26  6:19 UTC (permalink / raw)
  To: Mike Travis; +Cc: Andrew Morton, linux-mm, linux-kernel


* Mike Travis <travis@sgi.com> wrote:

> Increases the limit of NR_CPUS to 4096 and introduces a boolean called 
> "MAXSMP" which when set (e.g. "allyesconfig") will set NR_CPUS = 4096 
> and NODES_SHIFT = 9 (512).
> 
> I've been running this config (4k NR_CPUS, 512 Max Nodes) on an AMD 
> box with 2 dual-cores and 4gb memory.  I've also successfully booted 
> it in a simulated 2cpus/1Gb environment.

cool!

this depends on the cpumask changes to work correctly (i.e. to boot at 
all), right?

	Ingo

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

* [PATCH 0/2] NR_CPUS: increase maximum NR_CPUS to 4096
@ 2008-03-26  1:41 Mike Travis
  2008-03-26  6:19 ` Ingo Molnar
  0 siblings, 1 reply; 26+ messages in thread
From: Mike Travis @ 2008-03-26  1:41 UTC (permalink / raw)
  To: Andrew Morton; +Cc: Ingo Molnar, linux-mm, linux-kernel


Increases the limit of NR_CPUS to 4096 and introduces a
boolean called "MAXSMP" which when set (e.g. "allyesconfig")
will set NR_CPUS = 4096 and NODES_SHIFT = 9 (512).

I've been running this config (4k NR_CPUS, 512 Max Nodes)
on an AMD box with 2 dual-cores and 4gb memory.  I've also
successfully booted it in a simulated 2cpus/1Gb environment.

Based on:
	git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
	git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86.git

Signed-off-by: Mike Travis <travis@sgi.com>
---

Memory usage effects from upping NR_CPUS to 4096 and MAX_NUMANODES to 512.

255-akpm2: akpm2 config with NR_CPUS=255  / NUMA_NODE_SHIFT=6
4k-akpm2:  akpm2 config with NR_CPUS=4096 / NUMA_NODE_SHIFT=9

====== Data (-l 1000)
    1 - 255-akpm2
    2 - 4k-akpm2

      .1.       .2.    ..final..
  1114112  +3899392 5013504  +350%  irq_desc(.data.cacheline_aligned)
   313344  +4177920 4491264 +1333%  irq_cfg(.data.read_mostly)
    76800   +537600  614400  +700%  early_node_map(.init.data)
    32640   +491648  524288 +1506%  boot_pageset(.bss)
    32640   +491648  524288 +1506%  boot_cpu_pda(.data.cacheline_aligned)
    23040   +161280  184320  +700%  initkmem_list3(.init.data)
     5632    +39424   45056  +700%  node_devices(.bss)
     4096    +28672   32768  +700%  plat_node_bdata(.bss)
     2656    +34312   36968 +1291%  cache_cache(.data)
     2048    +14336   16384  +700%  rio_devs(.init.data)
     2048   +260096  262144 +12700%  node_to_cpumask_map(.data.read_mostly)
     2040    +30728   32768 +1506%  centrino_model(.bss)
     2040    +30728   32768 +1506%  centrino_cpu(.bss)
     2040    +30728   32768 +1506%  _cpu_pda(.data.read_mostly)
     1024     +1024    2048  +100%  pxm_to_node_map(.data)
     1024     +7168    8192  +700%  nodes_add(.bss)
     1024     +7168    8192  +700%  nodes(.init.data)
     1024     +7168    8192  +700%  hugepage_freelists(.bss)
     1020    +15364   16384 +1506%  x86_cpu_to_node_map_init(.data)
     1020    +15364   16384 +1506%  cpu_set_freq(.bss)
     1020    +15364   16384 +1506%  cpu_min_freq(.bss)
     1020    +15364   16384 +1506%  cpu_max_freq(.bss)
     1020    +15364   16384 +1506%  cpu_is_managed(.bss)
     1020    +15364   16384 +1506%  cpu_cur_freq(.bss)
      512     +3584    4096  +700%  zone_movable_pfn(.init.data)
      512     +3584    4096  +700%  scal_devs(.init.data)
      512     +3584    4096  +700%  node_data(.data.read_mostly)
      510     +7682    8192 +1506%  x86_cpu_to_apicid_init(.init.data)
      510     +7682    8192 +1506%  x86_bios_cpu_apicid_init(.init.data)
        0     +4096    4096      .  tvec_base_done(.data)
        0     +2048    2048      .  surplus_huge_pages_node(.bss)
        0     +2048    2048      .  nr_huge_pages_node(.bss)
        0     +2048    2048      .  node_to_pxm_map(.data)
        0     +2048    2048      .  node_order(.bss)
        0     +2048    2048      .  node_load(.bss)
        0     +2048    2048      .  free_huge_pages_node(.bss)
        0     +2048    2048      .  fake_node_to_pxm_map(.init.data)
        0     +1552    1552      .  def_root_domain(.bss)

====== Sections (-l 500)
    1 - 255-akpm2
    2 - 4k-akpm2

       .1.        .2.    ..final..
  63092788  +10579589 73672377   +16%  Total
  41514099     +93823 41607922    <1%  .debug_info
   6648945      -2268  6646677    <1%  .debug_loc
   3365341      +7483  3372824    <1%  .text
   2631073      -1672  2629401    <1%  .debug_line
   1320219     +31557  1351776    +2%  .debug_abbrev
   1149568   +4391040  5540608  +381%  .data.cacheline_aligned
   1106192      -4784  1101408    <1%  .debug_ranges
    732736    +728832  1461568   +99%  .bss
    329672   +4474992  4804664 +1357%  .data.read_mostly
    285576    +100320   385896   +35%  .data
    173664    +751936   925600  +432%  .init.data
     40824      +7808    48632   +19%  .data.percpu

====== Text/Data ()
    1 - 255-akpm2
    2 - 4k-akpm2

      .1.       .2.    ..final..
  3364864     +8192   3373056    <1%  TextSize
  1552384   +100352   1652736    +6%  DataSize
   733184   +729088   1462272   +99%  BssSize
   393216   +757760   1150976  +192%  InitSize
    40960     +8192     49152   +20%  PerCPU
  1529856  +8869888  10399744  +579%  OtherSize
  7614464  +10473472 18087936  +137%  Totals

====== PerCPU ()
    1 - 255-akpm2
    2 - 4k-akpm2

    .1.    .2.    ..final..
  18432  -2048 16384   -11%  kstat
  10240  -2048  8192   -20%  init_tss
   2048  -2048     .  -100%  fdtable_defer_list
      0  +2048  2048      .  node_domains
      0  +2048  2048      .  lru_add_active_pvecs
      0  +2048  2048      .  cpuidle_devices
      0  +2048  2048      .  cpu_mask
      0  +2048  2048      .  cpu_info
      0  +2048  2048      .  cpu_core_map
      0  +2048  2048      .  core_domains
  30720  +8192 38912   +26%  Totals

====== Stack (-l 1000)
    1 - 255-akpm2
    2 - 4k-akpm2

  .1.    .2.    ..final..
    0  +4216 4216      .  show_schedstat
    0  +2744 2744      .  build_sched_domains
    0  +2152 2152      .  centrino_target
    0  +1640 1640      .  setup_IO_APIC
    0  +1592 1592      .  move_task_off_dead_cpu
    0  +1576 1576      .  setup_IO_APIC_irq
    0  +1560 1560      .  tick_notify
    0  +1560 1560      .  __assign_irq_vector
    0  +1552 1552      .  arch_setup_msi_irq
    0  +1552 1552      .  arch_setup_ht_irq
    0  +1544 1544      .  tick_do_periodic_broadcast
    0  +1544 1544      .  irq_affinity_write_proc
    0  +1144 1144      .  threshold_create_device
    0  +1112 1112      .  sched_balance_self
    0  +1064 1064      .  _cpu_down
    0  +1056 1056      .  __smp_call_function_mask
    0  +1048 1048      .  store_threshold_limit
    0  +1048 1048      .  set_ioapic_affinity_irq
    0  +1048 1048      .  acpi_processor_set_throttling
    0  +1048 1048      .  acpi_map_lsapic
    0  +1040 1040      .  store_interrupt_enable
    0  +1040 1040      .  set_msi_irq_affinity
    0  +1040 1040      .  set_ht_irq_affinity
    0  +1032 1032      .  store_error_count
    0  +1032 1032      .  show_error_count
    0  +1032 1032      .  setup_ioapic_dest
    0  +1032 1032      .  sched_setaffinity
    0  +1032 1032      .  physflat_send_IPI_allbutself
    0  +1032 1032      .  native_flush_tlb_others
    0  +1032 1032      .  move_masked_irq
    0  +1032 1032      .  flat_send_IPI_allbutself
    0  +1024 1024      .  pci_bus_show_cpuaffinity
    0  +1024 1024      .  machine_crash_shutdown
    0  +1024 1024      .  local_cpus_show
    0  +1024 1024      .  irq_complete_move
    0  +1024 1024      .  ioapic_retrigger_irq
    0  +1024 1024      .  fixup_irqs
    0  +1024 1024      .  create_irq

====== MemInfo ()
    1 - 255-akpm2
    2 - 4k-akpm2

          .1.        .2.    ..final..
     30146560    +786432    30932992    +2%  Active
      1018880     +64512     1083392    +6%  Active(Node.0)
      6517760    +132096     6649856    +2%  Active(Node.1)
     17465344     -12288    17453056    <1%  AnonPages
      2932736     +69632     3002368    +2%  AnonPages(Node.0)
     14532608     -81920    14450688    <1%  AnonPages(Node.1)
      5804032    +327680     6131712    +5%  Buffers
     57851904  +17252352    75104256   +29%  Cached
  10078793728   -5058560 10073735168    <1%  CommitLimit
     73453568   +1028096    74481664    +1%  Committed_AS
       184320    -184320           .  -100%  Dirty
        20480     -20480           .  -100%  Dirty(Node.0)
       163840    -163840           .  -100%  Dirty(Node.1)
      3391488    +352256     3743744   +10%  FilePages(Node.0)
     60264448  +17227776    77492224   +28%  FilePages(Node.1)
     50900992  +16818176    67719168   +33%  Inactive
       561152     +41984      603136    +7%  Inactive(Node.0)
     12164096   +4162560    16326656   +34%  Inactive(Node.1)
      8847360     +16384     8863744    <1%  Mapped
       290816     +45056      335872   +15%  Mapped(Node.0)
      8556544     -28672     8527872    <1%  Mapped(Node.1)
   4014837760  -54091776  3960745984    -1%  MemFree
   2012188672  -16060416  1996128256    <1%  MemFree(Node.0)
   2002522112  -38031360  1964490752    -1%  MemFree(Node.1)
   4151279616  -10117120  4141162496    <1%  MemTotal
    134877184  +16060416   150937600   +11%  MemUsed(Node.0)
    143912960  +38031360   181944320   +26%  MemUsed(Node.1)
      2306048      -8192     2297856    <1%  PageTables
       872448     +32768      905216    +3%  PageTables(Node.0)
      1433600     -40960     1392640    -2%  PageTables(Node.1)
      8290304    +217088     8507392    +2%  SReclaimable
      1155072    -184320      970752   -15%  SReclaimable(Node.0)
      7135232    +401408     7536640    +5%  SReclaimable(Node.1)
     12480512  +11087872    23568384   +88%  SUnreclaim
      4730880   +6569984    11300864  +138%  SUnreclaim(Node.0)
      7749632   +4517888    12267520   +58%  SUnreclaim(Node.1)
     20770816  +11304960    32075776   +54%  Slab
      5885952   +6385664    12271616  +108%  Slab(Node.0)
     14884864   +4919296    19804160   +33%  Slab(Node.1)
    159670272      -4096   159666176    <1%  VmallocUsed
  23140846592  +33765376 23174611968    +0%  Totals


Memory usage in a simulated 2cpu/1gb environment using the
default configuration and NR_CPUS=4096, MAX Nodes=512:

Memory: 1013440k/1048576k available 
(3588k kernel code, 33728k reserved, 1962k data, 1212k init)

	MemTotal:      1014652 kB
	MemFree:        991364 kB
	Buffers:           192 kB
	Cached:           3436 kB
	SwapCached:          0 kB
	Active:           1636 kB
	Inactive:         2648 kB
	SwapTotal:           0 kB
	SwapFree:            0 kB
	Dirty:              20 kB
	Writeback:           0 kB
	AnonPages:         656 kB
	Mapped:           1412 kB
	Slab:            12752 kB
	SReclaimable:      236 kB
	SUnreclaim:      12516 kB
	PageTables:         36 kB
	NFS_Unstable:        0 kB
	Bounce:              0 kB
	CommitLimit:    507324 kB
	Committed_AS:        0 kB
	VmallocTotal: 34359738367 kB
	VmallocUsed:      4896 kB
	VmallocChunk: 34359733471 kB
	HugePages_Total:     0
	HugePages_Free:      0
	HugePages_Rsvd:      0
	HugePages_Surp:      0
	Hugepagesize:     2048 kB

-- 

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

end of thread, other threads:[~2008-04-09 17:59 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-04-05  1:30 [PATCH 0/2] NR_CPUS: increase maximum NR_CPUS to 4096 Mike Travis
2008-04-05  1:30 ` [PATCH 1/2] boot: increase stack size for kernel boot loader decompressor Mike Travis
2008-04-05 13:46   ` Alexander van Heukelum
2008-04-07 18:14     ` Mike Travis
2008-04-07 21:44       ` Alexander van Heukelum
2008-04-08  8:23         ` Ingo Molnar
2008-04-08 10:54           ` [PATCH] x86: cleanup boot-heap usage Alexander van Heukelum
2008-04-08 18:39             ` Yinghai Lu
2008-04-08 14:56           ` [PATCH 1/2] boot: increase stack size for kernel boot loader decompressor Mike Travis
2008-04-08 17:54           ` Yinghai Lu
2008-04-09 15:08             ` Alexander van Heukelum
2008-04-09 17:58               ` Yinghai Lu
2008-04-09 17:59               ` Yinghai Lu
2008-04-08 12:20         ` Alexander van Heukelum
2008-04-08 13:41           ` Ingo Molnar
2008-04-08 15:10             ` Mike Travis
2008-04-08 15:39               ` Ingo Molnar
2008-04-08 19:09                 ` Mike Travis
2008-04-08 21:48                 ` Mike Travis
2008-04-05  1:30 ` [PATCH 2/2] x86: Modify Kconfig to allow up to 4096 cpus Mike Travis
2008-04-08 21:53 ` [PATCH 0/2] NR_CPUS: increase maximum NR_CPUS to 4096 Yinghai Lu
2008-04-08 22:03   ` Mike Travis
2008-04-08 22:32     ` Yinghai Lu
  -- strict thread matches above, loose matches on Subject: below --
2008-03-26  1:41 Mike Travis
2008-03-26  6:19 ` Ingo Molnar
2008-03-26 15:59   ` Mike Travis

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).