All of lore.kernel.org
 help / color / mirror / Atom feed
* [Bisected Regression in 2.6.35] A full tmpfs filesystem causes hibernationto hang
@ 2010-08-15  5:25 M. Vefa Bicakci
  2010-08-17  2:37 ` KOSAKI Motohiro
  2010-08-22 11:06 ` KOSAKI Motohiro
  0 siblings, 2 replies; 66+ messages in thread
From: M. Vefa Bicakci @ 2010-08-15  5:25 UTC (permalink / raw)
  To: Linux Kernel Mailing List; +Cc: KOSAKI Motohiro

Hello all,

I am using Debian Sid on a Toshiba Satellite A100 laptop. After testing
2.6.35 for a while, I noticed that sometimes my hibernation attempts
would fail. I should say that I never had such a problem before 2.6.35.
The hibernation process hangs with 2.6.35 after printing the following:

=== 8< ===
...
Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
PM: Preallocating image memory...
=== >8 ===

After a short investigation, I found out that this only happens when my
tmpfs filesystem on /tmp had a lot of data in it. When my tmpfs is empty,
I have no problems.

So I wrote a short script which fills up the tmpfs on /tmp and tries to
hibernate, and I bisected the kernel using this script.

The end result is that the following commit causes this regression:

=== 8< ===
commit bb21c7ce18eff8e6e7877ca1d06c6db719376e3c
Author: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Date:   Fri Jun 4 14:15:05 2010 -0700

    vmscan: fix do_try_to_free_pages() return value when priority==0 reclaim failure

    ...
=== >8 ===

I have run 2.6.35-rc6, 2.6.35 and 2.6.35.1 with this commit reverted,
and I am happy to say that I haven't experienced any problems for at
least 17 days.

It looks like this change was included with 2.6.35-rc1. I am sorry
for not testing earlier.

I am willing to do testing in case anyone would like me to try patches.

Regards,

M. Vefa Bicakci

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

* Re: [Bisected Regression in 2.6.35] A full tmpfs filesystem causes hibernationto hang
  2010-08-15  5:25 [Bisected Regression in 2.6.35] A full tmpfs filesystem causes hibernationto hang M. Vefa Bicakci
@ 2010-08-17  2:37 ` KOSAKI Motohiro
  2010-08-22 11:06 ` KOSAKI Motohiro
  1 sibling, 0 replies; 66+ messages in thread
From: KOSAKI Motohiro @ 2010-08-17  2:37 UTC (permalink / raw)
  To: M. Vefa Bicakci; +Cc: kosaki.motohiro, Linux Kernel Mailing List

> Hello all,
> 
> I am using Debian Sid on a Toshiba Satellite A100 laptop. After testing
> 2.6.35 for a while, I noticed that sometimes my hibernation attempts
> would fail. I should say that I never had such a problem before 2.6.35.
> The hibernation process hangs with 2.6.35 after printing the following:
> 
> === 8< ===
> ...
> Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
> PM: Preallocating image memory...
> === >8 ===
> 
> After a short investigation, I found out that this only happens when my
> tmpfs filesystem on /tmp had a lot of data in it. When my tmpfs is empty,
> I have no problems.
> 
> So I wrote a short script which fills up the tmpfs on /tmp and tries to
> hibernate, and I bisected the kernel using this script.
> 
> The end result is that the following commit causes this regression:
> 
> === 8< ===
> commit bb21c7ce18eff8e6e7877ca1d06c6db719376e3c
> Author: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
> Date:   Fri Jun 4 14:15:05 2010 -0700
> 
>     vmscan: fix do_try_to_free_pages() return value when priority==0 reclaim failure
> 
>     ...
> === >8 ===
> 
> I have run 2.6.35-rc6, 2.6.35 and 2.6.35.1 with this commit reverted,
> and I am happy to say that I haven't experienced any problems for at
> least 17 days.
> 
> It looks like this change was included with 2.6.35-rc1. I am sorry
> for not testing earlier.
> 
> I am willing to do testing in case anyone would like me to try patches.

Wow.

I'm very surprised this report because 1) the above commit changed
do_try_to_free_pages() return value 2) but current hibernation code is
ignoring this return value. Hmm... I have to investigate this very
interesting issue.

Thanks this report, and please give me a bit time.




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

* Re: [Bisected Regression in 2.6.35] A full tmpfs filesystem causes hibernationto hang
  2010-08-15  5:25 [Bisected Regression in 2.6.35] A full tmpfs filesystem causes hibernationto hang M. Vefa Bicakci
  2010-08-17  2:37 ` KOSAKI Motohiro
@ 2010-08-22 11:06 ` KOSAKI Motohiro
  2010-08-22 16:28   ` [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang M. Vefa Bicakci
  2010-08-23  0:22   ` [Bisected Regression in 2.6.35] A full tmpfs filesystem causes hibernationto hang KOSAKI Motohiro
  1 sibling, 2 replies; 66+ messages in thread
From: KOSAKI Motohiro @ 2010-08-22 11:06 UTC (permalink / raw)
  To: M. Vefa Bicakci; +Cc: kosaki.motohiro, Linux Kernel Mailing List

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

> Hello all,
> 
> I am using Debian Sid on a Toshiba Satellite A100 laptop. After testing
> 2.6.35 for a while, I noticed that sometimes my hibernation attempts
> would fail. I should say that I never had such a problem before 2.6.35.
> The hibernation process hangs with 2.6.35 after printing the following:
> 
> === 8< ===
> ...
> Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
> PM: Preallocating image memory...
> === >8 ===
> 
> After a short investigation, I found out that this only happens when my
> tmpfs filesystem on /tmp had a lot of data in it. When my tmpfs is empty,
> I have no problems.
> 
> So I wrote a short script which fills up the tmpfs on /tmp and tries to
> hibernate, and I bisected the kernel using this script.
> 
> The end result is that the following commit causes this regression:
> 
> === 8< ===
> commit bb21c7ce18eff8e6e7877ca1d06c6db719376e3c
> Author: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
> Date:   Fri Jun 4 14:15:05 2010 -0700
> 
>     vmscan: fix do_try_to_free_pages() return value when priority==0 reclaim failure
> 
>     ...
> === >8 ===
> 
> I have run 2.6.35-rc6, 2.6.35 and 2.6.35.1 with this commit reverted,
> and I am happy to say that I haven't experienced any problems for at
> least 17 days.
> 
> It looks like this change was included with 2.6.35-rc1. I am sorry
> for not testing earlier.
> 
> I am willing to do testing in case anyone would like me to try patches.
> 
> Regards,
> 
> M. Vefa Bicakci

Hmm... 
I've tested hibernation case for a while. but I have no luck. I couldn't
reproduce your issue. Very sorry. Can you please help our debugging? 
If possible, I hope to run following three test.

1. Please let me know your machine & test script

% cat /proc/meminfo
% cat /proc/vmstat
% cat /proc/zoneinfo
% df
% cat your-fills-up-the-tmpfs-script

2. call shrink_all_memory() forcely and show result

% cat /proc/meminfo
% cat /proc/zoneinfo
# echo 1 > /proc/sys/vm/shrink_all_memory
# tail /var/log/messages
% cat /proc/meminfo
% cat /proc/zoneinfo


3. reset zone_reclaim_stat and rerun shrink_all_memory

# echo 1 > /proc/sys/vm/reset_reclaim_stat
% cat /proc/meminfo
% cat /proc/zoneinfo
# echo 1 > /proc/sys/vm/shrink_all_memory
# tail /var/log/messages
% cat /proc/meminfo
% cat /proc/zoneinfo



[-- Attachment #2: 0001-debug-print-sysctl.patch --]
[-- Type: application/octet-stream, Size: 2174 bytes --]

From 57544e31e5ad966a86f7ff9dbe9299877b2fb9c8 Mon Sep 17 00:00:00 2001
From: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Date: Fri, 20 Aug 2010 11:08:33 +0900
Subject: [PATCH 1/4] debug print + sysctl

Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
---
 kernel/sysctl.c |   20 ++++++++++++++++++++
 mm/vmscan.c     |    7 +++++++
 2 files changed, 27 insertions(+), 0 deletions(-)

diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index d24f761..e1b22ed 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -961,6 +961,19 @@ static struct ctl_table kern_table[] = {
 	{ }
 };
 
+static int sysctl_shrink_all_memory;
+static int shrink_all_memory_handler(ctl_table *table, int write,
+				     void __user *buffer, size_t *length,
+				     loff_t *ppos)
+{
+	proc_dointvec_minmax(table, write, buffer, length, ppos);
+	if (write) {
+		shrink_all_memory(sysctl_shrink_all_memory);
+	}
+	return 0;
+}
+
+
 static struct ctl_table vm_table[] = {
 	{
 		.procname	= "overcommit_memory",
@@ -1318,6 +1331,13 @@ static struct ctl_table vm_table[] = {
 		.extra2		= &one,
 	},
 #endif
+	{
+		.procname	= "shrink_all_memory",
+		.data		= &sysctl_shrink_all_memory,
+		.maxlen		= sizeof(sysctl_shrink_all_memory),
+		.mode		= 0644,
+		.proc_handler	= shrink_all_memory_handler,
+	},
 
 /*
  * NOTE: do not add new entries to this table unless you have read
diff --git a/mm/vmscan.c b/mm/vmscan.c
index b94fe1b..1ce6c43 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -2410,6 +2410,8 @@ unsigned long shrink_all_memory(unsigned long nr_to_reclaim)
 	struct task_struct *p = current;
 	unsigned long nr_reclaimed;
 
+	printk(KERN_ERR "shrink_all_memory start\n");
+
 	p->flags |= PF_MEMALLOC;
 	lockdep_set_current_reclaim_state(sc.gfp_mask);
 	reclaim_state.reclaimed_slab = 0;
@@ -2421,6 +2423,11 @@ unsigned long shrink_all_memory(unsigned long nr_to_reclaim)
 	lockdep_clear_current_reclaim_state();
 	p->flags &= ~PF_MEMALLOC;
 
+	printk(KERN_ERR "shrink_all_memory: req:%ld reclaimed:%ld free:%ld\n",
+	       nr_to_reclaim,
+		nr_reclaimed,
+	       global_page_state(NR_FREE_PAGES));
+
 	return nr_reclaimed;
 }
 #endif /* CONFIG_HIBERNATION */
-- 
1.6.5.2


[-- Attachment #3: 0003-debug-reset_reclaim_stat.patch --]
[-- Type: application/octet-stream, Size: 1654 bytes --]

From 9b5776352f8d46e3ada80f91f9d978870105630f Mon Sep 17 00:00:00 2001
From: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Date: Fri, 20 Aug 2010 15:28:22 +0900
Subject: [PATCH 3/4] debug: reset_reclaim_stat

Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
---
 kernel/sysctl.c |   31 +++++++++++++++++++++++++++++++
 1 files changed, 31 insertions(+), 0 deletions(-)

diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index e1b22ed..3b72836 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -973,6 +973,30 @@ static int shrink_all_memory_handler(ctl_table *table, int write,
 	return 0;
 }
 
+#include <linux/mm_types.h>
+#include <linux/mmzone.h>
+
+static int reset_reclaim_stat_handler(ctl_table *table, int write,
+				      void __user *buffer, size_t *length,
+				      loff_t *ppos)
+{
+	struct zone *zone;
+	struct zone_reclaim_stat *rstat;
+
+	if (write) {
+		for_each_populated_zone(zone) {
+			spin_lock_irq(&zone->lru_lock);
+			rstat = &zone->reclaim_stat;
+			rstat->recent_scanned[0] = 0;
+			rstat->recent_rotated[0] = 0;
+			rstat->recent_scanned[1] = 0;
+			rstat->recent_rotated[1] = 0;
+			spin_unlock_irq(&zone->lru_lock);
+		}
+
+	}
+	return 0;
+}
 
 static struct ctl_table vm_table[] = {
 	{
@@ -1338,6 +1362,13 @@ static struct ctl_table vm_table[] = {
 		.mode		= 0644,
 		.proc_handler	= shrink_all_memory_handler,
 	},
+	{
+		.procname	= "reset_reclaim_stat",
+		.data		= &sysctl_shrink_all_memory,
+		.maxlen		= sizeof(sysctl_shrink_all_memory),
+		.mode		= 0644,
+		.proc_handler	= reset_reclaim_stat_handler,
+	},
 
 /*
  * NOTE: do not add new entries to this table unless you have read
-- 
1.6.5.2


[-- Attachment #4: 0004-debug-zone_info-reclaim_stat.patch --]
[-- Type: application/octet-stream, Size: 1575 bytes --]

From 87ce7b4a24f3b381a204ebd654050ac2c6bc2d14 Mon Sep 17 00:00:00 2001
From: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Date: Fri, 20 Aug 2010 15:52:47 +0900
Subject: [PATCH 4/4] debug: zone_info reclaim_stat

Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
---
 mm/vmstat.c |   27 +++++++++++++++++++++++++++
 1 files changed, 27 insertions(+), 0 deletions(-)

diff --git a/mm/vmstat.c b/mm/vmstat.c
index 7759941..bee3ba3 100644
--- a/mm/vmstat.c
+++ b/mm/vmstat.c
@@ -860,6 +860,33 @@ static void zoneinfo_show_print(struct seq_file *m, pg_data_t *pgdat,
 		   zone->prev_priority,
 		   zone->zone_start_pfn,
 		   zone->inactive_ratio);
+
+	{
+		extern int vm_swappiness;
+		int anon_prio = vm_swappiness;
+		int file_prio = 200 - vm_swappiness;
+		unsigned long ap;
+		unsigned long fp;
+		struct zone_reclaim_stat *reclaim_stat = &zone->reclaim_stat;
+
+		ap = (anon_prio + 1) * (reclaim_stat->recent_scanned[0] + 1);
+		ap /= reclaim_stat->recent_rotated[0] + 1;
+		fp = (file_prio + 1) * (reclaim_stat->recent_scanned[1] + 1);
+		fp /= reclaim_stat->recent_rotated[1] + 1;
+
+		seq_printf(m,
+			   "\n recent_anon_rotated: %lu"
+			   "\n recent_anon_scanned: %lu"
+			   "\n recent_file_rotated: %lu"
+			   "\n recent_file_scanned: %lu"
+			   "\n anon_ratio:          %lu"
+			   ,
+			   zone->reclaim_stat.recent_rotated[0],
+			   zone->reclaim_stat.recent_scanned[0],
+			   zone->reclaim_stat.recent_rotated[1],
+			   zone->reclaim_stat.recent_scanned[1],
+			   (ap * 100) / (ap + fp +1));
+	}
 	seq_putc(m, '\n');
 }
 
-- 
1.6.5.2


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

* Re: [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang
  2010-08-22 11:06 ` KOSAKI Motohiro
@ 2010-08-22 16:28   ` M. Vefa Bicakci
  2010-08-25  8:55     ` KOSAKI Motohiro
  2010-08-23  0:22   ` [Bisected Regression in 2.6.35] A full tmpfs filesystem causes hibernationto hang KOSAKI Motohiro
  1 sibling, 1 reply; 66+ messages in thread
From: M. Vefa Bicakci @ 2010-08-22 16:28 UTC (permalink / raw)
  To: KOSAKI Motohiro; +Cc: Linux Kernel Mailing List

Hello,

> I've tested hibernation case for a while. but I have no luck. I couldn't
> reproduce your issue. Very sorry. Can you please help our debugging? 
> If possible, I hope to run following three test.

First of all, thanks a lot for spending time on this regression
I have been experiencing. I really appreciate it.

Sorry to hear that you weren't able to reproduce the issue. Well the
good (or bad?) news is that I am able to reproduce it with 2.6.35.3
with your patches applied.

I should note that after applying your patches and trying a hibernation
with a full tmpfs, a printk prints extra information on the screen just
before the hibernation process hangs. The last time I ran it, it printed:

=== 8< ===
shrink_all_memory: req: 342067 reclaimed: 27062 free: 340221
=== >8 ===

A piece of information that may be relevant or irrelevant is that my
swap space is on a dm-crypt volume.

Appended are the results of the tests you asked me to carry out.
If you'd like, I can send in private a tarball containing this
information in separate files.

Once again, thanks a lot for helping out.

M. Vefa Bicakci

> 
> 1. Please let me know your machine & test script

Please note that I filled up the tmpfs filesystem between step 1
and step 2.

> 
> % cat /proc/meminfo

MemTotal:        3104484 kB
MemFree:         2817616 kB
Buffers:           31156 kB
Cached:           142124 kB
SwapCached:            0 kB
Active:           116464 kB
Inactive:         137424 kB
Active(anon):      80852 kB
Inactive(anon):    24820 kB
Active(file):      35612 kB
Inactive(file):   112604 kB
Unevictable:          32 kB
Mlocked:              32 kB
HighTotal:       2226632 kB
HighFree:        1994008 kB
LowTotal:         877852 kB
LowFree:          823608 kB
SwapTotal:       1999540 kB
SwapFree:        1999540 kB
Dirty:               116 kB
Writeback:             0 kB
AnonPages:         80636 kB
Mapped:            43768 kB
Shmem:             25068 kB
Slab:              15120 kB
SReclaimable:       7516 kB
SUnreclaim:         7604 kB
KernelStack:        1856 kB
PageTables:         2420 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     3551780 kB
Committed_AS:     337784 kB
VmallocTotal:     122880 kB
VmallocUsed:       16308 kB
VmallocChunk:      94312 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       4096 kB
DirectMap4k:       20472 kB
DirectMap4M:      888832 kB


> % cat /proc/vmstat

nr_free_pages 704435
nr_inactive_anon 6199
nr_active_anon 20213
nr_inactive_file 28153
nr_active_file 8904
nr_unevictable 8
nr_mlock 8
nr_anon_pages 20159
nr_mapped 10943
nr_file_pages 43317
nr_dirty 2
nr_writeback 0
nr_slab_reclaimable 1879
nr_slab_unreclaimable 1900
nr_page_table_pages 605
nr_kernel_stack 232
nr_unstable 0
nr_bounce 0
nr_vmscan_write 0
nr_writeback_temp 0
nr_isolated_anon 0
nr_isolated_file 0
nr_shmem 6261
pgpgin 150947
pgpgout 3984
pswpin 0
pswpout 0
pgalloc_dma 2
pgalloc_normal 55622
pgalloc_high 219709
pgalloc_movable 0
pgfree 980252
pgactivate 12703
pgdeactivate 0
pgfault 584903
pgmajfault 1077
pgrefill_dma 0
pgrefill_normal 0
pgrefill_high 0
pgrefill_movable 0
pgsteal_dma 0
pgsteal_normal 0
pgsteal_high 0
pgsteal_movable 0
pgscan_kswapd_dma 0
pgscan_kswapd_normal 0
pgscan_kswapd_high 0
pgscan_kswapd_movable 0
pgscan_direct_dma 0
pgscan_direct_normal 0
pgscan_direct_high 0
pgscan_direct_movable 0
pginodesteal 0
slabs_scanned 0
kswapd_steal 0
kswapd_inodesteal 0
kswapd_low_wmark_hit_quickly 0
kswapd_high_wmark_hit_quickly 0
kswapd_skip_congestion_wait 0
pageoutrun 0
allocstall 0
pgrotated 0
htlb_buddy_alloc_success 0
htlb_buddy_alloc_fail 0
unevictable_pgs_culled 7828
unevictable_pgs_scanned 0
unevictable_pgs_rescued 7042
unevictable_pgs_mlocked 8558
unevictable_pgs_munlocked 8550
unevictable_pgs_cleared 0
unevictable_pgs_stranded 0
unevictable_pgs_mlockfreed 0

> % cat /proc/zoneinfo

Node 0, zone      DMA
  pages free     2614
        min      16
        low      20
        high     24
        scanned  0
        spanned  4080
        present  3951
    nr_free_pages 2614
    nr_inactive_anon 0
    nr_active_anon 0
    nr_inactive_file 0
    nr_active_file 0
    nr_unevictable 0
    nr_mlock     0
    nr_anon_pages 0
    nr_mapped    0
    nr_file_pages 0
    nr_dirty     0
    nr_writeback 0
    nr_slab_reclaimable 0
    nr_slab_unreclaimable 2
    nr_page_table_pages 0
    nr_kernel_stack 0
    nr_unstable  0
    nr_bounce    0
    nr_vmscan_write 0
    nr_writeback_temp 0
    nr_isolated_anon 0
    nr_isolated_file 0
    nr_shmem     0
        protection: (0, 865, 3022, 3022)
  pagesets
    cpu: 0
              count: 0
              high:  0
              batch: 1
  vm stats threshold: 4
    cpu: 1
              count: 0
              high:  0
              batch: 1
  vm stats threshold: 4
  all_unreclaimable: 0
  prev_priority:     12
  start_pfn:         16
  inactive_ratio:    1
 recent_anon_rotated: 0
 recent_anon_scanned: 0
 recent_file_rotated: 0
 recent_file_scanned: 0
 anon_ratio:          30
Node 0, zone   Normal
  pages free     203226
        min      932
        low      1165
        high     1398
        scanned  0
        spanned  223230
        present  221486
    nr_free_pages 203226
    nr_inactive_anon 0
    nr_active_anon 0
    nr_inactive_file 5727
    nr_active_file 2143
    nr_unevictable 0
    nr_mlock     0
    nr_anon_pages 0
    nr_mapped    1
    nr_file_pages 7869
    nr_dirty     9
    nr_writeback 0
    nr_slab_reclaimable 1880
    nr_slab_unreclaimable 1898
    nr_page_table_pages 0
    nr_kernel_stack 232
    nr_unstable  0
    nr_bounce    0
    nr_vmscan_write 0
    nr_writeback_temp 0
    nr_isolated_anon 0
    nr_isolated_file 0
    nr_shmem     0
        protection: (0, 0, 17259, 17259)
  pagesets
    cpu: 0
              count: 127
              high:  186
              batch: 31
  vm stats threshold: 16
    cpu: 1
              count: 61
              high:  186
              batch: 31
  vm stats threshold: 16
  all_unreclaimable: 0
  prev_priority:     12
  start_pfn:         4096
  inactive_ratio:    1
 recent_anon_rotated: 0
 recent_anon_scanned: 0
 recent_file_rotated: 2330
 recent_file_scanned: 11064
 anon_ratio:          8
Node 0, zone  HighMem
  pages free     498378
        min      128
        low      709
        high     1290
        scanned  0
        spanned  556658
        present  552309
    nr_free_pages 498378
    nr_inactive_anon 6283
    nr_active_anon 20225
    nr_inactive_file 22446
    nr_active_file 6830
    nr_unevictable 8
    nr_mlock     8
    nr_anon_pages 20171
    nr_mapped    10962
    nr_file_pages 35621
    nr_dirty     1
    nr_writeback 0
    nr_slab_reclaimable 0
    nr_slab_unreclaimable 0
    nr_page_table_pages 605
    nr_kernel_stack 0
    nr_unstable  0
    nr_bounce    0
    nr_vmscan_write 0
    nr_writeback_temp 0
    nr_isolated_anon 0
    nr_isolated_file 0
    nr_shmem     6345
        protection: (0, 0, 0, 0)
  pagesets
    cpu: 0
              count: 155
              high:  186
              batch: 31
  vm stats threshold: 24
    cpu: 1
              count: 154
              high:  186
              batch: 31
  vm stats threshold: 24
  all_unreclaimable: 0
  prev_priority:     12
  start_pfn:         227326
  inactive_ratio:    4
 recent_anon_rotated: 140735
 recent_anon_scanned: 188078
 recent_file_rotated: 9673
 recent_file_scanned: 43796
 anon_ratio:          11

> % df

Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda15            10317828   7308360   2485352  75% /
tmpfs                  1552240         8   1552232   1% /lib/init/rw
udev                   1549148       220   1548928   1% /dev
tmpfs                  1552240         4   1552236   1% /dev/shm
tmpfs                  1552240        32   1552208   1% /tmp

> % cat your-fills-up-the-tmpfs-script

#!/bin/bash

dd if=/dev/zero of=/tmp/tmp bs=1024k count=1600
shred -vn1 /tmp/tmp

exit 0 ### removed when testing hibernation

read -p "Press enter to hibernate..."

echo -n reboot > /sys/power/disk
echo -n disk > /sys/power/state

echo "Exit code: $?"

rm -vf /tmp/tmp


> 
> 2. call shrink_all_memory() forcely and show result

> # ./script.sh # Fill up the tmpfs

> % df # My extra step (I modified the script to fill only 1400MB.)

Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda15            10317828   7308408   2485304  75% /
tmpfs                  1552240         8   1552232   1% /lib/init/rw
udev                   1549148       220   1548928   1% /dev
tmpfs                  1552240         4   1552236   1% /dev/shm
tmpfs                  1552240   1435036    117204  93% /tmp

> 
> % cat /proc/meminfo

MemTotal:        3104484 kB
MemFree:         1339564 kB
Buffers:           42824 kB
Cached:          1595432 kB
SwapCached:            0 kB
Active:          1557540 kB
Inactive:         161944 kB
Active(anon):    1515072 kB
Inactive(anon):    25144 kB
Active(file):      42468 kB
Inactive(file):   136800 kB
Unevictable:          32 kB
Mlocked:              32 kB
HighTotal:       2226632 kB
HighFree:         538992 kB
LowTotal:         877852 kB
LowFree:          800572 kB
SwapTotal:       1999540 kB
SwapFree:        1999540 kB
Dirty:                20 kB
Writeback:             0 kB
AnonPages:         81256 kB
Mapped:            44032 kB
Shmem:           1458992 kB
Slab:              26312 kB
SReclaimable:      18632 kB
SUnreclaim:         7680 kB
KernelStack:        1816 kB
PageTables:         2424 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     3551780 kB
Committed_AS:    1772060 kB
VmallocTotal:     122880 kB
VmallocUsed:       16308 kB
VmallocChunk:      94312 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       4096 kB
DirectMap4k:       20472 kB
DirectMap4M:      888832 kB

> % cat /proc/zoneinfo

Node 0, zone      DMA
  pages free     2614
        min      16
        low      20
        high     24
        scanned  0
        spanned  4080
        present  3951
    nr_free_pages 2614
    nr_inactive_anon 0
    nr_active_anon 0
    nr_inactive_file 0
    nr_active_file 0
    nr_unevictable 0
    nr_mlock     0
    nr_anon_pages 0
    nr_mapped    0
    nr_file_pages 0
    nr_dirty     0
    nr_writeback 0
    nr_slab_reclaimable 0
    nr_slab_unreclaimable 2
    nr_page_table_pages 0
    nr_kernel_stack 0
    nr_unstable  0
    nr_bounce    0
    nr_vmscan_write 0
    nr_writeback_temp 0
    nr_isolated_anon 0
    nr_isolated_file 0
    nr_shmem     0
        protection: (0, 865, 3022, 3022)
  pagesets
    cpu: 0
              count: 0
              high:  0
              batch: 1
  vm stats threshold: 4
    cpu: 1
              count: 0
              high:  0
              batch: 1
  vm stats threshold: 4
  all_unreclaimable: 0
  prev_priority:     12
  start_pfn:         16
  inactive_ratio:    1
 recent_anon_rotated: 0
 recent_anon_scanned: 0
 recent_file_rotated: 0
 recent_file_scanned: 0
 anon_ratio:          30
Node 0, zone   Normal
  pages free     197498
        min      932
        low      1165
        high     1398
        scanned  0
        spanned  223230
        present  221486
    nr_free_pages 197498
    nr_inactive_anon 0
    nr_active_anon 0
    nr_inactive_file 7293
    nr_active_file 3466
    nr_unevictable 0
    nr_mlock     0
    nr_anon_pages 0
    nr_mapped    1
    nr_file_pages 10758
    nr_dirty     4
    nr_writeback 0
    nr_slab_reclaimable 4658
    nr_slab_unreclaimable 1918
    nr_page_table_pages 0
    nr_kernel_stack 227
    nr_unstable  0
    nr_bounce    0
    nr_vmscan_write 0
    nr_writeback_temp 0
    nr_isolated_anon 0
    nr_isolated_file 0
    nr_shmem     0
        protection: (0, 0, 17259, 17259)
  pagesets
    cpu: 0
              count: 157
              high:  186
              batch: 31
  vm stats threshold: 16
    cpu: 1
              count: 81
              high:  186
              batch: 31
  vm stats threshold: 16
  all_unreclaimable: 0
  prev_priority:     12
  start_pfn:         4096
  inactive_ratio:    1
 recent_anon_rotated: 0
 recent_anon_scanned: 0
 recent_file_rotated: 3652
 recent_file_scanned: 15280
 anon_ratio:          9
Node 0, zone  HighMem
  pages free     134717
        min      128
        low      709
        high     1290
        scanned  0
        spanned  556658
        present  552309
    nr_free_pages 134717
    nr_inactive_anon 6261
    nr_active_anon 378769
    nr_inactive_file 26907
    nr_active_file 7152
    nr_unevictable 8
    nr_mlock     8
    nr_anon_pages 20315
    nr_mapped    11007
    nr_file_pages 398782
    nr_dirty     2
    nr_writeback 0
    nr_slab_reclaimable 0
    nr_slab_unreclaimable 0
    nr_page_table_pages 606
    nr_kernel_stack 0
    nr_unstable  0
    nr_bounce    0
    nr_vmscan_write 0
    nr_writeback_temp 0
    nr_isolated_anon 0
    nr_isolated_file 0
    nr_shmem     364723
        protection: (0, 0, 0, 0)
  pagesets
    cpu: 0
              count: 136
              high:  186
              batch: 31
  vm stats threshold: 24
    cpu: 1
              count: 182
              high:  186
              batch: 31
  vm stats threshold: 24
  all_unreclaimable: 0
  prev_priority:     12
  start_pfn:         227326
  inactive_ratio:    4
 recent_anon_rotated: 912909
 recent_anon_scanned: 1757064
 recent_file_rotated: 10006
 recent_file_scanned: 48952
 anon_ratio:          14

> # echo 1 > /proc/sys/vm/shrink_all_memory

> # tail /var/log/messages

[  472.454344] shrink_all_memory start
[  472.454731] shrink_all_memory: req:1 reclaimed:29 free:334891

> % cat /proc/meminfo

MemTotal:        3104484 kB
MemFree:         1339556 kB
Buffers:           42864 kB
Cached:          1595252 kB
SwapCached:            0 kB
Active:          1557108 kB
Inactive:         162296 kB
Active(anon):    1514628 kB
Inactive(anon):    25540 kB
Active(file):      42480 kB
Inactive(file):   136756 kB
Unevictable:          32 kB
Mlocked:              32 kB
HighTotal:       2226632 kB
HighFree:         538992 kB
LowTotal:         877852 kB
LowFree:          800564 kB
SwapTotal:       1999540 kB
SwapFree:        1999540 kB
Dirty:                24 kB
Writeback:             0 kB
AnonPages:         81324 kB
Mapped:            44048 kB
Shmem:           1458884 kB
Slab:              26312 kB
SReclaimable:      18632 kB
SUnreclaim:         7680 kB
KernelStack:        1824 kB
PageTables:         2424 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     3551780 kB
Committed_AS:    1771928 kB
VmallocTotal:     122880 kB
VmallocUsed:       16308 kB
VmallocChunk:      94312 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       4096 kB
DirectMap4k:       20472 kB
DirectMap4M:      888832 kB


> % cat /proc/zoneinfo

Node 0, zone      DMA
  pages free     2614
        min      16
        low      20
        high     24
        scanned  0
        spanned  4080
        present  3951
    nr_free_pages 2614
    nr_inactive_anon 0
    nr_active_anon 0
    nr_inactive_file 0
    nr_active_file 0
    nr_unevictable 0
    nr_mlock     0
    nr_anon_pages 0
    nr_mapped    0
    nr_file_pages 0
    nr_dirty     0
    nr_writeback 0
    nr_slab_reclaimable 0
    nr_slab_unreclaimable 2
    nr_page_table_pages 0
    nr_kernel_stack 0
    nr_unstable  0
    nr_bounce    0
    nr_vmscan_write 0
    nr_writeback_temp 0
    nr_isolated_anon 0
    nr_isolated_file 0
    nr_shmem     0
        protection: (0, 865, 3022, 3022)
  pagesets
    cpu: 0
              count: 0
              high:  0
              batch: 1
  vm stats threshold: 4
    cpu: 1
              count: 0
              high:  0
              batch: 1
  vm stats threshold: 4
  all_unreclaimable: 0
  prev_priority:     10
  start_pfn:         16
  inactive_ratio:    1
 recent_anon_rotated: 0
 recent_anon_scanned: 0
 recent_file_rotated: 0
 recent_file_scanned: 0
 anon_ratio:          30
Node 0, zone   Normal
  pages free     197527
        min      932
        low      1165
        high     1398
        scanned  0
        spanned  223230
        present  221486
    nr_free_pages 197527
    nr_inactive_anon 0
    nr_active_anon 0
    nr_inactive_file 7304
    nr_active_file 3466
    nr_unevictable 0
    nr_mlock     0
    nr_anon_pages 0
    nr_mapped    1
    nr_file_pages 10770
    nr_dirty     5
    nr_writeback 0
    nr_slab_reclaimable 4657
    nr_slab_unreclaimable 1918
    nr_page_table_pages 0
    nr_kernel_stack 228
    nr_unstable  0
    nr_bounce    0
    nr_vmscan_write 0
    nr_writeback_temp 0
    nr_isolated_anon 0
    nr_isolated_file 0
    nr_shmem     0
        protection: (0, 0, 17259, 17259)
  pagesets
    cpu: 0
              count: 157
              high:  186
              batch: 31
  vm stats threshold: 16
    cpu: 1
              count: 67
              high:  186
              batch: 31
  vm stats threshold: 16
  all_unreclaimable: 0
  prev_priority:     10
  start_pfn:         4096
  inactive_ratio:    1
 recent_anon_rotated: 0
 recent_anon_scanned: 0
 recent_file_rotated: 456
 recent_file_scanned: 1918
 anon_ratio:          9
Node 0, zone  HighMem
  pages free     134779
        min      128
        low      709
        high     1290
        scanned  0
        spanned  556658
        present  552309
    nr_free_pages 134779
    nr_inactive_anon 6389
    nr_active_anon 378650
    nr_inactive_file 26887
    nr_active_file 7154
    nr_unevictable 8
    nr_mlock     8
    nr_anon_pages 20331
    nr_mapped    11014
    nr_file_pages 398764
    nr_dirty     2
    nr_writeback 0
    nr_slab_reclaimable 0
    nr_slab_unreclaimable 0
    nr_page_table_pages 606
    nr_kernel_stack 0
    nr_unstable  0
    nr_bounce    0
    nr_vmscan_write 0
    nr_writeback_temp 0
    nr_isolated_anon 0
    nr_isolated_file 0
    nr_shmem     364723
        protection: (0, 0, 0, 0)
  pagesets
    cpu: 0
              count: 144
              high:  186
              batch: 31
  vm stats threshold: 24
    cpu: 1
              count: 115
              high:  186
              batch: 31
  vm stats threshold: 24
  all_unreclaimable: 0
  prev_priority:     10
  start_pfn:         227326
  inactive_ratio:    4
 recent_anon_rotated: 117656
 recent_anon_scanned: 228960
 recent_file_rotated: 1252
 recent_file_scanned: 6163
 anon_ratio:          14

> 
> 
> 3. reset zone_reclaim_stat and rerun shrink_all_memory
> 
> # echo 1 > /proc/sys/vm/reset_reclaim_stat
> % cat /proc/meminfo

MemTotal:        3104484 kB
MemFree:         1339316 kB
Buffers:           42924 kB
Cached:          1595344 kB
SwapCached:            0 kB
Active:          1557224 kB
Inactive:         162344 kB
Active(anon):    1514632 kB
Inactive(anon):    25532 kB
Active(file):      42592 kB
Inactive(file):   136812 kB
Unevictable:          32 kB
Mlocked:              32 kB
HighTotal:       2226632 kB
HighFree:         538868 kB
LowTotal:         877852 kB
LowFree:          800448 kB
SwapTotal:       1999540 kB
SwapFree:        1999540 kB
Dirty:                28 kB
Writeback:             0 kB
AnonPages:         81328 kB
Mapped:            44056 kB
Shmem:           1458868 kB
Slab:              26312 kB
SReclaimable:      18636 kB
SUnreclaim:         7676 kB
KernelStack:        1816 kB
PageTables:         2424 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     3551780 kB
Committed_AS:    1771932 kB
VmallocTotal:     122880 kB
VmallocUsed:       16308 kB
VmallocChunk:      94312 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       4096 kB
DirectMap4k:       20472 kB
DirectMap4M:      888832 kB

> % cat /proc/zoneinfo

Node 0, zone      DMA
  pages free     2614
        min      16
        low      20
        high     24
        scanned  0
        spanned  4080
        present  3951
    nr_free_pages 2614
    nr_inactive_anon 0
    nr_active_anon 0
    nr_inactive_file 0
    nr_active_file 0
    nr_unevictable 0
    nr_mlock     0
    nr_anon_pages 0
    nr_mapped    0
    nr_file_pages 0
    nr_dirty     0
    nr_writeback 0
    nr_slab_reclaimable 0
    nr_slab_unreclaimable 2
    nr_page_table_pages 0
    nr_kernel_stack 0
    nr_unstable  0
    nr_bounce    0
    nr_vmscan_write 0
    nr_writeback_temp 0
    nr_isolated_anon 0
    nr_isolated_file 0
    nr_shmem     0
        protection: (0, 865, 3022, 3022)
  pagesets
    cpu: 0
              count: 0
              high:  0
              batch: 1
  vm stats threshold: 4
    cpu: 1
              count: 0
              high:  0
              batch: 1
  vm stats threshold: 4
  all_unreclaimable: 0
  prev_priority:     10
  start_pfn:         16
  inactive_ratio:    1
 recent_anon_rotated: 0
 recent_anon_scanned: 0
 recent_file_rotated: 0
 recent_file_scanned: 0
 anon_ratio:          30
Node 0, zone   Normal
  pages free     197498
        min      932
        low      1165
        high     1398
        scanned  0
        spanned  223230
        present  221486
    nr_free_pages 197498
    nr_inactive_anon 0
    nr_active_anon 0
    nr_inactive_file 7317
    nr_active_file 3467
    nr_unevictable 0
    nr_mlock     0
    nr_anon_pages 0
    nr_mapped    1
    nr_file_pages 10783
    nr_dirty     7
    nr_writeback 0
    nr_slab_reclaimable 4659
    nr_slab_unreclaimable 1917
    nr_page_table_pages 0
    nr_kernel_stack 227
    nr_unstable  0
    nr_bounce    0
    nr_vmscan_write 0
    nr_writeback_temp 0
    nr_isolated_anon 0
    nr_isolated_file 0
    nr_shmem     0
        protection: (0, 0, 17259, 17259)
  pagesets
    cpu: 0
              count: 151
              high:  186
              batch: 31
  vm stats threshold: 16
    cpu: 1
              count: 80
              high:  186
              batch: 31
  vm stats threshold: 16
  all_unreclaimable: 0
  prev_priority:     10
  start_pfn:         4096
  inactive_ratio:    1
 recent_anon_rotated: 0
 recent_anon_scanned: 0
 recent_file_rotated: 1
 recent_file_scanned: 4
 anon_ratio:          14
Node 0, zone  HighMem
  pages free     134717
        min      128
        low      709
        high     1290
        scanned  0
        spanned  556658
        present  552309
    nr_free_pages 134717
    nr_inactive_anon 6387
    nr_active_anon 378651
    nr_inactive_file 26887
    nr_active_file 7181
    nr_unevictable 8
    nr_mlock     8
    nr_anon_pages 20369
    nr_mapped    11017
    nr_file_pages 398789
    nr_dirty     1
    nr_writeback 0
    nr_slab_reclaimable 0
    nr_slab_unreclaimable 0
    nr_page_table_pages 606
    nr_kernel_stack 0
    nr_unstable  0
    nr_bounce    0
    nr_vmscan_write 0
    nr_writeback_temp 0
    nr_isolated_anon 0
    nr_isolated_file 0
    nr_shmem     364721
        protection: (0, 0, 0, 0)
  pagesets
    cpu: 0
              count: 155
              high:  186
              batch: 31
  vm stats threshold: 24
    cpu: 1
              count: 150
              high:  186
              batch: 31
  vm stats threshold: 24
  all_unreclaimable: 0
  prev_priority:     10
  start_pfn:         227326
  inactive_ratio:    4
 recent_anon_rotated: 3636
 recent_anon_scanned: 11656
 recent_file_rotated: 0
 recent_file_scanned: 1
 anon_ratio:          40

> # echo 1 > /proc/sys/vm/shrink_all_memory
> # tail /var/log/messages

[  627.410562] shrink_all_memory start
[  627.410889] shrink_all_memory: req:1 reclaimed:32 free:334798

> % cat /proc/meminfo

MemTotal:        3104484 kB
MemFree:         1339184 kB
Buffers:           43048 kB
Cached:          1595396 kB
SwapCached:            0 kB
Active:          1556584 kB
Inactive:         163144 kB
Active(anon):    1513976 kB
Inactive(anon):    26336 kB
Active(file):      42608 kB
Inactive(file):   136808 kB
Unevictable:          32 kB
Mlocked:              32 kB
HighTotal:       2226632 kB
HighFree:         538744 kB
LowTotal:         877852 kB
LowFree:          800440 kB
SwapTotal:       1999540 kB
SwapFree:        1999540 kB
Dirty:                 8 kB
Writeback:             0 kB
AnonPages:         81340 kB
Mapped:            44104 kB
Shmem:           1459032 kB
Slab:              26316 kB
SReclaimable:      18640 kB
SUnreclaim:         7676 kB
KernelStack:        1824 kB
PageTables:         2424 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     3551780 kB
Committed_AS:    1772116 kB
VmallocTotal:     122880 kB
VmallocUsed:       16308 kB
VmallocChunk:      94312 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       4096 kB
DirectMap4k:       20472 kB
DirectMap4M:      888832 kB

> % cat /proc/zoneinfo

Node 0, zone      DMA
  pages free     2614
        min      16
        low      20
        high     24
        scanned  0
        spanned  4080
        present  3951
    nr_free_pages 2614
    nr_inactive_anon 0
    nr_active_anon 0
    nr_inactive_file 0
    nr_active_file 0
    nr_unevictable 0
    nr_mlock     0
    nr_anon_pages 0
    nr_mapped    0
    nr_file_pages 0
    nr_dirty     0
    nr_writeback 0
    nr_slab_reclaimable 0
    nr_slab_unreclaimable 2
    nr_page_table_pages 0
    nr_kernel_stack 0
    nr_unstable  0
    nr_bounce    0
    nr_vmscan_write 0
    nr_writeback_temp 0
    nr_isolated_anon 0
    nr_isolated_file 0
    nr_shmem     0
        protection: (0, 865, 3022, 3022)
  pagesets
    cpu: 0
              count: 0
              high:  0
              batch: 1
  vm stats threshold: 4
    cpu: 1
              count: 0
              high:  0
              batch: 1
  vm stats threshold: 4
  all_unreclaimable: 0
  prev_priority:     9
  start_pfn:         16
  inactive_ratio:    1
 recent_anon_rotated: 0
 recent_anon_scanned: 0
 recent_file_rotated: 0
 recent_file_scanned: 0
 anon_ratio:          30
Node 0, zone   Normal
  pages free     197496
        min      932
        low      1165
        high     1398
        scanned  0
        spanned  223230
        present  221486
    nr_free_pages 197496
    nr_inactive_anon 0
    nr_active_anon 0
    nr_inactive_file 7344
    nr_active_file 3471
    nr_unevictable 0
    nr_mlock     0
    nr_anon_pages 0
    nr_mapped    1
    nr_file_pages 10814
    nr_dirty     27
    nr_writeback 0
    nr_slab_reclaimable 4660
    nr_slab_unreclaimable 1917
    nr_page_table_pages 0
    nr_kernel_stack 228
    nr_unstable  0
    nr_bounce    0
    nr_vmscan_write 0
    nr_writeback_temp 0
    nr_isolated_anon 0
    nr_isolated_file 0
    nr_shmem     0
        protection: (0, 0, 17259, 17259)
  pagesets
    cpu: 0
              count: 116
              high:  186
              batch: 31
  vm stats threshold: 16
    cpu: 1
              count: 61
              high:  186
              batch: 31
  vm stats threshold: 16
  all_unreclaimable: 0
  prev_priority:     9
  start_pfn:         4096
  inactive_ratio:    1
 recent_anon_rotated: 0
 recent_anon_scanned: 0
 recent_file_rotated: 5
 recent_file_scanned: 39
 anon_ratio:          6
Node 0, zone  HighMem
  pages free     133632
        min      128
        low      709
        high     1290
        scanned  0
        spanned  556658
        present  552309
    nr_free_pages 133632
    nr_inactive_anon 7700
    nr_active_anon 378501
    nr_inactive_file 26857
    nr_active_file 7181
    nr_unevictable 8
    nr_mlock     8
    nr_anon_pages 20335
    nr_mapped    11025
    nr_file_pages 399912
    nr_dirty     1
    nr_writeback 0
    nr_slab_reclaimable 0
    nr_slab_unreclaimable 0
    nr_page_table_pages 606
    nr_kernel_stack 0
    nr_unstable  0
    nr_bounce    0
    nr_vmscan_write 0
    nr_writeback_temp 0
    nr_isolated_anon 0
    nr_isolated_file 0
    nr_shmem     365874
        protection: (0, 0, 0, 0)
  pagesets
    cpu: 0
              count: 90
              high:  186
              batch: 31
  vm stats threshold: 24
    cpu: 1
              count: 164
              high:  186
              batch: 31
  vm stats threshold: 24
  all_unreclaimable: 0
  prev_priority:     9
  start_pfn:         227326
  inactive_ratio:    4
 recent_anon_rotated: 7752
 recent_anon_scanned: 27187
 recent_file_rotated: 0
 recent_file_scanned: 42
 anon_ratio:          3


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

* Re: [Bisected Regression in 2.6.35] A full tmpfs filesystem causes hibernationto hang
  2010-08-22 11:06 ` KOSAKI Motohiro
  2010-08-22 16:28   ` [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang M. Vefa Bicakci
@ 2010-08-23  0:22   ` KOSAKI Motohiro
  2010-08-23  6:27     ` [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang M. Vefa Bicakci
  1 sibling, 1 reply; 66+ messages in thread
From: KOSAKI Motohiro @ 2010-08-23  0:22 UTC (permalink / raw)
  To: M. Vefa Bicakci; +Cc: kosaki.motohiro, Linux Kernel Mailing List


sorry, my last mail has some mistake.

> Hmm... 
> I've tested hibernation case for a while. but I have no luck. I couldn't
> reproduce your issue. Very sorry. Can you please help our debugging? 
> If possible, I hope to run following three test.
> 
> 1. Please let me know your machine & test script
> 

% ./your-fills-up-the-tmpfs-script   (i.e. run your script)

> % cat /proc/meminfo
> % cat /proc/vmstat
> % cat /proc/zoneinfo
> % df
> % cat your-fills-up-the-tmpfs-script
> 
> 2. call shrink_all_memory() forcely and show result
> 


% ./your-fills-up-the-tmpfs-script

> % cat /proc/meminfo
> % cat /proc/zoneinfo
> # echo 1 > /proc/sys/vm/shrink_all_memory
> # tail /var/log/messages
> % cat /proc/meminfo
> % cat /proc/zoneinfo
> 
> 
> 3. reset zone_reclaim_stat and rerun shrink_all_memory
> 


% ./your-fills-up-the-tmpfs-script

> # echo 1 > /proc/sys/vm/reset_reclaim_stat
> % cat /proc/meminfo
> % cat /proc/zoneinfo
> # echo 1 > /proc/sys/vm/shrink_all_memory
> # tail /var/log/messages
> % cat /proc/meminfo
> % cat /proc/zoneinfo
> 
> 




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

* Re: [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang
  2010-08-23  0:22   ` [Bisected Regression in 2.6.35] A full tmpfs filesystem causes hibernationto hang KOSAKI Motohiro
@ 2010-08-23  6:27     ` M. Vefa Bicakci
  2010-08-25  0:48       ` KOSAKI Motohiro
  0 siblings, 1 reply; 66+ messages in thread
From: M. Vefa Bicakci @ 2010-08-23  6:27 UTC (permalink / raw)
  To: KOSAKI Motohiro; +Cc: Linux Kernel Mailing List

Hello,

On 23/08/10 03:22 AM, KOSAKI Motohiro wrote:
> 
> sorry, my last mail has some mistake.
> 

No problem. I did the tests again according to your new instructions,
and I am appending the results.

Regards,

M. Vefa Bicakci

> 1. Please let me know your machine & test script
>

% ./your-fills-up-the-tmpfs-script   (i.e. run your script)

> % cat /proc/meminfo

MemTotal:        3104484 kB
MemFree:         1258780 kB
Buffers:           30820 kB
Cached:          1693836 kB
SwapCached:            0 kB
Active:          1670344 kB
Inactive:         137960 kB
Active(anon):    1633940 kB
Inactive(anon):    26224 kB
Active(file):      36404 kB
Inactive(file):   111736 kB
Unevictable:          32 kB
Mlocked:              32 kB
HighTotal:       2226632 kB
HighFree:         437684 kB
LowTotal:         877852 kB
LowFree:          821096 kB
SwapTotal:       1999540 kB
SwapFree:        1999540 kB
Dirty:                28 kB
Writeback:             0 kB
AnonPages:         83676 kB
Mapped:            44220 kB
Shmem:           1576520 kB
Slab:              17136 kB
SReclaimable:       9480 kB
SUnreclaim:         7656 kB
KernelStack:        1832 kB
PageTables:         2440 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     3551780 kB
Committed_AS:    1892636 kB
VmallocTotal:     122880 kB
VmallocUsed:       16308 kB
VmallocChunk:      92764 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       4096 kB
DirectMap4k:       24568 kB
DirectMap4M:      884736 kB


> % cat /proc/vmstat

nr_free_pages 314850
nr_inactive_anon 6480
nr_active_anon 408485
nr_inactive_file 27935
nr_active_file 9101
nr_unevictable 8
nr_mlock 8
nr_anon_pages 20919
nr_mapped 11055
nr_file_pages 431089
nr_dirty 8
nr_writeback 0
nr_slab_reclaimable 2370
nr_slab_unreclaimable 1914
nr_page_table_pages 610
nr_kernel_stack 229
nr_unstable 0
nr_bounce 0
nr_vmscan_write 0
nr_writeback_temp 0
nr_isolated_anon 0
nr_isolated_file 0
nr_shmem 394054
pgpgin 150719
pgpgout 5312
pswpin 0
pswpout 0
pgalloc_dma 2
pgalloc_normal 116354
pgalloc_high 2637682
pgalloc_movable 0
pgfree 3069531
pgactivate 2339016
pgdeactivate 160
pgfault 699155
pgmajfault 1082
pgrefill_dma 0
pgrefill_normal 0
pgrefill_high 160
pgrefill_movable 0
pgsteal_dma 0
pgsteal_normal 0
pgsteal_high 29
pgsteal_movable 0
pgscan_kswapd_dma 0
pgscan_kswapd_normal 0
pgscan_kswapd_high 0
pgscan_kswapd_movable 0
pgscan_direct_dma 0
pgscan_direct_normal 0
pgscan_direct_high 32
pgscan_direct_movable 0
pginodesteal 0
slabs_scanned 0
kswapd_steal 0
kswapd_inodesteal 0
kswapd_low_wmark_hit_quickly 0
kswapd_high_wmark_hit_quickly 0
kswapd_skip_congestion_wait 0
pageoutrun 0
allocstall 1
pgrotated 0
htlb_buddy_alloc_success 0
htlb_buddy_alloc_fail 0
unevictable_pgs_culled 7832
unevictable_pgs_scanned 0
unevictable_pgs_rescued 7046
unevictable_pgs_mlocked 8562
unevictable_pgs_munlocked 8554
unevictable_pgs_cleared 0
unevictable_pgs_stranded 0
unevictable_pgs_mlockfreed 0

> % cat /proc/zoneinfo

Node 0, zone      DMA
  pages free     2614
        min      16
        low      20
        high     24
        scanned  0
        spanned  4080
        present  3951
    nr_free_pages 2614
    nr_inactive_anon 0
    nr_active_anon 0
    nr_inactive_file 0
    nr_active_file 0
    nr_unevictable 0
    nr_mlock     0
    nr_anon_pages 0
    nr_mapped    0
    nr_file_pages 0
    nr_dirty     0
    nr_writeback 0
    nr_slab_reclaimable 0
    nr_slab_unreclaimable 2
    nr_page_table_pages 0
    nr_kernel_stack 0
    nr_unstable  0
    nr_bounce    0
    nr_vmscan_write 0
    nr_writeback_temp 0
    nr_isolated_anon 0
    nr_isolated_file 0
    nr_shmem     0
        protection: (0, 865, 3022, 3022)
  pagesets
    cpu: 0
              count: 0
              high:  0
              batch: 1
  vm stats threshold: 4
    cpu: 1
              count: 0
              high:  0
              batch: 1
  vm stats threshold: 4
  all_unreclaimable: 0
  prev_priority:     9
  start_pfn:         16
  inactive_ratio:    1
 recent_anon_rotated: 0
 recent_anon_scanned: 0
 recent_file_rotated: 0
 recent_file_scanned: 0
 anon_ratio:          30
Node 0, zone   Normal
  pages free     202722
        min      932
        low      1165
        high     1398
        scanned  0
        spanned  223230
        present  221486
    nr_free_pages 202722
    nr_inactive_anon 0
    nr_active_anon 0
    nr_inactive_file 5792
    nr_active_file 1970
    nr_unevictable 0
    nr_mlock     0
    nr_anon_pages 0
    nr_mapped    1
    nr_file_pages 7761
    nr_dirty     7
    nr_writeback 0
    nr_slab_reclaimable 2370
    nr_slab_unreclaimable 1912
    nr_page_table_pages 0
    nr_kernel_stack 229
    nr_unstable  0
    nr_bounce    0
    nr_vmscan_write 0
    nr_writeback_temp 0
    nr_isolated_anon 0
    nr_isolated_file 0
    nr_shmem     0
        protection: (0, 0, 17259, 17259)
  pagesets
    cpu: 0
              count: 155
              high:  186
              batch: 31
  vm stats threshold: 16
    cpu: 1
              count: 173
              high:  186
              batch: 31
  vm stats threshold: 16
  all_unreclaimable: 0
  prev_priority:     9
  start_pfn:         4096
  inactive_ratio:    1
 recent_anon_rotated: 0
 recent_anon_scanned: 0
 recent_file_rotated: 272
 recent_file_scanned: 1385
 anon_ratio:          7
Node 0, zone  HighMem
  pages free     109607
        min      128
        low      709
        high     1290
        scanned  0
        spanned  556658
        present  552309
    nr_free_pages 109607
    nr_inactive_anon 6482
    nr_active_anon 408478
    nr_inactive_file 22146
    nr_active_file 7131
    nr_unevictable 8
    nr_mlock     8
    nr_anon_pages 20919
    nr_mapped    11054
    nr_file_pages 423333
    nr_dirty     2
    nr_writeback 0
    nr_slab_reclaimable 0
    nr_slab_unreclaimable 0
    nr_page_table_pages 610
    nr_kernel_stack 0
    nr_unstable  0
    nr_bounce    0
    nr_vmscan_write 0
    nr_writeback_temp 0
    nr_isolated_anon 0
    nr_isolated_file 0
    nr_shmem     394056
        protection: (0, 0, 0, 0)
  pagesets
    cpu: 0
              count: 107
              high:  186
              batch: 31
  vm stats threshold: 24
    cpu: 1
              count: 129
              high:  186
              batch: 31
  vm stats threshold: 24
  all_unreclaimable: 0
  prev_priority:     9
  start_pfn:         227326
  inactive_ratio:    4
 recent_anon_rotated: 1259857
 recent_anon_scanned: 2522124
 recent_file_rotated: 1269
 recent_file_scanned: 5591
 anon_ratio:          16

> % df

Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda15            10317828   7309436   2484276  75% /
tmpfs                  1552240         8   1552232   1% /lib/init/rw
udev                   1549148       220   1548928   1% /dev
tmpfs                  1552240         4   1552236   1% /dev/shm
tmpfs                  1552240   1552240         0 100% /tmp

> % cat your-fills-up-the-tmpfs-script

#!/bin/bash

rm -vf /tmp/tmp
dd if=/dev/zero of=/tmp/tmp bs=1024k count=1600
shred -vn1 /tmp/tmp

exit 0 ### removed when testing hibernation

read -p "Press enter to hibernate..."

echo -n reboot > /sys/power/disk
echo -n disk > /sys/power/state

echo "Exit code: $?"

rm -vf /tmp/tmp


>
> 2. call shrink_all_memory() forcely and show result
>

% ./your-fills-up-the-tmpfs-script

> % cat /proc/meminfo

MemTotal:        3104484 kB
MemFree:         1259400 kB
Buffers:           30836 kB
Cached:          1693572 kB
SwapCached:            0 kB
Active:          1670356 kB
Inactive:         137708 kB
Active(anon):    1633948 kB
Inactive(anon):    25944 kB
Active(file):      36408 kB
Inactive(file):   111764 kB
Unevictable:          32 kB
Mlocked:              32 kB
HighTotal:       2226632 kB
HighFree:         438056 kB
LowTotal:         877852 kB
LowFree:          821344 kB
SwapTotal:       1999540 kB
SwapFree:        1999540 kB
Dirty:                36 kB
Writeback:             0 kB
AnonPages:         83684 kB
Mapped:            44236 kB
Shmem:           1576240 kB
Slab:              17136 kB
SReclaimable:       9480 kB
SUnreclaim:         7656 kB
KernelStack:        1832 kB
PageTables:         2440 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     3551780 kB
Committed_AS:    1892412 kB
VmallocTotal:     122880 kB
VmallocUsed:       16308 kB
VmallocChunk:      92764 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       4096 kB
DirectMap4k:       24568 kB
DirectMap4M:      884736 kB

> % cat /proc/zoneinfo

Node 0, zone      DMA
  pages free     2614
        min      16
        low      20
        high     24
        scanned  0
        spanned  4080
        present  3951
    nr_free_pages 2614
    nr_inactive_anon 0
    nr_active_anon 0
    nr_inactive_file 0
    nr_active_file 0
    nr_unevictable 0
    nr_mlock     0
    nr_anon_pages 0
    nr_mapped    0
    nr_file_pages 0
    nr_dirty     0
    nr_writeback 0
    nr_slab_reclaimable 0
    nr_slab_unreclaimable 2
    nr_page_table_pages 0
    nr_kernel_stack 0
    nr_unstable  0
    nr_bounce    0
    nr_vmscan_write 0
    nr_writeback_temp 0
    nr_isolated_anon 0
    nr_isolated_file 0
    nr_shmem     0
        protection: (0, 865, 3022, 3022)
  pagesets
    cpu: 0
              count: 0
              high:  0
              batch: 1
  vm stats threshold: 4
    cpu: 1
              count: 0
              high:  0
              batch: 1
  vm stats threshold: 4
  all_unreclaimable: 0
  prev_priority:     9
  start_pfn:         16
  inactive_ratio:    1
 recent_anon_rotated: 0
 recent_anon_scanned: 0
 recent_file_rotated: 0
 recent_file_scanned: 0
 anon_ratio:          30
Node 0, zone   Normal
  pages free     202691
        min      932
        low      1165
        high     1398
        scanned  0
        spanned  223230
        present  221486
    nr_free_pages 202691
    nr_inactive_anon 0
    nr_active_anon 0
    nr_inactive_file 5796
    nr_active_file 1970
    nr_unevictable 0
    nr_mlock     0
    nr_anon_pages 0
    nr_mapped    1
    nr_file_pages 7765
    nr_dirty     7
    nr_writeback 0
    nr_slab_reclaimable 2370
    nr_slab_unreclaimable 1912
    nr_page_table_pages 0
    nr_kernel_stack 229
    nr_unstable  0
    nr_bounce    0
    nr_vmscan_write 0
    nr_writeback_temp 0
    nr_isolated_anon 0
    nr_isolated_file 0
    nr_shmem     0
        protection: (0, 0, 17259, 17259)
  pagesets
    cpu: 0
              count: 161
              high:  186
              batch: 31
  vm stats threshold: 16
    cpu: 1
              count: 170
              high:  186
              batch: 31
  vm stats threshold: 16
  all_unreclaimable: 0
  prev_priority:     9
  start_pfn:         4096
  inactive_ratio:    1
 recent_anon_rotated: 0
 recent_anon_scanned: 0
 recent_file_rotated: 272
 recent_file_scanned: 1389
 anon_ratio:          7
Node 0, zone  HighMem
  pages free     109514
        min      128
        low      709
        high     1290
        scanned  0
        spanned  556658
        present  552309
    nr_free_pages 109514
    nr_inactive_anon 6484
    nr_active_anon 408487
    nr_inactive_file 22148
    nr_active_file 7132
    nr_unevictable 8
    nr_mlock     8
    nr_anon_pages 20921
    nr_mapped    11058
    nr_file_pages 423338
    nr_dirty     3
    nr_writeback 0
    nr_slab_reclaimable 0
    nr_slab_unreclaimable 0
    nr_page_table_pages 610
    nr_kernel_stack 0
    nr_unstable  0
    nr_bounce    0
    nr_vmscan_write 0
    nr_writeback_temp 0
    nr_isolated_anon 0
    nr_isolated_file 0
    nr_shmem     394058
        protection: (0, 0, 0, 0)
  pagesets
    cpu: 0
              count: 167
              high:  186
              batch: 31
  vm stats threshold: 24
    cpu: 1
              count: 156
              high:  186
              batch: 31
  vm stats threshold: 24
  all_unreclaimable: 0
  prev_priority:     9
  start_pfn:         227326
  inactive_ratio:    4
 recent_anon_rotated: 1650360
 recent_anon_scanned: 3304957
 recent_file_rotated: 1270
 recent_file_scanned: 5595
 anon_ratio:          16

> # echo 1 > /proc/sys/vm/shrink_all_memory

> # tail /var/log/messages

[  439.165652] shrink_all_memory start
[  439.165960] shrink_all_memory: req:1 reclaimed:32 free:313765

> % cat /proc/meminfo

MemTotal:        3104484 kB
MemFree:         1259516 kB
Buffers:           30852 kB
Cached:          1693672 kB
SwapCached:            0 kB
Active:          1669728 kB
Inactive:         138456 kB
Active(anon):    1633320 kB
Inactive(anon):    26800 kB
Active(file):      36408 kB
Inactive(file):   111656 kB
Unevictable:          32 kB
Mlocked:              32 kB
HighTotal:       2226632 kB
HighFree:         438180 kB
LowTotal:         877852 kB
LowFree:          821336 kB
SwapTotal:       1999540 kB
SwapFree:        1999540 kB
Dirty:                40 kB
Writeback:             0 kB
AnonPages:         83696 kB
Mapped:            44236 kB
Shmem:           1576460 kB
Slab:              17140 kB
SReclaimable:       9484 kB
SUnreclaim:         7656 kB
KernelStack:        1840 kB
PageTables:         2440 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     3551780 kB
Committed_AS:    1892540 kB
VmallocTotal:     122880 kB
VmallocUsed:       16308 kB
VmallocChunk:      92764 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       4096 kB
DirectMap4k:       24568 kB
DirectMap4M:      884736 kB

> % cat /proc/zoneinfo

Node 0, zone      DMA
  pages free     2614
        min      16
        low      20
        high     24
        scanned  0
        spanned  4080
        present  3951
    nr_free_pages 2614
    nr_inactive_anon 0
    nr_active_anon 0
    nr_inactive_file 0
    nr_active_file 0
    nr_unevictable 0
    nr_mlock     0
    nr_anon_pages 0
    nr_mapped    0
    nr_file_pages 0
    nr_dirty     0
    nr_writeback 0
    nr_slab_reclaimable 0
    nr_slab_unreclaimable 2
    nr_page_table_pages 0
    nr_kernel_stack 0
    nr_unstable  0
    nr_bounce    0
    nr_vmscan_write 0
    nr_writeback_temp 0
    nr_isolated_anon 0
    nr_isolated_file 0
    nr_shmem     0
        protection: (0, 865, 3022, 3022)
  pagesets
    cpu: 0
              count: 0
              high:  0
              batch: 1
  vm stats threshold: 4
    cpu: 1
              count: 0
              high:  0
              batch: 1
  vm stats threshold: 4
  all_unreclaimable: 0
  prev_priority:     9
  start_pfn:         16
  inactive_ratio:    1
 recent_anon_rotated: 0
 recent_anon_scanned: 0
 recent_file_rotated: 0
 recent_file_scanned: 0
 anon_ratio:          30
Node 0, zone   Normal
  pages free     202720
        min      932
        low      1165
        high     1398
        scanned  0
        spanned  223230
        present  221486
    nr_free_pages 202720
    nr_inactive_anon 0
    nr_active_anon 0
    nr_inactive_file 5798
    nr_active_file 1970
    nr_unevictable 0
    nr_mlock     0
    nr_anon_pages 0
    nr_mapped    1
    nr_file_pages 7767
    nr_dirty     0
    nr_writeback 0
    nr_slab_reclaimable 2371
    nr_slab_unreclaimable 1912
    nr_page_table_pages 0
    nr_kernel_stack 230
    nr_unstable  0
    nr_bounce    0
    nr_vmscan_write 0
    nr_writeback_temp 0
    nr_isolated_anon 0
    nr_isolated_file 0
    nr_shmem     0
        protection: (0, 0, 17259, 17259)
  pagesets
    cpu: 0
              count: 139
              high:  186
              batch: 31
  vm stats threshold: 16
    cpu: 1
              count: 165
              high:  186
              batch: 31
  vm stats threshold: 16
  all_unreclaimable: 0
  prev_priority:     9
  start_pfn:         4096
  inactive_ratio:    1
 recent_anon_rotated: 0
 recent_anon_scanned: 0
 recent_file_rotated: 272
 recent_file_scanned: 1391
 anon_ratio:          7
Node 0, zone  HighMem
  pages free     109576
        min      128
        low      709
        high     1290
        scanned  0
        spanned  556658
        present  552309
    nr_free_pages 109576
    nr_inactive_anon 6642
    nr_active_anon 408330
    nr_inactive_file 22118
    nr_active_file 7132
    nr_unevictable 8
    nr_mlock     8
    nr_anon_pages 20924
    nr_mapped    11058
    nr_file_pages 423306
    nr_dirty     3
    nr_writeback 0
    nr_slab_reclaimable 0
    nr_slab_unreclaimable 0
    nr_page_table_pages 610
    nr_kernel_stack 0
    nr_unstable  0
    nr_bounce    0
    nr_vmscan_write 0
    nr_writeback_temp 0
    nr_isolated_anon 0
    nr_isolated_file 0
    nr_shmem     394056
        protection: (0, 0, 0, 0)
  pagesets
    cpu: 0
              count: 158
              high:  186
              batch: 31
  vm stats threshold: 24
    cpu: 1
              count: 133
              high:  186
              batch: 31
  vm stats threshold: 24
  all_unreclaimable: 0
  prev_priority:     9
  start_pfn:         227326
  inactive_ratio:    4
 recent_anon_rotated: 103467
 recent_anon_scanned: 207085
 recent_file_rotated: 1270
 recent_file_scanned: 5629
 anon_ratio:          16

> 3. reset zone_reclaim_stat and rerun shrink_all_memory
>

% ./your-fills-up-the-tmpfs-script

> # echo 1 > /proc/sys/vm/reset_reclaim_stat
> % cat /proc/meminfo

MemTotal:        3104484 kB
MemFree:         1260012 kB
Buffers:           30884 kB
Cached:          1693496 kB
SwapCached:            0 kB
Active:          1669736 kB
Inactive:         138316 kB
Active(anon):    1633324 kB
Inactive(anon):    26616 kB
Active(file):      36412 kB
Inactive(file):   111700 kB
Unevictable:          32 kB
Mlocked:              32 kB
HighTotal:       2226632 kB
HighFree:         438304 kB
LowTotal:         877852 kB
LowFree:          821708 kB
SwapTotal:       1999540 kB
SwapFree:        1999540 kB
Dirty:                12 kB
Writeback:             0 kB
AnonPages:         83700 kB
Mapped:            44240 kB
Shmem:           1576272 kB
Slab:              17140 kB
SReclaimable:       9484 kB
SUnreclaim:         7656 kB
KernelStack:        1840 kB
PageTables:         2440 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     3551780 kB
Committed_AS:    1892440 kB
VmallocTotal:     122880 kB
VmallocUsed:       16308 kB
VmallocChunk:      92764 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       4096 kB
DirectMap4k:       24568 kB
DirectMap4M:      884736 kB

> % cat /proc/zoneinfo


Node 0, zone      DMA
  pages free     2614
        min      16
        low      20
        high     24
        scanned  0
        spanned  4080
        present  3951
    nr_free_pages 2614
    nr_inactive_anon 0
    nr_active_anon 0
    nr_inactive_file 0
    nr_active_file 0
    nr_unevictable 0
    nr_mlock     0
    nr_anon_pages 0
    nr_mapped    0
    nr_file_pages 0
    nr_dirty     0
    nr_writeback 0
    nr_slab_reclaimable 0
    nr_slab_unreclaimable 2
    nr_page_table_pages 0
    nr_kernel_stack 0
    nr_unstable  0
    nr_bounce    0
    nr_vmscan_write 0
    nr_writeback_temp 0
    nr_isolated_anon 0
    nr_isolated_file 0
    nr_shmem     0
        protection: (0, 865, 3022, 3022)
  pagesets
    cpu: 0
              count: 0
              high:  0
              batch: 1
  vm stats threshold: 4
    cpu: 1
              count: 0
              high:  0
              batch: 1
  vm stats threshold: 4
  all_unreclaimable: 0
  prev_priority:     9
  start_pfn:         16
  inactive_ratio:    1
 recent_anon_rotated: 0
 recent_anon_scanned: 0
 recent_file_rotated: 0
 recent_file_scanned: 0
 anon_ratio:          30
Node 0, zone   Normal
  pages free     202844
        min      932
        low      1165
        high     1398
        scanned  0
        spanned  223230
        present  221486
    nr_free_pages 202844
    nr_inactive_anon 0
    nr_active_anon 0
    nr_inactive_file 5808
    nr_active_file 1970
    nr_unevictable 0
    nr_mlock     0
    nr_anon_pages 0
    nr_mapped    1
    nr_file_pages 7777
    nr_dirty     5
    nr_writeback 0
    nr_slab_reclaimable 2371
    nr_slab_unreclaimable 1912
    nr_page_table_pages 0
    nr_kernel_stack 230
    nr_unstable  0
    nr_bounce    0
    nr_vmscan_write 0
    nr_writeback_temp 0
    nr_isolated_anon 0
    nr_isolated_file 0
    nr_shmem     0
        protection: (0, 0, 17259, 17259)
  pagesets
    cpu: 0
              count: 153
              high:  186
              batch: 31
  vm stats threshold: 16
    cpu: 1
              count: 39
              high:  186
              batch: 31
  vm stats threshold: 16
  all_unreclaimable: 0
  prev_priority:     9
  start_pfn:         4096
  inactive_ratio:    1
 recent_anon_rotated: 0
 recent_anon_scanned: 0
 recent_file_rotated: 0
 recent_file_scanned: 2
 anon_ratio:          12
Node 0, zone  HighMem
  pages free     109607
        min      128
        low      709
        high     1290
        scanned  0
        spanned  556658
        present  552309
    nr_free_pages 109607
    nr_inactive_anon 6638
    nr_active_anon 408331
    nr_inactive_file 22120
    nr_active_file 7133
    nr_unevictable 8
    nr_mlock     8
    nr_anon_pages 20925
    nr_mapped    11057
    nr_file_pages 423305
    nr_dirty     1
    nr_writeback 0
    nr_slab_reclaimable 0
    nr_slab_unreclaimable 0
    nr_page_table_pages 610
    nr_kernel_stack 0
    nr_unstable  0
    nr_bounce    0
    nr_vmscan_write 0
    nr_writeback_temp 0
    nr_isolated_anon 0
    nr_isolated_file 0
    nr_shmem     394052
        protection: (0, 0, 0, 0)
  pagesets
    cpu: 0
              count: 157
              high:  186
              batch: 31
  vm stats threshold: 24
    cpu: 1
              count: 94
              high:  186
              batch: 31
  vm stats threshold: 24
  all_unreclaimable: 0
  prev_priority:     9
  start_pfn:         227326
  inactive_ratio:    4
 recent_anon_rotated: 896
 recent_anon_scanned: 1078
 recent_file_rotated: 0
 recent_file_scanned: 1
 anon_ratio:          20

> # echo 1 > /proc/sys/vm/shrink_all_memory
> # tail /var/log/messages

[  504.609297] shrink_all_memory start
[  504.609537] shrink_all_memory: req:1 reclaimed:31 free:315005

> % cat /proc/meminfo


MemTotal:        3104484 kB
MemFree:         1255796 kB
Buffers:           30788 kB
Cached:          1697944 kB
SwapCached:            0 kB
Active:          1669480 kB
Inactive:         143044 kB
Active(anon):    1633064 kB
Inactive(anon):    31432 kB
Active(file):      36416 kB
Inactive(file):   111612 kB
Unevictable:          32 kB
Mlocked:              32 kB
HighTotal:       2226632 kB
HighFree:         433964 kB
LowTotal:         877852 kB
LowFree:          821832 kB
SwapTotal:       1999540 kB
SwapFree:        1999540 kB
Dirty:                40 kB
Writeback:             0 kB
AnonPages:         83852 kB
Mapped:            44220 kB
Shmem:           1580704 kB
Slab:              17140 kB
SReclaimable:       9484 kB
SUnreclaim:         7656 kB
KernelStack:        1840 kB
PageTables:         2440 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     3551780 kB
Committed_AS:    1896832 kB
VmallocTotal:     122880 kB
VmallocUsed:       16308 kB
VmallocChunk:      92764 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       4096 kB
DirectMap4k:       24568 kB
DirectMap4M:      884736 kB

> % cat /proc/zoneinfo

Node 0, zone      DMA
  pages free     2614
        min      16
        low      20
        high     24
        scanned  0
        spanned  4080
        present  3951
    nr_free_pages 2614
    nr_inactive_anon 0
    nr_active_anon 0
    nr_inactive_file 0
    nr_active_file 0
    nr_unevictable 0
    nr_mlock     0
    nr_anon_pages 0
    nr_mapped    0
    nr_file_pages 0
    nr_dirty     0
    nr_writeback 0
    nr_slab_reclaimable 0
    nr_slab_unreclaimable 2
    nr_page_table_pages 0
    nr_kernel_stack 0
    nr_unstable  0
    nr_bounce    0
    nr_vmscan_write 0
    nr_writeback_temp 0
    nr_isolated_anon 0
    nr_isolated_file 0
    nr_shmem     0
        protection: (0, 865, 3022, 3022)
  pagesets
    cpu: 0
              count: 0
              high:  0
              batch: 1
  vm stats threshold: 4
    cpu: 1
              count: 0
              high:  0
              batch: 1
  vm stats threshold: 4
  all_unreclaimable: 0
  prev_priority:     10
  start_pfn:         16
  inactive_ratio:    1
 recent_anon_rotated: 0
 recent_anon_scanned: 0
 recent_file_rotated: 0
 recent_file_scanned: 0
 anon_ratio:          30
Node 0, zone   Normal
  pages free     202844
        min      932
        low      1165
        high     1398
        scanned  0
        spanned  223230
        present  221486
    nr_free_pages 202844
    nr_inactive_anon 0
    nr_active_anon 0
    nr_inactive_file 5778
    nr_active_file 1971
    nr_unevictable 0
    nr_mlock     0
    nr_anon_pages 0
    nr_mapped    1
    nr_file_pages 7749
    nr_dirty     5
    nr_writeback 0
    nr_slab_reclaimable 2371
    nr_slab_unreclaimable 1912
    nr_page_table_pages 0
    nr_kernel_stack 230
    nr_unstable  0
    nr_bounce    0
    nr_vmscan_write 0
    nr_writeback_temp 0
    nr_isolated_anon 0
    nr_isolated_file 0
    nr_shmem     0
        protection: (0, 0, 17259, 17259)
  pagesets
    cpu: 0
              count: 102
              high:  186
              batch: 31
  vm stats threshold: 16
    cpu: 1
              count: 63
              high:  186
              batch: 31
  vm stats threshold: 16
  all_unreclaimable: 0
  prev_priority:     10
  start_pfn:         4096
  inactive_ratio:    1
 recent_anon_rotated: 0
 recent_anon_scanned: 0
 recent_file_rotated: 1
 recent_file_scanned: 38
 anon_ratio:          2
Node 0, zone  HighMem
  pages free     109545
        min      128
        low      709
        high     1290
        scanned  96
        spanned  556658
        present  552309
    nr_free_pages 109545
    nr_inactive_anon 6797
    nr_active_anon 408235
    nr_inactive_file 22122
    nr_active_file 7133
    nr_unevictable 8
    nr_mlock     8
    nr_anon_pages 20925
    nr_mapped    11054
    nr_file_pages 423370
    nr_dirty     5
    nr_writeback 0
    nr_slab_reclaimable 0
    nr_slab_unreclaimable 0
    nr_page_table_pages 610
    nr_kernel_stack 0
    nr_unstable  0
    nr_bounce    0
    nr_vmscan_write 0
    nr_writeback_temp 0
    nr_isolated_anon 0
    nr_isolated_file 0
    nr_shmem     394115
        protection: (0, 0, 0, 0)
  pagesets
    cpu: 0
              count: 137
              high:  186
              batch: 31
  vm stats threshold: 24
    cpu: 1
              count: 119
              high:  186
              batch: 31
  vm stats threshold: 24
  all_unreclaimable: 0
  prev_priority:     10
  start_pfn:         227326
  inactive_ratio:    4
 recent_anon_rotated: 1358
 recent_anon_scanned: 1730
 recent_file_rotated: 0
 recent_file_scanned: 3
 anon_ratio:          11


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

* Re: [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang
  2010-08-23  6:27     ` [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang M. Vefa Bicakci
@ 2010-08-25  0:48       ` KOSAKI Motohiro
  2010-08-25  8:39         ` KOSAKI Motohiro
  0 siblings, 1 reply; 66+ messages in thread
From: KOSAKI Motohiro @ 2010-08-25  0:48 UTC (permalink / raw)
  To: M. Vefa Bicakci; +Cc: kosaki.motohiro, Linux Kernel Mailing List

> Hello,
> 
> On 23/08/10 03:22 AM, KOSAKI Motohiro wrote:
> > 
> > sorry, my last mail has some mistake.
> > 
> 
> No problem. I did the tests again according to your new instructions,
> and I am appending the results.

Great!

> > 1. Please let me know your machine & test script
> >
> 
> % ./your-fills-up-the-tmpfs-script   (i.e. run your script)
> 
> > % cat /proc/meminfo
> 
> MemTotal:        3104484 kB
> MemFree:         1258780 kB

Hm, free memory is enough lots.


> Buffers:           30820 kB
> Cached:          1693836 kB
> SwapCached:            0 kB
> Active:          1670344 kB
> Inactive:         137960 kB
> Active(anon):    1633940 kB
> Inactive(anon):    26224 kB
> Active(file):      36404 kB
> Inactive(file):   111736 kB
> Unevictable:          32 kB
> Mlocked:              32 kB
> HighTotal:       2226632 kB
> HighFree:         437684 kB

You are using 32 bit system.

> LowTotal:         877852 kB
> LowFree:          821096 kB

low memory is empty!


> SwapTotal:       1999540 kB
> SwapFree:        1999540 kB
> Dirty:                28 kB
> Writeback:             0 kB
> AnonPages:         83676 kB
> Mapped:            44220 kB
> Shmem:           1576520 kB

tmpfs files are using about 1.5GB memory.
(because tmpfs is limited totalmem/2 by default)


> Slab:              17136 kB
> SReclaimable:       9480 kB
> SUnreclaim:         7656 kB
> KernelStack:        1832 kB
> PageTables:         2440 kB
> NFS_Unstable:          0 kB
> Bounce:                0 kB
> WritebackTmp:          0 kB
> CommitLimit:     3551780 kB
> Committed_AS:    1892636 kB
> VmallocTotal:     122880 kB
> VmallocUsed:       16308 kB
> VmallocChunk:      92764 kB
> HugePages_Total:       0
> HugePages_Free:        0
> HugePages_Rsvd:        0
> HugePages_Surp:        0
> Hugepagesize:       4096 kB
> DirectMap4k:       24568 kB
> DirectMap4M:      884736 kB


> > % cat /proc/zoneinfo
> 
> Node 0, zone      DMA
>  recent_anon_rotated: 0
>  recent_anon_scanned: 0
>  recent_file_rotated: 0
>  recent_file_scanned: 0
>  anon_ratio:          30
> Node 0, zone   Normal
>  recent_anon_rotated: 0
>  recent_anon_scanned: 0
>  recent_file_rotated: 272
>  recent_file_scanned: 1385
>  anon_ratio:          7
> Node 0, zone  HighMem
>  recent_anon_rotated: 1259857
>  recent_anon_scanned: 2522124
>  recent_file_rotated: 1269
>  recent_file_scanned: 5591
>  anon_ratio:          16

anon/file reclaim scanning ratio is NOT strange.


> 
> > % df
> 
> Filesystem           1K-blocks      Used Available Use% Mounted on
> /dev/sda15            10317828   7309436   2484276  75% /
> tmpfs                  1552240         8   1552232   1% /lib/init/rw
> udev                   1549148       220   1548928   1% /dev
> tmpfs                  1552240         4   1552236   1% /dev/shm
> tmpfs                  1552240   1552240         0 100% /tmp

Seems typical one drive system. no strange.


> > % cat your-fills-up-the-tmpfs-script
> 
> #!/bin/bash
> 
> rm -vf /tmp/tmp
> dd if=/dev/zero of=/tmp/tmp bs=1024k count=1600
> shred -vn1 /tmp/tmp
> 
> exit 0 ### removed when testing hibernation
> 
> read -p "Press enter to hibernate..."
> 
> echo -n reboot > /sys/power/disk
> echo -n disk > /sys/power/state
> 
> echo "Exit code: $?"
> 
> rm -vf /tmp/tmp

Almostly same with my test program ;)


> > # echo 1 > /proc/sys/vm/shrink_all_memory
> 
> > # tail /var/log/messages
> 
> [  439.165652] shrink_all_memory start
> [  439.165960] shrink_all_memory: req:1 reclaimed:32 free:313765
> 

My code doesn't makes hang!


Hmm... Hmm...
To be honest, I have no idea why your hang was happen.

1) zone normal is not used. your system don't need additional reclaim
   at all.
2) reclaim logic seems to doesn't makes hang.


Can you please try following additional test?

# echo 8 > /proc/sysrq-trigger
# echo disk > /sys/power/state





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

* Re: [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang
  2010-08-25  0:48       ` KOSAKI Motohiro
@ 2010-08-25  8:39         ` KOSAKI Motohiro
  2010-08-25 10:10           ` [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernationto hang M. Vefa Bicakci
       [not found]           ` <4C74EB70.3080406@superonline.com>
  0 siblings, 2 replies; 66+ messages in thread
From: KOSAKI Motohiro @ 2010-08-25  8:39 UTC (permalink / raw)
  To: M. Vefa Bicakci; +Cc: kosaki.motohiro, Linux Kernel Mailing List

> > #!/bin/bash
> > 
> > rm -vf /tmp/tmp
> > dd if=/dev/zero of=/tmp/tmp bs=1024k count=1600
> > shred -vn1 /tmp/tmp
> > 
> > exit 0 ### removed when testing hibernation
> > 
> > read -p "Press enter to hibernate..."
> > 
> > echo -n reboot > /sys/power/disk
> > echo -n disk > /sys/power/state
> > 
> > echo "Exit code: $?"
> > 
> > rm -vf /tmp/tmp
> 
> Almostly same with my test program ;)

Can you please try to avoid to use /tmp. As I said,

mount -t tmpfs none /mnt/another_tmpfs
dd if=/dev/zero of=/mnt/another_tmpfs/tmp bs=1024k count=1600
shred -vn1 /mnt/another_tmpfs/tmp


That said, We need to know you issue is lots-anon-pages issue or 
filesystem-full issue.



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

* Re: [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang
  2010-08-22 16:28   ` [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang M. Vefa Bicakci
@ 2010-08-25  8:55     ` KOSAKI Motohiro
  2010-08-25 10:11       ` [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernationto hang M. Vefa Bicakci
  2010-08-25 17:31       ` [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang Rafael J. Wysocki
  0 siblings, 2 replies; 66+ messages in thread
From: KOSAKI Motohiro @ 2010-08-25  8:55 UTC (permalink / raw)
  To: M. Vefa Bicakci
  Cc: kosaki.motohiro, Linux Kernel Mailing List, Rafael J. Wysocki

> > % cat /proc/meminfo
> 
> MemTotal:        3104484 kB
> MemFree:         2817616 kB
> Buffers:           31156 kB
> Cached:           142124 kB
> SwapCached:            0 kB
> Active:           116464 kB
> Inactive:         137424 kB
> Active(anon):      80852 kB
> Inactive(anon):    24820 kB
> Active(file):      35612 kB
> Inactive(file):   112604 kB
> Unevictable:          32 kB
> Mlocked:              32 kB
> HighTotal:       2226632 kB
> HighFree:        1994008 kB
> LowTotal:         877852 kB
> LowFree:          823608 kB
> SwapTotal:       1999540 kB
> SwapFree:        1999540 kB

!! Your swap partition is smaller than physical memory. As far as I know,
swap partition need physcal-mem x 2 size. Can you please try to change 
swap configuration?

Rafael, please correct me if I'm talking wrong.

Thanks.




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

* Re: [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernationto hang
  2010-08-25  8:39         ` KOSAKI Motohiro
@ 2010-08-25 10:10           ` M. Vefa Bicakci
       [not found]           ` <4C74EB70.3080406@superonline.com>
  1 sibling, 0 replies; 66+ messages in thread
From: M. Vefa Bicakci @ 2010-08-25 10:10 UTC (permalink / raw)
  To: KOSAKI Motohiro; +Cc: Linux Kernel Mailing List

(Sorry, I am sending this again as I forgot to include LKML in the CC.)

On 25/08/10 11:39 AM, KOSAKI Motohiro wrote:
> 
> Can you please try to avoid to use /tmp. As I said,
> 
> mount -t tmpfs none /mnt/another_tmpfs
> dd if=/dev/zero of=/mnt/another_tmpfs/tmp bs=1024k count=1600
> shred -vn1 /mnt/another_tmpfs/tmp
> 
> 
> That said, We need to know you issue is lots-anon-pages issue or 
> filesystem-full issue.

Hello,

I have changed my configuration so that I have a 8 gigabyte large
swap partition, and I have also made the changes you suggested
to my hibernation/fill-tmpfs script so that a tmpfs other than
/tmp is used.

Unfortunately, nothing changed. I still get hangs after a few lines
are printed to the console. The last two lines are from your patch.
Here is an observation from an actual test which ended with a hang:

=== 8< ===
PM: Preallocating image memory
shrink_all_memory: start
shrink_all_memory: req: 375019 reclaimed: 48055 free: 326810
=== >8 ===

One thing I should note is that, before your commit, I never had
any problems even though my swap size was not two times the size
of my physical memory and even though I used tmpfs as /tmp.

If there is anything I can do to debug this problem please let me
know.

Regards,

M. Vefa Bicakci



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

* Re: [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernationto hang
  2010-08-25  8:55     ` KOSAKI Motohiro
@ 2010-08-25 10:11       ` M. Vefa Bicakci
  2010-08-25 17:31       ` [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang Rafael J. Wysocki
  1 sibling, 0 replies; 66+ messages in thread
From: M. Vefa Bicakci @ 2010-08-25 10:11 UTC (permalink / raw)
  To: KOSAKI Motohiro; +Cc: Linux Kernel Mailing List, Rafael J. Wysocki

On 25/08/10 11:55 AM, KOSAKI Motohiro wrote:
>>> % cat /proc/meminfo
>>
>> MemTotal:        3104484 kB
>> MemFree:         2817616 kB
>> Buffers:           31156 kB
>> Cached:           142124 kB
>> SwapCached:            0 kB
>> Active:           116464 kB
>> Inactive:         137424 kB
>> Active(anon):      80852 kB
>> Inactive(anon):    24820 kB
>> Active(file):      35612 kB
>> Inactive(file):   112604 kB
>> Unevictable:          32 kB
>> Mlocked:              32 kB
>> HighTotal:       2226632 kB
>> HighFree:        1994008 kB
>> LowTotal:         877852 kB
>> LowFree:          823608 kB
>> SwapTotal:       1999540 kB
>> SwapFree:        1999540 kB
> 
> !! Your swap partition is smaller than physical memory. As far as I know,
> swap partition need physcal-mem x 2 size. Can you please try to change 
> swap configuration?
> 
> Rafael, please correct me if I'm talking wrong.
> 
> Thanks.

[Please see my reply in the other thread.]



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

* Re: [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang
  2010-08-25  8:55     ` KOSAKI Motohiro
  2010-08-25 10:11       ` [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernationto hang M. Vefa Bicakci
@ 2010-08-25 17:31       ` Rafael J. Wysocki
  1 sibling, 0 replies; 66+ messages in thread
From: Rafael J. Wysocki @ 2010-08-25 17:31 UTC (permalink / raw)
  To: KOSAKI Motohiro; +Cc: M. Vefa Bicakci, Linux Kernel Mailing List

On Wednesday, August 25, 2010, KOSAKI Motohiro wrote:
> > > % cat /proc/meminfo
> > 
> > MemTotal:        3104484 kB
> > MemFree:         2817616 kB
> > Buffers:           31156 kB
> > Cached:           142124 kB
> > SwapCached:            0 kB
> > Active:           116464 kB
> > Inactive:         137424 kB
> > Active(anon):      80852 kB
> > Inactive(anon):    24820 kB
> > Active(file):      35612 kB
> > Inactive(file):   112604 kB
> > Unevictable:          32 kB
> > Mlocked:              32 kB
> > HighTotal:       2226632 kB
> > HighFree:        1994008 kB
> > LowTotal:         877852 kB
> > LowFree:          823608 kB
> > SwapTotal:       1999540 kB
> > SwapFree:        1999540 kB
> 
> !! Your swap partition is smaller than physical memory. As far as I know,
> swap partition need physcal-mem x 2 size. Can you please try to change 
> swap configuration?
> 
> Rafael, please correct me if I'm talking wrong.

No, we only save 50% of RAM (at most) during hibernation.

Thanks,
Rafael

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

* Re: [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernationto hang
       [not found]             ` <20100826134506.F676.A69D9226@jp.fujitsu.com>
@ 2010-08-26 10:36               ` M. Vefa Bicakci
  2010-08-30  2:28                 ` KOSAKI Motohiro
  0 siblings, 1 reply; 66+ messages in thread
From: M. Vefa Bicakci @ 2010-08-26 10:36 UTC (permalink / raw)
  To: KOSAKI Motohiro; +Cc: Linux Kernel Mailing List

On 26/08/10 11:09 AM, KOSAKI Motohiro wrote:
>> If there is anything I can do to debug this problem please let me
>> know.
> 
> Vefa, your above log is very useful. really thanks.
> So, I'm convinced two things.
>  - my patch is purely unrelated.
>  - how to fix your issue.
> 
> Can you please try attached patch? I bet this can solve your issue.
> 
> Thanks for your patience.

Hello!

First of all, thanks a lot for your help - I really appreciate it.

I applied your new patches on top of your old patches. Hopefully that
was okay.

Unfortunately, it didn't work this time. Here's a sample output from the
new patch.

=== 8< ===
[58.050208] PM: Preallocating image memory...
[58.159881] shrink_all_memory start
[58.232411] PM: shrink memory: pass=1, req:312373 reclaimed:15864 free:358420
[58.342041] PM: shrink memory: pass=2, req:296509 reclaimed:21837 free:362167
[60.690035] PM: shrink memory: pass=3, req:274672 reclaimed:25982 free:348006
[61.754931] PM: shrink memory: pass=4, req:248690 reclaimed:49623 free:371589
[64.361714] PM: shrink memory: pass=5, req:199067 reclaimed:74683 free:396695
[64.361769] shrink_all_memory: req:124384 reclaimed:74683 free:396695
=== >8 ===

The interesting thing is that even though there is a lot of free memory at the
end, it still hangs. I also included the timestamps; note the one and two second
delays between the passes.

Please let me know if there is anything I can do.

Regards,

M. Vefa Bicakci

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

* Re: [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernationto hang
  2010-08-26 10:36               ` M. Vefa Bicakci
@ 2010-08-30  2:28                 ` KOSAKI Motohiro
  2010-08-30 16:54                   ` [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang M. Vefa Bicakci
  0 siblings, 1 reply; 66+ messages in thread
From: KOSAKI Motohiro @ 2010-08-30  2:28 UTC (permalink / raw)
  To: M. Vefa Bicakci; +Cc: kosaki.motohiro, Linux Kernel Mailing List

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

> On 26/08/10 11:09 AM, KOSAKI Motohiro wrote:
> >> If there is anything I can do to debug this problem please let me
> >> know.
> > 
> > Vefa, your above log is very useful. really thanks.
> > So, I'm convinced two things.
> >  - my patch is purely unrelated.
> >  - how to fix your issue.
> > 
> > Can you please try attached patch? I bet this can solve your issue.
> > 
> > Thanks for your patience.
> 
> Hello!
> 
> First of all, thanks a lot for your help - I really appreciate it.
> 
> I applied your new patches on top of your old patches. Hopefully that
> was okay.
> 
> Unfortunately, it didn't work this time. Here's a sample output from the
> new patch.
> 
> === 8< ===
> [58.050208] PM: Preallocating image memory...
> [58.159881] shrink_all_memory start
> [58.232411] PM: shrink memory: pass=1, req:312373 reclaimed:15864 free:358420
> [58.342041] PM: shrink memory: pass=2, req:296509 reclaimed:21837 free:362167
> [60.690035] PM: shrink memory: pass=3, req:274672 reclaimed:25982 free:348006
> [61.754931] PM: shrink memory: pass=4, req:248690 reclaimed:49623 free:371589
> [64.361714] PM: shrink memory: pass=5, req:199067 reclaimed:74683 free:396695
> [64.361769] shrink_all_memory: req:124384 reclaimed:74683 free:396695
> === >8 ===
> 
> The interesting thing is that even though there is a lot of free memory at the
> end, it still hangs. 

Grr. I'm surprised this result ;-)
shrink_all_memory() finish to shrink memory successfully. but your
system still hang immediately after. I have no idea why this mysterious
occur. 

I prepared next debugging patch. It added prenty debug printk. I hope
it enlighten up which path makes system hang-up.

1. apply my new patch

2. Enable following PM debug option in Kconfig

  [*] Power Management support
  [*]   Power Management Debug Support
  [*]     Extra PM attributes in sysfs for low-level debugging/testing
  [*]     Verbose Power Management debugging

3. append following kernel boot option into grub configration file

	no_console_suspend=1

3. kernel build and reboot
4. some prepare
   # echo 8 > /proc/sysrq-trigger
   # cd /sys/power
   # echo 1 > pm_trace
   # echo 0 > pm_async

5. run your test program


> I also included the timestamps; note the one and two second
> delays between the passes.

This is expected result because tmpfs shrink need swap-out. then
we need i/o time.

> 
> Please let me know if there is anything I can do.

Please send me your .config and full dmesg.


Thanks many and many help us!

[-- Attachment #2: 0001-debug-messages.patch --]
[-- Type: application/octet-stream, Size: 2837 bytes --]

From 1b071d7958cb933cf99fbbe565fd33dbdd626a4d Mon Sep 17 00:00:00 2001
From: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Date: Mon, 15 Feb 2044 10:34:37 +0900
Subject: [PATCH] debug messages

Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
---
 kernel/power/snapshot.c |   25 +++++++++++++++++++++----
 1 files changed, 21 insertions(+), 4 deletions(-)

diff --git a/kernel/power/snapshot.c b/kernel/power/snapshot.c
index 5e7edfb..c864806 100644
--- a/kernel/power/snapshot.c
+++ b/kernel/power/snapshot.c
@@ -1263,7 +1263,7 @@ int hibernate_preallocate_memory(void)
 	struct timeval start, stop;
 	int error;
 
-	printk(KERN_INFO "PM: Preallocating image memory... ");
+	printk(KERN_INFO "PM: Preallocating image memory... \n");
 	do_gettimeofday(&start);
 
 	error = memory_bm_create(&orig_bm, GFP_IMAGE, PG_ANY);
@@ -1309,6 +1309,7 @@ int hibernate_preallocate_memory(void)
 	 * in memory, allocate page frames for the image and we're done.
 	 */
 	if (size >= saveable) {
+		printk(KERN_INFO "PM: size >= saveable. skip \n");
 		pages = preallocate_image_highmem(save_highmem);
 		pages += preallocate_image_memory(saveable - pages);
 		goto out;
@@ -1335,16 +1336,30 @@ int hibernate_preallocate_memory(void)
 	 * highmem and non-highmem zones separately.
 	 */
 	pages_highmem = preallocate_image_highmem(highmem / 2);
+	printk(KERN_INFO "PM: preallocate_image_highmem %lu %lu\n",
+	       highmem, pages_highmem);
+
 	alloc = (count - max_size) - pages_highmem;
 	pages = preallocate_image_memory(alloc);
-	if (pages < alloc)
+	printk(KERN_INFO "PM: preallocate_image_memory %lu %lu\n",
+	       alloc, pages);
+
+	if (pages < alloc) {
+		printk(KERN_INFO "PM: pages(%lu) < alloc(%lu). error. \n",
+		       pages, alloc);
 		goto err_out;
+	}
 	size = max_size - size;
 	alloc = size;
 	size = preallocate_highmem_fraction(size, highmem, count);
+	printk(KERN_INFO "PM: preallocate_highmem_fraction %lu %lu %lu -> %lu\n",
+	       size, highmem, count, size);
+
 	pages_highmem += size;
 	alloc -= size;
 	pages += preallocate_image_memory(alloc);
+	printk(KERN_INFO "PM: preallocate_image_memory %lu %lu\n",
+	       alloc, pages);
 	pages += pages_highmem;
 
 	/*
@@ -1352,18 +1367,20 @@ int hibernate_preallocate_memory(void)
 	 * pages in memory, but we have allocated more.  Release the excessive
 	 * ones now.
 	 */
+	printk(KERN_INFO "PM: free_unnecessary_pages() \n");
 	free_unnecessary_pages();
 
  out:
 	do_gettimeofday(&stop);
-	printk(KERN_CONT "done (allocated %lu pages)\n", pages);
+	printk(KERN_INFO "done (allocated %lu pages)\n", pages);
 	swsusp_show_speed(&start, &stop, pages, "Allocated");
 
 	return 0;
 
  err_out:
-	printk(KERN_CONT "\n");
+	printk(KERN_INFO "PM: err_out \n");
 	swsusp_free();
+	printk(KERN_INFO "PM: swsusp_free() end \n");
 	return -ENOMEM;
 }
 
-- 
1.6.5.2


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

* Re: [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang
  2010-08-30  2:28                 ` KOSAKI Motohiro
@ 2010-08-30 16:54                   ` M. Vefa Bicakci
  2010-08-31  6:35                     ` KOSAKI Motohiro
                                       ` (2 more replies)
  0 siblings, 3 replies; 66+ messages in thread
From: M. Vefa Bicakci @ 2010-08-30 16:54 UTC (permalink / raw)
  To: KOSAKI Motohiro; +Cc: Linux Kernel Mailing List

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

On 30/08/10 05:28 AM, KOSAKI Motohiro wrote:
>> [snip]
>>
>> The interesting thing is that even though there is a lot of free memory at the
>> end, it still hangs. 
> 
> Grr. I'm surprised this result ;-)
> shrink_all_memory() finish to shrink memory successfully. but your
> system still hang immediately after. I have no idea why this mysterious
> occur. 
> 
> I prepared next debugging patch. It added prenty debug printk. I hope
> it enlighten up which path makes system hang-up.
> 
> 1. apply my new patch
> 
> 2. Enable following PM debug option in Kconfig
> 
>   [*] Power Management support
>   [*]   Power Management Debug Support
>   [*]     Extra PM attributes in sysfs for low-level debugging/testing
>   [*]     Verbose Power Management debugging
> 
> 3. append following kernel boot option into grub configration file
> 
> 	no_console_suspend=1
> 
> 3. kernel build and reboot
> 4. some prepare
>    # echo 8 > /proc/sysrq-trigger
>    # cd /sys/power
>    # echo 1 > pm_trace
>    # echo 0 > pm_async
> 
> 5. run your test program
> 
> 
>> I also included the timestamps; note the one and two second
>> delays between the passes.
> 
> This is expected result because tmpfs shrink need swap-out. then
> we need i/o time.
> 
>>
>> Please let me know if there is anything I can do.
> 
> Please send me your .config and full dmesg.
> 
> 
> Thanks many and many help us!

Hello,

I have followed your instructions, with one exception: I have also
enabled CONFIG_PM_TRACE so that I would have /sys/power/pm_trace.

This time I had some more output, as expected. I double checked what
I typed while looking at the screen-shot I took with my camera. Here's
the output:

=== 8< ===
PM: Marking nosave pages: ...0009f000 - ...000100000
PM: basic memory bitmaps created
PM: Syncing filesystems ... done
Freezing user space processes ... (elapsed 0.01 seconds) done.
Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
PM: Preallocating image memory...
shrink_all_memory start
PM: shrink memory: pass=1, req:310171 reclaimed:15492 free:360936
PM: shrink memory: pass=2, req:294679 reclaimed:28864 free:373981
PM: shrink memory: pass=3, req:265815 reclaimed:60311 free:405374
PM: shrink memory: pass=4, req:205504 reclaimed:97870 free:443024
PM: shrink memory: pass=5, req:107634 reclaimed:146948 free:492141
shrink_all_memory: req:107634 reclaimed:146948 free:492141
PM: preallocate_image_highmem 556658 278329
PM: preallocate_image_memory 103139 103139
PM: preallocate_highmem_fraction 183908 556658 760831 -> 183908
=== >8 ===

According to your patch, the next output should have been
"preallocate_image_memory ...", but it never gets printed, so the
hang point should be that function.

I am attaching my dmesg output which I got after the failed hibernation
attempt and my .config file. Please note that the attached .config file
is a trimmed version of the .config I usually use on my computer. I trimmed
it so that it compiles faster, but (mostly) has support for devices I might
use.

Thanks a lot for your help, and please let me know if I can do anything else.

Regards,

M. Vefa Bicakci

[-- Attachment #2: config.txt --]
[-- Type: text/plain, Size: 80199 bytes --]

#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.35.3
# Mon Aug 30 14:40:02 2010
#
# CONFIG_64BIT is not set
CONFIG_X86_32=y
# CONFIG_X86_64 is not set
CONFIG_X86=y
CONFIG_INSTRUCTION_DECODER=y
CONFIG_OUTPUT_FORMAT="elf32-i386"
CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig"
CONFIG_GENERIC_TIME=y
CONFIG_GENERIC_CMOS_UPDATE=y
CONFIG_CLOCKSOURCE_WATCHDOG=y
CONFIG_GENERIC_CLOCKEVENTS=y
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_HAVE_LATENCYTOP_SUPPORT=y
CONFIG_MMU=y
CONFIG_ZONE_DMA=y
CONFIG_NEED_DMA_MAP_STATE=y
CONFIG_NEED_SG_DMA_LENGTH=y
CONFIG_GENERIC_ISA_DMA=y
CONFIG_GENERIC_IOMAP=y
CONFIG_GENERIC_BUG=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_GENERIC_GPIO=y
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
# CONFIG_GENERIC_TIME_VSYSCALL is not set
CONFIG_ARCH_HAS_CPU_RELAX=y
CONFIG_ARCH_HAS_DEFAULT_IDLE=y
CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
CONFIG_HAVE_SETUP_PER_CPU_AREA=y
CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
# CONFIG_HAVE_CPUMASK_OF_CPU_MAP is not set
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y
# CONFIG_ZONE_DMA32 is not set
CONFIG_ARCH_POPULATES_NODE_MAP=y
# CONFIG_AUDIT_ARCH is not set
CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
CONFIG_HAVE_EARLY_RES=y
CONFIG_HAVE_INTEL_TXT=y
CONFIG_GENERIC_HARDIRQS=y
CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_GENERIC_PENDING_IRQ=y
CONFIG_USE_GENERIC_SMP_HELPERS=y
CONFIG_X86_32_SMP=y
CONFIG_X86_HT=y
CONFIG_X86_TRAMPOLINE=y
CONFIG_X86_32_LAZY_GS=y
CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-ecx -fcall-saved-edx"
CONFIG_KTIME_SCALAR=y
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
CONFIG_CONSTRUCTORS=y

#
# General setup
#
CONFIG_EXPERIMENTAL=y
CONFIG_LOCK_KERNEL=y
CONFIG_INIT_ENV_ARG_LIMIT=32
CONFIG_CROSS_COMPILE=""
CONFIG_LOCALVERSION="-test-mm3"
CONFIG_LOCALVERSION_AUTO=y
CONFIG_HAVE_KERNEL_GZIP=y
CONFIG_HAVE_KERNEL_BZIP2=y
CONFIG_HAVE_KERNEL_LZMA=y
CONFIG_HAVE_KERNEL_LZO=y
CONFIG_KERNEL_GZIP=y
# CONFIG_KERNEL_BZIP2 is not set
# CONFIG_KERNEL_LZMA is not set
# CONFIG_KERNEL_LZO is not set
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
CONFIG_SYSVIPC_SYSCTL=y
CONFIG_POSIX_MQUEUE=y
CONFIG_POSIX_MQUEUE_SYSCTL=y
CONFIG_BSD_PROCESS_ACCT=y
CONFIG_BSD_PROCESS_ACCT_V3=y
CONFIG_TASKSTATS=y
CONFIG_TASK_DELAY_ACCT=y
CONFIG_TASK_XACCT=y
CONFIG_TASK_IO_ACCOUNTING=y
CONFIG_AUDIT=y
CONFIG_AUDITSYSCALL=y
CONFIG_AUDIT_TREE=y

#
# RCU Subsystem
#
# CONFIG_TREE_RCU is not set
CONFIG_TREE_PREEMPT_RCU=y
# CONFIG_TINY_RCU is not set
# CONFIG_RCU_TRACE is not set
CONFIG_RCU_FANOUT=32
# CONFIG_RCU_FANOUT_EXACT is not set
# CONFIG_TREE_RCU_TRACE is not set
CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
CONFIG_LOG_BUF_SHIFT=20
CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
CONFIG_CGROUPS=y
# CONFIG_CGROUP_DEBUG is not set
CONFIG_CGROUP_NS=y
CONFIG_CGROUP_FREEZER=y
CONFIG_CGROUP_DEVICE=y
CONFIG_CPUSETS=y
CONFIG_PROC_PID_CPUSET=y
CONFIG_CGROUP_CPUACCT=y
# CONFIG_RESOURCE_COUNTERS is not set
CONFIG_CGROUP_SCHED=y
CONFIG_FAIR_GROUP_SCHED=y
CONFIG_RT_GROUP_SCHED=y
CONFIG_BLK_CGROUP=y
# CONFIG_DEBUG_BLK_CGROUP is not set
# CONFIG_SYSFS_DEPRECATED_V2 is not set
CONFIG_RELAY=y
CONFIG_NAMESPACES=y
CONFIG_UTS_NS=y
CONFIG_IPC_NS=y
CONFIG_USER_NS=y
CONFIG_PID_NS=y
CONFIG_NET_NS=y
CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE=""
CONFIG_RD_GZIP=y
CONFIG_RD_BZIP2=y
CONFIG_RD_LZMA=y
CONFIG_RD_LZO=y
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
CONFIG_SYSCTL=y
CONFIG_ANON_INODES=y
# CONFIG_EMBEDDED is not set
CONFIG_UID16=y
CONFIG_SYSCTL_SYSCALL=y
CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_ALL is not set
# CONFIG_KALLSYMS_EXTRA_PASS is not set
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_PCSPKR_PLATFORM=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
CONFIG_SIGNALFD=y
CONFIG_TIMERFD=y
CONFIG_EVENTFD=y
CONFIG_SHMEM=y
CONFIG_AIO=y
CONFIG_HAVE_PERF_EVENTS=y

#
# Kernel Performance Events And Counters
#
CONFIG_PERF_EVENTS=y
# CONFIG_PERF_COUNTERS is not set
# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_PCI_QUIRKS=y
CONFIG_SLUB_DEBUG=y
# CONFIG_COMPAT_BRK is not set
# CONFIG_SLAB is not set
CONFIG_SLUB=y
# CONFIG_SLOB is not set
CONFIG_PROFILING=y
# CONFIG_OPROFILE is not set
CONFIG_HAVE_OPROFILE=y
# CONFIG_KPROBES is not set
CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
CONFIG_USER_RETURN_NOTIFIER=y
CONFIG_HAVE_IOREMAP_PROT=y
CONFIG_HAVE_KPROBES=y
CONFIG_HAVE_KRETPROBES=y
CONFIG_HAVE_OPTPROBES=y
CONFIG_HAVE_ARCH_TRACEHOOK=y
CONFIG_HAVE_DMA_ATTRS=y
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
CONFIG_HAVE_DMA_API_DEBUG=y
CONFIG_HAVE_HW_BREAKPOINT=y
CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y
CONFIG_HAVE_USER_RETURN_NOTIFIER=y

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

#
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_CFQ=y
CONFIG_CFQ_GROUP_IOSCHED=y
# CONFIG_DEFAULT_DEADLINE is not set
CONFIG_DEFAULT_CFQ=y
# CONFIG_DEFAULT_NOOP is not set
CONFIG_DEFAULT_IOSCHED="cfq"
CONFIG_PREEMPT_NOTIFIERS=y
# CONFIG_INLINE_SPIN_TRYLOCK is not set
# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
# CONFIG_INLINE_SPIN_LOCK is not set
# CONFIG_INLINE_SPIN_LOCK_BH is not set
# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
# CONFIG_INLINE_SPIN_UNLOCK is not set
# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set
# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
# CONFIG_INLINE_READ_TRYLOCK is not set
# CONFIG_INLINE_READ_LOCK is not set
# CONFIG_INLINE_READ_LOCK_BH is not set
# CONFIG_INLINE_READ_LOCK_IRQ is not set
# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
# CONFIG_INLINE_READ_UNLOCK is not set
# CONFIG_INLINE_READ_UNLOCK_BH is not set
# CONFIG_INLINE_READ_UNLOCK_IRQ is not set
# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
# CONFIG_INLINE_WRITE_TRYLOCK is not set
# CONFIG_INLINE_WRITE_LOCK is not set
# CONFIG_INLINE_WRITE_LOCK_BH is not set
# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
# CONFIG_INLINE_WRITE_UNLOCK is not set
# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set
# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
CONFIG_MUTEX_SPIN_ON_OWNER=y
CONFIG_FREEZER=y

#
# Processor type and features
#
CONFIG_TICK_ONESHOT=y
CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
CONFIG_SMP=y
CONFIG_SPARSE_IRQ=y
CONFIG_X86_MPPARSE=y
CONFIG_X86_BIGSMP=y
CONFIG_X86_EXTENDED_PLATFORM=y
# CONFIG_X86_ELAN is not set
CONFIG_X86_MRST=y
# CONFIG_X86_RDC321X is not set
CONFIG_X86_32_NON_STANDARD=y
# CONFIG_X86_NUMAQ is not set
# CONFIG_X86_SUMMIT is not set
# CONFIG_X86_ES7000 is not set
CONFIG_SCHED_OMIT_FRAME_POINTER=y
CONFIG_PARAVIRT_GUEST=y
# CONFIG_VMI is not set
CONFIG_KVM_CLOCK=y
CONFIG_KVM_GUEST=y
CONFIG_LGUEST_GUEST=y
CONFIG_PARAVIRT=y
# CONFIG_PARAVIRT_SPINLOCKS is not set
CONFIG_PARAVIRT_CLOCK=y
# CONFIG_PARAVIRT_DEBUG is not set
CONFIG_NO_BOOTMEM=y
# CONFIG_MEMTEST is not set
CONFIG_X86_CYCLONE_TIMER=y
# CONFIG_M386 is not set
# CONFIG_M486 is not set
# CONFIG_M586 is not set
# CONFIG_M586TSC is not set
# CONFIG_M586MMX is not set
# CONFIG_M686 is not set
# CONFIG_MPENTIUMII is not set
# CONFIG_MPENTIUMIII is not set
# CONFIG_MPENTIUMM is not set
# CONFIG_MPENTIUM4 is not set
# CONFIG_MK6 is not set
# CONFIG_MK7 is not set
# CONFIG_MK8 is not set
# CONFIG_MCRUSOE is not set
# CONFIG_MEFFICEON is not set
# CONFIG_MWINCHIPC6 is not set
# CONFIG_MWINCHIP3D is not set
# CONFIG_MGEODEGX1 is not set
# CONFIG_MGEODE_LX is not set
# CONFIG_MCYRIXIII is not set
# CONFIG_MVIAC3_2 is not set
# CONFIG_MVIAC7 is not set
# CONFIG_MPSC is not set
CONFIG_MCORE2=y
# CONFIG_MATOM is not set
# CONFIG_GENERIC_CPU is not set
CONFIG_X86_GENERIC=y
CONFIG_X86_CPU=y
CONFIG_X86_INTERNODE_CACHE_SHIFT=6
CONFIG_X86_CMPXCHG=y
CONFIG_X86_L1_CACHE_SHIFT=6
CONFIG_X86_XADD=y
CONFIG_X86_WP_WORKS_OK=y
CONFIG_X86_INVLPG=y
CONFIG_X86_BSWAP=y
CONFIG_X86_POPAD_OK=y
CONFIG_X86_INTEL_USERCOPY=y
CONFIG_X86_USE_PPRO_CHECKSUM=y
CONFIG_X86_TSC=y
CONFIG_X86_CMPXCHG64=y
CONFIG_X86_CMOV=y
CONFIG_X86_MINIMUM_CPU_FAMILY=5
CONFIG_X86_DEBUGCTLMSR=y
CONFIG_CPU_SUP_INTEL=y
CONFIG_CPU_SUP_CYRIX_32=y
CONFIG_CPU_SUP_AMD=y
CONFIG_CPU_SUP_CENTAUR=y
CONFIG_CPU_SUP_TRANSMETA_32=y
CONFIG_CPU_SUP_UMC_32=y
CONFIG_HPET_TIMER=y
CONFIG_HPET_EMULATE_RTC=y
CONFIG_APB_TIMER=y
CONFIG_DMI=y
# CONFIG_IOMMU_HELPER is not set
CONFIG_IOMMU_API=y
CONFIG_NR_CPUS=32
CONFIG_SCHED_SMT=y
CONFIG_SCHED_MC=y
# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT_VOLUNTARY is not set
CONFIG_PREEMPT=y
CONFIG_X86_LOCAL_APIC=y
CONFIG_X86_IO_APIC=y
CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
CONFIG_X86_MCE=y
CONFIG_X86_MCE_INTEL=y
CONFIG_X86_MCE_AMD=y
# CONFIG_X86_ANCIENT_MCE is not set
CONFIG_X86_MCE_THRESHOLD=y
# CONFIG_X86_MCE_INJECT is not set
CONFIG_X86_THERMAL_VECTOR=y
CONFIG_VM86=y
# CONFIG_TOSHIBA is not set
# CONFIG_I8K is not set
CONFIG_X86_REBOOTFIXUPS=y
# CONFIG_MICROCODE is not set
# CONFIG_X86_MSR is not set
# CONFIG_X86_CPUID is not set
# CONFIG_NOHIGHMEM is not set
CONFIG_HIGHMEM4G=y
# CONFIG_HIGHMEM64G is not set
CONFIG_PAGE_OFFSET=0xC0000000
CONFIG_HIGHMEM=y
# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
CONFIG_NEED_NODE_MEMMAP_SIZE=y
CONFIG_ARCH_FLATMEM_ENABLE=y
CONFIG_ARCH_SPARSEMEM_ENABLE=y
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
CONFIG_ILLEGAL_POINTER_VALUE=0
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_HAVE_MEMORY_PRESENT=y
CONFIG_SPARSEMEM_STATIC=y
# CONFIG_MEMORY_HOTPLUG is not set
CONFIG_SPLIT_PTLOCK_CPUS=4
# CONFIG_COMPACTION is not set
# CONFIG_PHYS_ADDR_T_64BIT is not set
CONFIG_ZONE_DMA_FLAG=1
CONFIG_BOUNCE=y
CONFIG_VIRT_TO_BUS=y
CONFIG_MMU_NOTIFIER=y
CONFIG_KSM=y
CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
CONFIG_HIGHPTE=y
# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set
CONFIG_X86_RESERVE_LOW_64K=y
# CONFIG_MATH_EMULATION is not set
CONFIG_MTRR=y
CONFIG_MTRR_SANITIZER=y
CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=0
CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1
CONFIG_X86_PAT=y
CONFIG_ARCH_USES_PG_UNCACHED=y
CONFIG_EFI=y
CONFIG_SECCOMP=y
# CONFIG_CC_STACKPROTECTOR is not set
# CONFIG_HZ_100 is not set
# CONFIG_HZ_250 is not set
# CONFIG_HZ_300 is not set
CONFIG_HZ_1000=y
CONFIG_HZ=1000
CONFIG_SCHED_HRTICK=y
CONFIG_KEXEC=y
# CONFIG_CRASH_DUMP is not set
# CONFIG_KEXEC_JUMP is not set
CONFIG_PHYSICAL_START=0x1000000
CONFIG_RELOCATABLE=y
CONFIG_X86_NEED_RELOCS=y
CONFIG_PHYSICAL_ALIGN=0x100000
CONFIG_HOTPLUG_CPU=y
# CONFIG_COMPAT_VDSO is not set
# CONFIG_CMDLINE_BOOL is not set
CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y

#
# Power management and ACPI options
#
CONFIG_PM=y
CONFIG_PM_DEBUG=y
CONFIG_PM_ADVANCED_DEBUG=y
CONFIG_PM_VERBOSE=y
CONFIG_CAN_PM_TRACE=y
CONFIG_PM_TRACE=y
CONFIG_PM_TRACE_RTC=y
CONFIG_PM_SLEEP_SMP=y
CONFIG_PM_SLEEP=y
# CONFIG_PM_SLEEP_ADVANCED_DEBUG is not set
CONFIG_SUSPEND_NVS=y
CONFIG_SUSPEND=y
CONFIG_SUSPEND_FREEZER=y
CONFIG_HIBERNATION=y
CONFIG_PM_STD_PARTITION=""
CONFIG_PM_RUNTIME=y
CONFIG_PM_OPS=y
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=m
CONFIG_ACPI_BATTERY=m
CONFIG_ACPI_BUTTON=m
CONFIG_ACPI_VIDEO=m
CONFIG_ACPI_FAN=m
CONFIG_ACPI_DOCK=y
CONFIG_ACPI_PROCESSOR=m
CONFIG_ACPI_HOTPLUG_CPU=y
# CONFIG_ACPI_PROCESSOR_AGGREGATOR is not set
CONFIG_ACPI_THERMAL=m
# CONFIG_ACPI_CUSTOM_DSDT is not set
CONFIG_ACPI_BLACKLIST_YEAR=0
# CONFIG_ACPI_DEBUG is not set
# CONFIG_ACPI_PCI_SLOT is not set
CONFIG_X86_PM_TIMER=y
CONFIG_ACPI_CONTAINER=m
# CONFIG_ACPI_SBS is not set
# CONFIG_ACPI_HED is not set
# CONFIG_ACPI_APEI is not set
CONFIG_SFI=y
# CONFIG_APM is not set

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

#
# CPUFreq processor drivers
#
# CONFIG_X86_PCC_CPUFREQ is not set
CONFIG_X86_ACPI_CPUFREQ=m
CONFIG_X86_POWERNOW_K6=m
CONFIG_X86_POWERNOW_K7=m
CONFIG_X86_POWERNOW_K7_ACPI=y
CONFIG_X86_POWERNOW_K8=m
# CONFIG_X86_GX_SUSPMOD is not set
CONFIG_X86_SPEEDSTEP_CENTRINO=m
CONFIG_X86_SPEEDSTEP_CENTRINO_TABLE=y
CONFIG_X86_SPEEDSTEP_ICH=m
CONFIG_X86_SPEEDSTEP_SMI=m
# CONFIG_X86_P4_CLOCKMOD is not set
# CONFIG_X86_CPUFREQ_NFORCE2 is not set
# CONFIG_X86_LONGRUN is not set
CONFIG_X86_LONGHAUL=m
# CONFIG_X86_E_POWERSAVER is not set

#
# shared options
#
CONFIG_X86_SPEEDSTEP_LIB=m
CONFIG_X86_SPEEDSTEP_RELAXED_CAP_CHECK=y
CONFIG_CPU_IDLE=y
CONFIG_CPU_IDLE_GOV_LADDER=y
CONFIG_CPU_IDLE_GOV_MENU=y
CONFIG_INTEL_IDLE=m

#
# Bus options (PCI etc.)
#
CONFIG_PCI=y
# CONFIG_PCI_GOBIOS is not set
# CONFIG_PCI_GOMMCONFIG is not set
# CONFIG_PCI_GODIRECT is not set
# CONFIG_PCI_GOOLPC is not set
CONFIG_PCI_GOANY=y
CONFIG_PCI_BIOS=y
CONFIG_PCI_DIRECT=y
CONFIG_PCI_MMCONFIG=y
CONFIG_PCI_OLPC=y
CONFIG_PCI_DOMAINS=y
CONFIG_PCI_CNB20LE_QUIRK=y
CONFIG_DMAR=y
# CONFIG_DMAR_DEFAULT_ON is not set
CONFIG_DMAR_FLOPPY_WA=y
CONFIG_PCIEPORTBUS=y
# CONFIG_HOTPLUG_PCI_PCIE is not set
CONFIG_PCIEAER=y
# CONFIG_PCIE_ECRC is not set
# CONFIG_PCIEAER_INJECT is not set
CONFIG_PCIEASPM=y
# CONFIG_PCIEASPM_DEBUG is not set
CONFIG_PCIE_PME=y
CONFIG_ARCH_SUPPORTS_MSI=y
CONFIG_PCI_MSI=y
# CONFIG_PCI_DEBUG is not set
# CONFIG_PCI_STUB is not set
CONFIG_HT_IRQ=y
CONFIG_PCI_IOV=y
CONFIG_PCI_IOAPIC=y
CONFIG_ISA_DMA_API=y
CONFIG_ISA=y
# CONFIG_EISA is not set
# CONFIG_MCA is not set
# CONFIG_SCx200 is not set
CONFIG_OLPC=y
CONFIG_K8_NB=y
CONFIG_PCCARD=m
CONFIG_PCMCIA=m
CONFIG_PCMCIA_LOAD_CIS=y
CONFIG_CARDBUS=y

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

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

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

#
# Core Netfilter Configuration
#
CONFIG_NETFILTER_NETLINK=m
# CONFIG_NETFILTER_NETLINK_QUEUE is not set
CONFIG_NETFILTER_NETLINK_LOG=m
CONFIG_NF_CONNTRACK=m
CONFIG_NF_CT_ACCT=y
CONFIG_NF_CONNTRACK_MARK=y
CONFIG_NF_CONNTRACK_SECMARK=y
CONFIG_NF_CONNTRACK_EVENTS=y
# CONFIG_NF_CT_PROTO_DCCP is not set
CONFIG_NF_CT_PROTO_GRE=m
# CONFIG_NF_CT_PROTO_SCTP is not set
# CONFIG_NF_CT_PROTO_UDPLITE is not set
CONFIG_NF_CONNTRACK_AMANDA=m
CONFIG_NF_CONNTRACK_FTP=m
CONFIG_NF_CONNTRACK_H323=m
CONFIG_NF_CONNTRACK_IRC=m
CONFIG_NF_CONNTRACK_NETBIOS_NS=m
CONFIG_NF_CONNTRACK_PPTP=m
CONFIG_NF_CONNTRACK_SANE=m
CONFIG_NF_CONNTRACK_SIP=m
CONFIG_NF_CONNTRACK_TFTP=m
CONFIG_NF_CT_NETLINK=m
CONFIG_NETFILTER_TPROXY=m
CONFIG_NETFILTER_XTABLES=m

#
# Xtables combined modules
#
CONFIG_NETFILTER_XT_MARK=m
CONFIG_NETFILTER_XT_CONNMARK=m

#
# Xtables targets
#
CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m
CONFIG_NETFILTER_XT_TARGET_DSCP=m
CONFIG_NETFILTER_XT_TARGET_HL=m
CONFIG_NETFILTER_XT_TARGET_LED=m
CONFIG_NETFILTER_XT_TARGET_MARK=m
CONFIG_NETFILTER_XT_TARGET_NFLOG=m
CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
CONFIG_NETFILTER_XT_TARGET_RATEEST=m
CONFIG_NETFILTER_XT_TARGET_TEE=m
CONFIG_NETFILTER_XT_TARGET_TPROXY=m
CONFIG_NETFILTER_XT_TARGET_SECMARK=m
CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m

#
# Xtables matches
#
CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
CONFIG_NETFILTER_XT_MATCH_COMMENT=m
CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
CONFIG_NETFILTER_XT_MATCH_DCCP=m
CONFIG_NETFILTER_XT_MATCH_DSCP=m
CONFIG_NETFILTER_XT_MATCH_ESP=m
CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
CONFIG_NETFILTER_XT_MATCH_HELPER=m
CONFIG_NETFILTER_XT_MATCH_HL=m
CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
CONFIG_NETFILTER_XT_MATCH_LENGTH=m
CONFIG_NETFILTER_XT_MATCH_LIMIT=m
CONFIG_NETFILTER_XT_MATCH_MAC=m
CONFIG_NETFILTER_XT_MATCH_MARK=m
CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
CONFIG_NETFILTER_XT_MATCH_OSF=m
CONFIG_NETFILTER_XT_MATCH_OWNER=m
CONFIG_NETFILTER_XT_MATCH_POLICY=m
CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
CONFIG_NETFILTER_XT_MATCH_QUOTA=m
CONFIG_NETFILTER_XT_MATCH_RATEEST=m
CONFIG_NETFILTER_XT_MATCH_REALM=m
CONFIG_NETFILTER_XT_MATCH_RECENT=m
CONFIG_NETFILTER_XT_MATCH_SCTP=m
CONFIG_NETFILTER_XT_MATCH_SOCKET=m
CONFIG_NETFILTER_XT_MATCH_STATE=m
CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
CONFIG_NETFILTER_XT_MATCH_STRING=m
CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
CONFIG_NETFILTER_XT_MATCH_TIME=m
CONFIG_NETFILTER_XT_MATCH_U32=m
# CONFIG_IP_VS is not set

#
# IP: Netfilter Configuration
#
CONFIG_NF_DEFRAG_IPV4=m
CONFIG_NF_CONNTRACK_IPV4=m
# CONFIG_NF_CONNTRACK_PROC_COMPAT is not set
# CONFIG_IP_NF_QUEUE is not set
CONFIG_IP_NF_IPTABLES=m
CONFIG_IP_NF_MATCH_ADDRTYPE=m
# CONFIG_IP_NF_MATCH_AH is not set
# CONFIG_IP_NF_MATCH_ECN is not set
# CONFIG_IP_NF_MATCH_TTL is not set
CONFIG_IP_NF_FILTER=m
CONFIG_IP_NF_TARGET_REJECT=m
CONFIG_IP_NF_TARGET_LOG=m
CONFIG_IP_NF_TARGET_ULOG=m
CONFIG_NF_NAT=m
CONFIG_NF_NAT_NEEDED=y
CONFIG_IP_NF_TARGET_MASQUERADE=m
# CONFIG_IP_NF_TARGET_NETMAP is not set
CONFIG_IP_NF_TARGET_REDIRECT=m
# CONFIG_NF_NAT_SNMP_BASIC is not set
CONFIG_NF_NAT_PROTO_GRE=m
CONFIG_NF_NAT_FTP=m
CONFIG_NF_NAT_IRC=m
CONFIG_NF_NAT_TFTP=m
CONFIG_NF_NAT_AMANDA=m
CONFIG_NF_NAT_PPTP=m
CONFIG_NF_NAT_H323=m
CONFIG_NF_NAT_SIP=m
CONFIG_IP_NF_MANGLE=m
# CONFIG_IP_NF_TARGET_CLUSTERIP is not set
# CONFIG_IP_NF_TARGET_ECN is not set
# CONFIG_IP_NF_TARGET_TTL is not set
# CONFIG_IP_NF_RAW is not set
# CONFIG_IP_NF_SECURITY is not set
# CONFIG_IP_NF_ARPTABLES is not set

#
# IPv6: Netfilter Configuration
#
# CONFIG_NF_CONNTRACK_IPV6 is not set
# CONFIG_IP6_NF_QUEUE is not set
CONFIG_IP6_NF_IPTABLES=m
# CONFIG_IP6_NF_MATCH_AH is not set
# CONFIG_IP6_NF_MATCH_EUI64 is not set
# CONFIG_IP6_NF_MATCH_FRAG is not set
# CONFIG_IP6_NF_MATCH_OPTS is not set
# CONFIG_IP6_NF_MATCH_HL is not set
# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
# CONFIG_IP6_NF_MATCH_MH is not set
# CONFIG_IP6_NF_MATCH_RT is not set
# CONFIG_IP6_NF_TARGET_HL is not set
CONFIG_IP6_NF_TARGET_LOG=m
CONFIG_IP6_NF_FILTER=m
CONFIG_IP6_NF_TARGET_REJECT=m
# CONFIG_IP6_NF_MANGLE is not set
# CONFIG_IP6_NF_RAW is not set
# CONFIG_IP6_NF_SECURITY is not set
# CONFIG_BRIDGE_NF_EBTABLES is not set
# CONFIG_IP_DCCP is not set
# CONFIG_IP_SCTP is not set
# CONFIG_RDS is not set
# CONFIG_TIPC is not set
# CONFIG_ATM is not set
# CONFIG_L2TP is not set
CONFIG_STP=m
CONFIG_GARP=m
CONFIG_BRIDGE=m
CONFIG_BRIDGE_IGMP_SNOOPING=y
CONFIG_NET_DSA=y
CONFIG_NET_DSA_TAG_DSA=y
CONFIG_NET_DSA_TAG_EDSA=y
CONFIG_NET_DSA_TAG_TRAILER=y
CONFIG_NET_DSA_MV88E6XXX=y
CONFIG_NET_DSA_MV88E6060=y
CONFIG_NET_DSA_MV88E6XXX_NEED_PPU=y
CONFIG_NET_DSA_MV88E6131=y
CONFIG_NET_DSA_MV88E6123_61_65=y
CONFIG_VLAN_8021Q=m
CONFIG_VLAN_8021Q_GVRP=y
# CONFIG_DECNET is not set
CONFIG_LLC=y
# CONFIG_LLC2 is not set
CONFIG_IPX=m
# CONFIG_IPX_INTERN is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
# CONFIG_PHONET is not set
# CONFIG_IEEE802154 is not set
CONFIG_NET_SCHED=y

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

#
# Classification
#
CONFIG_NET_CLS=y
# CONFIG_NET_CLS_BASIC is not set
# CONFIG_NET_CLS_TCINDEX is not set
# CONFIG_NET_CLS_ROUTE4 is not set
CONFIG_NET_CLS_ROUTE=y
# CONFIG_NET_CLS_FW is not set
# CONFIG_NET_CLS_U32 is not set
# CONFIG_NET_CLS_RSVP is not set
# CONFIG_NET_CLS_RSVP6 is not set
# CONFIG_NET_CLS_FLOW is not set
CONFIG_NET_CLS_CGROUP=y
CONFIG_NET_EMATCH=y
CONFIG_NET_EMATCH_STACK=32
# CONFIG_NET_EMATCH_CMP is not set
# CONFIG_NET_EMATCH_NBYTE is not set
# CONFIG_NET_EMATCH_U32 is not set
# CONFIG_NET_EMATCH_META is not set
# CONFIG_NET_EMATCH_TEXT is not set
CONFIG_NET_CLS_ACT=y
# CONFIG_NET_ACT_POLICE is not set
# CONFIG_NET_ACT_GACT is not set
# CONFIG_NET_ACT_MIRRED is not set
# CONFIG_NET_ACT_IPT is not set
# CONFIG_NET_ACT_NAT is not set
# CONFIG_NET_ACT_PEDIT is not set
# CONFIG_NET_ACT_SIMP is not set
# CONFIG_NET_ACT_SKBEDIT is not set
CONFIG_NET_SCH_FIFO=y
CONFIG_DCB=y
CONFIG_RPS=y

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

#
# Packet Radio protocols
#
# CONFIG_AX25 is not set
# CONFIG_CAN is not set
# CONFIG_IRDA is not set
CONFIG_BT=m
CONFIG_BT_L2CAP=m
# CONFIG_BT_L2CAP_EXT_FEATURES is not set
CONFIG_BT_SCO=m
CONFIG_BT_RFCOMM=m
CONFIG_BT_RFCOMM_TTY=y
CONFIG_BT_BNEP=m
CONFIG_BT_BNEP_MC_FILTER=y
CONFIG_BT_BNEP_PROTO_FILTER=y
# CONFIG_BT_HIDP is not set

#
# Bluetooth device drivers
#
CONFIG_BT_HCIBTUSB=m
# CONFIG_BT_HCIUART is not set
# CONFIG_BT_HCIBCM203X is not set
# CONFIG_BT_HCIBPA10X is not set
# CONFIG_BT_HCIBFUSB is not set
# CONFIG_BT_HCIDTL1 is not set
# CONFIG_BT_HCIBT3C is not set
# CONFIG_BT_HCIBLUECARD is not set
# CONFIG_BT_HCIBTUART is not set
# CONFIG_BT_HCIVHCI is not set
# CONFIG_BT_MRVL is not set
# CONFIG_BT_ATH3K is not set
CONFIG_AF_RXRPC=m
# CONFIG_AF_RXRPC_DEBUG is not set
CONFIG_RXKAD=m
CONFIG_FIB_RULES=y
CONFIG_WIRELESS=y
CONFIG_WIRELESS_EXT=y
CONFIG_WEXT_CORE=y
CONFIG_WEXT_PROC=y
CONFIG_WEXT_SPY=y
CONFIG_WEXT_PRIV=y
CONFIG_CFG80211=m
# CONFIG_NL80211_TESTMODE is not set
# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
CONFIG_CFG80211_REG_DEBUG=y
# CONFIG_CFG80211_DEFAULT_PS is not set
# CONFIG_CFG80211_DEBUGFS is not set
# CONFIG_CFG80211_INTERNAL_REGDB is not set
CONFIG_CFG80211_WEXT=y
# CONFIG_WIRELESS_EXT_SYSFS is not set
CONFIG_LIB80211=m
CONFIG_LIB80211_CRYPT_WEP=m
CONFIG_LIB80211_CRYPT_CCMP=m
CONFIG_LIB80211_CRYPT_TKIP=m
# CONFIG_LIB80211_DEBUG is not set
CONFIG_MAC80211=m
CONFIG_MAC80211_HAS_RC=y
CONFIG_MAC80211_RC_MINSTREL=y
# CONFIG_MAC80211_RC_DEFAULT_PID is not set
CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
CONFIG_MAC80211_RC_DEFAULT="minstrel"
CONFIG_MAC80211_MESH=y
CONFIG_MAC80211_LEDS=y
# CONFIG_MAC80211_DEBUGFS is not set
# CONFIG_MAC80211_DEBUG_MENU is not set
# CONFIG_WIMAX is not set
CONFIG_RFKILL=m
CONFIG_RFKILL_LEDS=y
CONFIG_RFKILL_INPUT=y
# CONFIG_NET_9P is not set
# CONFIG_CAIF is not set

#
# Device Drivers
#

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

#
# Protocols
#
CONFIG_ISAPNP=y
CONFIG_PNPBIOS=y
# CONFIG_PNPBIOS_PROC_FS is not set
CONFIG_PNPACPI=y
CONFIG_BLK_DEV=y
# CONFIG_BLK_DEV_FD is not set
# CONFIG_BLK_DEV_XD is not set
# CONFIG_BLK_CPQ_DA is not set
# CONFIG_BLK_CPQ_CISS_DA is not set
# CONFIG_BLK_DEV_DAC960 is not set
# CONFIG_BLK_DEV_UMEM is not set
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
# CONFIG_BLK_DEV_DRBD 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 is not set
CONFIG_CDROM_PKTCDVD=m
CONFIG_CDROM_PKTCDVD_BUFFERS=8
# CONFIG_CDROM_PKTCDVD_WCACHE is not set
# CONFIG_ATA_OVER_ETH is not set
# CONFIG_VIRTIO_BLK is not set
# CONFIG_BLK_DEV_HD is not set
CONFIG_MISC_DEVICES=y
# CONFIG_AD525X_DPOT is not set
# CONFIG_IBM_ASM is not set
# CONFIG_PHANTOM is not set
# CONFIG_SGI_IOC4 is not set
CONFIG_TIFM_CORE=m
CONFIG_TIFM_7XX1=m
# CONFIG_ICS932S401 is not set
# CONFIG_ENCLOSURE_SERVICES is not set
# CONFIG_CS5535_MFGPT is not set
# CONFIG_HP_ILO is not set
# CONFIG_ISL29003 is not set
# CONFIG_SENSORS_TSL2550 is not set
# CONFIG_DS1682 is not set
# CONFIG_VMWARE_BALLOON is not set
# CONFIG_C2PORT is not set

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

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

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

#
# SCSI Transports
#
# CONFIG_SCSI_SPI_ATTRS is not set
CONFIG_SCSI_FC_ATTRS=m
CONFIG_SCSI_ISCSI_ATTRS=m
# CONFIG_SCSI_SAS_ATTRS is not set
# CONFIG_SCSI_SAS_LIBSAS is not set
# CONFIG_SCSI_SRP_ATTRS is not set
CONFIG_SCSI_LOWLEVEL=y
CONFIG_ISCSI_TCP=m
# CONFIG_SCSI_CXGB3_ISCSI is not set
CONFIG_SCSI_BNX2_ISCSI=m
# CONFIG_BE2ISCSI is not set
# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
# CONFIG_SCSI_HPSA is not set
# CONFIG_SCSI_3W_9XXX is not set
# CONFIG_SCSI_3W_SAS is not set
# CONFIG_SCSI_7000FASST is not set
# CONFIG_SCSI_ACARD is not set
# CONFIG_SCSI_AHA152X is not set
# CONFIG_SCSI_AHA1542 is not set
# CONFIG_SCSI_AACRAID is not set
# CONFIG_SCSI_AIC7XXX is not set
# CONFIG_SCSI_AIC7XXX_OLD is not set
# CONFIG_SCSI_AIC79XX is not set
# CONFIG_SCSI_AIC94XX is not set
# CONFIG_SCSI_MVSAS is not set
# CONFIG_SCSI_DPT_I2O is not set
# CONFIG_SCSI_ADVANSYS is not set
# CONFIG_SCSI_IN2000 is not set
# CONFIG_SCSI_ARCMSR is not set
CONFIG_MEGARAID_NEWGEN=y
# CONFIG_MEGARAID_MM is not set
# CONFIG_MEGARAID_LEGACY is not set
# CONFIG_MEGARAID_SAS is not set
# CONFIG_SCSI_MPT2SAS is not set
# CONFIG_SCSI_HPTIOP is not set
# CONFIG_SCSI_BUSLOGIC is not set
# CONFIG_VMWARE_PVSCSI is not set
# CONFIG_LIBFC is not set
# CONFIG_LIBFCOE is not set
# CONFIG_FCOE is not set
# CONFIG_FCOE_FNIC is not set
# CONFIG_SCSI_DMX3191D is not set
# CONFIG_SCSI_DTC3280 is not set
# CONFIG_SCSI_EATA is not set
# CONFIG_SCSI_FUTURE_DOMAIN is not set
# CONFIG_SCSI_GDTH is not set
# CONFIG_SCSI_GENERIC_NCR5380 is not set
# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
# CONFIG_SCSI_IPS is not set
# CONFIG_SCSI_INITIO is not set
# CONFIG_SCSI_INIA100 is not set
# CONFIG_SCSI_NCR53C406A is not set
# CONFIG_SCSI_STEX is not set
# CONFIG_SCSI_SYM53C8XX_2 is not set
# CONFIG_SCSI_IPR is not set
# CONFIG_SCSI_PAS16 is not set
# CONFIG_SCSI_QLOGIC_FAS is not set
# CONFIG_SCSI_QLOGIC_1280 is not set
# CONFIG_SCSI_QLA_FC is not set
# CONFIG_SCSI_QLA_ISCSI is not set
# CONFIG_SCSI_LPFC is not set
# CONFIG_SCSI_SYM53C416 is not set
# CONFIG_SCSI_DC395x is not set
# CONFIG_SCSI_DC390T is not set
# CONFIG_SCSI_T128 is not set
# CONFIG_SCSI_U14_34F is not set
# CONFIG_SCSI_ULTRASTOR is not set
# CONFIG_SCSI_NSP32 is not set
# CONFIG_SCSI_DEBUG is not set
# CONFIG_SCSI_PMCRAID is not set
# CONFIG_SCSI_PM8001 is not set
# CONFIG_SCSI_SRP is not set
# CONFIG_SCSI_BFA_FC is not set
CONFIG_SCSI_LOWLEVEL_PCMCIA=y
# CONFIG_PCMCIA_AHA152X is not set
# CONFIG_PCMCIA_FDOMAIN is not set
# CONFIG_PCMCIA_NINJA_SCSI is not set
# CONFIG_PCMCIA_QLOGIC is not set
# CONFIG_PCMCIA_SYM53C500 is not set
# CONFIG_SCSI_DH is not set
# CONFIG_SCSI_OSD_INITIATOR is not set
CONFIG_ATA=m
# CONFIG_ATA_NONSTANDARD is not set
CONFIG_ATA_VERBOSE_ERROR=y
CONFIG_ATA_ACPI=y
CONFIG_SATA_PMP=y

#
# Controllers with non-SFF native interface
#
CONFIG_SATA_AHCI=m
CONFIG_SATA_AHCI_PLATFORM=m
# CONFIG_SATA_INIC162X is not set
# CONFIG_SATA_SIL24 is not set
CONFIG_ATA_SFF=y

#
# SFF controllers with custom DMA interface
#
# CONFIG_PDC_ADMA is not set
# CONFIG_SATA_QSTOR is not set
# CONFIG_SATA_SX4 is not set
CONFIG_ATA_BMDMA=y

#
# SATA SFF controllers with BMDMA
#
CONFIG_ATA_PIIX=m
# CONFIG_SATA_MV is not set
# CONFIG_SATA_NV is not set
# CONFIG_SATA_PROMISE is not set
# CONFIG_SATA_SIL is not set
# CONFIG_SATA_SIS is not set
# CONFIG_SATA_SVW is not set
# CONFIG_SATA_ULI is not set
# CONFIG_SATA_VIA is not set
# CONFIG_SATA_VITESSE is not set

#
# PATA SFF controllers with BMDMA
#
# CONFIG_PATA_ALI is not set
# CONFIG_PATA_AMD is not set
# CONFIG_PATA_ARTOP is not set
# CONFIG_PATA_ATIIXP is not set
# CONFIG_PATA_ATP867X is not set
# CONFIG_PATA_CMD64X is not set
# CONFIG_PATA_CS5520 is not set
# CONFIG_PATA_CS5530 is not set
# CONFIG_PATA_CS5535 is not set
# CONFIG_PATA_CS5536 is not set
# CONFIG_PATA_CYPRESS is not set
# CONFIG_PATA_EFAR is not set
# CONFIG_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_IT8213 is not set
# CONFIG_PATA_IT821X is not set
# CONFIG_PATA_JMICRON is not set
# CONFIG_PATA_MARVELL is not set
# CONFIG_PATA_NETCELL is not set
# CONFIG_PATA_NINJA32 is not set
# CONFIG_PATA_NS87415 is not set
CONFIG_PATA_OLDPIIX=m
# CONFIG_PATA_OPTIDMA is not set
# CONFIG_PATA_PDC2027X is not set
# CONFIG_PATA_PDC_OLD is not set
# CONFIG_PATA_RADISYS is not set
# CONFIG_PATA_RDC is not set
# CONFIG_PATA_SC1200 is not set
# CONFIG_PATA_SCH is not set
# CONFIG_PATA_SERVERWORKS is not set
# CONFIG_PATA_SIL680 is not set
# CONFIG_PATA_SIS is not set
# CONFIG_PATA_TOSHIBA is not set
# CONFIG_PATA_TRIFLEX is not set
# CONFIG_PATA_VIA is not set
# CONFIG_PATA_WINBOND is not set

#
# PIO-only SFF controllers
#
# CONFIG_PATA_CMD640_PCI is not set
# CONFIG_PATA_ISAPNP is not set
CONFIG_PATA_MPIIX=m
# CONFIG_PATA_NS87410 is not set
# CONFIG_PATA_OPTI is not set
# CONFIG_PATA_PCMCIA is not set
# CONFIG_PATA_QDI is not set
# CONFIG_PATA_RZ1000 is not set
# CONFIG_PATA_WINBOND_VLB is not set

#
# Generic fallback / legacy drivers
#
CONFIG_PATA_ACPI=m
CONFIG_ATA_GENERIC=m
# CONFIG_PATA_LEGACY is not set
CONFIG_MD=y
CONFIG_BLK_DEV_MD=m
CONFIG_MD_LINEAR=m
CONFIG_MD_RAID0=m
CONFIG_MD_RAID1=m
CONFIG_MD_RAID10=m
CONFIG_MD_RAID456=m
# CONFIG_MULTICORE_RAID456 is not set
CONFIG_MD_RAID6_PQ=m
CONFIG_ASYNC_RAID6_TEST=m
CONFIG_MD_MULTIPATH=m
CONFIG_MD_FAULTY=m
CONFIG_BLK_DEV_DM=m
# CONFIG_DM_DEBUG is not set
CONFIG_DM_CRYPT=m
CONFIG_DM_SNAPSHOT=m
CONFIG_DM_MIRROR=m
CONFIG_DM_LOG_USERSPACE=m
CONFIG_DM_ZERO=m
CONFIG_DM_MULTIPATH=m
CONFIG_DM_MULTIPATH_QL=m
CONFIG_DM_MULTIPATH_ST=m
CONFIG_DM_DELAY=m
CONFIG_DM_UEVENT=y
# CONFIG_FUSION is not set

#
# IEEE 1394 (FireWire) support
#

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

#
# The newer stack is recommended.
#
CONFIG_FIREWIRE=m
CONFIG_FIREWIRE_OHCI=m
CONFIG_FIREWIRE_OHCI_DEBUG=y
# CONFIG_FIREWIRE_SBP2 is not set
# CONFIG_FIREWIRE_NET is not set
# CONFIG_IEEE1394 is not set
# CONFIG_I2O is not set
# CONFIG_MACINTOSH_DRIVERS is not set
CONFIG_NETDEVICES=y
# CONFIG_IFB is not set
# CONFIG_DUMMY is not set
# CONFIG_BONDING is not set
# CONFIG_MACVLAN is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
# CONFIG_VETH is not set
# CONFIG_NET_SB1000 is not set
# CONFIG_ARCNET is not set
CONFIG_PHYLIB=y

#
# MII PHY device drivers
#
# CONFIG_MARVELL_PHY is not set
# CONFIG_DAVICOM_PHY is not set
# CONFIG_QSEMI_PHY is not set
# CONFIG_LXT_PHY is not set
# CONFIG_CICADA_PHY is not set
# CONFIG_VITESSE_PHY is not set
# CONFIG_SMSC_PHY is not set
# CONFIG_BROADCOM_PHY is not set
# CONFIG_ICPLUS_PHY is not set
# CONFIG_REALTEK_PHY is not set
# CONFIG_NATIONAL_PHY is not set
# CONFIG_STE10XP is not set
# CONFIG_LSI_ET1011C_PHY is not set
# CONFIG_MICREL_PHY is not set
CONFIG_FIXED_PHY=y
# CONFIG_MDIO_BITBANG is not set
CONFIG_NET_ETHERNET=y
CONFIG_MII=m
# CONFIG_HAPPYMEAL is not set
# CONFIG_SUNGEM is not set
# CONFIG_CASSINI is not set
CONFIG_NET_VENDOR_3COM=y
# CONFIG_EL1 is not set
# CONFIG_EL2 is not set
# CONFIG_ELPLUS is not set
# CONFIG_EL16 is not set
# CONFIG_EL3 is not set
# CONFIG_3C515 is not set
# CONFIG_VORTEX is not set
# CONFIG_TYPHOON is not set
# CONFIG_LANCE is not set
CONFIG_NET_VENDOR_SMC=y
# CONFIG_WD80x3 is not set
# CONFIG_ULTRA is not set
# CONFIG_SMC9194 is not set
# CONFIG_ETHOC is not set
CONFIG_NET_VENDOR_RACAL=y
# CONFIG_NI52 is not set
# CONFIG_NI65 is not set
# CONFIG_DNET is not set
CONFIG_NET_TULIP=y
# CONFIG_DE2104X is not set
# CONFIG_TULIP is not set
# CONFIG_DE4X5 is not set
# CONFIG_WINBOND_840 is not set
# CONFIG_DM9102 is not set
# CONFIG_ULI526X is not set
# CONFIG_PCMCIA_XIRCOM is not set
# CONFIG_AT1700 is not set
# CONFIG_DEPCA is not set
# CONFIG_HP100 is not set
CONFIG_NET_ISA=y
# CONFIG_E2100 is not set
# CONFIG_EWRK3 is not set
# CONFIG_EEXPRESS is not set
# CONFIG_EEXPRESS_PRO is not set
# CONFIG_HPLAN_PLUS is not set
# CONFIG_HPLAN is not set
# CONFIG_LP486E is not set
# CONFIG_ETH16I is not set
# CONFIG_NE2000 is not set
# CONFIG_ZNET is not set
# CONFIG_SEEQ8005 is not set
# CONFIG_IBM_NEW_EMAC_ZMII is not set
# CONFIG_IBM_NEW_EMAC_RGMII is not set
# CONFIG_IBM_NEW_EMAC_TAH is not set
# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
CONFIG_NET_PCI=y
# CONFIG_PCNET32 is not set
# CONFIG_AMD8111_ETH is not set
# CONFIG_ADAPTEC_STARFIRE is not set
# CONFIG_AC3200 is not set
# CONFIG_KSZ884X_PCI is not set
# CONFIG_APRICOT is not set
# CONFIG_B44 is not set
# CONFIG_FORCEDETH is not set
# CONFIG_CS89x0 is not set
CONFIG_E100=m
# 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_SMSC9420 is not set
# CONFIG_SUNDANCE is not set
# CONFIG_TLAN is not set
# CONFIG_KS8842 is not set
# CONFIG_KS8851_MLL is not set
# CONFIG_VIA_RHINE is not set
# CONFIG_SC92031 is not set
# CONFIG_ATL2 is not set
CONFIG_NETDEV_1000=y
# CONFIG_ACENIC is not set
# CONFIG_DL2K is not set
# CONFIG_E1000 is not set
# CONFIG_E1000E is not set
# CONFIG_IP1000 is not set
# CONFIG_IGB is not set
# CONFIG_IGBVF is not set
# CONFIG_NS83820 is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_R8169 is not set
# CONFIG_SIS190 is not set
# CONFIG_SKGE is not set
# CONFIG_SKY2 is not set
# CONFIG_VIA_VELOCITY is not set
# CONFIG_TIGON3 is not set
CONFIG_BNX2=m
CONFIG_CNIC=m
# CONFIG_QLA3XXX is not set
# CONFIG_ATL1 is not set
# CONFIG_ATL1E is not set
# CONFIG_ATL1C is not set
# CONFIG_JME is not set
CONFIG_NETDEV_10000=y
CONFIG_MDIO=m
# CONFIG_CHELSIO_T1 is not set
CONFIG_CHELSIO_T3_DEPENDS=y
# CONFIG_CHELSIO_T3 is not set
CONFIG_CHELSIO_T4_DEPENDS=y
# CONFIG_CHELSIO_T4 is not set
# CONFIG_ENIC is not set
# CONFIG_IXGBE is not set
# CONFIG_IXGBEVF is not set
# CONFIG_IXGB is not set
# CONFIG_S2IO is not set
# CONFIG_VXGE is not set
# CONFIG_MYRI10GE is not set
# CONFIG_NETXEN_NIC is not set
# CONFIG_NIU is not set
# CONFIG_MLX4_EN is not set
# CONFIG_MLX4_CORE is not set
# CONFIG_TEHUTI is not set
# CONFIG_BNX2X is not set
# CONFIG_QLCNIC is not set
# CONFIG_QLGE is not set
CONFIG_SFC=m
# CONFIG_BE2NET is not set
CONFIG_TR=y
# CONFIG_IBMTR is not set
# CONFIG_IBMOL is not set
# CONFIG_IBMLS is not set
# CONFIG_3C359 is not set
# CONFIG_TMS380TR is not set
# CONFIG_SMCTR is not set
CONFIG_WLAN=y
# CONFIG_PCMCIA_RAYCS is not set
# CONFIG_LIBERTAS_THINFIRM is not set
CONFIG_AIRO=m
# CONFIG_ATMEL is not set
# CONFIG_AT76C50X_USB is not set
CONFIG_AIRO_CS=m
# CONFIG_PCMCIA_WL3501 is not set
# CONFIG_PRISM54 is not set
# CONFIG_USB_ZD1201 is not set
# CONFIG_USB_NET_RNDIS_WLAN is not set
# CONFIG_RTL8180 is not set
# CONFIG_RTL8187 is not set
# CONFIG_ADM8211 is not set
# CONFIG_MAC80211_HWSIM is not set
# CONFIG_MWL8K is not set
# CONFIG_ATH_COMMON is not set
# CONFIG_B43 is not set
# CONFIG_B43LEGACY is not set
CONFIG_HOSTAP=m
CONFIG_HOSTAP_FIRMWARE=y
CONFIG_HOSTAP_FIRMWARE_NVRAM=y
# CONFIG_HOSTAP_PLX is not set
# CONFIG_HOSTAP_PCI is not set
# CONFIG_HOSTAP_CS is not set
CONFIG_IPW2100=m
CONFIG_IPW2100_MONITOR=y
# CONFIG_IPW2100_DEBUG is not set
CONFIG_IPW2200=m
CONFIG_IPW2200_MONITOR=y
CONFIG_IPW2200_RADIOTAP=y
CONFIG_IPW2200_PROMISCUOUS=y
CONFIG_IPW2200_QOS=y
# CONFIG_IPW2200_DEBUG is not set
CONFIG_LIBIPW=m
# CONFIG_LIBIPW_DEBUG is not set
CONFIG_IWLWIFI=m
# CONFIG_IWLWIFI_DEBUG is not set
# CONFIG_IWLAGN is not set
CONFIG_IWL3945=m
# CONFIG_LIBERTAS is not set
CONFIG_HERMES=m
# CONFIG_HERMES_PRISM is not set
CONFIG_HERMES_CACHE_FW_ON_INIT=y
# CONFIG_PLX_HERMES is not set
# CONFIG_TMD_HERMES is not set
# CONFIG_NORTEL_HERMES is not set
# CONFIG_PCMCIA_HERMES is not set
# CONFIG_PCMCIA_SPECTRUM is not set
# CONFIG_ORINOCO_USB is not set
# CONFIG_P54_COMMON is not set
# CONFIG_RT2X00 is not set
# CONFIG_WL12XX is not set
# CONFIG_ZD1211RW is not set

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

#
# USB Network Adapters
#
# CONFIG_USB_CATC is not set
# CONFIG_USB_KAWETH is not set
# CONFIG_USB_PEGASUS is not set
# CONFIG_USB_RTL8150 is not set
# CONFIG_USB_USBNET is not set
# CONFIG_USB_HSO is not set
# CONFIG_USB_IPHETH is not set
CONFIG_NET_PCMCIA=y
# CONFIG_PCMCIA_3C589 is not set
# CONFIG_PCMCIA_3C574 is not set
# CONFIG_PCMCIA_FMVJ18X is not set
# CONFIG_PCMCIA_PCNET is not set
# CONFIG_PCMCIA_NMCLAN is not set
# CONFIG_PCMCIA_SMC91C92 is not set
# CONFIG_PCMCIA_XIRC2PS is not set
# CONFIG_PCMCIA_AXNET is not set
# CONFIG_PCMCIA_IBMTR is not set
CONFIG_WAN=y
# CONFIG_HDLC is not set
# CONFIG_DLCI is not set
# CONFIG_SBNI is not set
CONFIG_FDDI=y
# CONFIG_DEFXX is not set
# CONFIG_SKFP is not set
CONFIG_HIPPI=y
# CONFIG_ROADRUNNER is not set
CONFIG_PPP=m
CONFIG_PPP_MULTILINK=y
CONFIG_PPP_FILTER=y
# CONFIG_PPP_ASYNC is not set
# CONFIG_PPP_SYNC_TTY is not set
# CONFIG_PPP_DEFLATE is not set
# CONFIG_PPP_BSDCOMP is not set
CONFIG_PPP_MPPE=m
# CONFIG_PPPOE is not set
# CONFIG_SLIP is not set
CONFIG_SLHC=m
CONFIG_NET_FC=y
# CONFIG_NETCONSOLE is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
# CONFIG_VIRTIO_NET is not set
# CONFIG_VMXNET3 is not set
# CONFIG_ISDN is not set
# CONFIG_PHONE is not set

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

#
# 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=m
CONFIG_INPUT_EVDEV=m
# CONFIG_INPUT_EVBUG is not set

#
# Input Device Drivers
#
CONFIG_INPUT_KEYBOARD=y
# CONFIG_KEYBOARD_ADP5588 is not set
CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_QT2160 is not set
# CONFIG_KEYBOARD_LKKBD is not set
# CONFIG_KEYBOARD_GPIO is not set
# CONFIG_KEYBOARD_TCA6416 is not set
# CONFIG_KEYBOARD_MATRIX is not set
# CONFIG_KEYBOARD_LM8323 is not set
# CONFIG_KEYBOARD_MAX7359 is not set
# CONFIG_KEYBOARD_NEWTON is not set
# CONFIG_KEYBOARD_OPENCORES is not set
# CONFIG_KEYBOARD_STOWAWAY is not set
# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_XTKBD is not set
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=m
CONFIG_MOUSE_PS2_ALPS=y
CONFIG_MOUSE_PS2_LOGIPS2PP=y
CONFIG_MOUSE_PS2_SYNAPTICS=y
CONFIG_MOUSE_PS2_LIFEBOOK=y
CONFIG_MOUSE_PS2_TRACKPOINT=y
CONFIG_MOUSE_PS2_ELANTECH=y
CONFIG_MOUSE_PS2_SENTELIC=y
# CONFIG_MOUSE_PS2_TOUCHKIT is not set
CONFIG_MOUSE_PS2_OLPC=y
# CONFIG_MOUSE_SERIAL is not set
# CONFIG_MOUSE_APPLETOUCH is not set
# CONFIG_MOUSE_BCM5974 is not set
# CONFIG_MOUSE_INPORT is not set
# CONFIG_MOUSE_LOGIBM is not set
# CONFIG_MOUSE_PC110PAD is not set
# CONFIG_MOUSE_VSXXXAA is not set
# CONFIG_MOUSE_GPIO is not set
# CONFIG_MOUSE_SYNAPTICS_I2C is not set
CONFIG_INPUT_JOYSTICK=y
# CONFIG_JOYSTICK_ANALOG is not set
# CONFIG_JOYSTICK_A3D is not set
# CONFIG_JOYSTICK_ADI is not set
# CONFIG_JOYSTICK_COBRA is not set
# CONFIG_JOYSTICK_GF2K is not set
# CONFIG_JOYSTICK_GRIP is not set
# CONFIG_JOYSTICK_GRIP_MP is not set
# CONFIG_JOYSTICK_GUILLEMOT is not set
# CONFIG_JOYSTICK_INTERACT is not set
# CONFIG_JOYSTICK_SIDEWINDER is not set
# CONFIG_JOYSTICK_TMDC is not set
# CONFIG_JOYSTICK_IFORCE is not set
# CONFIG_JOYSTICK_WARRIOR is not set
# CONFIG_JOYSTICK_MAGELLAN is not set
# CONFIG_JOYSTICK_SPACEORB is not set
# CONFIG_JOYSTICK_SPACEBALL is not set
# CONFIG_JOYSTICK_STINGER is not set
# CONFIG_JOYSTICK_TWIDJOY is not set
# CONFIG_JOYSTICK_ZHENHUA is not set
# CONFIG_JOYSTICK_JOYDUMP is not set
# CONFIG_JOYSTICK_XPAD is not set
CONFIG_INPUT_TABLET=y
# CONFIG_TABLET_USB_ACECAD is not set
# CONFIG_TABLET_USB_AIPTEK is not set
# CONFIG_TABLET_USB_GTCO is not set
# CONFIG_TABLET_USB_KBTAB is not set
# CONFIG_TABLET_USB_WACOM is not set
CONFIG_INPUT_TOUCHSCREEN=y
# CONFIG_TOUCHSCREEN_AD7879_I2C is not set
# CONFIG_TOUCHSCREEN_AD7879 is not set
# CONFIG_TOUCHSCREEN_DYNAPRO is not set
# CONFIG_TOUCHSCREEN_HAMPSHIRE is not set
# CONFIG_TOUCHSCREEN_EETI is not set
# CONFIG_TOUCHSCREEN_FUJITSU is not set
# CONFIG_TOUCHSCREEN_GUNZE is not set
# CONFIG_TOUCHSCREEN_ELO is not set
# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
# CONFIG_TOUCHSCREEN_MCS5000 is not set
# CONFIG_TOUCHSCREEN_MTOUCH is not set
# CONFIG_TOUCHSCREEN_INEXIO is not set
# CONFIG_TOUCHSCREEN_MK712 is not set
# CONFIG_TOUCHSCREEN_HTCPEN is not set
# CONFIG_TOUCHSCREEN_PENMOUNT is not set
# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
# CONFIG_TOUCHSCREEN_TSC2007 is not set
# CONFIG_TOUCHSCREEN_TPS6507X is not set
CONFIG_INPUT_MISC=y
# CONFIG_INPUT_AD714X is not set
CONFIG_INPUT_PCSPKR=m
# CONFIG_INPUT_APANEL is not set
CONFIG_INPUT_WISTRON_BTNS=m
# 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_CM109 is not set
CONFIG_INPUT_UINPUT=m
CONFIG_INPUT_WINBOND_CIR=m
# CONFIG_INPUT_PCF8574 is not set
# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set

#
# Hardware I/O ports
#
CONFIG_SERIO=y
CONFIG_SERIO_I8042=y
# CONFIG_SERIO_SERPORT is not set
# CONFIG_SERIO_CT82C710 is not set
# CONFIG_SERIO_PCIPS2 is not set
CONFIG_SERIO_LIBPS2=y
CONFIG_SERIO_RAW=m
# CONFIG_SERIO_ALTERA_PS2 is not set
# CONFIG_GAMEPORT is not set

#
# Character devices
#
CONFIG_VT=y
CONFIG_CONSOLE_TRANSLATIONS=y
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
CONFIG_VT_HW_CONSOLE_BINDING=y
# CONFIG_DEVKMEM is not set
CONFIG_SERIAL_NONSTANDARD=y
# CONFIG_COMPUTONE is not set
# CONFIG_ROCKETPORT is not set
# CONFIG_CYCLADES is not set
# CONFIG_DIGIEPCA is not set
# CONFIG_MOXA_INTELLIO is not set
# CONFIG_MOXA_SMARTIO is not set
# CONFIG_ISI is not set
# CONFIG_SYNCLINK is not set
# CONFIG_SYNCLINKMP is not set
# CONFIG_SYNCLINK_GT is not set
# CONFIG_N_HDLC is not set
# CONFIG_N_GSM is not set
# CONFIG_RISCOM8 is not set
# CONFIG_SPECIALIX is not set
CONFIG_STALDRV=y
# CONFIG_STALLION is not set
# CONFIG_ISTALLION 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_CS is not set
CONFIG_SERIAL_8250_NR_UARTS=32
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
CONFIG_SERIAL_8250_EXTENDED=y
CONFIG_SERIAL_8250_MANY_PORTS=y
# CONFIG_SERIAL_8250_FOURPORT is not set
# CONFIG_SERIAL_8250_ACCENT is not set
# CONFIG_SERIAL_8250_BOCA is not set
# CONFIG_SERIAL_8250_EXAR_ST16C554 is not set
# CONFIG_SERIAL_8250_HUB6 is not set
CONFIG_SERIAL_8250_SHARE_IRQ=y
# CONFIG_SERIAL_8250_DETECT_IRQ is not set
CONFIG_SERIAL_8250_RSA=y

#
# Non-8250 serial port support
#
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
# CONFIG_SERIAL_JSM is not set
# CONFIG_SERIAL_TIMBERDALE is not set
# CONFIG_SERIAL_ALTERA_JTAGUART is not set
# CONFIG_SERIAL_ALTERA_UART is not set
CONFIG_UNIX98_PTYS=y
CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
# CONFIG_LEGACY_PTYS is not set
CONFIG_HVC_DRIVER=y
CONFIG_VIRTIO_CONSOLE=y
# CONFIG_IPMI_HANDLER is not set
CONFIG_HW_RANDOM=m
# CONFIG_HW_RANDOM_TIMERIOMEM is not set
# CONFIG_HW_RANDOM_INTEL is not set
# CONFIG_HW_RANDOM_AMD is not set
# CONFIG_HW_RANDOM_GEODE is not set
# CONFIG_HW_RANDOM_VIA is not set
# CONFIG_HW_RANDOM_VIRTIO is not set
CONFIG_NVRAM=m
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
# CONFIG_SONYPI is not set

#
# PCMCIA character devices
#
# CONFIG_SYNCLINK_CS is not set
# CONFIG_CARDMAN_4000 is not set
# CONFIG_CARDMAN_4040 is not set
# CONFIG_IPWIRELESS is not set
# CONFIG_MWAVE is not set
# CONFIG_PC8736x_GPIO is not set
# CONFIG_NSC_GPIO is not set
# CONFIG_CS5535_GPIO is not set
# CONFIG_RAW_DRIVER is not set
CONFIG_HPET=y
CONFIG_HPET_MMAP=y
# CONFIG_HANGCHECK_TIMER is not set
CONFIG_TCG_TPM=m
CONFIG_TCG_TIS=m
# CONFIG_TCG_NSC is not set
# CONFIG_TCG_ATMEL is not set
# CONFIG_TCG_INFINEON is not set
# CONFIG_TELCLOCK is not set
CONFIG_DEVPORT=y
# CONFIG_RAMOOPS is not set
CONFIG_I2C=m
CONFIG_I2C_BOARDINFO=y
CONFIG_I2C_COMPAT=y
# CONFIG_I2C_CHARDEV is not set
CONFIG_I2C_HELPER_AUTO=y
CONFIG_I2C_ALGOBIT=m

#
# I2C Hardware Bus support
#

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

#
# ACPI drivers
#
# CONFIG_I2C_SCMI is not set

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

#
# External I2C/SMBus adapter drivers
#
# CONFIG_I2C_PARPORT_LIGHT is not set
# CONFIG_I2C_TAOS_EVM is not set
# CONFIG_I2C_TINY_USB is not set

#
# Other I2C/SMBus bus drivers
#
# CONFIG_I2C_PCA_ISA is not set
# CONFIG_I2C_STUB is not set
# CONFIG_SCx200_ACB 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_SPI is not set

#
# PPS support
#
# CONFIG_PPS is not set
CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
CONFIG_GPIOLIB=y
# CONFIG_DEBUG_GPIO is not set
# CONFIG_GPIO_SYSFS is not set

#
# Memory mapped GPIO expanders:
#
# CONFIG_GPIO_IT8761E is not set
# CONFIG_GPIO_SCH is not set

#
# I2C GPIO expanders:
#
# CONFIG_GPIO_MAX7300 is not set
# CONFIG_GPIO_MAX732X is not set
# CONFIG_GPIO_PCA953X is not set
# CONFIG_GPIO_PCF857X is not set
# CONFIG_GPIO_ADP5588 is not set

#
# PCI GPIO expanders:
#
# CONFIG_GPIO_CS5535 is not set
# CONFIG_GPIO_BT8XX is not set
# CONFIG_GPIO_LANGWELL is not set
# CONFIG_GPIO_RDC321X is not set

#
# SPI GPIO expanders:
#

#
# AC97 GPIO expanders:
#

#
# MODULbus GPIO expanders:
#
# CONFIG_W1 is not set
CONFIG_POWER_SUPPLY=y
# CONFIG_POWER_SUPPLY_DEBUG is not set
# CONFIG_PDA_POWER is not set
# CONFIG_TEST_POWER is not set
# CONFIG_BATTERY_DS2760 is not set
# CONFIG_BATTERY_DS2782 is not set
# CONFIG_BATTERY_OLPC is not set
# CONFIG_BATTERY_BQ27x00 is not set
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_HWMON is not set
CONFIG_THERMAL=y
# CONFIG_WATCHDOG is not set
CONFIG_SSB_POSSIBLE=y

#
# Sonics Silicon Backplane
#
# CONFIG_SSB is not set
# CONFIG_MFD_SUPPORT is not set
CONFIG_REGULATOR=y
# CONFIG_REGULATOR_DEBUG is not set
# CONFIG_REGULATOR_DUMMY is not set
# CONFIG_REGULATOR_FIXED_VOLTAGE is not set
# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set
# CONFIG_REGULATOR_BQ24022 is not set
# CONFIG_REGULATOR_MAX1586 is not set
# CONFIG_REGULATOR_MAX8649 is not set
# CONFIG_REGULATOR_MAX8660 is not set
# CONFIG_REGULATOR_LP3971 is not set
# CONFIG_REGULATOR_TPS65023 is not set
# CONFIG_REGULATOR_TPS6507X is not set
# CONFIG_MEDIA_SUPPORT is not set

#
# Graphics support
#
CONFIG_AGP=y
# CONFIG_AGP_ALI is not set
# CONFIG_AGP_ATI is not set
# CONFIG_AGP_AMD is not set
# CONFIG_AGP_AMD64 is not set
CONFIG_AGP_INTEL=m
# CONFIG_AGP_NVIDIA is not set
# CONFIG_AGP_SIS is not set
# CONFIG_AGP_SWORKS is not set
# CONFIG_AGP_VIA is not set
# CONFIG_AGP_EFFICEON is not set
CONFIG_VGA_ARB=y
CONFIG_VGA_ARB_MAX_GPUS=16
CONFIG_VGA_SWITCHEROO=y
CONFIG_DRM=m
CONFIG_DRM_KMS_HELPER=m
CONFIG_DRM_TTM=m
# CONFIG_DRM_TDFX is not set
# CONFIG_DRM_R128 is not set
CONFIG_DRM_RADEON=m
CONFIG_DRM_RADEON_KMS=y
# CONFIG_DRM_I810 is not set
# CONFIG_DRM_I830 is not set
CONFIG_DRM_I915=m
CONFIG_DRM_I915_KMS=y
# CONFIG_DRM_MGA is not set
# CONFIG_DRM_SIS is not set
# CONFIG_DRM_VIA is not set
# CONFIG_DRM_SAVAGE is not set
CONFIG_VGASTATE=m
CONFIG_VIDEO_OUTPUT_CONTROL=m
CONFIG_FB=y
CONFIG_FIRMWARE_EDID=y
CONFIG_FB_DDC=m
CONFIG_FB_BOOT_VESA_SUPPORT=y
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
CONFIG_FB_CFB_IMAGEBLIT=y
# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
# CONFIG_FB_SYS_FILLRECT is not set
# CONFIG_FB_SYS_COPYAREA is not set
# CONFIG_FB_SYS_IMAGEBLIT is not set
# CONFIG_FB_FOREIGN_ENDIAN is not set
# CONFIG_FB_SYS_FOPS is not set
# CONFIG_FB_SVGALIB is not set
# CONFIG_FB_MACMODES is not set
CONFIG_FB_BACKLIGHT=y
CONFIG_FB_MODE_HELPERS=y
CONFIG_FB_TILEBLITTING=y

#
# Frame buffer hardware drivers
#
# CONFIG_FB_CIRRUS is not set
# CONFIG_FB_PM2 is not set
# CONFIG_FB_CYBER2000 is not set
# CONFIG_FB_ARC is not set
# CONFIG_FB_ASILIANT is not set
# CONFIG_FB_IMSTT is not set
# CONFIG_FB_VGA16 is not set
# CONFIG_FB_UVESA is not set
CONFIG_FB_VESA=y
CONFIG_FB_EFI=y
# CONFIG_FB_N411 is not set
# CONFIG_FB_HGA is not set
# CONFIG_FB_S1D13XXX is not set
CONFIG_FB_NVIDIA=m
CONFIG_FB_NVIDIA_I2C=y
# CONFIG_FB_NVIDIA_DEBUG is not set
CONFIG_FB_NVIDIA_BACKLIGHT=y
CONFIG_FB_RIVA=m
CONFIG_FB_RIVA_I2C=y
# CONFIG_FB_RIVA_DEBUG is not set
CONFIG_FB_RIVA_BACKLIGHT=y
# CONFIG_FB_I810 is not set
# CONFIG_FB_LE80578 is not set
CONFIG_FB_MATROX=m
CONFIG_FB_MATROX_MILLENIUM=y
CONFIG_FB_MATROX_MYSTIQUE=y
CONFIG_FB_MATROX_G=y
CONFIG_FB_MATROX_I2C=m
# CONFIG_FB_MATROX_MAVEN is not set
# CONFIG_FB_RADEON is not set
CONFIG_FB_ATY128=m
CONFIG_FB_ATY128_BACKLIGHT=y
CONFIG_FB_ATY=m
CONFIG_FB_ATY_CT=y
CONFIG_FB_ATY_GENERIC_LCD=y
CONFIG_FB_ATY_GX=y
CONFIG_FB_ATY_BACKLIGHT=y
# CONFIG_FB_S3 is not set
CONFIG_FB_SAVAGE=m
CONFIG_FB_SAVAGE_I2C=y
CONFIG_FB_SAVAGE_ACCEL=y
# CONFIG_FB_SIS is not set
CONFIG_FB_VIA=m
# CONFIG_FB_VIA_DIRECT_PROCFS is not set
# CONFIG_FB_NEOMAGIC is not set
# CONFIG_FB_KYRO is not set
CONFIG_FB_3DFX=m
CONFIG_FB_3DFX_ACCEL=y
CONFIG_FB_3DFX_I2C=y
# CONFIG_FB_VOODOO1 is not set
# CONFIG_FB_VT8623 is not set
# CONFIG_FB_TRIDENT is not set
# CONFIG_FB_ARK is not set
# CONFIG_FB_PM3 is not set
# CONFIG_FB_CARMINE is not set
CONFIG_FB_GEODE=y
# CONFIG_FB_GEODE_LX is not set
# CONFIG_FB_GEODE_GX is not set
# CONFIG_FB_GEODE_GX1 is not set
# CONFIG_FB_VIRTUAL is not set
# CONFIG_FB_METRONOME is not set
# CONFIG_FB_MB862XX is not set
# CONFIG_FB_BROADSHEET is not set
CONFIG_BACKLIGHT_LCD_SUPPORT=y
# CONFIG_LCD_CLASS_DEVICE is not set
CONFIG_BACKLIGHT_CLASS_DEVICE=y
# CONFIG_BACKLIGHT_GENERIC is not set
# CONFIG_BACKLIGHT_PROGEAR is not set
# CONFIG_BACKLIGHT_MBP_NVIDIA is not set
# CONFIG_BACKLIGHT_SAHARA is not set
# CONFIG_BACKLIGHT_ADP8860 is not set

#
# Display device support
#
# CONFIG_DISPLAY_SUPPORT is not set

#
# Console display driver support
#
CONFIG_VGA_CONSOLE=y
CONFIG_VGACON_SOFT_SCROLLBACK=y
CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=64
# CONFIG_MDA_CONSOLE is not set
CONFIG_DUMMY_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
# CONFIG_FONTS is not set
CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=y
CONFIG_LOGO=y
# CONFIG_LOGO_LINUX_MONO is not set
# CONFIG_LOGO_LINUX_VGA16 is not set
CONFIG_LOGO_LINUX_CLUT224=y
CONFIG_SOUND=m
CONFIG_SOUND_OSS_CORE=y
CONFIG_SOUND_OSS_CORE_PRECLAIM=y
CONFIG_SND=m
CONFIG_SND_TIMER=m
CONFIG_SND_PCM=m
CONFIG_SND_HWDEP=m
CONFIG_SND_RAWMIDI=m
CONFIG_SND_JACK=y
CONFIG_SND_SEQUENCER=m
CONFIG_SND_SEQ_DUMMY=m
CONFIG_SND_OSSEMUL=y
CONFIG_SND_MIXER_OSS=m
CONFIG_SND_PCM_OSS=m
CONFIG_SND_PCM_OSS_PLUGINS=y
CONFIG_SND_SEQUENCER_OSS=y
CONFIG_SND_HRTIMER=m
CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
CONFIG_SND_DYNAMIC_MINORS=y
# 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
CONFIG_SND_VMASTER=y
CONFIG_SND_DMA_SGBUF=y
CONFIG_SND_RAWMIDI_SEQ=m
# CONFIG_SND_OPL3_LIB_SEQ is not set
# CONFIG_SND_OPL4_LIB_SEQ is not set
# CONFIG_SND_SBAWE_SEQ is not set
# CONFIG_SND_EMU10K1_SEQ is not set
CONFIG_SND_MPU401_UART=m
CONFIG_SND_DRIVERS=y
# CONFIG_SND_PCSP is not set
CONFIG_SND_DUMMY=m
CONFIG_SND_VIRMIDI=m
CONFIG_SND_MTPAV=m
CONFIG_SND_SERIAL_U16550=m
CONFIG_SND_MPU401=m
# CONFIG_SND_ISA is not set
CONFIG_SND_PCI=y
# CONFIG_SND_AD1889 is not set
# CONFIG_SND_ALS300 is not set
# CONFIG_SND_ALS4000 is not set
# CONFIG_SND_ALI5451 is not set
# CONFIG_SND_ASIHPI is not set
# CONFIG_SND_ATIIXP is not set
# CONFIG_SND_ATIIXP_MODEM is not set
# CONFIG_SND_AU8810 is not set
# CONFIG_SND_AU8820 is not set
# CONFIG_SND_AU8830 is not set
# CONFIG_SND_AW2 is not set
# CONFIG_SND_AZT3328 is not set
# CONFIG_SND_BT87X is not set
# CONFIG_SND_CA0106 is not set
# CONFIG_SND_CMIPCI is not set
# CONFIG_SND_OXYGEN is not set
# CONFIG_SND_CS4281 is not set
# CONFIG_SND_CS46XX is not set
# CONFIG_SND_CS5530 is not set
# CONFIG_SND_CS5535AUDIO is not set
# CONFIG_SND_CTXFI is not set
# CONFIG_SND_DARLA20 is not set
# CONFIG_SND_GINA20 is not set
# CONFIG_SND_LAYLA20 is not set
# CONFIG_SND_DARLA24 is not set
# CONFIG_SND_GINA24 is not set
# CONFIG_SND_LAYLA24 is not set
# CONFIG_SND_MONA is not set
# CONFIG_SND_MIA is not set
# CONFIG_SND_ECHO3G is not set
# CONFIG_SND_INDIGO is not set
# CONFIG_SND_INDIGOIO is not set
# CONFIG_SND_INDIGODJ is not set
# CONFIG_SND_INDIGOIOX is not set
# CONFIG_SND_INDIGODJX is not set
# CONFIG_SND_EMU10K1 is not set
# CONFIG_SND_EMU10K1X is not set
# CONFIG_SND_ENS1370 is not set
# CONFIG_SND_ENS1371 is not set
# CONFIG_SND_ES1938 is not set
# CONFIG_SND_ES1968 is not set
# CONFIG_SND_FM801 is not set
CONFIG_SND_HDA_INTEL=m
CONFIG_SND_HDA_HWDEP=y
CONFIG_SND_HDA_RECONFIG=y
CONFIG_SND_HDA_INPUT_BEEP=y
CONFIG_SND_HDA_INPUT_BEEP_MODE=0
CONFIG_SND_HDA_INPUT_JACK=y
CONFIG_SND_HDA_PATCH_LOADER=y
CONFIG_SND_HDA_CODEC_REALTEK=y
CONFIG_SND_HDA_CODEC_ANALOG=y
CONFIG_SND_HDA_CODEC_SIGMATEL=y
CONFIG_SND_HDA_CODEC_VIA=y
CONFIG_SND_HDA_CODEC_ATIHDMI=y
CONFIG_SND_HDA_CODEC_NVHDMI=y
CONFIG_SND_HDA_CODEC_INTELHDMI=y
CONFIG_SND_HDA_ELD=y
CONFIG_SND_HDA_CODEC_CIRRUS=y
CONFIG_SND_HDA_CODEC_CONEXANT=y
CONFIG_SND_HDA_CODEC_CA0110=y
CONFIG_SND_HDA_CODEC_CMEDIA=y
CONFIG_SND_HDA_CODEC_SI3054=y
CONFIG_SND_HDA_GENERIC=y
CONFIG_SND_HDA_POWER_SAVE=y
CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
# CONFIG_SND_HDSP is not set
# CONFIG_SND_HDSPM is not set
# CONFIG_SND_HIFIER is not set
# CONFIG_SND_ICE1712 is not set
# CONFIG_SND_ICE1724 is not set
# CONFIG_SND_INTEL8X0 is not set
# CONFIG_SND_INTEL8X0M is not set
# CONFIG_SND_KORG1212 is not set
# CONFIG_SND_LX6464ES is not set
# CONFIG_SND_MAESTRO3 is not set
# CONFIG_SND_MIXART is not set
# CONFIG_SND_NM256 is not set
# CONFIG_SND_PCXHR is not set
# CONFIG_SND_RIPTIDE is not set
# CONFIG_SND_RME32 is not set
# CONFIG_SND_RME96 is not set
# CONFIG_SND_RME9652 is not set
# CONFIG_SND_SIS7019 is not set
# CONFIG_SND_SONICVIBES is not set
# CONFIG_SND_TRIDENT is not set
# CONFIG_SND_VIA82XX is not set
# CONFIG_SND_VIA82XX_MODEM is not set
# CONFIG_SND_VIRTUOSO is not set
# CONFIG_SND_VX222 is not set
# CONFIG_SND_YMFPCI is not set
# CONFIG_SND_USB is not set
# CONFIG_SND_PCMCIA is not set
# CONFIG_SND_SOC is not set
# CONFIG_SOUND_PRIME is not set
CONFIG_HID_SUPPORT=y
CONFIG_HID=m
CONFIG_HIDRAW=y

#
# USB Input Devices
#
CONFIG_USB_HID=m
CONFIG_HID_PID=y
CONFIG_USB_HIDDEV=y

#
# Special HID drivers
#
# CONFIG_HID_3M_PCT is not set
CONFIG_HID_A4TECH=m
CONFIG_HID_APPLE=m
CONFIG_HID_BELKIN=m
# CONFIG_HID_CANDO is not set
CONFIG_HID_CHERRY=m
CONFIG_HID_CHICONY=m
# CONFIG_HID_PRODIKEYS is not set
CONFIG_HID_CYPRESS=m
CONFIG_HID_DRAGONRISE=m
CONFIG_DRAGONRISE_FF=y
# CONFIG_HID_EGALAX is not set
CONFIG_HID_EZKEY=m
CONFIG_HID_KYE=m
CONFIG_HID_GYRATION=m
CONFIG_HID_TWINHAN=m
CONFIG_HID_KENSINGTON=m
CONFIG_HID_LOGITECH=m
CONFIG_LOGITECH_FF=y
CONFIG_LOGIRUMBLEPAD2_FF=y
CONFIG_LOGIG940_FF=y
CONFIG_HID_MICROSOFT=m
# CONFIG_HID_MOSART is not set
CONFIG_HID_MONTEREY=m
# CONFIG_HID_NTRIG is not set
CONFIG_HID_ORTEK=m
CONFIG_HID_PANTHERLORD=m
CONFIG_PANTHERLORD_FF=y
CONFIG_HID_PETALYNX=m
# CONFIG_HID_PICOLCD is not set
# CONFIG_HID_QUANTA is not set
# CONFIG_HID_ROCCAT is not set
# CONFIG_HID_ROCCAT_KONE is not set
CONFIG_HID_SAMSUNG=m
CONFIG_HID_SONY=m
# CONFIG_HID_STANTUM is not set
CONFIG_HID_SUNPLUS=m
CONFIG_HID_GREENASIA=m
CONFIG_GREENASIA_FF=y
CONFIG_HID_SMARTJOYPLUS=m
CONFIG_SMARTJOYPLUS_FF=y
CONFIG_HID_TOPSEED=m
CONFIG_HID_THRUSTMASTER=m
CONFIG_THRUSTMASTER_FF=y
CONFIG_HID_ZEROPLUS=m
CONFIG_ZEROPLUS_FF=y
# CONFIG_HID_ZYDACRON is not set
CONFIG_USB_SUPPORT=y
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB_ARCH_HAS_OHCI=y
CONFIG_USB_ARCH_HAS_EHCI=y
CONFIG_USB=m
# CONFIG_USB_DEBUG is not set
CONFIG_USB_ANNOUNCE_NEW_DEVICES=y

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

#
# USB Host Controller Drivers
#
# CONFIG_USB_C67X00_HCD is not set
# CONFIG_USB_XHCI_HCD is not set
CONFIG_USB_EHCI_HCD=m
CONFIG_USB_EHCI_ROOT_HUB_TT=y
CONFIG_USB_EHCI_TT_NEWSCHED=y
# CONFIG_USB_OXU210HP_HCD is not set
# CONFIG_USB_ISP116X_HCD is not set
# CONFIG_USB_ISP1760_HCD is not set
# CONFIG_USB_ISP1362_HCD is not set
# CONFIG_USB_OHCI_HCD is not set
CONFIG_USB_UHCI_HCD=m
# CONFIG_USB_SL811_HCD is not set
# CONFIG_USB_R8A66597_HCD is not set
# CONFIG_USB_WHCI_HCD is not set
# CONFIG_USB_HWA_HCD is not set

#
# Enable Host or Gadget support to see Inventra options
#

#
# USB Device Class drivers
#
CONFIG_USB_ACM=m
CONFIG_USB_PRINTER=m
CONFIG_USB_WDM=m
# CONFIG_USB_TMC is not set

#
# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
#

#
# also be needed; see USB_STORAGE Help for more info
#
CONFIG_USB_STORAGE=m
# CONFIG_USB_STORAGE_DEBUG is not set
CONFIG_USB_STORAGE_DATAFAB=m
CONFIG_USB_STORAGE_FREECOM=m
CONFIG_USB_STORAGE_ISD200=m
CONFIG_USB_STORAGE_USBAT=m
# 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_ONETOUCH is not set
# CONFIG_USB_STORAGE_KARMA is not set
CONFIG_USB_STORAGE_CYPRESS_ATACB=m
# CONFIG_USB_LIBUSUAL is not set

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

#
# USB port drivers
#
# CONFIG_USB_SERIAL is not set

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

#
# OTG and related infrastructure
#
# CONFIG_USB_GPIO_VBUS is not set
# CONFIG_NOP_USB_XCEIV is not set
CONFIG_UWB=m
# CONFIG_UWB_HWA is not set
# CONFIG_UWB_WHCI is not set
# CONFIG_UWB_WLP is not set
# CONFIG_MMC is not set
# CONFIG_MEMSTICK is not set
CONFIG_NEW_LEDS=y
CONFIG_LEDS_CLASS=m

#
# LED drivers
#
# CONFIG_LEDS_ALIX2 is not set
# CONFIG_LEDS_PCA9532 is not set
# CONFIG_LEDS_GPIO is not set
# CONFIG_LEDS_LP3944 is not set
# CONFIG_LEDS_CLEVO_MAIL is not set
# CONFIG_LEDS_PCA955X is not set
# CONFIG_LEDS_REGULATOR is not set
# CONFIG_LEDS_BD2802 is not set
# CONFIG_LEDS_INTEL_SS4200 is not set
# CONFIG_LEDS_LT3593 is not set
CONFIG_LEDS_TRIGGERS=y

#
# LED Triggers
#
# CONFIG_LEDS_TRIGGER_TIMER is not set
# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
# CONFIG_LEDS_TRIGGER_GPIO is not set
# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set

#
# iptables trigger is under Netfilter config (LED target)
#
# CONFIG_ACCESSIBILITY is not set
# CONFIG_INFINIBAND is not set
# CONFIG_EDAC is not set
CONFIG_RTC_LIB=m
CONFIG_RTC_CLASS=m

#
# 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_BQ32K is not set
# CONFIG_RTC_DRV_S35390A is not set
# CONFIG_RTC_DRV_FM3130 is not set
# CONFIG_RTC_DRV_RX8581 is not set
# CONFIG_RTC_DRV_RX8025 is not set

#
# SPI RTC drivers
#

#
# Platform RTC drivers
#
CONFIG_RTC_DRV_CMOS=m
CONFIG_RTC_DRV_DS1286=m
CONFIG_RTC_DRV_DS1511=m
CONFIG_RTC_DRV_DS1553=m
CONFIG_RTC_DRV_DS1742=m
CONFIG_RTC_DRV_STK17TA8=m
CONFIG_RTC_DRV_M48T86=m
CONFIG_RTC_DRV_M48T35=m
CONFIG_RTC_DRV_M48T59=m
CONFIG_RTC_DRV_MSM6242=m
CONFIG_RTC_DRV_BQ4802=m
CONFIG_RTC_DRV_RP5C01=m
CONFIG_RTC_DRV_V3020=m

#
# on-CPU RTC drivers
#
CONFIG_DMADEVICES=y
# CONFIG_DMADEVICES_DEBUG is not set

#
# DMA Devices
#
# CONFIG_INTEL_IOATDMA is not set
# CONFIG_TIMB_DMA is not set
CONFIG_AUXDISPLAY=y
CONFIG_UIO=m
# CONFIG_UIO_CIF is not set
# CONFIG_UIO_PDRV is not set
# CONFIG_UIO_PDRV_GENIRQ is not set
# CONFIG_UIO_AEC is not set
# CONFIG_UIO_SERCOS3 is not set
# CONFIG_UIO_PCI_GENERIC is not set
# CONFIG_UIO_NETX is not set
# CONFIG_STAGING is not set
CONFIG_X86_PLATFORM_DEVICES=y
# CONFIG_ACER_WMI is not set
# CONFIG_ASUS_LAPTOP is not set
# CONFIG_FUJITSU_LAPTOP is not set
# CONFIG_TC1100_WMI is not set
# CONFIG_MSI_LAPTOP is not set
# CONFIG_PANASONIC_LAPTOP is not set
# CONFIG_COMPAL_LAPTOP is not set
# CONFIG_SONY_LAPTOP is not set
# CONFIG_THINKPAD_ACPI is not set
# CONFIG_INTEL_MENLOW is not set
# CONFIG_EEEPC_LAPTOP is not set
# CONFIG_ACPI_WMI is not set
# CONFIG_ACPI_ASUS is not set
# CONFIG_TOPSTAR_LAPTOP is not set
CONFIG_ACPI_TOSHIBA=m
CONFIG_TOSHIBA_BT_RFKILL=m
# CONFIG_ACPI_CMPC is not set
CONFIG_INTEL_SCU_IPC=y

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

#
# File systems
#
# CONFIG_EXT2_FS is not set
CONFIG_EXT3_FS=m
# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
CONFIG_EXT3_FS_XATTR=y
CONFIG_EXT3_FS_POSIX_ACL=y
CONFIG_EXT3_FS_SECURITY=y
CONFIG_EXT4_FS=m
CONFIG_EXT4_USE_FOR_EXT23=y
CONFIG_EXT4_FS_XATTR=y
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_EXT4_FS_SECURITY=y
# CONFIG_EXT4_DEBUG is not set
CONFIG_JBD=m
# CONFIG_JBD_DEBUG is not set
CONFIG_JBD2=m
# CONFIG_JBD2_DEBUG is not set
CONFIG_FS_MBCACHE=m
# CONFIG_REISERFS_FS is not set
CONFIG_JFS_FS=m
CONFIG_JFS_POSIX_ACL=y
CONFIG_JFS_SECURITY=y
# CONFIG_JFS_DEBUG is not set
# CONFIG_JFS_STATISTICS is not set
CONFIG_FS_POSIX_ACL=y
# CONFIG_XFS_FS is not set
# CONFIG_GFS2_FS is not set
# CONFIG_OCFS2_FS is not set
# CONFIG_BTRFS_FS is not set
# CONFIG_NILFS2_FS is not set
CONFIG_FILE_LOCKING=y
CONFIG_FSNOTIFY=y
CONFIG_DNOTIFY=y
CONFIG_INOTIFY=y
CONFIG_INOTIFY_USER=y
CONFIG_QUOTA=y
CONFIG_QUOTA_NETLINK_INTERFACE=y
# CONFIG_PRINT_QUOTA_WARNING is not set
# CONFIG_QUOTA_DEBUG is not set
# CONFIG_QFMT_V1 is not set
# CONFIG_QFMT_V2 is not set
CONFIG_QUOTACTL=y
# CONFIG_AUTOFS_FS is not set
# CONFIG_AUTOFS4_FS is not set
CONFIG_FUSE_FS=m
# CONFIG_CUSE is not set
CONFIG_GENERIC_ACL=y

#
# Caches
#
# CONFIG_FSCACHE is not set

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

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

#
# Pseudo filesystems
#
CONFIG_PROC_FS=y
CONFIG_PROC_KCORE=y
CONFIG_PROC_SYSCTL=y
CONFIG_PROC_PAGE_MONITOR=y
CONFIG_SYSFS=y
CONFIG_TMPFS=y
CONFIG_TMPFS_POSIX_ACL=y
CONFIG_HUGETLBFS=y
CONFIG_HUGETLB_PAGE=y
# CONFIG_CONFIGFS_FS is not set
CONFIG_MISC_FILESYSTEMS=y
# CONFIG_ADFS_FS is not set
# CONFIG_AFFS_FS is not set
CONFIG_ECRYPT_FS=m
# 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_LOGFS is not set
CONFIG_CRAMFS=y
# CONFIG_SQUASHFS is not set
# CONFIG_VXFS_FS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_OMFS_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
# CONFIG_ROMFS_FS is not set
# CONFIG_SYSV_FS is not set
# CONFIG_UFS_FS is not set
CONFIG_NETWORK_FILESYSTEMS=y
CONFIG_NFS_FS=m
CONFIG_NFS_V3=y
CONFIG_NFS_V3_ACL=y
CONFIG_NFS_V4=y
# CONFIG_NFS_V4_1 is not set
CONFIG_NFSD=m
CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3=y
CONFIG_NFSD_V3_ACL=y
CONFIG_NFSD_V4=y
CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_EXPORTFS=m
CONFIG_NFS_ACL_SUPPORT=m
CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=m
CONFIG_SUNRPC_GSS=m
CONFIG_RPCSEC_GSS_KRB5=m
CONFIG_RPCSEC_GSS_SPKM3=m
# CONFIG_SMB_FS is not set
# CONFIG_CEPH_FS is not set
CONFIG_CIFS=m
# CONFIG_CIFS_STATS is not set
# CONFIG_CIFS_WEAK_PW_HASH is not set
CONFIG_CIFS_UPCALL=y
CONFIG_CIFS_XATTR=y
CONFIG_CIFS_POSIX=y
# CONFIG_CIFS_DEBUG2 is not set
CONFIG_CIFS_DFS_UPCALL=y
CONFIG_CIFS_EXPERIMENTAL=y
CONFIG_NCP_FS=m
CONFIG_NCPFS_PACKET_SIGNING=y
CONFIG_NCPFS_IOCTL_LOCKING=y
CONFIG_NCPFS_STRONG=y
CONFIG_NCPFS_NFS_NS=y
CONFIG_NCPFS_OS2_NS=y
CONFIG_NCPFS_SMALLDOS=y
CONFIG_NCPFS_NLS=y
CONFIG_NCPFS_EXTRAS=y
# 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=y
CONFIG_SOLARIS_X86_PARTITION=y
CONFIG_UNIXWARE_DISKLABEL=y
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 is not set
# CONFIG_KARMA_PARTITION is not set
CONFIG_EFI_PARTITION=y
CONFIG_SYSV68_PARTITION=y
CONFIG_NLS=m
CONFIG_NLS_DEFAULT="utf8"
# CONFIG_NLS_CODEPAGE_437 is not set
# CONFIG_NLS_CODEPAGE_737 is not set
# CONFIG_NLS_CODEPAGE_775 is not set
# CONFIG_NLS_CODEPAGE_850 is not set
# CONFIG_NLS_CODEPAGE_852 is not set
# CONFIG_NLS_CODEPAGE_855 is not set
# CONFIG_NLS_CODEPAGE_857 is not set
# CONFIG_NLS_CODEPAGE_860 is not set
# CONFIG_NLS_CODEPAGE_861 is not set
# CONFIG_NLS_CODEPAGE_862 is not set
# CONFIG_NLS_CODEPAGE_863 is not set
# CONFIG_NLS_CODEPAGE_864 is not set
# CONFIG_NLS_CODEPAGE_865 is not set
# CONFIG_NLS_CODEPAGE_866 is not set
# CONFIG_NLS_CODEPAGE_869 is not set
# CONFIG_NLS_CODEPAGE_936 is not set
# CONFIG_NLS_CODEPAGE_950 is not set
# CONFIG_NLS_CODEPAGE_932 is not set
# CONFIG_NLS_CODEPAGE_949 is not set
# CONFIG_NLS_CODEPAGE_874 is not set
# CONFIG_NLS_ISO8859_8 is not set
# CONFIG_NLS_CODEPAGE_1250 is not set
# CONFIG_NLS_CODEPAGE_1251 is not set
# CONFIG_NLS_ASCII is not set
# CONFIG_NLS_ISO8859_1 is not set
# 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=m
# CONFIG_DLM is not set

#
# Kernel hacking
#
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
CONFIG_PRINTK_TIME=y
CONFIG_ENABLE_WARN_DEPRECATED=y
CONFIG_ENABLE_MUST_CHECK=y
CONFIG_FRAME_WARN=1024
CONFIG_MAGIC_SYSRQ=y
CONFIG_STRIP_ASM_SYMS=y
CONFIG_UNUSED_SYMBOLS=y
CONFIG_DEBUG_FS=y
CONFIG_HEADERS_CHECK=y
CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_SHIRQ is not set
# CONFIG_DETECT_SOFTLOCKUP is not set
# CONFIG_DETECT_HUNG_TASK is not set
# CONFIG_SCHED_DEBUG is not set
CONFIG_SCHEDSTATS=y
CONFIG_TIMER_STATS=y
# CONFIG_DEBUG_OBJECTS is not set
# CONFIG_SLUB_DEBUG_ON is not set
# CONFIG_SLUB_STATS is not set
# CONFIG_DEBUG_KMEMLEAK is not set
# CONFIG_DEBUG_PREEMPT is not set
# CONFIG_DEBUG_RT_MUTEXES is not set
# CONFIG_RT_MUTEX_TESTER is not set
# CONFIG_DEBUG_SPINLOCK is not set
# CONFIG_DEBUG_MUTEXES is not set
# CONFIG_DEBUG_LOCK_ALLOC is not set
# CONFIG_PROVE_LOCKING is not set
# CONFIG_LOCK_STAT is not set
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
# CONFIG_DEBUG_KOBJECT is not set
# CONFIG_DEBUG_HIGHMEM is not set
CONFIG_DEBUG_BUGVERBOSE=y
# CONFIG_DEBUG_INFO is not set
# CONFIG_DEBUG_VM is not set
# CONFIG_DEBUG_VIRTUAL is not set
# CONFIG_DEBUG_WRITECOUNT is not set
CONFIG_DEBUG_MEMORY_INIT=y
# CONFIG_DEBUG_LIST is not set
# CONFIG_DEBUG_SG is not set
# CONFIG_DEBUG_NOTIFIERS is not set
# CONFIG_DEBUG_CREDENTIALS is not set
CONFIG_ARCH_WANT_FRAME_POINTERS=y
# CONFIG_FRAME_POINTER is not set
# CONFIG_BOOT_PRINTK_DELAY is not set
# CONFIG_RCU_TORTURE_TEST is not set
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
# CONFIG_BACKTRACE_SELF_TEST is not set
# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
# CONFIG_LKDTM is not set
# CONFIG_CPU_NOTIFIER_ERROR_INJECT is not set
# CONFIG_FAULT_INJECTION is not set
# CONFIG_LATENCYTOP is not set
CONFIG_SYSCTL_SYSCALL_CHECK=y
# CONFIG_DEBUG_PAGEALLOC is not set
CONFIG_USER_STACKTRACE_SUPPORT=y
CONFIG_HAVE_FUNCTION_TRACER=y
CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y
CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
CONFIG_HAVE_DYNAMIC_FTRACE=y
CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
CONFIG_TRACING_SUPPORT=y
# CONFIG_FTRACE is not set
# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
# CONFIG_FIREWIRE_OHCI_REMOTE_DMA is not set
# CONFIG_BUILD_DOCSRC is not set
# CONFIG_DYNAMIC_DEBUG is not set
# CONFIG_DMA_API_DEBUG is not set
# CONFIG_ATOMIC64_SELFTEST is not set
# CONFIG_SAMPLES is not set
CONFIG_HAVE_ARCH_KGDB=y
# CONFIG_KGDB is not set
CONFIG_HAVE_ARCH_KMEMCHECK=y
# CONFIG_KMEMCHECK is not set
CONFIG_STRICT_DEVMEM=y
CONFIG_X86_VERBOSE_BOOTUP=y
CONFIG_EARLY_PRINTK=y
# CONFIG_EARLY_PRINTK_DBGP is not set
# CONFIG_DEBUG_STACKOVERFLOW is not set
# CONFIG_DEBUG_STACK_USAGE is not set
# CONFIG_DEBUG_PER_CPU_MAPS is not set
# CONFIG_X86_PTDUMP is not set
CONFIG_DEBUG_RODATA=y
CONFIG_DEBUG_RODATA_TEST=y
# CONFIG_DEBUG_NX_TEST is not set
# CONFIG_4KSTACKS is not set
CONFIG_DOUBLEFAULT=y
# CONFIG_IOMMU_STRESS is not set
CONFIG_HAVE_MMIOTRACE_SUPPORT=y
CONFIG_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 is not set
# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set

#
# Security options
#
CONFIG_KEYS=y
# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
CONFIG_SECURITY=y
CONFIG_SECURITYFS=y
CONFIG_SECURITY_NETWORK=y
CONFIG_SECURITY_NETWORK_XFRM=y
# CONFIG_SECURITY_PATH is not set
# CONFIG_INTEL_TXT is not set
CONFIG_LSM_MMAP_MIN_ADDR=65536
CONFIG_SECURITY_SELINUX=y
CONFIG_SECURITY_SELINUX_BOOTPARAM=y
CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0
CONFIG_SECURITY_SELINUX_DISABLE=y
CONFIG_SECURITY_SELINUX_DEVELOP=y
CONFIG_SECURITY_SELINUX_AVC_STATS=y
CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1
# CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set
# CONFIG_SECURITY_SMACK is not set
# CONFIG_SECURITY_TOMOYO is not set
# CONFIG_IMA is not set
CONFIG_DEFAULT_SECURITY_SELINUX=y
# CONFIG_DEFAULT_SECURITY_SMACK is not set
# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
# CONFIG_DEFAULT_SECURITY_DAC is not set
CONFIG_DEFAULT_SECURITY="selinux"
CONFIG_XOR_BLOCKS=m
CONFIG_ASYNC_CORE=m
CONFIG_ASYNC_MEMCPY=m
CONFIG_ASYNC_XOR=m
CONFIG_ASYNC_PQ=m
CONFIG_ASYNC_RAID6_RECOV=m
CONFIG_CRYPTO=y

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

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

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

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

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

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

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

#
# Random Number Generation
#
# CONFIG_CRYPTO_ANSI_CPRNG is not set
CONFIG_CRYPTO_HW=y
# CONFIG_CRYPTO_DEV_PADLOCK is not set
# CONFIG_CRYPTO_DEV_GEODE is not set
# CONFIG_CRYPTO_DEV_HIFN_795X is not set
CONFIG_HAVE_KVM=y
CONFIG_HAVE_KVM_IRQCHIP=y
CONFIG_HAVE_KVM_EVENTFD=y
CONFIG_KVM_APIC_ARCHITECTURE=y
CONFIG_KVM_MMIO=y
CONFIG_VIRTUALIZATION=y
CONFIG_KVM=m
CONFIG_KVM_INTEL=m
# CONFIG_KVM_AMD is not set
# CONFIG_VHOST_NET is not set
# CONFIG_LGUEST is not set
CONFIG_VIRTIO=y
CONFIG_VIRTIO_RING=y
# CONFIG_VIRTIO_PCI is not set
# CONFIG_VIRTIO_BALLOON is not set
# CONFIG_BINARY_PRINTF is not set

#
# Library routines
#
CONFIG_BITREVERSE=y
CONFIG_GENERIC_FIND_FIRST_BIT=y
CONFIG_GENERIC_FIND_NEXT_BIT=y
CONFIG_GENERIC_FIND_LAST_BIT=y
# CONFIG_CRC_CCITT is not set
CONFIG_CRC16=m
# CONFIG_CRC_T10DIF is not set
CONFIG_CRC_ITU_T=m
CONFIG_CRC32=y
# CONFIG_CRC7 is not set
CONFIG_LIBCRC32C=m
CONFIG_AUDIT_GENERIC=y
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=m
CONFIG_LZO_COMPRESS=m
CONFIG_LZO_DECOMPRESS=y
CONFIG_DECOMPRESS_GZIP=y
CONFIG_DECOMPRESS_BZIP2=y
CONFIG_DECOMPRESS_LZMA=y
CONFIG_DECOMPRESS_LZO=y
CONFIG_TEXTSEARCH=y
CONFIG_TEXTSEARCH_KMP=m
CONFIG_TEXTSEARCH_BM=m
CONFIG_TEXTSEARCH_FSM=m
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y
CONFIG_HAS_DMA=y
CONFIG_CHECK_SIGNATURE=y
CONFIG_NLATTR=y

[-- Attachment #3: dmesg.txt --]
[-- Type: text/plain, Size: 82728 bytes --]

[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Linux version 2.6.35.3-test-mm3 (root@sidux) (gcc version 4.4.4 (Debian 4.4.4-7) ) #6 SMP PREEMPT Mon Aug 30 14:40:48 EEST 2010
[    0.000000] BIOS-provided physical RAM map:
[    0.000000]  BIOS-e820: 0000000000000000 - 000000000009f800 (usable)
[    0.000000]  BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved)
[    0.000000]  BIOS-e820: 00000000000dc000 - 0000000000100000 (reserved)
[    0.000000]  BIOS-e820: 0000000000100000 - 00000000bf670000 (usable)
[    0.000000]  BIOS-e820: 00000000bf670000 - 00000000bf700000 (ACPI NVS)
[    0.000000]  BIOS-e820: 00000000bf700000 - 00000000c0000000 (reserved)
[    0.000000]  BIOS-e820: 00000000fec00000 - 00000000fec10000 (reserved)
[    0.000000]  BIOS-e820: 00000000fed00000 - 00000000fed00400 (reserved)
[    0.000000]  BIOS-e820: 00000000fed14000 - 00000000fed1a000 (reserved)
[    0.000000]  BIOS-e820: 00000000fed1c000 - 00000000fed90000 (reserved)
[    0.000000]  BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
[    0.000000]  BIOS-e820: 00000000ff000000 - 0000000100000000 (reserved)
[    0.000000] Notice: NX (Execute Disable) protection cannot be enabled: non-PAE kernel!
[    0.000000] DMI present.
[    0.000000] Phoenix BIOS detected: BIOS may corrupt low RAM, working around it.
[    0.000000] e820 update range: 0000000000000000 - 0000000000010000 (usable) ==> (reserved)
[    0.000000] e820 update range: 0000000000000000 - 0000000000001000 (usable) ==> (reserved)
[    0.000000] e820 remove range: 00000000000a0000 - 0000000000100000 (usable)
[    0.000000] last_pfn = 0xbf670 max_arch_pfn = 0x100000
[    0.000000] MTRR default type: uncachable
[    0.000000] MTRR fixed ranges enabled:
[    0.000000]   00000-9FFFF write-back
[    0.000000]   A0000-BFFFF uncachable
[    0.000000]   C0000-CFFFF write-protect
[    0.000000]   D0000-DFFFF uncachable
[    0.000000]   E0000-FFFFF write-protect
[    0.000000] MTRR variable ranges enabled:
[    0.000000]   0 base 000000000 mask F80000000 write-back
[    0.000000]   1 base 080000000 mask FC0000000 write-back
[    0.000000]   2 base 0BF700000 mask FFFF00000 uncachable
[    0.000000]   3 base 0BF800000 mask FFF800000 uncachable
[    0.000000]   4 disabled
[    0.000000]   5 disabled
[    0.000000]   6 disabled
[    0.000000]   7 disabled
[    0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106
[    0.000000] initial memory mapped : 0 - 00c00000
[    0.000000] found SMP MP-table at [c00f6a10] f6a10
[    0.000000] init_memory_mapping: 0000000000000000-00000000377fe000
[    0.000000]  0000000000 - 0000400000 page 4k
[    0.000000]  0000400000 - 0037400000 page 2M
[    0.000000]  0037400000 - 00377fe000 page 4k
[    0.000000] kernel direct mapping tables up to 377fe000 @ 15000-1a000
[    0.000000] RAMDISK: 37b3f000 - 37ff0000
[    0.000000] Allocated new RAMDISK: 006b7000 - 00b67f47
[    0.000000] Move RAMDISK from 0000000037b3f000 - 0000000037feff46 to 006b7000 - 00b67f46
[    0.000000] ACPI: RSDP 000f6960 00024 (v02 TOSINV)
[    0.000000] ACPI: XSDT bf678478 0008C (v01 TOSINV TOSINV00 06040000  INV 00000000)
[    0.000000] ACPI: FACP bf681bf8 000F4 (v03 TOSINV TOSINV00 06040000 ALAN 00000001)
[    0.000000] ACPI: DSDT bf67a1cf 079B5 (v02 TOSINV CALISTGA 06040000 INTL 20050624)
[    0.000000] ACPI: FACS bf682fc0 00040
[    0.000000] ACPI: APIC bf681cec 00068 (v01 INTEL  CALISTGA 06040000 LOHR 0000005A)
[    0.000000] ACPI: HPET bf681d54 00038 (v01 INTEL  CALISTGA 06040000 LOHR 0000005A)
[    0.000000] ACPI: MCFG bf681d8c 0003C (v01 INTEL  CALISTGA 06040000 LOHR 0000005A)
[    0.000000] ACPI: TCPA bf681dc8 00032 (v01 PTLTD  CALISTGA 06040000  PTL 00000001)
[    0.000000] ACPI: APIC bf681dfa 00068 (v01 TOSINV   APIC   06040000  INV 00000000)
[    0.000000] ACPI: SLIC bf681e62 00176 (v01 TOSINV TOSINV00 06040000  INV 00000000)
[    0.000000] ACPI: BOOT bf681fd8 00028 (v01 PTLTD  $SBFTBL$ 06040000  LTP 00000001)
[    0.000000] ACPI: SSDT bf679b80 0064F (v01 SataRe  SataPri 00001000 INTL 20050624)
[    0.000000] ACPI: SSDT bf6794ee 00692 (v01 SataRe  SataSec 00001000 INTL 20050624)
[    0.000000] ACPI: SSDT bf678a90 0025F (v01  PmRef  Cpu0Tst 00003000 INTL 20050624)
[    0.000000] ACPI: SSDT bf6789ea 000A6 (v01  PmRef  Cpu1Tst 00003000 INTL 20050624)
[    0.000000] ACPI: SSDT bf678504 004E6 (v01  PmRef    CpuPm 00003000 INTL 20050624)
[    0.000000] ACPI: BIOS bug: multiple APIC/MADT found, using 0
[    0.000000] ACPI: If "acpi_apic_instance=2" works better, notify linux-acpi@vger.kernel.org
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] 2174MB HIGHMEM available.
[    0.000000] 887MB LOWMEM available.
[    0.000000]   mapped low ram: 0 - 377fe000
[    0.000000]   low ram: 0 - 377fe000
[    0.000000] early_res array is doubled to 64 at [16000 - 167ff]
[    0.000000] early_res array is doubled to 128 at [16800 - 177ff]
[    0.000000] Zone PFN ranges:
[    0.000000]   DMA      0x00000010 -> 0x00001000
[    0.000000]   Normal   0x00001000 -> 0x000377fe
[    0.000000]   HighMem  0x000377fe -> 0x000bf670
[    0.000000] Movable zone start PFN for each node
[    0.000000] early_node_map[2] active PFN ranges
[    0.000000]     0: 0x00000010 -> 0x0000009f
[    0.000000]     0: 0x00000100 -> 0x000bf670
[    0.000000] On node 0 totalpages: 783871
[    0.000000]   DMA zone: 32 pages used for memmap
[    0.000000]   DMA zone: 0 pages reserved
[    0.000000]   DMA zone: 3951 pages, LIFO batch:0
[    0.000000]   Normal zone: 1744 pages used for memmap
[    0.000000]   Normal zone: 221486 pages, LIFO batch:31
[    0.000000]   HighMem zone: 4349 pages used for memmap
[    0.000000]   HighMem zone: 552309 pages, LIFO batch:31
[    0.000000] Using APIC driver default
[    0.000000] ACPI: PM-Timer IO Port: 0x1008
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled)
[    0.000000] ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1])
[    0.000000] ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1])
[    0.000000] ACPI: IOAPIC (id[0x01] address[0xfec00000] gsi_base[0])
[    0.000000] IOAPIC[0]: apic_id 1, version 32, address 0xfec00000, GSI 0-23
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
[    0.000000] ACPI: IRQ0 used by override.
[    0.000000] ACPI: IRQ2 used by override.
[    0.000000] ACPI: IRQ9 used by override.
[    0.000000] Using ACPI (MADT) for SMP configuration information
[    0.000000] ACPI: HPET id: 0x8086a201 base: 0xfed00000
[    0.000000] SMP: Allowing 2 CPUs, 0 hotplug CPUs
[    0.000000] nr_irqs_gsi: 40
[    0.000000] PM: Registered nosave memory: 000000000009f000 - 00000000000a0000
[    0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000dc000
[    0.000000] PM: Registered nosave memory: 00000000000dc000 - 0000000000100000
[    0.000000] Allocating PCI resources starting at c0000000 (gap: c0000000:3ec00000)
[    0.000000] Booting paravirtualized kernel on bare hardware
[    0.000000] setup_percpu: NR_CPUS:32 nr_cpumask_bits:32 nr_cpu_ids:2 nr_node_ids:1
[    0.000000] PERCPU: Embedded 13 pages/cpu @c2c00000 s31360 r0 d21888 u2097152
[    0.000000] pcpu-alloc: s31360 r0 d21888 u2097152 alloc=1*4194304
[    0.000000] pcpu-alloc: [0] 0 1 
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 777746
[    0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-2.6.35.3-test-mm3 root=UUID=5d9d863e-f317-42c3-8469-ec636b4c61fb ro no_console_suspend=1
[    0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes)
[    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
[    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
[    0.000000] Enabling fast FPU save and restore... done.
[    0.000000] Enabling unmasked SIMD FPU exception support... done.
[    0.000000] Initializing CPU#0
[    0.000000] Subtract (95 early reservations)
[    0.000000]   #1 [0000001000 - 0000002000]   EX TRAMPOLINE
[    0.000000]   #2 [0000100000 - 00006b26a4]   TEXT DATA BSS
[    0.000000]   #3 [00006b3000 - 00006b61a0]             BRK
[    0.000000]   #4 [00000f6a20 - 0000100000]   BIOS reserved
[    0.000000]   #5 [00000f6a10 - 00000f6a20]    MP-table mpf
[    0.000000]   #6 [000009f800 - 000009fd71]   BIOS reserved
[    0.000000]   #7 [000009feed - 00000f6a10]   BIOS reserved
[    0.000000]   #8 [000009fd71 - 000009feed]    MP-table mpc
[    0.000000]   #9 [0000010000 - 0000011000]      TRAMPOLINE
[    0.000000]   #10 [0000011000 - 0000015000]     ACPI WAKEUP
[    0.000000]   #11 [0000015000 - 0000016000]         PGTABLE
[    0.000000]   #12 [00006b7000 - 0000b68000]     NEW RAMDISK
[    0.000000]   #13 [0001000000 - 0001001000]         BOOTMEM
[    0.000000]   #14 [0001001100 - 0001001280]         BOOTMEM
[    0.000000]   #15 [0001002000 - 0001082000]         BOOTMEM
[    0.000000]   #16 [0001082000 - 0001102000]         BOOTMEM
[    0.000000]   #17 [0001102000 - 0001182000]         BOOTMEM
[    0.000000]   #18 [0001182000 - 0001202000]         BOOTMEM
[    0.000000]   #19 [0001202000 - 0001282000]         BOOTMEM
[    0.000000]   #20 [0001282000 - 0001302000]         BOOTMEM
[    0.000000]   #21 [0001302000 - 0001382000]         BOOTMEM
[    0.000000]   #22 [0001382000 - 0001402000]         BOOTMEM
[    0.000000]   #23 [0001402000 - 0001482000]         BOOTMEM
[    0.000000]   #24 [0001482000 - 0001502000]         BOOTMEM
[    0.000000]   #25 [0001502000 - 0001582000]         BOOTMEM
[    0.000000]   #26 [0001582000 - 0001602000]         BOOTMEM
[    0.000000]   #27 [0001602000 - 0001682000]         BOOTMEM
[    0.000000]   #28 [0001682000 - 0001702000]         BOOTMEM
[    0.000000]   #29 [0001702000 - 0001782000]         BOOTMEM
[    0.000000]   #30 [0001782000 - 0001802000]         BOOTMEM
[    0.000000]   #31 [0001802000 - 0001882000]         BOOTMEM
[    0.000000]   #32 [0001882000 - 0001902000]         BOOTMEM
[    0.000000]   #33 [0001902000 - 0001982000]         BOOTMEM
[    0.000000]   #34 [0001982000 - 0001a02000]         BOOTMEM
[    0.000000]   #35 [0001a02000 - 0001a82000]         BOOTMEM
[    0.000000]   #36 [0001a82000 - 0001b02000]         BOOTMEM
[    0.000000]   #37 [0001b02000 - 0001b82000]         BOOTMEM
[    0.000000]   #38 [0001b82000 - 0001c02000]         BOOTMEM
[    0.000000]   #39 [0001c02000 - 0001c82000]         BOOTMEM
[    0.000000]   #40 [0001c82000 - 0001d02000]         BOOTMEM
[    0.000000]   #41 [0001d02000 - 0001d82000]         BOOTMEM
[    0.000000]   #42 [0001d82000 - 0001e02000]         BOOTMEM
[    0.000000]   #43 [0001e02000 - 0001e82000]         BOOTMEM
[    0.000000]   #44 [0001e82000 - 0001f02000]         BOOTMEM
[    0.000000]   #45 [0001f02000 - 0001f82000]         BOOTMEM
[    0.000000]   #46 [0001f82000 - 0002002000]         BOOTMEM
[    0.000000]   #47 [0002002000 - 0002082000]         BOOTMEM
[    0.000000]   #48 [0002082000 - 0002102000]         BOOTMEM
[    0.000000]   #49 [0002102000 - 0002182000]         BOOTMEM
[    0.000000]   #50 [0002182000 - 0002202000]         BOOTMEM
[    0.000000]   #51 [0002202000 - 0002282000]         BOOTMEM
[    0.000000]   #52 [0002282000 - 0002302000]         BOOTMEM
[    0.000000]   #53 [0002302000 - 0002382000]         BOOTMEM
[    0.000000]   #54 [0002382000 - 0002402000]         BOOTMEM
[    0.000000]   #55 [0002402000 - 0002482000]         BOOTMEM
[    0.000000]   #56 [0002482000 - 0002502000]         BOOTMEM
[    0.000000]   #57 [0002502000 - 0002582000]         BOOTMEM
[    0.000000]   #58 [0002582000 - 0002602000]         BOOTMEM
[    0.000000]   #59 [0002602000 - 0002682000]         BOOTMEM
[    0.000000]   #60 [0002682000 - 0002702000]         BOOTMEM
[    0.000000]   #61 [0002702000 - 0002782000]         BOOTMEM
[    0.000000]   #62 [0002782000 - 0002802000]         BOOTMEM
[    0.000000]   #63 [0001001000 - 00010010c0]         BOOTMEM
[    0.000000]   #64 [0002802000 - 0002805000]         BOOTMEM
[    0.000000]   #65 [0002805000 - 0002811000]         BOOTMEM
[    0.000000]   #66 [00010010c0 - 00010010e5]         BOOTMEM
[    0.000000]   #67 [0001001280 - 00010012a7]         BOOTMEM
[    0.000000]   #68 [00010012c0 - 000100142c]         BOOTMEM
[    0.000000]   #69 [0001001440 - 0001001480]         BOOTMEM
[    0.000000]   #70 [0001001480 - 00010014c0]         BOOTMEM
[    0.000000]   #71 [00010014c0 - 0001001500]         BOOTMEM
[    0.000000]   #72 [0001001500 - 0001001540]         BOOTMEM
[    0.000000]   #73 [0001001540 - 0001001580]         BOOTMEM
[    0.000000]   #74 [0001001580 - 00010015c0]         BOOTMEM
[    0.000000]   #75 [00010015c0 - 0001001600]         BOOTMEM
[    0.000000]   #76 [0001001600 - 0001001640]         BOOTMEM
[    0.000000]   #77 [0001001640 - 0001001680]         BOOTMEM
[    0.000000]   #78 [0001001680 - 00010016c0]         BOOTMEM
[    0.000000]   #79 [00010016c0 - 0001001700]         BOOTMEM
[    0.000000]   #80 [0001001700 - 0001001740]         BOOTMEM
[    0.000000]   #81 [0001001740 - 0001001750]         BOOTMEM
[    0.000000]   #82 [0001001780 - 00010017f2]         BOOTMEM
[    0.000000]   #83 [0001001800 - 0001001872]         BOOTMEM
[    0.000000]   #84 [0002c00000 - 0002c0d000]         BOOTMEM
[    0.000000]   #85 [0002e00000 - 0002e0d000]         BOOTMEM
[    0.000000]   #86 [0001001880 - 0001001884]         BOOTMEM
[    0.000000]   #87 [00010018c0 - 00010018c4]         BOOTMEM
[    0.000000]   #88 [0001001900 - 0001001908]         BOOTMEM
[    0.000000]   #89 [0001001940 - 0001001948]         BOOTMEM
[    0.000000]   #90 [0001001980 - 0001001a28]         BOOTMEM
[    0.000000]   #91 [0001001a40 - 0001001aa8]         BOOTMEM
[    0.000000]   #92 [0002811000 - 0002815000]         BOOTMEM
[    0.000000]   #93 [0002815000 - 0002895000]         BOOTMEM
[    0.000000]   #94 [0002895000 - 00028d5000]         BOOTMEM
[    0.000000] Initializing HighMem for node 0 (000377fe:000bf670)
[    0.000000] Memory: 3099272k/3135936k available (3022k kernel code, 36212k reserved, 1081k data, 400k init, 2226632k highmem)
[    0.000000] virtual kernel memory layout:
[    0.000000]     fixmap  : 0xffd35000 - 0xfffff000   (2856 kB)
[    0.000000]     pkmap   : 0xff800000 - 0xffc00000   (4096 kB)
[    0.000000]     vmalloc : 0xf7ffe000 - 0xff7fe000   ( 120 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xf77fe000   ( 887 MB)
[    0.000000]       .init : 0xc0502000 - 0xc0566000   ( 400 kB)
[    0.000000]       .data : 0xc03f3ad2 - 0xc0501f68   (1081 kB)
[    0.000000]       .text : 0xc0100000 - 0xc03f3ad2   (3022 kB)
[    0.000000] Checking if this processor honours the WP bit even in supervisor mode...Ok.
[    0.000000] SLUB: Genslabs=13, HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
[    0.000000] Preemptable hierarchical RCU implementation.
[    0.000000] 	RCU-based detection of stalled CPUs is disabled.
[    0.000000] 	Verbose stalled-CPUs detection is disabled.
[    0.000000] NR_IRQS:2304 nr_irqs:512
[    0.000000] Extended CMOS year: 2000
[    0.000000] Console: colour dummy device 80x25
[    0.000000] console [tty0] enabled
[    0.000000] hpet clockevent registered
[    0.000000] Fast TSC calibration failed
[    0.000000] TSC: PIT calibration matches HPET. 1 loops
[    0.000000] Detected 1828.750 MHz processor.
[    0.002005] Calibrating delay loop (skipped), value calculated using timer frequency.. 3657.50 BogoMIPS (lpj=1828750)
[    0.002017] pid_max: default: 32768 minimum: 301
[    0.002040] Security Framework initialized
[    0.002048] SELinux:  Disabled at boot.
[    0.002058] Mount-cache hash table entries: 512
[    0.002203] Initializing cgroup subsys ns
[    0.002210] Initializing cgroup subsys cpuacct
[    0.002217] Initializing cgroup subsys devices
[    0.002222] Initializing cgroup subsys freezer
[    0.002227] Initializing cgroup subsys net_cls
[    0.002232] Initializing cgroup subsys blkio
[    0.002267] CPU: Physical Processor ID: 0
[    0.002271] CPU: Processor Core ID: 0
[    0.002277] mce: CPU supports 6 MCE banks
[    0.002287] CPU0: Thermal monitoring handled by SMI
[    0.002291] using mwait in idle threads.
[    0.002300] Performance Events: PEBS fmt0-, Core2 events, Intel PMU driver.
[    0.002309] PEBS disabled due to CPU errata.
[    0.002318] ... version:                2
[    0.002322] ... bit width:              40
[    0.002326] ... generic registers:      2
[    0.002330] ... value mask:             000000ffffffffff
[    0.002334] ... max period:             000000007fffffff
[    0.002339] ... fixed-purpose events:   3
[    0.002343] ... event mask:             0000000700000003
[    0.003937] ACPI: Core revision 20100428
[    0.015056] Enabling APIC mode:  Flat.  Using 1 I/O APICs
[    0.015448] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
[    0.025814] CPU0: Intel(R) Core(TM)2 CPU         T5600  @ 1.83GHz stepping 06
[    0.028020] Booting Node   0, Processors  #1 Ok.
[    0.002999] Initializing CPU#1
[    0.002999] CPU1: Thermal monitoring handled by SMI
[    0.100017] Brought up 2 CPUs
[    0.100027] Total of 2 processors activated (7314.84 BogoMIPS).
[    0.101038] devtmpfs: initialized
[    0.101074] PM: Adding info for No Bus:platform
[    0.101115] regulator: core version 0.5
[    0.101115] Time: 11:56:13  Date: 08/30/10
[    0.101115] NET: Registered protocol family 16
[    0.102029] PM: Adding info for No Bus:vtcon0
[    0.102041] ACPI: bus type pci registered
[    0.102043] PM: Adding info for No Bus:id
[    0.102060] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000)
[    0.102060] PCI: not using MMCONFIG
[    0.102239] PCI: PCI BIOS revision 2.10 entry at 0xfd604, last bus=7
[    0.102245] PCI: Using configuration type 1 for base access
[    0.104044] PM: Adding info for No Bus:default
[    0.104044] bio: create slab <bio-0> at 0
[    0.105827] ACPI: EC: Look up EC in DSDT
[    0.109328] ACPI: BIOS _OSI(Linux) query ignored
[    0.110672] ACPI: SSDT bf679236 001FB (v01  PmRef  Cpu0Ist 00003000 INTL 20050624)
[    0.111109] ACPI: Dynamic OEM Table Load:
[    0.111116] ACPI: SSDT (null) 001FB (v01  PmRef  Cpu0Ist 00003000 INTL 20050624)
[    0.111448] ACPI: SSDT bf678cef 004C2 (v01  PmRef  Cpu0Cst 00003001 INTL 20050624)
[    0.111857] ACPI: Dynamic OEM Table Load:
[    0.111863] ACPI: SSDT (null) 004C2 (v01  PmRef  Cpu0Cst 00003001 INTL 20050624)
[    0.112349] ACPI: SSDT bf679431 000BD (v01  PmRef  Cpu1Ist 00003000 INTL 20050624)
[    0.112771] ACPI: Dynamic OEM Table Load:
[    0.112778] ACPI: SSDT (null) 000BD (v01  PmRef  Cpu1Ist 00003000 INTL 20050624)
[    0.112953] ACPI: SSDT bf6791b1 00085 (v01  PmRef  Cpu1Cst 00003000 INTL 20050624)
[    0.113369] ACPI: Dynamic OEM Table Load:
[    0.113375] ACPI: SSDT (null) 00085 (v01  PmRef  Cpu1Cst 00003000 INTL 20050624)
[    0.115144] ACPI: Interpreter enabled
[    0.115152] ACPI: (supports S0 S3 S4 S5)
[    0.115180] ACPI: Using IOAPIC for interrupt routing
[    0.115230] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000)
[    0.116428] PCI: MMCONFIG at [mem 0xe0000000-0xefffffff] reserved in ACPI motherboard resources
[    0.116436] PCI: Using MMCONFIG for extended config space
[    0.116453] PM: Adding info for acpi:LNXSYSTM:00
[    0.116453] PM: Adding info for acpi:LNXCPU:00
[    0.116453] PM: Adding info for acpi:LNXCPU:01
[    0.116453] PM: Adding info for acpi:LNXSYBUS:00
[    0.117329] PM: Adding info for acpi:PNP0C32:00
[    0.117343] PM: Adding info for acpi:PNP0C32:01
[    0.118198] PM: Adding info for acpi:TOS1900:00
[    0.118212] PM: Adding info for acpi:TOS1901:00
[    0.118212] PM: Adding info for acpi:PNP0C0D:00
[    0.118212] PM: Adding info for acpi:PNP0C0A:00
[    0.118212] PM: Adding info for acpi:ACPI0003:00
[    0.118212] PM: Adding info for acpi:PNP0C0C:00
[    0.119008] PM: Adding info for acpi:PNP0A08:00
[    0.119072] PM: Adding info for acpi:PNP0C02:00
[    0.119085] PM: Adding info for acpi:device:00
[    0.119120] PM: Adding info for acpi:LNXVIDEO:00
[    0.119134] PM: Adding info for acpi:device:01
[    0.119134] PM: Adding info for acpi:device:02
[    0.119134] PM: Adding info for acpi:device:03
[    0.119134] PM: Adding info for acpi:device:04
[    0.119134] PM: Adding info for acpi:LNXVIDEO:01
[    0.119134] PM: Adding info for acpi:device:05
[    0.120021] PM: Adding info for acpi:device:06
[    0.120086] PM: Adding info for acpi:device:07
[    0.120103] PM: Adding info for acpi:device:08
[    0.120103] PM: Adding info for acpi:device:09
[    0.120103] PM: Adding info for acpi:device:0a
[    0.120103] PM: Adding info for acpi:device:0b
[    0.120103] PM: Adding info for acpi:device:0c
[    0.120103] PM: Adding info for acpi:device:0d
[    0.120103] PM: Adding info for acpi:device:0e
[    0.120103] PM: Adding info for acpi:device:0f
[    0.120103] PM: Adding info for acpi:device:10
[    0.120103] PM: Adding info for acpi:device:11
[    0.121076] PM: Adding info for acpi:device:12
[    0.121548] PM: Adding info for acpi:device:13
[    0.121562] PM: Adding info for acpi:device:14
[    0.121562] PM: Adding info for acpi:device:15
[    0.121562] PM: Adding info for acpi:device:16
[    0.122063] PM: Adding info for acpi:device:17
[    0.122077] PM: Adding info for acpi:device:18
[    0.122077] PM: Adding info for acpi:device:19
[    0.122077] PM: Adding info for acpi:device:1a
[    0.122077] PM: Adding info for acpi:device:1b
[    0.122077] PM: Adding info for acpi:device:1c
[    0.122077] PM: Adding info for acpi:device:1d
[    0.122077] PM: Adding info for acpi:device:1e
[    0.122077] PM: Adding info for acpi:device:1f
[    0.122086] PM: Adding info for acpi:device:20
[    0.122086] PM: Adding info for acpi:device:21
[    0.122086] PM: Adding info for acpi:device:22
[    0.123080] PM: Adding info for acpi:device:23
[    0.123098] PM: Adding info for acpi:device:24
[    0.123098] PM: Adding info for acpi:device:25
[    0.123098] PM: Adding info for acpi:device:26
[    0.123098] PM: Adding info for acpi:device:27
[    0.123098] PM: Adding info for acpi:device:28
[    0.123098] PM: Adding info for acpi:device:29
[    0.143223] PM: Adding info for acpi:device:2a
[    0.143237] PM: Adding info for acpi:device:2b
[    0.143237] PM: Adding info for acpi:PNP0C0F:00
[    0.143237] PM: Adding info for acpi:PNP0C0F:01
[    0.143237] PM: Adding info for acpi:PNP0C0F:02
[    0.144015] PM: Adding info for acpi:PNP0C0F:03
[    0.144149] PM: Adding info for acpi:PNP0C0F:04
[    0.144163] PM: Adding info for acpi:PNP0C0F:05
[    0.144164] PM: Adding info for acpi:PNP0C0F:06
[    0.144164] PM: Adding info for acpi:PNP0C0F:07
[    0.144166] PM: Adding info for acpi:PNP0C09:00
[    0.144166] PM: Adding info for acpi:PNP0200:00
[    0.145009] PM: Adding info for acpi:INT0800:00
[    0.145173] PM: Adding info for acpi:PNP0103:00
[    0.145188] PM: Adding info for acpi:PNP0000:00
[    0.145188] PM: Adding info for acpi:PNP0C04:00
[    0.145188] PM: Adding info for acpi:PNP0C02:01
[    0.145188] PM: Adding info for acpi:PNP0B00:00
[    0.145188] PM: Adding info for acpi:PNP0100:00
[    0.145188] PM: Adding info for acpi:PNP0A05:00
[    0.145188] PM: Adding info for acpi:PNP0A05:01
[    0.146117] PM: Adding info for acpi:PNP0303:00
[    0.146144] PM: Adding info for acpi:SYN1902:00
[    0.146159] PM: Adding info for acpi:device:2c
[    0.146159] PM: Adding info for acpi:device:2d
[    0.146159] PM: Adding info for acpi:device:2e
[    0.146159] PM: Adding info for acpi:device:2f
[    0.146159] PM: Adding info for acpi:device:30
[    0.146159] PM: Adding info for acpi:device:31
[    0.146159] PM: Adding info for acpi:device:32
[    0.146159] PM: Adding info for acpi:device:33
[    0.147063] PM: Adding info for acpi:device:34
[    0.147076] PM: Adding info for acpi:device:35
[    0.147077] PM: Adding info for acpi:device:36
[    0.147077] PM: Adding info for acpi:device:37
[    0.207200] PM: Adding info for acpi:TOS6205:00
[    0.207213] PM: Adding info for acpi:LNXTHERM:00
[    0.207213] PM: Adding info for acpi:LNXPOWER:00
[    0.207213] PM: Adding info for acpi:PNP0C0B:00
[    0.207213] PM: Adding info for acpi:LNXTHERM:01
[    0.207213] PM: Adding info for acpi:LNXTHERM:02
[    0.207213] PM: Adding info for acpi:LNXPWRBN:00
[    0.207213] ACPI: EC: GPE = 0x16, I/O: command/status = 0x66, data = 0x62
[    0.207213] ACPI: Power Resource [FN00] (off)
[    0.208311] PM: Adding info for platform:dock.0
[    0.248226] ACPI: ACPI Dock Station Driver: 1 docks/bays found
[    0.248235] PCI: Ignoring host bridge windows from ACPI; if necessary, use "pci=use_crs" and report a bug
[    0.248836] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
[    0.248857] PM: Adding info for No Bus:pci0000:00
[    0.248870] PM: Adding info for No Bus:0000:00
[    0.250053] pci_root PNP0A08:00: host bridge window [io  0x0000-0x0cf7] (ignored)
[    0.250057] pci_root PNP0A08:00: host bridge window [io  0x0d00-0xffff] (ignored)
[    0.250060] pci_root PNP0A08:00: host bridge window [mem 0x000a0000-0x000bffff] (ignored)
[    0.250064] pci_root PNP0A08:00: host bridge window [mem 0x000d4000-0x000d7fff] (ignored)
[    0.250067] pci_root PNP0A08:00: host bridge window [mem 0x000d8000-0x000dbfff] (ignored)
[    0.250070] pci_root PNP0A08:00: host bridge window [mem 0xc0000000-0xfebfffff] (ignored)
[    0.250115] pci 0000:00:00.0: __pm_runtime_resume()!
[    0.250117] pci 0000:00:00.0: __pm_runtime_resume() returns -11!
[    0.250144] pci 0000:00:02.0: reg 10: [mem 0xf0a00000-0xf0a7ffff]
[    0.250150] pci 0000:00:02.0: reg 14: [io  0x1800-0x1807]
[    0.250155] pci 0000:00:02.0: reg 18: [mem 0xd0000000-0xdfffffff pref]
[    0.250161] pci 0000:00:02.0: reg 1c: [mem 0xf0b00000-0xf0b3ffff]
[    0.250181] pci 0000:00:02.0: __pm_runtime_resume()!
[    0.250183] pci 0000:00:02.0: __pm_runtime_resume() returns -11!
[    0.250207] pci 0000:00:02.1: reg 10: [mem 0xf0a80000-0xf0afffff]
[    0.250232] pci 0000:00:02.1: __pm_runtime_resume()!
[    0.250235] pci 0000:00:02.1: __pm_runtime_resume() returns -11!
[    0.250326] pci 0000:00:1b.0: reg 10: [mem 0xf0b40000-0xf0b43fff 64bit]
[    0.250389] pci 0000:00:1b.0: __pm_runtime_resume()!
[    0.250391] pci 0000:00:1b.0: __pm_runtime_resume() returns -11!
[    0.250400] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold
[    0.250406] pci 0000:00:1b.0: PME# disabled
[    0.250499] pci 0000:00:1c.0: __pm_runtime_resume()!
[    0.250501] pci 0000:00:1c.0: __pm_runtime_resume() returns -11!
[    0.250519] pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold
[    0.250524] pci 0000:00:1c.0: PME# disabled
[    0.250620] pci 0000:00:1c.1: __pm_runtime_resume()!
[    0.250622] pci 0000:00:1c.1: __pm_runtime_resume() returns -11!
[    0.250640] pci 0000:00:1c.1: PME# supported from D0 D3hot D3cold
[    0.250645] pci 0000:00:1c.1: PME# disabled
[    0.250740] pci 0000:00:1c.2: __pm_runtime_resume()!
[    0.250743] pci 0000:00:1c.2: __pm_runtime_resume() returns -11!
[    0.250761] pci 0000:00:1c.2: PME# supported from D0 D3hot D3cold
[    0.250766] pci 0000:00:1c.2: PME# disabled
[    0.250838] pci 0000:00:1d.0: reg 20: [io  0x1820-0x183f]
[    0.250860] pci 0000:00:1d.0: __pm_runtime_resume()!
[    0.250862] pci 0000:00:1d.0: __pm_runtime_resume() returns -11!
[    0.250912] pci 0000:00:1d.1: reg 20: [io  0x1840-0x185f]
[    0.250933] pci 0000:00:1d.1: __pm_runtime_resume()!
[    0.250935] pci 0000:00:1d.1: __pm_runtime_resume() returns -11!
[    0.250985] pci 0000:00:1d.2: reg 20: [io  0x1860-0x187f]
[    0.251011] pci 0000:00:1d.2: __pm_runtime_resume()!
[    0.251013] pci 0000:00:1d.2: __pm_runtime_resume() returns -11!
[    0.251063] pci 0000:00:1d.3: reg 20: [io  0x1880-0x189f]
[    0.251084] pci 0000:00:1d.3: __pm_runtime_resume()!
[    0.251086] pci 0000:00:1d.3: __pm_runtime_resume() returns -11!
[    0.251132] pci 0000:00:1d.7: reg 10: [mem 0xf0d44000-0xf0d443ff]
[    0.251193] pci 0000:00:1d.7: __pm_runtime_resume()!
[    0.251195] pci 0000:00:1d.7: __pm_runtime_resume() returns -11!
[    0.251204] pci 0000:00:1d.7: PME# supported from D0 D3hot D3cold
[    0.251210] pci 0000:00:1d.7: PME# disabled
[    0.251281] pci 0000:00:1e.0: __pm_runtime_resume()!
[    0.251283] pci 0000:00:1e.0: __pm_runtime_resume() returns -11!
[    0.251388] pci 0000:00:1f.0: quirk: [io  0x1000-0x107f] claimed by ICH6 ACPI/GPIO/TCO
[    0.251399] pci 0000:00:1f.0: quirk: [io  0x1180-0x11bf] claimed by ICH6 GPIO
[    0.251408] pci 0000:00:1f.0: ICH7 LPC Generic IO decode 1 PIO at 0400 (mask 0003)
[    0.251417] pci 0000:00:1f.0: ICH7 LPC Generic IO decode 2 PIO at 1640 (mask 007f)
[    0.251444] pci 0000:00:1f.0: __pm_runtime_resume()!
[    0.251447] pci 0000:00:1f.0: __pm_runtime_resume() returns -11!
[    0.251498] pci 0000:00:1f.2: reg 10: [io  0x0000-0x0007]
[    0.251507] pci 0000:00:1f.2: reg 14: [io  0x0000-0x0003]
[    0.251516] pci 0000:00:1f.2: reg 18: [io  0x0000-0x0007]
[    0.251524] pci 0000:00:1f.2: reg 1c: [io  0x0000-0x0003]
[    0.251532] pci 0000:00:1f.2: reg 20: [io  0x18b0-0x18bf]
[    0.251565] pci 0000:00:1f.2: __pm_runtime_resume()!
[    0.251567] pci 0000:00:1f.2: __pm_runtime_resume() returns -11!
[    0.251576] pci 0000:00:1f.2: PME# supported from D3hot
[    0.251581] pci 0000:00:1f.2: PME# disabled
[    0.251645] pci 0000:00:1f.3: reg 20: [io  0x18c0-0x18df]
[    0.251672] pci 0000:00:1f.3: __pm_runtime_resume()!
[    0.251675] pci 0000:00:1f.3: __pm_runtime_resume() returns -11!
[    0.251752] pci 0000:00:1c.0: PCI bridge to [bus 02-02]
[    0.251761] pci 0000:00:1c.0:   bridge window [io  0xf000-0x0000] (disabled)
[    0.251767] pci 0000:00:1c.0:   bridge window [mem 0xfff00000-0x000fffff] (disabled)
[    0.251776] pci 0000:00:1c.0:   bridge window [mem 0xfff00000-0x000fffff pref] (disabled)
[    0.251842] pci 0000:00:1c.1: PCI bridge to [bus 03-04]
[    0.251850] pci 0000:00:1c.1:   bridge window [io  0x2000-0x2fff]
[    0.251856] pci 0000:00:1c.1:   bridge window [mem 0xf0700000-0xf07fffff]
[    0.251865] pci 0000:00:1c.1:   bridge window [mem 0xf0200000-0xf03fffff 64bit pref]
[    0.252075] pci 0000:05:00.0: reg 10: [mem 0xf0800000-0xf0800fff]
[    0.252310] pci 0000:05:00.0: __pm_runtime_resume()!
[    0.252313] pci 0000:05:00.0: __pm_runtime_resume() returns -11!
[    0.252337] pci 0000:05:00.0: PME# supported from D0 D3hot D3cold
[    0.252350] pci 0000:05:00.0: PME# disabled
[    0.252422] pci 0000:05:00.0: disabling ASPM on pre-1.1 PCIe device.  You can enable it with 'pcie_aspm=force'
[    0.252458] pci 0000:00:1c.2: PCI bridge to [bus 05-06]
[    0.252466] pci 0000:00:1c.2:   bridge window [io  0x3000-0x3fff]
[    0.252471] pci 0000:00:1c.2:   bridge window [mem 0xf0800000-0xf08fffff]
[    0.252481] pci 0000:00:1c.2:   bridge window [mem 0xf0400000-0xf05fffff 64bit pref]
[    0.252560] pci 0000:07:06.0: reg 10: [mem 0x00000000-0x00000fff]
[    0.252583] pci 0000:07:06.0: __pm_runtime_resume()!
[    0.252585] pci 0000:07:06.0: __pm_runtime_resume() returns -11!
[    0.252595] pci 0000:07:06.0: supports D1 D2
[    0.252598] pci 0000:07:06.0: PME# supported from D0 D1 D2 D3hot D3cold
[    0.252603] pci 0000:07:06.0: PME# disabled
[    0.252645] pci 0000:07:06.1: reg 10: [mem 0xf0906000-0xf09067ff]
[    0.252655] pci 0000:07:06.1: reg 14: [mem 0xf0900000-0xf0903fff]
[    0.252709] pci 0000:07:06.1: __pm_runtime_resume()!
[    0.252711] pci 0000:07:06.1: __pm_runtime_resume() returns -11!
[    0.252720] pci 0000:07:06.1: supports D1 D2
[    0.252723] pci 0000:07:06.1: PME# supported from D0 D1 D2 D3hot
[    0.252729] pci 0000:07:06.1: PME# disabled
[    0.252768] pci 0000:07:06.2: reg 10: [mem 0xf0904000-0xf0904fff]
[    0.252825] pci 0000:07:06.2: __pm_runtime_resume()!
[    0.252827] pci 0000:07:06.2: __pm_runtime_resume() returns -11!
[    0.252836] pci 0000:07:06.2: supports D1 D2
[    0.252839] pci 0000:07:06.2: PME# supported from D0 D1 D2 D3hot
[    0.252844] pci 0000:07:06.2: PME# disabled
[    0.252883] pci 0000:07:06.3: reg 10: [mem 0xf0906800-0xf09068ff]
[    0.252941] pci 0000:07:06.3: __pm_runtime_resume()!
[    0.252943] pci 0000:07:06.3: __pm_runtime_resume() returns -11!
[    0.252952] pci 0000:07:06.3: supports D1 D2
[    0.252954] pci 0000:07:06.3: PME# supported from D0 D1 D2 D3hot
[    0.252959] pci 0000:07:06.3: PME# disabled
[    0.253013] pci 0000:07:08.0: reg 10: [mem 0xf0905000-0xf0905fff]
[    0.253022] pci 0000:07:08.0: reg 14: [io  0x4000-0x403f]
[    0.253071] pci 0000:07:08.0: __pm_runtime_resume()!
[    0.253073] pci 0000:07:08.0: __pm_runtime_resume() returns -11!
[    0.253081] pci 0000:07:08.0: supports D1 D2
[    0.253084] pci 0000:07:08.0: PME# supported from D0 D1 D2 D3hot D3cold
[    0.253089] pci 0000:07:08.0: PME# disabled
[    0.253141] pci 0000:00:1e.0: PCI bridge to [bus 07-07] (subtractive decode)
[    0.253151] pci 0000:00:1e.0:   bridge window [io  0x4000-0x4fff]
[    0.253157] pci 0000:00:1e.0:   bridge window [mem 0xf0900000-0xf09fffff]
[    0.253166] pci 0000:00:1e.0:   bridge window [mem 0xfff00000-0x000fffff pref] (disabled)
[    0.253169] pci 0000:00:1e.0:   bridge window [io  0x0000-0xffff] (subtractive decode)
[    0.253172] pci 0000:00:1e.0:   bridge window [mem 0x00000000-0xffffffff] (subtractive decode)
[    0.253228] pci_bus 0000:08: [bus 08-0b] partially hidden behind transparent bridge 0000:07 [bus 07-07]
[    0.253265] pci_bus 0000:00: on NUMA node 0
[    0.253270] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
[    0.253526] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP01._PRT]
[    0.253623] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP02._PRT]
[    0.253717] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP03._PRT]
[    0.253837] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PCIB._PRT]
[    0.254228] PM: Adding info for pci:0000:00:00.0
[    0.254295] PM: Adding info for pci:0000:00:02.0
[    0.254315] PM: Adding info for pci:0000:00:02.1
[    0.255185] PM: Adding info for pci:0000:00:1b.0
[    0.255298] PM: Adding info for pci:0000:00:1c.0
[    0.255316] PM: Adding info for pci:0000:00:1c.1
[    0.256144] PM: Adding info for pci:0000:00:1c.2
[    0.256293] PM: Adding info for pci:0000:00:1d.0
[    0.256309] PM: Adding info for pci:0000:00:1d.1
[    0.257098] PM: Adding info for pci:0000:00:1d.2
[    0.257293] PM: Adding info for pci:0000:00:1d.3
[    0.257309] PM: Adding info for pci:0000:00:1d.7
[    0.258051] PM: Adding info for pci:0000:00:1e.0
[    0.258293] PM: Adding info for pci:0000:00:1f.0
[    0.258309] PM: Adding info for pci:0000:00:1f.2
[    0.259015] PM: Adding info for pci:0000:00:1f.3
[    0.259031] PM: Adding info for No Bus:0000:02
[    0.259041] PM: Adding info for No Bus:0000:03
[    0.259056] PM: Adding info for pci:0000:05:00.0
[    0.259072] PM: Adding info for No Bus:0000:05
[    0.279209] PM: Adding info for pci:0000:07:06.0
[    0.299209] PM: Adding info for pci:0000:07:06.1
[    0.319207] PM: Adding info for pci:0000:07:06.2
[    0.339207] PM: Adding info for pci:0000:07:06.3
[    0.359211] PM: Adding info for pci:0000:07:08.0
[    0.359227] PM: Adding info for No Bus:0000:08
[    0.359227] PM: Adding info for No Bus:0000:07
[    0.359227] ACPI: PCI Interrupt Link [LNKA] (IRQs 1 3 4 5 6 7 *10 12 14 15)
[    0.359237] ACPI: PCI Interrupt Link [LNKB] (IRQs 1 3 4 5 6 7 *11 12 14 15)
[    0.359359] ACPI: PCI Interrupt Link [LNKC] (IRQs 1 3 4 5 6 7 10 12 14 15) *11
[    0.359483] ACPI: PCI Interrupt Link [LNKD] (IRQs 1 3 4 5 6 7 11 12 14 15) *10
[    0.359606] ACPI: PCI Interrupt Link [LNKE] (IRQs 1 3 4 5 6 7 *10 12 14 15)
[    0.360116] ACPI: PCI Interrupt Link [LNKF] (IRQs 1 3 4 5 6 7 11 12 14 15) *0, disabled.
[    0.360240] ACPI: PCI Interrupt Link [LNKG] (IRQs 1 3 4 5 6 7 *10 12 14 15)
[    0.360362] ACPI: PCI Interrupt Link [LNKH] (IRQs 1 3 4 5 6 7 *11 12 14 15)
[    0.360429] PM: Adding info for No Bus:vga_arbiter
[    0.360429] vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none
[    0.360429] vgaarb: loaded
[    0.360429] PCI: Using ACPI for IRQ routing
[    0.361100] PCI: pci_cache_line_size set to 64 bytes
[    0.361217] reserve RAM buffer: 000000000009f800 - 000000000009ffff 
[    0.361220] reserve RAM buffer: 00000000bf670000 - 00000000bfffffff 
[    0.361243] PM: Adding info for No Bus:lo
[    0.361243] NetLabel: Initializing
[    0.361243] NetLabel:  domain hash size = 128
[    0.361243] NetLabel:  protocols = UNLABELED CIPSOv4
[    0.361243] NetLabel:  unlabeled traffic allowed by default
[    0.361243] HPET: 3 timers in total, 0 timers will be used for per-cpu timer
[    0.361243] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0
[    0.361243] hpet0: 3 comparators, 64-bit 14.318180 MHz counter
[    0.364020] Switching to clocksource tsc
[    0.364033] pnp: PnP ACPI init
[    0.364048] PM: Adding info for No Bus:pnp0
[    0.364051] ACPI: bus type pnp registered
[    0.365392] PM: Adding info for pnp:00:00
[    0.365554] PM: Adding info for pnp:00:01
[    0.385495] PM: Adding info for pnp:00:02
[    0.385588] PM: Adding info for pnp:00:03
[    0.385836] PM: Adding info for pnp:00:04
[    0.385941] PM: Adding info for pnp:00:05
[    0.386075] PM: Adding info for pnp:00:06
[    0.386172] PM: Adding info for pnp:00:07
[    0.386464] PM: Adding info for pnp:00:08
[    0.386604] PM: Adding info for pnp:00:09
[    0.426166] pnp: PnP ACPI: found 10 devices
[    0.426172] ACPI: ACPI bus type pnp unregistered
[    0.426179] PnPBIOS: Disabled by ACPI PNP
[    0.426192] system 00:01: [mem 0xe0000000-0xefffffff] has been reserved
[    0.426199] system 00:01: [mem 0xfed14000-0xfed17fff] has been reserved
[    0.426206] system 00:01: [mem 0xfed18000-0xfed18fff] has been reserved
[    0.426213] system 00:01: [mem 0xfed19000-0xfed19fff] has been reserved
[    0.426220] system 00:01: [mem 0xfed1c000-0xfed1ffff] has been reserved
[    0.426227] system 00:01: [mem 0xfed20000-0xfed3ffff] has been reserved
[    0.426233] system 00:01: [mem 0xfed40000-0xfed44fff] has been reserved
[    0.426240] system 00:01: [mem 0xfed45000-0xfed8ffff] has been reserved
[    0.426251] system 00:04: [mem 0xfed00000-0xfed003ff] has been reserved
[    0.426261] system 00:06: [io  0x03e8-0x03ef] has been reserved
[    0.426268] system 00:06: [io  0x0400-0x0401] has been reserved
[    0.426274] system 00:06: [io  0x0680-0x069f] has been reserved
[    0.426281] system 00:06: [io  0x0800-0x080f] has been reserved
[    0.426287] system 00:06: [io  0x1000-0x107f] has been reserved
[    0.426293] system 00:06: [io  0x1180-0x11bf] has been reserved
[    0.426300] system 00:06: [io  0x1640-0x164f] has been reserved
[    0.426306] system 00:06: [io  0xfe00-0xfe01] has been reserved
[    0.426422] PM: Adding info for No Bus:mem
[    0.426475] PM: Adding info for No Bus:null
[    0.426528] PM: Adding info for No Bus:port
[    0.426580] PM: Adding info for No Bus:zero
[    0.426639] PM: Adding info for No Bus:full
[    0.426693] PM: Adding info for No Bus:random
[    0.426747] PM: Adding info for No Bus:urandom
[    0.426800] PM: Adding info for No Bus:kmsg
[    0.461493] pci 0000:00:1e.0: BAR 15: assigned [mem 0xc0000000-0xc3ffffff pref]
[    0.461502] pci 0000:00:1c.0: BAR 14: assigned [mem 0xc4000000-0xc41fffff]
[    0.461509] pci 0000:00:1c.0: BAR 15: assigned [mem 0xc4200000-0xc43fffff 64bit pref]
[    0.461518] pci 0000:00:1c.0: BAR 13: assigned [io  0x5000-0x5fff]
[    0.461524] pci 0000:00:1c.0: PCI bridge to [bus 02-02]
[    0.461531] pci 0000:00:1c.0:   bridge window [io  0x5000-0x5fff]
[    0.461542] pci 0000:00:1c.0:   bridge window [mem 0xc4000000-0xc41fffff]
[    0.461551] pci 0000:00:1c.0:   bridge window [mem 0xc4200000-0xc43fffff 64bit pref]
[    0.461565] pci 0000:00:1c.1: PCI bridge to [bus 03-04]
[    0.461572] pci 0000:00:1c.1:   bridge window [io  0x2000-0x2fff]
[    0.461582] pci 0000:00:1c.1:   bridge window [mem 0xf0700000-0xf07fffff]
[    0.461592] pci 0000:00:1c.1:   bridge window [mem 0xf0200000-0xf03fffff 64bit pref]
[    0.461605] pci 0000:00:1c.2: PCI bridge to [bus 05-06]
[    0.461612] pci 0000:00:1c.2:   bridge window [io  0x3000-0x3fff]
[    0.461623] pci 0000:00:1c.2:   bridge window [mem 0xf0800000-0xf08fffff]
[    0.461632] pci 0000:00:1c.2:   bridge window [mem 0xf0400000-0xf05fffff 64bit pref]
[    0.461647] pci 0000:07:06.0: BAR 15: assigned [mem 0xc0000000-0xc3ffffff pref]
[    0.461655] pci 0000:07:06.0: BAR 16: assigned [mem 0xc8000000-0xcbffffff]
[    0.461662] pci 0000:07:06.0: BAR 0: assigned [mem 0xf0907000-0xf0907fff]
[    0.461673] pci 0000:07:06.0: BAR 0: set to [mem 0xf0907000-0xf0907fff] (PCI address [0xf0907000-0xf0907fff]
[    0.461682] pci 0000:07:06.0: BAR 13: assigned [io  0x4400-0x44ff]
[    0.461688] pci 0000:07:06.0: BAR 14: assigned [io  0x4800-0x48ff]
[    0.461694] pci 0000:07:06.0: CardBus bridge to [bus 08-0b]
[    0.461700] pci 0000:07:06.0:   bridge window [io  0x4400-0x44ff]
[    0.461709] pci 0000:07:06.0:   bridge window [io  0x4800-0x48ff]
[    0.461718] pci 0000:07:06.0:   bridge window [mem 0xc0000000-0xc3ffffff pref]
[    0.461728] pci 0000:07:06.0:   bridge window [mem 0xc8000000-0xcbffffff]
[    0.461737] pci 0000:00:1e.0: PCI bridge to [bus 07-07]
[    0.461744] pci 0000:00:1e.0:   bridge window [io  0x4000-0x4fff]
[    0.461754] pci 0000:00:1e.0:   bridge window [mem 0xf0900000-0xf09fffff]
[    0.461763] pci 0000:00:1e.0:   bridge window [mem 0xc0000000-0xc3ffffff pref]
[    0.461786]   alloc irq_desc for 17 on node -1
[    0.461788]   alloc kstat_irqs on node -1
[    0.461794] pci 0000:00:1c.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17
[    0.461804] pci 0000:00:1c.0: setting latency timer to 64
[    0.461816]   alloc irq_desc for 16 on node -1
[    0.461817]   alloc kstat_irqs on node -1
[    0.461822] pci 0000:00:1c.1: PCI INT B -> GSI 16 (level, low) -> IRQ 16
[    0.461831] pci 0000:00:1c.1: setting latency timer to 64
[    0.461842]   alloc irq_desc for 18 on node -1
[    0.461844]   alloc kstat_irqs on node -1
[    0.461848] pci 0000:00:1c.2: PCI INT C -> GSI 18 (level, low) -> IRQ 18
[    0.461857] pci 0000:00:1c.2: setting latency timer to 64
[    0.461866] pci 0000:00:1e.0: setting latency timer to 64
[    0.461877] pci 0000:07:06.0: enabling device (0000 -> 0003)
[    0.461886] pci 0000:07:06.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18
[    0.461898] pci_bus 0000:00: resource 0 [io  0x0000-0xffff]
[    0.461901] pci_bus 0000:00: resource 1 [mem 0x00000000-0xffffffff]
[    0.461904] pci_bus 0000:02: resource 0 [io  0x5000-0x5fff]
[    0.461907] pci_bus 0000:02: resource 1 [mem 0xc4000000-0xc41fffff]
[    0.461910] pci_bus 0000:02: resource 2 [mem 0xc4200000-0xc43fffff 64bit pref]
[    0.461913] pci_bus 0000:03: resource 0 [io  0x2000-0x2fff]
[    0.461915] pci_bus 0000:03: resource 1 [mem 0xf0700000-0xf07fffff]
[    0.461918] pci_bus 0000:03: resource 2 [mem 0xf0200000-0xf03fffff 64bit pref]
[    0.461921] pci_bus 0000:05: resource 0 [io  0x3000-0x3fff]
[    0.461924] pci_bus 0000:05: resource 1 [mem 0xf0800000-0xf08fffff]
[    0.461927] pci_bus 0000:05: resource 2 [mem 0xf0400000-0xf05fffff 64bit pref]
[    0.461930] pci_bus 0000:07: resource 0 [io  0x4000-0x4fff]
[    0.461932] pci_bus 0000:07: resource 1 [mem 0xf0900000-0xf09fffff]
[    0.461935] pci_bus 0000:07: resource 2 [mem 0xc0000000-0xc3ffffff pref]
[    0.461938] pci_bus 0000:07: resource 4 [io  0x0000-0xffff]
[    0.461940] pci_bus 0000:07: resource 5 [mem 0x00000000-0xffffffff]
[    0.461943] pci_bus 0000:08: resource 0 [io  0x4400-0x44ff]
[    0.461950] pci_bus 0000:08: resource 1 [io  0x4800-0x48ff]
[    0.461953] pci_bus 0000:08: resource 2 [mem 0xc0000000-0xc3ffffff pref]
[    0.461956] pci_bus 0000:08: resource 3 [mem 0xc8000000-0xcbffffff]
[    0.461983] NET: Registered protocol family 2
[    0.462037] IP route cache hash table entries: 32768 (order: 5, 131072 bytes)
[    0.462261] TCP established hash table entries: 131072 (order: 8, 1048576 bytes)
[    0.462707] TCP bind hash table entries: 65536 (order: 7, 524288 bytes)
[    0.462940] TCP: Hash tables configured (established 131072 bind 65536)
[    0.462957] TCP reno registered
[    0.462963] UDP hash table entries: 512 (order: 2, 16384 bytes)
[    0.462976] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
[    0.463057] NET: Registered protocol family 1
[    0.463077] pci 0000:00:02.0: Boot video device
[    0.463225] PCI: CLS mismatch (64 != 16), using 64 bytes
[    0.463242] pci 0000:07:08.0: Firmware left e100 interrupts enabled; disabling
[    0.463307] Unpacking initramfs...
[    0.593831] Freeing initrd memory: 4804k freed
[    0.596627] Simple Boot Flag at 0x36 set to 0x1
[    0.597281] PM: Adding info for No Bus:mcelog
[    0.597417] PM: Adding info for platform:pcspkr
[    0.597672] PM: Adding info for No Bus:snapshot
[    0.597746] audit: initializing netlink socket (disabled)
[    0.597764] type=2000 audit(1283169373.595:1): initialized
[    0.597973] highmem bounce pool size: 64 pages
[    0.597982] HugeTLB registered 4 MB page size, pre-allocated 0 pages
[    0.601130] VFS: Disk quotas dquot_6.5.2
[    0.601238] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[    0.601385] msgmni has been set to 1713
[    0.601636] alg: No test for stdrng (krng)
[    0.601759] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 254)
[    0.601770] io scheduler noop registered
[    0.601775] io scheduler deadline registered
[    0.601788] io scheduler cfq registered (default)
[    0.601927] pcieport 0000:00:1c.0: setting latency timer to 64
[    0.602020]   alloc irq_desc for 40 on node -1
[    0.602023]   alloc kstat_irqs on node -1
[    0.602036] pcieport 0000:00:1c.0: irq 40 for MSI/MSI-X
[    0.602055] PM: Adding info for pci_express:0000:00:1c.0:pcie01
[    0.602124] PM: Adding info for pci_express:0000:00:1c.0:pcie04
[    0.602178] PM: Adding info for pci_express:0000:00:1c.0:pcie08
[    0.602280] pcieport 0000:00:1c.1: setting latency timer to 64
[    0.602330]   alloc irq_desc for 41 on node -1
[    0.602332]   alloc kstat_irqs on node -1
[    0.602342] pcieport 0000:00:1c.1: irq 41 for MSI/MSI-X
[    0.602360] PM: Adding info for pci_express:0000:00:1c.1:pcie01
[    0.602409] PM: Adding info for pci_express:0000:00:1c.1:pcie04
[    0.602458] PM: Adding info for pci_express:0000:00:1c.1:pcie08
[    0.602559] pcieport 0000:00:1c.2: setting latency timer to 64
[    0.602609]   alloc irq_desc for 42 on node -1
[    0.602611]   alloc kstat_irqs on node -1
[    0.602620] pcieport 0000:00:1c.2: irq 42 for MSI/MSI-X
[    0.602638] PM: Adding info for pci_express:0000:00:1c.2:pcie01
[    0.602689] PM: Adding info for pci_express:0000:00:1c.2:pcie04
[    0.602741] PM: Adding info for pci_express:0000:00:1c.2:pcie08
[    0.602975] PM: Adding info for No Bus:fbcon
[    0.603028] PM: Adding info for platform:vesafb.0
[    0.603148] PM: Removing info for platform:vesafb.0
[    0.603262] PM: Adding info for platform:efifb.0
[    0.603302] efifb: probing for efifb
[    0.603851] efifb: framebuffer at 0xd0000000, mapped to 0xf8080000, using 4032k, total 4032k
[    0.603859] efifb: mode is 1280x800x32, linelength=5120, pages=1
[    0.603864] efifb: scrolling: redraw
[    0.603870] efifb: Truecolor: size=8:8:8:8, shift=24:16:8:0
[    0.603898] PM: Adding info for No Bus:fb0
[    0.604004] PM: Adding info for No Bus:vtcon1
[    0.641422] Console: switching to colour frame buffer device 160x50
[    0.675764] fb0: EFI VGA frame buffer device
[    0.676092] PM: Adding info for No Bus:pnp1
[    0.676094] isapnp: Scanning for PnP cards...
[    1.032877] isapnp: No Plug & Play device found
[    1.033162] PM: Adding info for No Bus:tty
[    1.033216] PM: Adding info for No Bus:console
[    1.033277] PM: Adding info for No Bus:tty0
[    1.033372] PM: Adding info for No Bus:vcs
[    1.033426] PM: Adding info for No Bus:vcsa
[    1.033480] PM: Adding info for No Bus:vcs1
[    1.033538] PM: Adding info for No Bus:vcsa1
[    1.033593] PM: Adding info for No Bus:tty1
[    1.033646] PM: Adding info for No Bus:tty2
[    1.033698] PM: Adding info for No Bus:tty3
[    1.033752] PM: Adding info for No Bus:tty4
[    1.033808] PM: Adding info for No Bus:tty5
[    1.033862] PM: Adding info for No Bus:tty6
[    1.033914] PM: Adding info for No Bus:tty7
[    1.033967] PM: Adding info for No Bus:tty8
[    1.034021] PM: Adding info for No Bus:tty9
[    1.034079] PM: Adding info for No Bus:tty10
[    1.034133] PM: Adding info for No Bus:tty11
[    1.034186] PM: Adding info for No Bus:tty12
[    1.034239] PM: Adding info for No Bus:tty13
[    1.034293] PM: Adding info for No Bus:tty14
[    1.034346] PM: Adding info for No Bus:tty15
[    1.034405] PM: Adding info for No Bus:tty16
[    1.034462] PM: Adding info for No Bus:tty17
[    1.034515] PM: Adding info for No Bus:tty18
[    1.034569] PM: Adding info for No Bus:tty19
[    1.034622] PM: Adding info for No Bus:tty20
[    1.034675] PM: Adding info for No Bus:tty21
[    1.034733] PM: Adding info for No Bus:tty22
[    1.034786] PM: Adding info for No Bus:tty23
[    1.034840] PM: Adding info for No Bus:tty24
[    1.034900] PM: Adding info for No Bus:tty25
[    1.034954] PM: Adding info for No Bus:tty26
[    1.035009] PM: Adding info for No Bus:tty27
[    1.035070] PM: Adding info for No Bus:tty28
[    1.035126] PM: Adding info for No Bus:tty29
[    1.035181] PM: Adding info for No Bus:tty30
[    1.035236] PM: Adding info for No Bus:tty31
[    1.035292] PM: Adding info for No Bus:tty32
[    1.035349] PM: Adding info for No Bus:tty33
[    1.035412] PM: Adding info for No Bus:tty34
[    1.035469] PM: Adding info for No Bus:tty35
[    1.035524] PM: Adding info for No Bus:tty36
[    1.035582] PM: Adding info for No Bus:tty37
[    1.035640] PM: Adding info for No Bus:tty38
[    1.035695] PM: Adding info for No Bus:tty39
[    1.035755] PM: Adding info for No Bus:tty40
[    1.035815] PM: Adding info for No Bus:tty41
[    1.035872] PM: Adding info for No Bus:tty42
[    1.035931] PM: Adding info for No Bus:tty43
[    1.035987] PM: Adding info for No Bus:tty44
[    1.036047] PM: Adding info for No Bus:tty45
[    1.036106] PM: Adding info for No Bus:tty46
[    1.036168] PM: Adding info for No Bus:tty47
[    1.036225] PM: Adding info for No Bus:tty48
[    1.036326] PM: Adding info for No Bus:tty49
[    1.036384] PM: Adding info for No Bus:tty50
[    1.036445] PM: Adding info for No Bus:tty51
[    1.036505] PM: Adding info for No Bus:tty52
[    1.036562] PM: Adding info for No Bus:tty53
[    1.036619] PM: Adding info for No Bus:tty54
[    1.036675] PM: Adding info for No Bus:tty55
[    1.036731] PM: Adding info for No Bus:tty56
[    1.036787] PM: Adding info for No Bus:tty57
[    1.036844] PM: Adding info for No Bus:tty58
[    1.036903] PM: Adding info for No Bus:tty59
[    1.036959] PM: Adding info for No Bus:tty60
[    1.037016] PM: Adding info for No Bus:tty61
[    1.037076] PM: Adding info for No Bus:tty62
[    1.037135] PM: Adding info for No Bus:tty63
[    1.037204] PM: Adding info for No Bus:ptmx
[    1.037385] PM: Adding info for No Bus:hpet
[    1.037647] Linux agpgart interface v0.103
[    1.037875] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[    1.038236] PM: Adding info for platform:serial8250
[    1.038356] PM: Adding info for No Bus:ttyS0
[    1.038427] PM: Adding info for No Bus:ttyS1
[    1.038503] PM: Adding info for No Bus:ttyS2
[    1.038576] PM: Adding info for No Bus:ttyS3
[    1.039029] PM: Adding info for No Bus:isa
[    1.039050] PM: Adding info for platform:Fixed MDIO bus.0
[    1.039103] PM: Adding info for No Bus:0
[    1.039143] Fixed MDIO Bus: probed
[    1.039502] PNP: PS/2 Controller [PNP0303:PS2K,PNP0f13:PS2M] at 0x60,0x64 irq 1,12
[    1.039952] PM: Adding info for platform:i8042
[    1.042788] i8042.c: Detected active multiplexing controller, rev 1.1.
[    1.044542] serio: i8042 KBD port at 0x60,0x64 irq 1
[    1.044817] serio: i8042 AUX0 port at 0x60,0x64 irq 12
[    1.044836] PM: Adding info for serio:serio0
[    1.045108] serio: i8042 AUX1 port at 0x60,0x64 irq 12
[    1.045125] PM: Adding info for serio:serio1
[    1.045391] serio: i8042 AUX2 port at 0x60,0x64 irq 12
[    1.045409] PM: Adding info for serio:serio2
[    1.045674] serio: i8042 AUX3 port at 0x60,0x64 irq 12
[    1.045691] PM: Adding info for serio:serio3
[    1.045974] PM: Adding info for serio:serio4
[    1.046047] PM: Adding info for No Bus:mice
[    1.046107] PM: Adding info for No Bus:psaux
[    1.046146] mice: PS/2 mouse device common for all mice
[    1.046486] cpuidle: using governor ladder
[    1.046710] cpuidle: using governor menu
[    1.047233] TCP cubic registered
[    1.047722] NET: Registered protocol family 10
[    1.048319] lo: Disabled Privacy Extensions
[    1.048827] Using IPI No-Shortcut mode
[    1.058621] PM: Adding info for No Bus:cpu_dma_latency
[    1.058680] PM: Adding info for No Bus:network_latency
[    1.058738] PM: Adding info for No Bus:network_throughput
[    1.058778] PM: Resume from disk failed.
[    1.058784] registered taskstats version 1
[    1.068727]   Magic number: 6:324:935
[    1.078434] Freeing unused kernel memory: 400k freed
[    1.088335] Write protecting the kernel text: 3024k
[    1.098047] Write protecting the kernel read-only data: 860k
[    1.112998] PM: Adding info for No Bus:input0
[    1.113082] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input0
[    1.186794] udev: starting version 160
[    1.216420] PM: Adding info for No Bus:thermal_zone0
[    1.216500] thermal LNXTHERM:01: registered as thermal_zone0
[    1.350749] ACPI: Thermal Zone [TZ00] (51 C)
[    1.364383] PM: Adding info for No Bus:thermal_zone1
[    1.365062] thermal LNXTHERM:02: registered as thermal_zone1
[    1.375176] ACPI: Thermal Zone [TZ01] (57 C)
[    1.387317] usbcore: registered new interface driver usbfs
[    1.388244] SCSI subsystem initialized
[    1.408270] libata version 3.00 loaded.
[    1.412589] ata_piix 0000:00:1f.2: version 2.13
[    1.412613]   alloc irq_desc for 19 on node -1
[    1.412616]   alloc kstat_irqs on node -1
[    1.412625] ata_piix 0000:00:1f.2: PCI INT B -> GSI 19 (level, low) -> IRQ 19
[    1.413596] usbcore: registered new interface driver hub
[    1.413758] usbcore: registered new device driver usb
[    1.418241] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    1.427808] PM: Adding info for No Bus:cooling_device0
[    1.427998] ACPI: Fan [FAN0] (off)
[    1.463875] ata_piix 0000:00:1f.2: MAP [ P0 P2 IDE IDE ]
[    1.476982] uhci_hcd: USB Universal Host Controller Interface driver
[    1.625023] ata_piix 0000:00:1f.2: setting latency timer to 64
[    1.625111] scsi0 : ata_piix
[    1.635248] PM: Adding info for scsi:host0
[    1.635281] PM: Adding info for No Bus:host0
[    1.635311] scsi1 : ata_piix
[    1.645264] PM: Adding info for scsi:host1
[    1.645294] PM: Adding info for No Bus:host1
[    1.646424] ata1: SATA max UDMA/133 cmd 0x1f0 ctl 0x3f6 bmdma 0x18b0 irq 14
[    1.656588] ata2: PATA max UDMA/100 cmd 0x170 ctl 0x376 bmdma 0x18b8 irq 15
[    1.666596]   alloc irq_desc for 23 on node -1
[    1.666599]   alloc kstat_irqs on node -1
[    1.666606] ehci_hcd 0000:00:1d.7: PCI INT A -> GSI 23 (level, low) -> IRQ 23
[    1.676797] ehci_hcd 0000:00:1d.7: setting latency timer to 64
[    1.676804] ehci_hcd 0000:00:1d.7: EHCI Host Controller
[    1.686876] ehci_hcd 0000:00:1d.7: new USB bus registered, assigned bus number 1
[    1.697083] ehci_hcd 0000:00:1d.7: using broken periodic workaround
[    1.707190] ehci_hcd 0000:00:1d.7: debug port 1
[    1.720967] ehci_hcd 0000:00:1d.7: cache line size of 64 is not supported
[    1.720985] ehci_hcd 0000:00:1d.7: irq 23, io mem 0xf0d44000
[    1.740010] ehci_hcd 0000:00:1d.7: USB 2.0 started, EHCI 1.00
[    1.749584] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[    1.759216] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    1.768932] usb usb1: Product: EHCI Host Controller
[    1.778770] usb usb1: Manufacturer: Linux 2.6.35.3-test-mm3 ehci_hcd
[    1.788893] usb usb1: SerialNumber: 0000:00:1d.7
[    1.799177] PM: Adding info for usb:usb1
[    1.799205] usb usb1: __pm_runtime_resume()!
[    1.799207] usb usb1: __pm_runtime_resume() returns 1!
[    1.799227] PM: Adding info for usb:1-0:1.0
[    1.799247] usb usb1: __pm_runtime_resume()!
[    1.799249] usb usb1: __pm_runtime_resume() returns 1!
[    1.799252] hub 1-0:1.0: USB hub found
[    1.809391] hub 1-0:1.0: 8 ports detected
[    1.819492] PM: Adding info for No Bus:ep_81
[    1.819515] PM: Adding info for No Bus:usbdev1.1
[    1.819542] PM: Adding info for No Bus:ep_00
[    1.819584] uhci_hcd 0000:00:1d.0: PCI INT A -> GSI 23 (level, low) -> IRQ 23
[    1.830058] uhci_hcd 0000:00:1d.0: setting latency timer to 64
[    1.830062] uhci_hcd 0000:00:1d.0: UHCI Host Controller
[    1.833644] ata2.00: ATAPI: MATSHITADVD-RAM UJ-841S, 1.60, max UDMA/33
[    1.839449] ata2.00: configured for UDMA/33
[    1.851016] ata1.00: ATA-8: SAMSUNG HM500LI, 2TF00_00, max UDMA7
[    1.851019] ata1.00: 976773168 sectors, multi 16: LBA48 NCQ (depth 0/32)
[    1.875038] ata1.00: configured for UDMA/133
[    1.875166] scsi 0:0:0:0: Direct-Access     ATA      SAMSUNG HM500LI  2TF0 PQ: 0 ANSI: 5
[    1.875179] PM: Adding info for scsi:target0:0:0
[    1.875208] PM: Adding info for scsi:0:0:0:0
[    1.875231] PM: Adding info for No Bus:0:0:0:0
[    1.875278] PM: Adding info for No Bus:0:0:0:0
[    1.877196] scsi 1:0:0:0: CD-ROM            MATSHITA DVD-RAM UJ-841S  1.60 PQ: 0 ANSI: 5
[    1.877210] PM: Adding info for scsi:target1:0:0
[    1.877238] PM: Adding info for scsi:1:0:0:0
[    1.877257] PM: Adding info for No Bus:1:0:0:0
[    1.877292] PM: Adding info for No Bus:1:0:0:0
[    1.916318] uhci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 2
[    1.919042] hub 1-0:1.0: __pm_runtime_resume()!
[    1.919045] hub 1-0:1.0: __pm_runtime_resume() returns 1!
[    1.919049] hub 1-0:1.0: __pm_runtime_suspend()!
[    1.919054] hub 1-0:1.0: __pm_runtime_suspend() returns 0!
[    1.927635] uhci_hcd 0000:00:1d.0: irq 23, io base 0x00001820
[    1.938790] usb usb2: New USB device found, idVendor=1d6b, idProduct=0001
[    1.949846] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    1.960744] usb usb2: Product: UHCI Host Controller
[    1.971554] usb usb2: Manufacturer: Linux 2.6.35.3-test-mm3 uhci_hcd
[    1.982420] usb usb2: SerialNumber: 0000:00:1d.0
[    1.993226] PM: Adding info for usb:usb2
[    1.993262] usb usb2: __pm_runtime_resume()!
[    1.993264] usb usb2: __pm_runtime_resume() returns 1!
[    1.993284] PM: Adding info for usb:2-0:1.0
[    1.993304] usb usb2: __pm_runtime_resume()!
[    1.993307] usb usb2: __pm_runtime_resume() returns 1!
[    1.993309] hub 2-0:1.0: USB hub found
[    2.003956] hub 2-0:1.0: 2 ports detected
[    2.014521] PM: Adding info for No Bus:ep_81
[    2.014541] PM: Adding info for No Bus:usbdev2.1
[    2.014571] PM: Adding info for No Bus:ep_00
[    2.014621] uhci_hcd 0000:00:1d.1: PCI INT B -> GSI 19 (level, low) -> IRQ 19
[    2.025392] uhci_hcd 0000:00:1d.1: setting latency timer to 64
[    2.025396] uhci_hcd 0000:00:1d.1: UHCI Host Controller
[    2.035967] uhci_hcd 0000:00:1d.1: new USB bus registered, assigned bus number 3
[    2.046591] uhci_hcd 0000:00:1d.1: irq 19, io base 0x00001840
[    2.057222] usb usb3: New USB device found, idVendor=1d6b, idProduct=0001
[    2.067907] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    2.078551] usb usb3: Product: UHCI Host Controller
[    2.089152] usb usb3: Manufacturer: Linux 2.6.35.3-test-mm3 uhci_hcd
[    2.099781] usb usb3: SerialNumber: 0000:00:1d.1
[    2.110311] PM: Adding info for usb:usb3
[    2.110337] usb usb3: __pm_runtime_resume()!
[    2.110339] usb usb3: __pm_runtime_resume() returns 1!
[    2.110361] PM: Adding info for usb:3-0:1.0
[    2.110379] usb usb3: __pm_runtime_resume()!
[    2.110381] usb usb3: __pm_runtime_resume() returns 1!
[    2.110384] hub 3-0:1.0: USB hub found
[    2.121010] hub 3-0:1.0: 2 ports detected
[    2.131459] PM: Adding info for No Bus:ep_81
[    2.131479] PM: Adding info for No Bus:usbdev3.1
[    2.131506] PM: Adding info for No Bus:ep_00
[    2.131546] uhci_hcd 0000:00:1d.2: PCI INT C -> GSI 18 (level, low) -> IRQ 18
[    2.142370] uhci_hcd 0000:00:1d.2: setting latency timer to 64
[    2.142374] uhci_hcd 0000:00:1d.2: UHCI Host Controller
[    2.152967] uhci_hcd 0000:00:1d.2: new USB bus registered, assigned bus number 4
[    2.163721] uhci_hcd 0000:00:1d.2: irq 18, io base 0x00001860
[    2.174397] usb usb4: New USB device found, idVendor=1d6b, idProduct=0001
[    2.185182] usb usb4: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    2.196047] usb usb4: Product: UHCI Host Controller
[    2.206948] usb usb4: Manufacturer: Linux 2.6.35.3-test-mm3 uhci_hcd
[    2.218023] usb usb4: SerialNumber: 0000:00:1d.2
[    2.228927] hub 2-0:1.0: __pm_runtime_resume()!
[    2.228930] hub 2-0:1.0: __pm_runtime_resume() returns 1!
[    2.228934] hub 2-0:1.0: __pm_runtime_suspend()!
[    2.228938] hub 2-0:1.0: __pm_runtime_suspend() returns 0!
[    2.228977] PM: Adding info for usb:usb4
[    2.229003] usb usb4: __pm_runtime_resume()!
[    2.229005] usb usb4: __pm_runtime_resume() returns 1!
[    2.229024] PM: Adding info for usb:4-0:1.0
[    2.229040] usb usb4: __pm_runtime_resume()!
[    2.229042] usb usb4: __pm_runtime_resume() returns 1!
[    2.229045] hub 4-0:1.0: USB hub found
[    2.239885] hub 3-0:1.0: __pm_runtime_resume()!
[    2.239888] hub 4-0:1.0: 2 ports detected
[    2.239909] PM: Adding info for No Bus:ep_81
[    2.239927] PM: Adding info for No Bus:usbdev4.1
[    2.239996] PM: Adding info for No Bus:ep_00
[    2.240037] uhci_hcd 0000:00:1d.3: PCI INT D -> GSI 16 (level, low) -> IRQ 16
[    2.240045] uhci_hcd 0000:00:1d.3: setting latency timer to 64
[    2.240049] uhci_hcd 0000:00:1d.3: UHCI Host Controller
[    2.240064] uhci_hcd 0000:00:1d.3: new USB bus registered, assigned bus number 5
[    2.240102] uhci_hcd 0000:00:1d.3: irq 16, io base 0x00001880
[    2.240136] usb usb5: New USB device found, idVendor=1d6b, idProduct=0001
[    2.240139] usb usb5: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    2.240141] usb usb5: Product: UHCI Host Controller
[    2.240143] usb usb5: Manufacturer: Linux 2.6.35.3-test-mm3 uhci_hcd
[    2.240145] usb usb5: SerialNumber: 0000:00:1d.3
[    2.240192] PM: Adding info for usb:usb5
[    2.240262] usb usb5: __pm_runtime_resume()!
[    2.240265] usb usb5: __pm_runtime_resume() returns 1!
[    2.240284] PM: Adding info for usb:5-0:1.0
[    2.240342] usb usb5: __pm_runtime_resume()!
[    2.240344] usb usb5: __pm_runtime_resume() returns 1!
[    2.240346] hub 5-0:1.0: USB hub found
[    2.240351] hub 5-0:1.0: 2 ports detected
[    2.240371] PM: Adding info for No Bus:ep_81
[    2.240390] PM: Adding info for No Bus:usbdev5.1
[    2.240445] PM: Adding info for No Bus:ep_00
[    2.240881] hub 3-0:1.0: __pm_runtime_resume() returns 1!
[    2.377708] hub 3-0:1.0: __pm_runtime_suspend()!
[    2.377724] hub 3-0:1.0: __pm_runtime_suspend() returns 0!
[    2.377731] hub 4-0:1.0: __pm_runtime_resume()!
[    2.377734] hub 4-0:1.0: __pm_runtime_resume() returns 1!
[    2.377737] hub 4-0:1.0: __pm_runtime_suspend()!
[    2.377743] hub 4-0:1.0: __pm_runtime_suspend() returns 0!
[    2.377746] hub 5-0:1.0: __pm_runtime_resume()!
[    2.377749] hub 5-0:1.0: __pm_runtime_resume() returns 1!
[    2.377751] hub 5-0:1.0: __pm_runtime_suspend()!
[    2.377757] hub 5-0:1.0: __pm_runtime_suspend() returns 0!
[    2.383836] PM: Adding info for No Bus:0:0:0:0
[    2.383916] sd 0:0:0:0: [sda] 976773168 512-byte logical blocks: (500 GB/465 GiB)
[    2.394780] sd 0:0:0:0: [sda] Write Protect is off
[    2.405502] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
[    2.405546] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    2.416432] PM: Adding info for No Bus:sda
[    2.416647]  sda:sr0: scsi3-mmc drive: 24x/24x writer dvd-ram cd/rw xa/form2 cdda tray
[    2.430641] Uniform CD-ROM driver Revision: 3.20
[    2.441471]  sda1
[    2.441502] PM: Adding info for No Bus:sr0
[    2.441592] PM: Adding info for No Bus:11:0
[    2.441678] sr 1:0:0:0: Attached scsi CD-ROM sr0
[    2.452103]  sda2 sda3 sda4 < sda5 sda6 sda7 sda8 sda9 sda10 sda11 sda12 sda13 sda14 sda15 >
[    2.643888] PM: Adding info for No Bus:sda1
[    2.643914] PM: Adding info for No Bus:sda2
[    2.643937] PM: Adding info for No Bus:sda3
[    2.643959] PM: Adding info for No Bus:sda4
[    2.643981] PM: Adding info for No Bus:sda5
[    2.644010] PM: Adding info for No Bus:sda6
[    2.644034] PM: Adding info for No Bus:sda7
[    2.644057] PM: Adding info for No Bus:sda8
[    2.644085] PM: Adding info for No Bus:sda9
[    2.644109] PM: Adding info for No Bus:sda10
[    2.644132] PM: Adding info for No Bus:sda11
[    2.644155] PM: Adding info for No Bus:sda12
[    2.644180] PM: Adding info for No Bus:sda13
[    2.644204] PM: Adding info for No Bus:sda14
[    2.644229] PM: Adding info for No Bus:sda15
[    2.644419] PM: Adding info for No Bus:8:0
[    2.644529] sd 0:0:0:0: [sda] Attached SCSI disk
[    2.661325] PM: Adding info for No Bus:sg0
[    2.661340] sd 0:0:0:0: Attached scsi generic sg0 type 0
[    2.672502] PM: Adding info for No Bus:sg1
[    2.672937] sr 1:0:0:0: Attached scsi generic sg1 type 5
[    4.030188] device-mapper: uevent: version 1.0.3
[    4.041440] PM: Adding info for No Bus:device-mapper
[    4.041558] device-mapper: ioctl: 4.17.0-ioctl (2010-03-05) initialised: dm-devel@redhat.com
[    4.101758] PM: Starting manual resume from disk
[    4.113481] PM: Resume from partition 8:15
[    4.113483] PM: Checking hibernation image.
[    4.113688] PM: Error -22 checking image file
[    4.113690] PM: Resume from disk failed.
[    4.157730] EXT4-fs (sda12): INFO: recovery required on readonly filesystem
[    4.169769] EXT4-fs (sda12): write access will be enabled during recovery
[    4.260207] EXT4-fs (sda12): recovery complete
[    4.272529] EXT4-fs (sda12): mounted filesystem with ordered data mode. Opts: (null)
[    4.712022] usb usb1: __pm_runtime_suspend() from workqueue!
[    4.712062] usb usb1: __pm_runtime_suspend() returns 0!
[    4.712065] usb usb2: __pm_runtime_suspend() from workqueue!
[    4.712086] usb usb2: __pm_runtime_suspend() returns 0!
[    4.712088] usb usb3: __pm_runtime_suspend() from workqueue!
[    4.712106] usb usb3: __pm_runtime_suspend() returns 0!
[    4.712108] usb usb4: __pm_runtime_suspend() from workqueue!
[    4.712126] usb usb4: __pm_runtime_suspend() returns 0!
[    4.712128] usb usb5: __pm_runtime_suspend() from workqueue!
[    4.712145] usb usb5: __pm_runtime_suspend() returns 0!
[    6.642313] udev: starting version 160
[    7.107526] PM: Adding info for No Bus:rfkill
[    7.108226] Detected Toshiba ACPI Bluetooth device - installing RFKill handler
[    7.179951] PM: Adding info for No Bus:acpi_video0
[    7.186853] PM: Adding info for No Bus:event0
[    7.187234] PM: Adding info for No Bus:cooling_device1
[    7.187337] toshiba_bluetooth: Re-enabling Toshiba Bluetooth
[    7.199962] acpi device:07: registered as cooling_device1
[    7.212805] PM: Adding info for No Bus:acpi_video0
[    7.213221] PM: Adding info for No Bus:input1
[    7.213437] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:01/input/input1
[    7.226557] usb usb1: __pm_runtime_resume()!
[    7.226643] PM: Adding info for No Bus:event1
[    7.226659] ACPI: Video Device [GFX0] (multi-head: yes  rom: no  post: no)
[    7.258585] PM: Adding info for No Bus:input2
[    7.258608] input: PC Speaker as /devices/platform/pcspkr/input/input2
[    7.271968] PM: Adding info for No Bus:event2
[    7.347018] usb usb1: __pm_runtime_resume() returns 0!
[    7.347026] hub 1-0:1.0: __pm_runtime_resume()!
[    7.347029] usb usb1: __pm_runtime_resume()!
[    7.347032] usb usb1: __pm_runtime_resume() returns 1!
[    7.347035] hub 1-0:1.0: __pm_runtime_resume() returns 0!
[    7.398249] usb usb2: __pm_runtime_resume()!
[    7.405406] ACPI: acpi_idle registered with cpuidle
[    7.409012] Monitor-Mwait will be used to enter C-1 state
[    7.412781] Monitor-Mwait will be used to enter C-2 state
[    7.412819] Monitor-Mwait will be used to enter C-3 state
[    7.412827] Marking TSC unstable due to TSC halts in idle
[    7.426881] Switching to clocksource hpet
[    7.426958] PM: Adding info for No Bus:cooling_device2
[    7.447358] PM: Adding info for No Bus:cooling_device3
[    7.449046] hub 1-0:1.0: unable to enumerate USB device on port 1
[    7.463818] PM: Adding info for No Bus:ADP0
[    7.463838] ACPI: AC Adapter [ADP0] (on-line)
[    7.465157] agpgart-intel 0000:00:00.0: Intel 945GM Chipset
[    7.491601] PM: Adding info for No Bus:input3
[    7.491623] input: Lid Switch as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0D:00/input/input3
[    7.494036] hub 1-0:1.0: __pm_runtime_resume()!
[    7.494039] hub 1-0:1.0: __pm_runtime_resume() returns 1!
[    7.494045] hub 1-0:1.0: __pm_runtime_suspend()!
[    7.494049] hub 1-0:1.0: __pm_runtime_suspend() returns 0!
[    7.506608] agpgart-intel 0000:00:00.0: detected 7932K stolen memory
[    7.506785] PM: Adding info for No Bus:event3
[    7.506937] ACPI: Lid Switch [LID]
[    7.534889] hub 1-0:1.0: __pm_runtime_resume()!
[    7.534893] usb usb1: __pm_runtime_resume()!
[    7.534895] usb usb1: __pm_runtime_resume() returns 1!
[    7.534899] hub 1-0:1.0: __pm_runtime_resume() returns 0!
[    7.538316] PM: Adding info for No Bus:agpgart
[    7.538337] agpgart-intel 0000:00:00.0: AGP aperture is 256M @ 0xd0000000
[    7.541031] usb usb2: __pm_runtime_resume() returns 0!
[    7.570270] i801_smbus 0000:00:1f.3: PCI INT B -> GSI 19 (level, low) -> IRQ 19
[    7.584569] ACPI: resource 0000:00:1f.3 [io  0x18c0-0x18df] conflicts with ACPI region SMBI [??? 0x000018c0-0x000018cf flags 0x49]
[    7.599330] ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver
[    7.719455] PM: Adding info for No Bus:BAT0
[    7.815836] hub 2-0:1.0: __pm_runtime_resume()!
[    7.815840] usb usb2: __pm_runtime_resume()!
[    7.815843] usb usb2: __pm_runtime_resume() returns 1!
[    7.815847] hub 2-0:1.0: __pm_runtime_resume() returns 0!
[    7.815850] hub 2-0:1.0: __pm_runtime_suspend()!
[    7.815857] hub 2-0:1.0: __pm_runtime_suspend() returns 0!
[    7.815860] hub 1-0:1.0: __pm_runtime_resume()!
[    7.815862] hub 1-0:1.0: __pm_runtime_resume() returns 1!
[    7.815867] hub 1-0:1.0: __pm_runtime_suspend()!
[    7.815870] hub 1-0:1.0: __pm_runtime_suspend() returns 0!
[    7.818182] ACPI: Battery Slot [BAT0] (battery present)
[    7.833012] PM: Adding info for No Bus:input4
[    7.833036] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input4
[    7.850079] rtc_cmos 00:07: RTC can wake from S4
[    7.852668] PM: Adding info for No Bus:event4
[    7.852683] ACPI: Power Button [PWRB]
[    7.852750] PM: Adding info for No Bus:input5
[    7.852771] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input5
[    7.852792] PM: Adding info for No Bus:event5
[    7.852802] ACPI: Power Button [PWRF]
[    7.910360] PM: Adding info for No Bus:rtc0
[    7.910429] rtc_cmos 00:07: rtc core: registered rtc_cmos as rtc0
[    7.925736] rtc0: alarms up to one month, y3k, 242 bytes nvram, hpet irqs
[    7.954010] tifm_7xx1 0000:07:06.2: PCI INT A -> GSI 18 (level, low) -> IRQ 18
[    7.954170] hub 2-0:1.0: __pm_runtime_resume()!
[    7.954173] usb usb2: __pm_runtime_resume()!
[    7.954176] usb usb2: __pm_runtime_resume() returns 1!
[    7.954180] hub 2-0:1.0: __pm_runtime_resume() returns 0!
[    7.969325] PM: Adding info for No Bus:tifm0
[    8.014907] [drm] Initialized drm 1.1.0 20060810
[    8.016068] yenta_cardbus 0000:07:06.0: CardBus bridge found [1179:ff10]
[    8.016089] yenta_cardbus 0000:07:06.0: Enabling burst memory read transactions
[    8.016095] yenta_cardbus 0000:07:06.0: Using CSCINT to route CSC interrupts to PCI
[    8.016097] yenta_cardbus 0000:07:06.0: Routing CardBus interrupts to PCI
[    8.016104] yenta_cardbus 0000:07:06.0: TI: mfunc 0x01a01b22, devctl 0x66
[    8.125042] PM: Adding info for No Bus:timer
[    8.129445] PM: Adding info for No Bus:seq
[    8.218471] i915 0000:00:02.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[    8.232887] i915 0000:00:02.0: setting latency timer to 64
[    8.232910] usb 2-1: new full speed USB device using uhci_hcd and address 2
[    8.234455] PM: Adding info for No Bus:controlD64
[    8.234704] PM: Adding info for No Bus:card0
[    8.248648] yenta_cardbus 0000:07:06.0: ISA IRQ mask 0x0cf8, PCI irq 18
[    8.263479] yenta_cardbus 0000:07:06.0: Socket status: 30000006
[    8.278515] pci_bus 0000:07: Raising subordinate bus# of parent bus (#07) from #07 to #0b
[    8.278634] [drm] set up 7M of stolen space
[    8.278983] PM: Adding info for i2c:i2c-0
[    8.279095] PM: Adding info for No Bus:card0-VGA-1
[    8.279136] PM: Adding info for i2c:i2c-1
[    8.281910] yenta_cardbus 0000:07:06.0: pcmcia: parent PCI bridge window: [io  0x4000-0x4fff]
[    8.283532] pcmcia_socket pcmcia_socket0: cs: IO port probe 0x4000-0x4fff: excluding 0x4000-0x403f 0x4400-0x44ff 0x4800-0x48ff
[    8.292539] yenta_cardbus 0000:07:06.0: pcmcia: parent PCI bridge window: [mem 0xf0900000-0xf09fffff]
[    8.294191] pcmcia_socket pcmcia_socket0: cs: memory probe 0xf0900000-0xf09fffff: excluding 0xf0900000-0xf090ffff
[    8.296033] yenta_cardbus 0000:07:06.0: pcmcia: parent PCI bridge window: [mem 0xc0000000-0xc3ffffff pref]
[    8.297716] pcmcia_socket pcmcia_socket0: cs: memory probe 0xc0000000-0xc3ffffff: excluding 0xc0000000-0xc3ffffff
[    8.299692] PM: Adding info for No Bus:pcmcia_socket0
[    8.390302] PM: Adding info for No Bus:card0-LVDS-1
[    8.390367] PM: Adding info for No Bus:card0-SVIDEO-1
[    8.390501] [drm] initialized overlay support
[    8.406049] usb 2-1: __pm_runtime_resume()!
[    8.406052] usb 2-1: __pm_runtime_resume() returns -11!
[    8.438663] Synaptics Touchpad, model: 1, fw: 6.2, id: 0x25a0b1, caps: 0xa04713/0x0/0x0
[    8.440446] usb 2-1: New USB device found, idVendor=0930, idProduct=0508
[    8.442208] usb 2-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[    8.444015] PM: Adding info for usb:2-1
[    8.444091] usb 2-1: __pm_runtime_resume()!
[    8.444094] usb 2-1: __pm_runtime_resume() returns 1!
[    8.444102] synaptics: Toshiba Satellite A100 detected, limiting rate to 40pps.
[    8.448067] PM: Adding info for usb:2-1:1.0
[    8.448132] PM: Adding info for No Bus:ep_81
[    8.448145] PM: Adding info for No Bus:ep_02
[    8.448159] PM: Adding info for No Bus:ep_82
[    8.448177] PM: Adding info for usb:2-1:1.1
[    8.448236] PM: Adding info for No Bus:ep_03
[    8.448260] PM: Adding info for No Bus:ep_83
[    8.448275] PM: Adding info for usb:2-1:1.2
[    8.448343] PM: Adding info for No Bus:usbdev2.2
[    8.448406] PM: Adding info for No Bus:ep_00
[    8.448410] hub 2-0:1.0: __pm_runtime_suspend()!
[    8.448414] hub 2-0:1.0: __pm_runtime_suspend() returns 0!
[    8.479821] PM: Adding info for No Bus:input6
[    8.479853] input: SynPS/2 Synaptics TouchPad as /devices/platform/i8042/serio4/input/input6
[    8.481647] PM: Adding info for No Bus:mouse0
[    8.481678] PM: Adding info for No Bus:event6
[    8.653516] pcmcia_socket pcmcia_socket0: cs: IO port probe 0x100-0x3af: excluding 0x170-0x177 0x1f0-0x1f7 0x370-0x377
[    8.657343] pcmcia_socket pcmcia_socket0: cs: IO port probe 0x3e0-0x4ff: excluding 0x3e8-0x3f7 0x400-0x407 0x4d0-0x4d7
[    8.659865] pcmcia_socket pcmcia_socket0: cs: IO port probe 0x820-0x8ff: clean.
[    8.662319] pcmcia_socket pcmcia_socket0: cs: IO port probe 0xc00-0xcf7: clean.
[    8.664748] pcmcia_socket pcmcia_socket0: cs: memory probe 0x0c0000-0x0fffff: excluding 0xc0000-0xc7fff 0xcc000-0xd3fff 0xdc000-0xfffff
[    8.666500] pcmcia_socket pcmcia_socket0: cs: memory probe 0xa0000000-0xa0ffffff: excluding 0xa0000000-0xa0ffffff
[    8.668231] pcmcia_socket pcmcia_socket0: cs: memory probe 0x60000000-0x60ffffff: excluding 0x60000000-0x60ffffff
[    8.669947] pcmcia_socket pcmcia_socket0: cs: IO port probe 0xa00-0xaff: clean.
[    8.809303] Bluetooth: Core ver 2.15
[    8.811014] NET: Registered protocol family 31
[    8.812669] Bluetooth: HCI device and connection manager initialized
[    8.814240] Bluetooth: HCI socket layer initialized
[    8.826373] Bluetooth: Generic Bluetooth USB driver ver 0.6
[    8.827910] usb 2-1: __pm_runtime_resume()!
[    8.827912] usb 2-1: __pm_runtime_resume() returns 1!
[    8.827978] PM: Adding info for No Bus:hci0
[    8.828020] PM: Adding info for No Bus:rfkill0
[    8.828057] btusb 2-1:1.0: __pm_runtime_suspend()!
[    8.828060] btusb 2-1:1.0: __pm_runtime_suspend() returns 0!
[    8.828067] usb 2-1: __pm_runtime_resume()!
[    8.828069] usb 2-1: __pm_runtime_resume() returns 1!
[    8.828087] usbcore: registered new interface driver btusb
[    8.983676] checking generic (d0000000 3f0000) vs hw (d0000000 10000000)
[    8.983680] fb: conflicting fb hw usage inteldrmfb vs EFI VGA - removing generic driver
[    8.985248] Console: switching to colour dummy device 80x25
[    8.985272] PM: Removing info for No Bus:fb0
[    8.985324] PM: Removing info for No Bus:vtcon1
[    8.985656] PM: Adding info for No Bus:fb0
[    8.985745] fbcon: inteldrmfb (fb0) is primary device
[    8.985820] PM: Adding info for No Bus:vtcon1
[    9.137187] Console: switching to colour frame buffer device 160x50
[    9.140385] fb0: inteldrmfb frame buffer device
[    9.140411] drm: registered panic notifier
[    9.140438] Slow work thread pool: Starting up
[    9.140596] Slow work thread pool: Ready
[    9.140629] [drm] Initialized i915 1.6.0 20080730 for 0000:00:02.0 on minor 0
[    9.140719]   alloc irq_desc for 22 on node -1
[    9.140722]   alloc kstat_irqs on node -1
[    9.140730] HDA Intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22
[    9.140782] hda_intel: position_fix set to 1 for device 1179:ff10
[    9.140870]   alloc irq_desc for 43 on node -1
[    9.140872]   alloc kstat_irqs on node -1
[    9.140884] HDA Intel 0000:00:1b.0: irq 43 for MSI/MSI-X
[    9.140923] HDA Intel 0000:00:1b.0: setting latency timer to 64
[    9.224129] hda_codec: ALC861: BIOS auto-probing.
[    9.432286] PM: Adding info for No Bus:card0
[    9.432362] PM: Adding info for No Bus:pcmC0D6p
[    9.432396] PM: Adding info for No Bus:pcmC0D6c
[    9.432428] PM: Adding info for No Bus:pcmC0D0p
[    9.432464] PM: Adding info for No Bus:pcmC0D0c
[    9.432497] PM: Adding info for No Bus:hwC0D1
[    9.432528] PM: Adding info for No Bus:hwC0D0
[    9.432587] PM: Adding info for No Bus:controlC0
[   10.704066] usb usb1: __pm_runtime_suspend() from workqueue!
[   10.704113] usb usb1: __pm_runtime_suspend() returns 0!
[   11.256912] PM: Adding info for No Bus:vcs2
[   11.256947] PM: Adding info for No Bus:vcsa2
[   11.258088] PM: Adding info for No Bus:vcs3
[   11.258119] PM: Adding info for No Bus:vcsa3
[   11.258933] PM: Adding info for No Bus:vcs4
[   11.258962] PM: Adding info for No Bus:vcsa4
[   11.260019] PM: Adding info for No Bus:vcs5
[   11.260057] PM: Adding info for No Bus:vcsa5
[   11.261109] PM: Adding info for No Bus:vcs6
[   11.261137] PM: Adding info for No Bus:vcsa6
[   11.446256] Adding 8393924k swap on /dev/sda15.  Priority:-1 extents:1 across:8393924k 
[   11.450541] EXT4-fs (sda12): re-mounted. Opts: (null)
[   11.662874] EXT4-fs (sda12): re-mounted. Opts: errors=remount-ro,barrier=0
[   12.664034] PM: Adding info for No Bus:dm-0
[   12.664096] PM: Adding info for No Bus:254:0
[   12.790093] PM: Adding info for No Bus:dm-1
[   12.790165] PM: Adding info for No Bus:254:1
[   14.419678] fuse init (API version 7.14)
[   14.421180] PM: Adding info for No Bus:fuse
[   18.538934] Bluetooth: L2CAP ver 2.14
[   18.540209] Bluetooth: L2CAP socket layer initialized
[   18.764311] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[   18.765535] Bluetooth: BNEP filters: protocol multicast
[   18.767230] Bluetooth: RFCOMM TTY layer initialized
[   18.768441] Bluetooth: RFCOMM socket layer initialized
[   18.769618] Bluetooth: RFCOMM ver 1.11
[   18.797733] Bridge firewalling registered
[   18.799111] PM: Adding info for No Bus:pan0
[   19.029000] Bluetooth: SCO (Voice Link) ver 0.6
[   19.030176] Bluetooth: SCO socket layer initialized
[   19.031753] btusb 2-1:1.0: __pm_runtime_resume()!
[   19.031757] usb 2-1: __pm_runtime_resume()!
[   19.031760] usb 2-1: __pm_runtime_resume() returns 1!
[   19.031763] btusb 2-1:1.0: __pm_runtime_resume() returns 0!
[   19.031784] btusb 2-1:1.0: __pm_runtime_suspend()!
[   19.031787] btusb 2-1:1.0: __pm_runtime_suspend() returns 0!
[   21.491995] PM: Adding info for No Bus:vcs7
[   21.492058] PM: Adding info for No Bus:vcsa7
[   86.630361] PM: Adding info for platform:regulatory.0
[   86.630378] cfg80211: Calling CRDA to update world regulatory domain
[   86.782120] cfg80211: World regulatory domain updated:
[   86.782164]     (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
[   86.782207]     (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[   86.782247]     (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
[   86.782292]     (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
[   86.782333]     (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[   86.782374]     (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[   86.793249] iwl3945: Intel(R) PRO/Wireless 3945ABG/BG Network Connection driver for Linux, in-tree:s
[   86.793320] iwl3945: Copyright(c) 2003-2010 Intel Corporation
[   86.793432] iwl3945 0000:05:00.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18
[   86.793553] iwl3945 0000:05:00.0: setting latency timer to 64
[   86.847412] iwl3945 0000:05:00.0: Tunable channels: 13 802.11bg, 23 802.11a channels
[   86.847457] iwl3945 0000:05:00.0: Detected Intel Wireless WiFi Link 3945ABG
[   86.847609]   alloc irq_desc for 44 on node -1
[   86.847611]   alloc kstat_irqs on node -1
[   86.847645] iwl3945 0000:05:00.0: irq 44 for MSI/MSI-X
[   86.847875] PM: Adding info for No Bus:phy0
[   86.847911] PM: Adding info for No Bus:rfkill1
[   86.912505] phy0: Selected rate control algorithm 'iwl-3945-rs'
[   86.912619] PM: Adding info for No Bus:wlan0
[   86.943689] PM: Adding info for No Bus:0000:05:00.0
[   86.998784] PM: Removing info for No Bus:0000:05:00.0
[   86.998830] iwl3945 0000:05:00.0: loaded firmware version 15.32.2.9
[   87.073185] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[   87.126017] NET: Registered protocol family 17

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

* Re: [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang
  2010-08-30 16:54                   ` [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang M. Vefa Bicakci
@ 2010-08-31  6:35                     ` KOSAKI Motohiro
  2010-08-31  6:54                       ` KOSAKI Motohiro
  2010-09-01  0:48                     ` [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang KOSAKI Motohiro
  2010-09-01  0:48                     ` KOSAKI Motohiro
  2 siblings, 1 reply; 66+ messages in thread
From: KOSAKI Motohiro @ 2010-08-31  6:35 UTC (permalink / raw)
  To: M. Vefa Bicakci; +Cc: kosaki.motohiro, Linux Kernel Mailing List

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

> On 30/08/10 05:28 AM, KOSAKI Motohiro wrote:
> >> [snip]
> >>
> >> The interesting thing is that even though there is a lot of free memory at the
> >> end, it still hangs. 
> > 
> > Grr. I'm surprised this result ;-)
> > shrink_all_memory() finish to shrink memory successfully. but your
> > system still hang immediately after. I have no idea why this mysterious
> > occur. 
> > 
> > I prepared next debugging patch. It added prenty debug printk. I hope
> > it enlighten up which path makes system hang-up.
> > 
> > 1. apply my new patch
> > 
> > 2. Enable following PM debug option in Kconfig
> > 
> >   [*] Power Management support
> >   [*]   Power Management Debug Support
> >   [*]     Extra PM attributes in sysfs for low-level debugging/testing
> >   [*]     Verbose Power Management debugging
> > 
> > 3. append following kernel boot option into grub configration file
> > 
> > 	no_console_suspend=1
> > 
> > 3. kernel build and reboot
> > 4. some prepare
> >    # echo 8 > /proc/sysrq-trigger
> >    # cd /sys/power
> >    # echo 1 > pm_trace
> >    # echo 0 > pm_async
> > 
> > 5. run your test program
> > 
> > 
> >> I also included the timestamps; note the one and two second
> >> delays between the passes.
> > 
> > This is expected result because tmpfs shrink need swap-out. then
> > we need i/o time.
> > 
> >>
> >> Please let me know if there is anything I can do.
> > 
> > Please send me your .config and full dmesg.
> > 
> > 
> > Thanks many and many help us!
> 
> Hello,
> 
> I have followed your instructions, with one exception: I have also
> enabled CONFIG_PM_TRACE so that I would have /sys/power/pm_trace.
> 
> This time I had some more output, as expected. I double checked what
> I typed while looking at the screen-shot I took with my camera. Here's
> the output:
> 
> === 8< ===
> PM: Marking nosave pages: ...0009f000 - ...000100000
> PM: basic memory bitmaps created
> PM: Syncing filesystems ... done
> Freezing user space processes ... (elapsed 0.01 seconds) done.
> Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
> PM: Preallocating image memory...
> shrink_all_memory start
> PM: shrink memory: pass=1, req:310171 reclaimed:15492 free:360936
> PM: shrink memory: pass=2, req:294679 reclaimed:28864 free:373981
> PM: shrink memory: pass=3, req:265815 reclaimed:60311 free:405374
> PM: shrink memory: pass=4, req:205504 reclaimed:97870 free:443024
> PM: shrink memory: pass=5, req:107634 reclaimed:146948 free:492141
> shrink_all_memory: req:107634 reclaimed:146948 free:492141
> PM: preallocate_image_highmem 556658 278329
> PM: preallocate_image_memory 103139 103139
> PM: preallocate_highmem_fraction 183908 556658 760831 -> 183908
> === >8 ===
> 
> According to your patch, the next output should have been
> "preallocate_image_memory ...", but it never gets printed, so the
> hang point should be that function.

Great!
I've attached more verbose debug message patch and trial bug fixing patch.
Could you please to try this?



> I am attaching my dmesg output which I got after the failed hibernation
> attempt and my .config file. Please note that the attached .config file
> is a trimmed version of the .config I usually use on my computer. I trimmed
> it so that it compiles faster, but (mostly) has support for devices I might
> use.
> 
> Thanks a lot for your help, and please let me know if I can do anything else.
> 


[-- Attachment #2: 0001-debug2.patch --]
[-- Type: application/octet-stream, Size: 5261 bytes --]

From c3a93b865e76afd02bf3856c63c50dd9493afafd Mon Sep 17 00:00:00 2001
From: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Date: Tue, 31 Aug 2010 13:10:15 +0900
Subject: [PATCH 1/2] debug2

---
 kernel/power/snapshot.c |   66 ++++++++++++++++++++++++++++------------------
 1 files changed, 40 insertions(+), 26 deletions(-)

diff --git a/kernel/power/snapshot.c b/kernel/power/snapshot.c
index c864806..3144ab4 100644
--- a/kernel/power/snapshot.c
+++ b/kernel/power/snapshot.c
@@ -1258,10 +1258,13 @@ static unsigned long minimum_image_size(unsigned long saveable)
 int hibernate_preallocate_memory(void)
 {
 	struct zone *zone;
-	unsigned long saveable, size, max_size, count, highmem, pages = 0;
+	unsigned long saveable, max_size, count, highmem, pages = 0;
 	unsigned long alloc, save_highmem, pages_highmem;
 	struct timeval start, stop;
 	int error;
+	unsigned long additional_size, img_size;
+	unsigned long pages_fraction;
+	unsigned long img_pages;
 
 	printk(KERN_INFO "PM: Preallocating image memory... \n");
 	do_gettimeofday(&start);
@@ -1288,9 +1291,9 @@ int hibernate_preallocate_memory(void)
 	count = saveable;
 	saveable += save_highmem;
 	highmem = save_highmem;
-	size = 0;
+	additional_size = 0;
 	for_each_populated_zone(zone) {
-		size += snapshot_additional_pages(zone);
+		additional_size += snapshot_additional_pages(zone);
 		if (is_highmem(zone))
 			highmem += zone_page_state(zone, NR_FREE_PAGES);
 		else
@@ -1299,16 +1302,23 @@ int hibernate_preallocate_memory(void)
 	count += highmem;
 	count -= totalreserve_pages;
 
+	printk(KERN_INFO "PM: save_highmem(%lu), saveable(%lu) count=(%lu)\n",
+	       save_highmem, saveable, count);
+
 	/* Compute the maximum number of saveable pages to leave in memory. */
-	max_size = (count - (size + PAGES_FOR_IO)) / 2 - 2 * SPARE_PAGES;
-	size = DIV_ROUND_UP(image_size, PAGE_SIZE);
-	if (size > max_size)
-		size = max_size;
+	max_size = (count - (additional_size + PAGES_FOR_IO)) / 2 - 2 * SPARE_PAGES;
+	img_size = DIV_ROUND_UP(image_size, PAGE_SIZE);
+	if (img_size > max_size)
+		img_size = max_size;
+
+	printk(KERN_INFO "PM: max_size(%lu), image_size(%lu), img_size(%lu)\n",
+	       max_size, image_size, img_size);
+
 	/*
 	 * If the maximum is not less than the current number of saveable pages
 	 * in memory, allocate page frames for the image and we're done.
 	 */
-	if (size >= saveable) {
+	if (img_size >= saveable) {
 		printk(KERN_INFO "PM: size >= saveable. skip \n");
 		pages = preallocate_image_highmem(save_highmem);
 		pages += preallocate_image_memory(saveable - pages);
@@ -1316,9 +1326,12 @@ int hibernate_preallocate_memory(void)
 	}
 
 	/* Estimate the minimum size of the image. */
-	pages = minimum_image_size(saveable);
-	if (size < pages)
-		size = min_t(unsigned long, pages, max_size);
+	img_pages = minimum_image_size(saveable);
+	if (img_size < img_pages)
+		img_size = min_t(unsigned long, img_pages, max_size);
+
+	printk(KERN_INFO "PM: img_pages(%lu), img_size(%lu)\n",
+	       img_pages, img_size);
 
 	/*
 	 * Let the memory management subsystem know that we're going to need a
@@ -1326,7 +1339,7 @@ int hibernate_preallocate_memory(void)
 	 * NOTE: If this is not done, performance will be hurt badly in some
 	 * test cases.
 	 */
-	shrink_all_memory(saveable - size);
+	shrink_all_memory(saveable - img_size);
 
 	/*
 	 * The number of saveable pages in memory was too high, so apply some
@@ -1336,30 +1349,31 @@ int hibernate_preallocate_memory(void)
 	 * highmem and non-highmem zones separately.
 	 */
 	pages_highmem = preallocate_image_highmem(highmem / 2);
-	printk(KERN_INFO "PM: preallocate_image_highmem %lu %lu\n",
-	       highmem, pages_highmem);
+	printk(KERN_INFO "PM: preallocate_image_highmem %lu %lu free(%u/%lu)\n",
+	       highmem, pages_highmem, nr_free_highpages(), global_page_state(NR_FREE_PAGES));
 
 	alloc = (count - max_size) - pages_highmem;
 	pages = preallocate_image_memory(alloc);
-	printk(KERN_INFO "PM: preallocate_image_memory %lu %lu\n",
-	       alloc, pages);
+	printk(KERN_INFO "PM: preallocate_image_memory %lu %lu free(%u/%lu)\n",
+	       alloc, pages, nr_free_highpages(), global_page_state(NR_FREE_PAGES));
 
 	if (pages < alloc) {
 		printk(KERN_INFO "PM: pages(%lu) < alloc(%lu). error. \n",
 		       pages, alloc);
 		goto err_out;
 	}
-	size = max_size - size;
-	alloc = size;
-	size = preallocate_highmem_fraction(size, highmem, count);
-	printk(KERN_INFO "PM: preallocate_highmem_fraction %lu %lu %lu -> %lu\n",
-	       size, highmem, count, size);
-
-	pages_highmem += size;
-	alloc -= size;
+
+	alloc = max_size - img_size;
+
+	pages_fraction = preallocate_highmem_fraction(alloc, highmem, count);
+	printk(KERN_INFO "PM: preallocate_highmem_fraction %lu %lu %lu -> %lu free(%u/%lu)\n",
+	       alloc, highmem, count, pages_fraction, nr_free_highpages(), global_page_state(NR_FREE_PAGES));
+
+	pages_highmem += pages_fraction;
+	alloc -= pages_fraction;
 	pages += preallocate_image_memory(alloc);
-	printk(KERN_INFO "PM: preallocate_image_memory %lu %lu\n",
-	       alloc, pages);
+	printk(KERN_INFO "PM: preallocate_image_memory %lu %lu free(%u/%lu)\n",
+	       alloc, pages, nr_free_highpages(), global_page_state(NR_FREE_PAGES));
 	pages += pages_highmem;
 
 	/*
-- 
1.6.5.2


[-- Attachment #3: 0002-add-gfp_noretry.patch --]
[-- Type: application/octet-stream, Size: 825 bytes --]

From 561bf4eed48ce99bd8d8b933390603f84ac4cacb Mon Sep 17 00:00:00 2001
From: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Date: Tue, 31 Aug 2010 14:58:04 +0900
Subject: [PATCH 2/2] add gfp_noretry

Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
---
 kernel/power/snapshot.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/kernel/power/snapshot.c b/kernel/power/snapshot.c
index 3144ab4..c488704 100644
--- a/kernel/power/snapshot.c
+++ b/kernel/power/snapshot.c
@@ -1091,7 +1091,7 @@ void swsusp_free(void)
 
 /* Helper functions used for the shrinking of memory. */
 
-#define GFP_IMAGE	(GFP_KERNEL | __GFP_NOWARN)
+#define GFP_IMAGE	(GFP_KERNEL | __GFP_NOWARN | __GFP_NORETRY)
 
 /**
  * preallocate_image_pages - Allocate a number of pages for hibernation image
-- 
1.6.5.2


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

* Re: [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang
  2010-08-31  6:35                     ` KOSAKI Motohiro
@ 2010-08-31  6:54                       ` KOSAKI Motohiro
  2010-08-31 11:25                         ` [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernationto hang M. Vefa Bicakci
  0 siblings, 1 reply; 66+ messages in thread
From: KOSAKI Motohiro @ 2010-08-31  6:54 UTC (permalink / raw)
  To: KOSAKI Motohiro
  Cc: kosaki.motohiro, M. Vefa Bicakci, Linux Kernel Mailing List

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

> > === 8< ===
> > PM: Marking nosave pages: ...0009f000 - ...000100000
> > PM: basic memory bitmaps created
> > PM: Syncing filesystems ... done
> > Freezing user space processes ... (elapsed 0.01 seconds) done.
> > Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
> > PM: Preallocating image memory...
> > shrink_all_memory start
> > PM: shrink memory: pass=1, req:310171 reclaimed:15492 free:360936
> > PM: shrink memory: pass=2, req:294679 reclaimed:28864 free:373981
> > PM: shrink memory: pass=3, req:265815 reclaimed:60311 free:405374
> > PM: shrink memory: pass=4, req:205504 reclaimed:97870 free:443024
> > PM: shrink memory: pass=5, req:107634 reclaimed:146948 free:492141
> > shrink_all_memory: req:107634 reclaimed:146948 free:492141
> > PM: preallocate_image_highmem 556658 278329
> > PM: preallocate_image_memory 103139 103139
> > PM: preallocate_highmem_fraction 183908 556658 760831 -> 183908
> > === >8 ===
> > 
> > According to your patch, the next output should have been
> > "preallocate_image_memory ...", but it never gets printed, so the
> > hang point should be that function.
> 
> Great!
> I've attached more verbose debug message patch and trial bug fixing patch.
> Could you please to try this?

Oops, please apply attached patch instead 0002-add-gfp_noretry.patch.

Thanks.

[-- Attachment #2: 0001-do_try_to_free_pages-oom_killer_disabled.patch --]
[-- Type: application/octet-stream, Size: 955 bytes --]

From 88349215862785c4477abcb9c07555cfb7454697 Mon Sep 17 00:00:00 2001
From: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Date: Mon, 15 Feb 2044 01:17:09 +0900
Subject: [PATCH] do_try_to_free_pages() oom_killer_disabled

Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
---
 mm/vmscan.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/mm/vmscan.c b/mm/vmscan.c
index be133ac..69810ae 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -40,6 +40,7 @@
 #include <linux/memcontrol.h>
 #include <linux/delayacct.h>
 #include <linux/sysctl.h>
+#include <linux/oom.h>
 
 #include <asm/tlbflush.h>
 #include <asm/div64.h>
@@ -1931,7 +1932,7 @@ out:
 		return sc->nr_reclaimed;
 
 	/* top priority shrink_zones still had more to do? don't OOM, then */
-	if (scanning_global_lru(sc) && !all_unreclaimable)
+	if (scanning_global_lru(sc) && !all_unreclaimable && !oom_killer_disabled)
 		return 1;
 
 	return 0;
-- 
1.6.5.2


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

* Re: [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernationto hang
  2010-08-31  6:54                       ` KOSAKI Motohiro
@ 2010-08-31 11:25                         ` M. Vefa Bicakci
  0 siblings, 0 replies; 66+ messages in thread
From: M. Vefa Bicakci @ 2010-08-31 11:25 UTC (permalink / raw)
  To: KOSAKI Motohiro; +Cc: Linux Kernel Mailing List

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

On 31/08/10 09:54 AM, KOSAKI Motohiro wrote:
>> Great!
>> I've attached more verbose debug message patch and trial bug fixing patch.
>> Could you please to try this?
> 
> Oops, please apply attached patch instead 0002-add-gfp_noretry.patch.
> 
> Thanks.

Hello!

I have applied the patches you mentioned, and rebuilt and tested the
2.6.35.4 kernel. I am really happy to say that your patches (cumulatively)
fixed the issue!

Unfortunately, because the hibernation is rather quick, I am having a
hard time getting screen-shots with my camera. If you would like, I can
try to put some sleeps around the code so that I can get the output for
you.

For the record, the attached patch is the cumulative version of all of
your patches. It applies cleanly to 2.6.35.4, and most importantly, it
fixes the issue.

All in all, thanks a lot!

Is there anything else I can do? Would you like me to try a trimmed
version of your patch, maybe without the debugging parts and the 5-pass
swap-out procedure, which I am not sure is essential or not?

Thanks again,

M. Vefa Bicakci

[-- Attachment #2: mm-patch-debug+fix-full.txt --]
[-- Type: text/plain, Size: 10387 bytes --]

diff --git a/kernel/power/snapshot.c b/kernel/power/snapshot.c
index 25ce010..c672931 100644
--- a/kernel/power/snapshot.c
+++ b/kernel/power/snapshot.c
@@ -1257,12 +1257,15 @@ static unsigned long minimum_image_size(unsigned long saveable)
 int hibernate_preallocate_memory(void)
 {
 	struct zone *zone;
-	unsigned long saveable, size, max_size, count, highmem, pages = 0;
+	unsigned long saveable, max_size, count, highmem, pages = 0;
 	unsigned long alloc, save_highmem, pages_highmem;
 	struct timeval start, stop;
 	int error;
+	unsigned long additional_size, img_size;
+	unsigned long pages_fraction;
+	unsigned long img_pages;
 
-	printk(KERN_INFO "PM: Preallocating image memory... ");
+	printk(KERN_INFO "PM: Preallocating image memory... \n");
 	do_gettimeofday(&start);
 
 	error = memory_bm_create(&orig_bm, GFP_IMAGE, PG_ANY);
@@ -1287,9 +1290,9 @@ int hibernate_preallocate_memory(void)
 	count = saveable;
 	saveable += save_highmem;
 	highmem = save_highmem;
-	size = 0;
+	additional_size = 0;
 	for_each_populated_zone(zone) {
-		size += snapshot_additional_pages(zone);
+		additional_size += snapshot_additional_pages(zone);
 		if (is_highmem(zone))
 			highmem += zone_page_state(zone, NR_FREE_PAGES);
 		else
@@ -1298,25 +1301,36 @@ int hibernate_preallocate_memory(void)
 	count += highmem;
 	count -= totalreserve_pages;
 
+	printk(KERN_INFO "PM: save_highmem(%lu), saveable(%lu) count=(%lu)\n",
+	       save_highmem, saveable, count);
+
 	/* Compute the maximum number of saveable pages to leave in memory. */
-	max_size = (count - (size + PAGES_FOR_IO)) / 2 - 2 * SPARE_PAGES;
-	size = DIV_ROUND_UP(image_size, PAGE_SIZE);
-	if (size > max_size)
-		size = max_size;
+	max_size = (count - (additional_size + PAGES_FOR_IO)) / 2 - 2 * SPARE_PAGES;
+	img_size = DIV_ROUND_UP(image_size, PAGE_SIZE);
+	if (img_size > max_size)
+		img_size = max_size;
+
+	printk(KERN_INFO "PM: max_size(%lu), image_size(%lu), img_size(%lu)\n",
+	       max_size, image_size, img_size);
+
 	/*
 	 * If the maximum is not less than the current number of saveable pages
 	 * in memory, allocate page frames for the image and we're done.
 	 */
-	if (size >= saveable) {
+	if (img_size >= saveable) {
+		printk(KERN_INFO "PM: size >= saveable. skip \n");
 		pages = preallocate_image_highmem(save_highmem);
 		pages += preallocate_image_memory(saveable - pages);
 		goto out;
 	}
 
 	/* Estimate the minimum size of the image. */
-	pages = minimum_image_size(saveable);
-	if (size < pages)
-		size = min_t(unsigned long, pages, max_size);
+	img_pages = minimum_image_size(saveable);
+	if (img_size < img_pages)
+		img_size = min_t(unsigned long, img_pages, max_size);
+
+	printk(KERN_INFO "PM: img_pages(%lu), img_size(%lu)\n",
+	       img_pages, img_size);
 
 	/*
 	 * Let the memory management subsystem know that we're going to need a
@@ -1324,7 +1338,7 @@ int hibernate_preallocate_memory(void)
 	 * NOTE: If this is not done, performance will be hurt badly in some
 	 * test cases.
 	 */
-	shrink_all_memory(saveable - size);
+	shrink_all_memory(saveable - img_size);
 
 	/*
 	 * The number of saveable pages in memory was too high, so apply some
@@ -1334,16 +1348,31 @@ int hibernate_preallocate_memory(void)
 	 * highmem and non-highmem zones separately.
 	 */
 	pages_highmem = preallocate_image_highmem(highmem / 2);
+	printk(KERN_INFO "PM: preallocate_image_highmem %lu %lu free(%u/%lu)\n",
+	       highmem, pages_highmem, nr_free_highpages(), global_page_state(NR_FREE_PAGES));
+
 	alloc = (count - max_size) - pages_highmem;
 	pages = preallocate_image_memory(alloc);
-	if (pages < alloc)
+	printk(KERN_INFO "PM: preallocate_image_memory %lu %lu free(%u/%lu)\n",
+	       alloc, pages, nr_free_highpages(), global_page_state(NR_FREE_PAGES));
+
+	if (pages < alloc) {
+		printk(KERN_INFO "PM: pages(%lu) < alloc(%lu). error. \n",
+		       pages, alloc);
 		goto err_out;
-	size = max_size - size;
-	alloc = size;
-	size = preallocate_highmem_fraction(size, highmem, count);
-	pages_highmem += size;
-	alloc -= size;
+	}
+
+	alloc = max_size - img_size;
+
+	pages_fraction = preallocate_highmem_fraction(alloc, highmem, count);
+	printk(KERN_INFO "PM: preallocate_highmem_fraction %lu %lu %lu -> %lu free(%u/%lu)\n",
+	       alloc, highmem, count, pages_fraction, nr_free_highpages(), global_page_state(NR_FREE_PAGES));
+
+	pages_highmem += pages_fraction;
+	alloc -= pages_fraction;
 	pages += preallocate_image_memory(alloc);
+	printk(KERN_INFO "PM: preallocate_image_memory %lu %lu free(%u/%lu)\n",
+	       alloc, pages, nr_free_highpages(), global_page_state(NR_FREE_PAGES));
 	pages += pages_highmem;
 
 	/*
@@ -1351,18 +1380,20 @@ int hibernate_preallocate_memory(void)
 	 * pages in memory, but we have allocated more.  Release the excessive
 	 * ones now.
 	 */
+	printk(KERN_INFO "PM: free_unnecessary_pages() \n");
 	free_unnecessary_pages();
 
  out:
 	do_gettimeofday(&stop);
-	printk(KERN_CONT "done (allocated %lu pages)\n", pages);
+	printk(KERN_INFO "done (allocated %lu pages)\n", pages);
 	swsusp_show_speed(&start, &stop, pages, "Allocated");
 
 	return 0;
 
  err_out:
-	printk(KERN_CONT "\n");
+	printk(KERN_INFO "PM: err_out \n");
 	swsusp_free();
+	printk(KERN_INFO "PM: swsusp_free() end \n");
 	return -ENOMEM;
 }
 
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index d24f761..3b72836 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -961,6 +961,43 @@ static struct ctl_table kern_table[] = {
 	{ }
 };
 
+static int sysctl_shrink_all_memory;
+static int shrink_all_memory_handler(ctl_table *table, int write,
+				     void __user *buffer, size_t *length,
+				     loff_t *ppos)
+{
+	proc_dointvec_minmax(table, write, buffer, length, ppos);
+	if (write) {
+		shrink_all_memory(sysctl_shrink_all_memory);
+	}
+	return 0;
+}
+
+#include <linux/mm_types.h>
+#include <linux/mmzone.h>
+
+static int reset_reclaim_stat_handler(ctl_table *table, int write,
+				      void __user *buffer, size_t *length,
+				      loff_t *ppos)
+{
+	struct zone *zone;
+	struct zone_reclaim_stat *rstat;
+
+	if (write) {
+		for_each_populated_zone(zone) {
+			spin_lock_irq(&zone->lru_lock);
+			rstat = &zone->reclaim_stat;
+			rstat->recent_scanned[0] = 0;
+			rstat->recent_rotated[0] = 0;
+			rstat->recent_scanned[1] = 0;
+			rstat->recent_rotated[1] = 0;
+			spin_unlock_irq(&zone->lru_lock);
+		}
+
+	}
+	return 0;
+}
+
 static struct ctl_table vm_table[] = {
 	{
 		.procname	= "overcommit_memory",
@@ -1318,6 +1355,20 @@ static struct ctl_table vm_table[] = {
 		.extra2		= &one,
 	},
 #endif
+	{
+		.procname	= "shrink_all_memory",
+		.data		= &sysctl_shrink_all_memory,
+		.maxlen		= sizeof(sysctl_shrink_all_memory),
+		.mode		= 0644,
+		.proc_handler	= shrink_all_memory_handler,
+	},
+	{
+		.procname	= "reset_reclaim_stat",
+		.data		= &sysctl_shrink_all_memory,
+		.maxlen		= sizeof(sysctl_shrink_all_memory),
+		.mode		= 0644,
+		.proc_handler	= reset_reclaim_stat_handler,
+	},
 
 /*
  * NOTE: do not add new entries to this table unless you have read
diff --git a/mm/vmscan.c b/mm/vmscan.c
index b94fe1b..100282c 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -40,6 +40,7 @@
 #include <linux/memcontrol.h>
 #include <linux/delayacct.h>
 #include <linux/sysctl.h>
+#include <linux/oom.h>
 
 #include <asm/tlbflush.h>
 #include <asm/div64.h>
@@ -611,7 +612,7 @@ static enum page_references page_check_references(struct page *page,
 	}
 
 	/* Reclaim if clean, defer dirty pages to writeback */
-	if (referenced_page)
+	if (referenced_page && !PageSwapBacked(page))
 		return PAGEREF_RECLAIM_CLEAN;
 
 	return PAGEREF_RECLAIM;
@@ -1879,7 +1880,7 @@ out:
 		return sc->nr_reclaimed;
 
 	/* top priority shrink_zones still had more to do? don't OOM, then */
-	if (scanning_global_lru(sc) && !all_unreclaimable)
+	if (scanning_global_lru(sc) && !all_unreclaimable && !oom_killer_disabled)
 		return 1;
 
 	return 0;
@@ -2395,6 +2396,7 @@ unsigned long zone_reclaimable_pages(struct zone *zone)
  */
 unsigned long shrink_all_memory(unsigned long nr_to_reclaim)
 {
+	int i;
 	struct reclaim_state reclaim_state;
 	struct scan_control sc = {
 		.gfp_mask = GFP_HIGHUSER_MOVABLE,
@@ -2410,17 +2412,36 @@ unsigned long shrink_all_memory(unsigned long nr_to_reclaim)
 	struct task_struct *p = current;
 	unsigned long nr_reclaimed;
 
+	printk(KERN_ERR "shrink_all_memory start\n");
+
 	p->flags |= PF_MEMALLOC;
 	lockdep_set_current_reclaim_state(sc.gfp_mask);
 	reclaim_state.reclaimed_slab = 0;
 	p->reclaim_state = &reclaim_state;
 
-	nr_reclaimed = do_try_to_free_pages(zonelist, &sc);
+	for (i = 1; i <= 5; i++) {
+		nr_reclaimed = do_try_to_free_pages(zonelist, &sc);
+
+		printk(KERN_INFO "PM: shrink memory: pass=%d, req:%ld reclaimed:%ld free:%ld\n",
+		       i,
+		       nr_to_reclaim,
+		       nr_reclaimed,
+		       global_page_state(NR_FREE_PAGES));
+
+		if (nr_to_reclaim <=  nr_reclaimed)
+			break;
+		nr_to_reclaim -= nr_reclaimed;
+	}
 
 	p->reclaim_state = NULL;
 	lockdep_clear_current_reclaim_state();
 	p->flags &= ~PF_MEMALLOC;
 
+	printk(KERN_ERR "shrink_all_memory: req:%ld reclaimed:%ld free:%ld\n",
+	       nr_to_reclaim,
+		nr_reclaimed,
+	       global_page_state(NR_FREE_PAGES));
+
 	return nr_reclaimed;
 }
 #endif /* CONFIG_HIBERNATION */
diff --git a/mm/vmstat.c b/mm/vmstat.c
index 7759941..bee3ba3 100644
--- a/mm/vmstat.c
+++ b/mm/vmstat.c
@@ -860,6 +860,33 @@ static void zoneinfo_show_print(struct seq_file *m, pg_data_t *pgdat,
 		   zone->prev_priority,
 		   zone->zone_start_pfn,
 		   zone->inactive_ratio);
+
+	{
+		extern int vm_swappiness;
+		int anon_prio = vm_swappiness;
+		int file_prio = 200 - vm_swappiness;
+		unsigned long ap;
+		unsigned long fp;
+		struct zone_reclaim_stat *reclaim_stat = &zone->reclaim_stat;
+
+		ap = (anon_prio + 1) * (reclaim_stat->recent_scanned[0] + 1);
+		ap /= reclaim_stat->recent_rotated[0] + 1;
+		fp = (file_prio + 1) * (reclaim_stat->recent_scanned[1] + 1);
+		fp /= reclaim_stat->recent_rotated[1] + 1;
+
+		seq_printf(m,
+			   "\n recent_anon_rotated: %lu"
+			   "\n recent_anon_scanned: %lu"
+			   "\n recent_file_rotated: %lu"
+			   "\n recent_file_scanned: %lu"
+			   "\n anon_ratio:          %lu"
+			   ,
+			   zone->reclaim_stat.recent_rotated[0],
+			   zone->reclaim_stat.recent_scanned[0],
+			   zone->reclaim_stat.recent_rotated[1],
+			   zone->reclaim_stat.recent_scanned[1],
+			   (ap * 100) / (ap + fp +1));
+	}
 	seq_putc(m, '\n');
 }
 

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

* Re: [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang
  2010-08-30 16:54                   ` [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang M. Vefa Bicakci
  2010-08-31  6:35                     ` KOSAKI Motohiro
@ 2010-09-01  0:48                     ` KOSAKI Motohiro
  2010-09-01 22:02                       ` Rafael J. Wysocki
  2010-09-01 22:02                       ` Rafael J. Wysocki
  2010-09-01  0:48                     ` KOSAKI Motohiro
  2 siblings, 2 replies; 66+ messages in thread
From: KOSAKI Motohiro @ 2010-09-01  0:48 UTC (permalink / raw)
  To: M. Vefa Bicakci, Rafael J. Wysocki
  Cc: kosaki.motohiro, Linux Kernel Mailing List, linux-pm

> === 8< ===
> PM: Marking nosave pages: ...0009f000 - ...000100000
> PM: basic memory bitmaps created
> PM: Syncing filesystems ... done
> Freezing user space processes ... (elapsed 0.01 seconds) done.
> Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
> PM: Preallocating image memory...
> shrink_all_memory start
> PM: shrink memory: pass=1, req:310171 reclaimed:15492 free:360936
> PM: shrink memory: pass=2, req:294679 reclaimed:28864 free:373981
> PM: shrink memory: pass=3, req:265815 reclaimed:60311 free:405374
> PM: shrink memory: pass=4, req:205504 reclaimed:97870 free:443024
> PM: shrink memory: pass=5, req:107634 reclaimed:146948 free:492141
> shrink_all_memory: req:107634 reclaimed:146948 free:492141
> PM: preallocate_image_highmem 556658 278329
> PM: preallocate_image_memory 103139 103139
> PM: preallocate_highmem_fraction 183908 556658 760831 -> 183908
> === >8 ===

Rafael, this log mean hibernate_preallocate_memory() has a bug.
It allocate memory as following order.
 1. preallocate_image_highmem()  (i.e. __GFP_HIGHMEM)
 2. preallocate_image_memory()   (i.e. GFP_KERNEL)
 3. preallocate_highmem_fraction (i.e. __GFP_HIGHMEM)
 4. preallocate_image_memory()   (i.e. GFP_KERNEL)

But, please imazine following scenario (as Vefa's scenario).
 - system has 3GB memory. 1GB is normal. 2GB is highmem.
 - all normal memory is free
 - 1.5GB memory of highmem are used for tmpfs. rest 500MB is free.

At that time, hibernate_preallocate_memory() works as following.

1. call preallocate_image_highmem(1GB)
2. call preallocate_image_memory(500M)		total 1.5GB allocated
3. call preallocate_highmem_fraction(660M)	total 2.2GB allocated

then, all of normal zone memory was exhaust. next preallocate_image_memory()
makes OOM, and oom_killer_disabled makes infinite loop.
(oom_killer_disabled careless is vmscan bug. I'll fix it soon)

The problem is, alloc_pages(__GFP_HIGHMEM) -> alloc_pages(GFP_KERNEL) is
wrong order. alloc_pages(__GFP_HIGHMEM) may allocate page from lower zone.
then, next alloc_pages(GFP_KERNEL) lead to OOM.

Please consider alloc_pages(GFP_KERNEL) -> alloc_pages(__GFP_HIGHMEM) order.
Even though vmscan fix can avoid infinite loop, OOM situation might makes
big slow down on highmem machine. It seems no good.


Thanks.



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

* Re: [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang
  2010-08-30 16:54                   ` [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang M. Vefa Bicakci
  2010-08-31  6:35                     ` KOSAKI Motohiro
  2010-09-01  0:48                     ` [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang KOSAKI Motohiro
@ 2010-09-01  0:48                     ` KOSAKI Motohiro
  2 siblings, 0 replies; 66+ messages in thread
From: KOSAKI Motohiro @ 2010-09-01  0:48 UTC (permalink / raw)
  To: M. Vefa Bicakci, Rafael J. Wysocki
  Cc: linux-pm, Linux Kernel Mailing List, kosaki.motohiro

> === 8< ===
> PM: Marking nosave pages: ...0009f000 - ...000100000
> PM: basic memory bitmaps created
> PM: Syncing filesystems ... done
> Freezing user space processes ... (elapsed 0.01 seconds) done.
> Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
> PM: Preallocating image memory...
> shrink_all_memory start
> PM: shrink memory: pass=1, req:310171 reclaimed:15492 free:360936
> PM: shrink memory: pass=2, req:294679 reclaimed:28864 free:373981
> PM: shrink memory: pass=3, req:265815 reclaimed:60311 free:405374
> PM: shrink memory: pass=4, req:205504 reclaimed:97870 free:443024
> PM: shrink memory: pass=5, req:107634 reclaimed:146948 free:492141
> shrink_all_memory: req:107634 reclaimed:146948 free:492141
> PM: preallocate_image_highmem 556658 278329
> PM: preallocate_image_memory 103139 103139
> PM: preallocate_highmem_fraction 183908 556658 760831 -> 183908
> === >8 ===

Rafael, this log mean hibernate_preallocate_memory() has a bug.
It allocate memory as following order.
 1. preallocate_image_highmem()  (i.e. __GFP_HIGHMEM)
 2. preallocate_image_memory()   (i.e. GFP_KERNEL)
 3. preallocate_highmem_fraction (i.e. __GFP_HIGHMEM)
 4. preallocate_image_memory()   (i.e. GFP_KERNEL)

But, please imazine following scenario (as Vefa's scenario).
 - system has 3GB memory. 1GB is normal. 2GB is highmem.
 - all normal memory is free
 - 1.5GB memory of highmem are used for tmpfs. rest 500MB is free.

At that time, hibernate_preallocate_memory() works as following.

1. call preallocate_image_highmem(1GB)
2. call preallocate_image_memory(500M)		total 1.5GB allocated
3. call preallocate_highmem_fraction(660M)	total 2.2GB allocated

then, all of normal zone memory was exhaust. next preallocate_image_memory()
makes OOM, and oom_killer_disabled makes infinite loop.
(oom_killer_disabled careless is vmscan bug. I'll fix it soon)

The problem is, alloc_pages(__GFP_HIGHMEM) -> alloc_pages(GFP_KERNEL) is
wrong order. alloc_pages(__GFP_HIGHMEM) may allocate page from lower zone.
then, next alloc_pages(GFP_KERNEL) lead to OOM.

Please consider alloc_pages(GFP_KERNEL) -> alloc_pages(__GFP_HIGHMEM) order.
Even though vmscan fix can avoid infinite loop, OOM situation might makes
big slow down on highmem machine. It seems no good.


Thanks.

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

* Re: [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang
  2010-09-01  0:48                     ` [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang KOSAKI Motohiro
  2010-09-01 22:02                       ` Rafael J. Wysocki
@ 2010-09-01 22:02                       ` Rafael J. Wysocki
  2010-09-02  0:31                         ` KOSAKI Motohiro
  2010-09-02  0:31                         ` KOSAKI Motohiro
  1 sibling, 2 replies; 66+ messages in thread
From: Rafael J. Wysocki @ 2010-09-01 22:02 UTC (permalink / raw)
  To: KOSAKI Motohiro; +Cc: M. Vefa Bicakci, Linux Kernel Mailing List, linux-pm

On Wednesday, September 01, 2010, KOSAKI Motohiro wrote:
> > === 8< ===
> > PM: Marking nosave pages: ...0009f000 - ...000100000
> > PM: basic memory bitmaps created
> > PM: Syncing filesystems ... done
> > Freezing user space processes ... (elapsed 0.01 seconds) done.
> > Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
> > PM: Preallocating image memory...
> > shrink_all_memory start
> > PM: shrink memory: pass=1, req:310171 reclaimed:15492 free:360936
> > PM: shrink memory: pass=2, req:294679 reclaimed:28864 free:373981
> > PM: shrink memory: pass=3, req:265815 reclaimed:60311 free:405374
> > PM: shrink memory: pass=4, req:205504 reclaimed:97870 free:443024
> > PM: shrink memory: pass=5, req:107634 reclaimed:146948 free:492141
> > shrink_all_memory: req:107634 reclaimed:146948 free:492141
> > PM: preallocate_image_highmem 556658 278329
> > PM: preallocate_image_memory 103139 103139
> > PM: preallocate_highmem_fraction 183908 556658 760831 -> 183908
> > === >8 ===
> 
> Rafael, this log mean hibernate_preallocate_memory() has a bug.

Well, it works as designed ...

> It allocate memory as following order.
>  1. preallocate_image_highmem()  (i.e. __GFP_HIGHMEM)
>  2. preallocate_image_memory()   (i.e. GFP_KERNEL)
>  3. preallocate_highmem_fraction (i.e. __GFP_HIGHMEM)
>  4. preallocate_image_memory()   (i.e. GFP_KERNEL)
> 
> But, please imazine following scenario (as Vefa's scenario).
>  - system has 3GB memory. 1GB is normal. 2GB is highmem.
>  - all normal memory is free
>  - 1.5GB memory of highmem are used for tmpfs. rest 500MB is free.

Indeed, that's a memory allocation pattern I didn't anticipate.

> At that time, hibernate_preallocate_memory() works as following.
> 
> 1. call preallocate_image_highmem(1GB)
> 2. call preallocate_image_memory(500M)		total 1.5GB allocated
> 3. call preallocate_highmem_fraction(660M)	total 2.2GB allocated
> 
> then, all of normal zone memory was exhaust. next preallocate_image_memory()
> makes OOM, and oom_killer_disabled makes infinite loop.
> (oom_killer_disabled careless is vmscan bug. I'll fix it soon)

So, it looks like the problem will go away if we check if there are any normal
pages to allocate from before calling the last preallocate_image_memory()?

Like in the patch below, perhaps?

> The problem is, alloc_pages(__GFP_HIGHMEM) -> alloc_pages(GFP_KERNEL) is
> wrong order. alloc_pages(__GFP_HIGHMEM) may allocate page from lower zone.
> then, next alloc_pages(GFP_KERNEL) lead to OOM.
> 
> Please consider alloc_pages(GFP_KERNEL) -> alloc_pages(__GFP_HIGHMEM) order.
> Even though vmscan fix can avoid infinite loop, OOM situation might makes
> big slow down on highmem machine. It seems no good.

There's a problem with the ordering change that it wouldn't be clear how many
pages to request from the normal zone in step 1 and 3.

Thanks,
Rafael 

---
 kernel/power/snapshot.c |   11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

Index: linux-2.6/kernel/power/snapshot.c
===================================================================
--- linux-2.6.orig/kernel/power/snapshot.c
+++ linux-2.6/kernel/power/snapshot.c
@@ -1259,7 +1259,7 @@ int hibernate_preallocate_memory(void)
 {
 	struct zone *zone;
 	unsigned long saveable, size, max_size, count, highmem, pages = 0;
-	unsigned long alloc, save_highmem, pages_highmem;
+	unsigned long alloc, save_highmem, pages_highmem, size_normal;
 	struct timeval start, stop;
 	int error;
 
@@ -1296,6 +1296,7 @@ int hibernate_preallocate_memory(void)
 		else
 			count += zone_page_state(zone, NR_FREE_PAGES);
 	}
+	size_normal = count;
 	count += highmem;
 	count -= totalreserve_pages;
 
@@ -1344,7 +1345,13 @@ int hibernate_preallocate_memory(void)
 	size = preallocate_highmem_fraction(size, highmem, count);
 	pages_highmem += size;
 	alloc -= size;
-	pages += preallocate_image_memory(alloc);
+	/* Check if there are any non-highmem pages to allocate from. */
+	if (alloc_normal < size_normal) {
+		size_normal -= alloc_normal;
+		if (alloc > size_normal)
+			alloc = size_normal;
+		pages += preallocate_image_memory(alloc);
+	}
 	pages += pages_highmem;
 
 	/*

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

* Re: [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang
  2010-09-01  0:48                     ` [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang KOSAKI Motohiro
@ 2010-09-01 22:02                       ` Rafael J. Wysocki
  2010-09-01 22:02                       ` Rafael J. Wysocki
  1 sibling, 0 replies; 66+ messages in thread
From: Rafael J. Wysocki @ 2010-09-01 22:02 UTC (permalink / raw)
  To: KOSAKI Motohiro; +Cc: linux-pm, M. Vefa Bicakci, Linux Kernel Mailing List

On Wednesday, September 01, 2010, KOSAKI Motohiro wrote:
> > === 8< ===
> > PM: Marking nosave pages: ...0009f000 - ...000100000
> > PM: basic memory bitmaps created
> > PM: Syncing filesystems ... done
> > Freezing user space processes ... (elapsed 0.01 seconds) done.
> > Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
> > PM: Preallocating image memory...
> > shrink_all_memory start
> > PM: shrink memory: pass=1, req:310171 reclaimed:15492 free:360936
> > PM: shrink memory: pass=2, req:294679 reclaimed:28864 free:373981
> > PM: shrink memory: pass=3, req:265815 reclaimed:60311 free:405374
> > PM: shrink memory: pass=4, req:205504 reclaimed:97870 free:443024
> > PM: shrink memory: pass=5, req:107634 reclaimed:146948 free:492141
> > shrink_all_memory: req:107634 reclaimed:146948 free:492141
> > PM: preallocate_image_highmem 556658 278329
> > PM: preallocate_image_memory 103139 103139
> > PM: preallocate_highmem_fraction 183908 556658 760831 -> 183908
> > === >8 ===
> 
> Rafael, this log mean hibernate_preallocate_memory() has a bug.

Well, it works as designed ...

> It allocate memory as following order.
>  1. preallocate_image_highmem()  (i.e. __GFP_HIGHMEM)
>  2. preallocate_image_memory()   (i.e. GFP_KERNEL)
>  3. preallocate_highmem_fraction (i.e. __GFP_HIGHMEM)
>  4. preallocate_image_memory()   (i.e. GFP_KERNEL)
> 
> But, please imazine following scenario (as Vefa's scenario).
>  - system has 3GB memory. 1GB is normal. 2GB is highmem.
>  - all normal memory is free
>  - 1.5GB memory of highmem are used for tmpfs. rest 500MB is free.

Indeed, that's a memory allocation pattern I didn't anticipate.

> At that time, hibernate_preallocate_memory() works as following.
> 
> 1. call preallocate_image_highmem(1GB)
> 2. call preallocate_image_memory(500M)		total 1.5GB allocated
> 3. call preallocate_highmem_fraction(660M)	total 2.2GB allocated
> 
> then, all of normal zone memory was exhaust. next preallocate_image_memory()
> makes OOM, and oom_killer_disabled makes infinite loop.
> (oom_killer_disabled careless is vmscan bug. I'll fix it soon)

So, it looks like the problem will go away if we check if there are any normal
pages to allocate from before calling the last preallocate_image_memory()?

Like in the patch below, perhaps?

> The problem is, alloc_pages(__GFP_HIGHMEM) -> alloc_pages(GFP_KERNEL) is
> wrong order. alloc_pages(__GFP_HIGHMEM) may allocate page from lower zone.
> then, next alloc_pages(GFP_KERNEL) lead to OOM.
> 
> Please consider alloc_pages(GFP_KERNEL) -> alloc_pages(__GFP_HIGHMEM) order.
> Even though vmscan fix can avoid infinite loop, OOM situation might makes
> big slow down on highmem machine. It seems no good.

There's a problem with the ordering change that it wouldn't be clear how many
pages to request from the normal zone in step 1 and 3.

Thanks,
Rafael 

---
 kernel/power/snapshot.c |   11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

Index: linux-2.6/kernel/power/snapshot.c
===================================================================
--- linux-2.6.orig/kernel/power/snapshot.c
+++ linux-2.6/kernel/power/snapshot.c
@@ -1259,7 +1259,7 @@ int hibernate_preallocate_memory(void)
 {
 	struct zone *zone;
 	unsigned long saveable, size, max_size, count, highmem, pages = 0;
-	unsigned long alloc, save_highmem, pages_highmem;
+	unsigned long alloc, save_highmem, pages_highmem, size_normal;
 	struct timeval start, stop;
 	int error;
 
@@ -1296,6 +1296,7 @@ int hibernate_preallocate_memory(void)
 		else
 			count += zone_page_state(zone, NR_FREE_PAGES);
 	}
+	size_normal = count;
 	count += highmem;
 	count -= totalreserve_pages;
 
@@ -1344,7 +1345,13 @@ int hibernate_preallocate_memory(void)
 	size = preallocate_highmem_fraction(size, highmem, count);
 	pages_highmem += size;
 	alloc -= size;
-	pages += preallocate_image_memory(alloc);
+	/* Check if there are any non-highmem pages to allocate from. */
+	if (alloc_normal < size_normal) {
+		size_normal -= alloc_normal;
+		if (alloc > size_normal)
+			alloc = size_normal;
+		pages += preallocate_image_memory(alloc);
+	}
 	pages += pages_highmem;
 
 	/*

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

* Re: [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang
  2010-09-01 22:02                       ` Rafael J. Wysocki
  2010-09-02  0:31                         ` KOSAKI Motohiro
@ 2010-09-02  0:31                         ` KOSAKI Motohiro
  2010-09-02 19:57                           ` Rafael J. Wysocki
  2010-09-02 19:57                           ` Rafael J. Wysocki
  1 sibling, 2 replies; 66+ messages in thread
From: KOSAKI Motohiro @ 2010-09-02  0:31 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: kosaki.motohiro, M. Vefa Bicakci, Linux Kernel Mailing List, linux-pm

> On Wednesday, September 01, 2010, KOSAKI Motohiro wrote:
> > > === 8< ===
> > > PM: Marking nosave pages: ...0009f000 - ...000100000
> > > PM: basic memory bitmaps created
> > > PM: Syncing filesystems ... done
> > > Freezing user space processes ... (elapsed 0.01 seconds) done.
> > > Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
> > > PM: Preallocating image memory...
> > > shrink_all_memory start
> > > PM: shrink memory: pass=1, req:310171 reclaimed:15492 free:360936
> > > PM: shrink memory: pass=2, req:294679 reclaimed:28864 free:373981
> > > PM: shrink memory: pass=3, req:265815 reclaimed:60311 free:405374
> > > PM: shrink memory: pass=4, req:205504 reclaimed:97870 free:443024
> > > PM: shrink memory: pass=5, req:107634 reclaimed:146948 free:492141
> > > shrink_all_memory: req:107634 reclaimed:146948 free:492141
> > > PM: preallocate_image_highmem 556658 278329
> > > PM: preallocate_image_memory 103139 103139
> > > PM: preallocate_highmem_fraction 183908 556658 760831 -> 183908
> > > === >8 ===
> > 
> > Rafael, this log mean hibernate_preallocate_memory() has a bug.
> 
> Well, it works as designed ...
> 
> > It allocate memory as following order.
> >  1. preallocate_image_highmem()  (i.e. __GFP_HIGHMEM)
> >  2. preallocate_image_memory()   (i.e. GFP_KERNEL)
> >  3. preallocate_highmem_fraction (i.e. __GFP_HIGHMEM)
> >  4. preallocate_image_memory()   (i.e. GFP_KERNEL)
> > 
> > But, please imazine following scenario (as Vefa's scenario).
> >  - system has 3GB memory. 1GB is normal. 2GB is highmem.
> >  - all normal memory is free
> >  - 1.5GB memory of highmem are used for tmpfs. rest 500MB is free.
> 
> Indeed, that's a memory allocation pattern I didn't anticipate.
> 
> > At that time, hibernate_preallocate_memory() works as following.
> > 
> > 1. call preallocate_image_highmem(1GB)
> > 2. call preallocate_image_memory(500M)		total 1.5GB allocated
> > 3. call preallocate_highmem_fraction(660M)	total 2.2GB allocated
> > 
> > then, all of normal zone memory was exhaust. next preallocate_image_memory()
> > makes OOM, and oom_killer_disabled makes infinite loop.
> > (oom_killer_disabled careless is vmscan bug. I'll fix it soon)
> 
> So, it looks like the problem will go away if we check if there are any normal
> pages to allocate from before calling the last preallocate_image_memory()?
> 
> Like in the patch below, perhaps?

Looks like fine. but I have one question. hibernate_preallocate_memory() call
preallocate_image_memory() two times. Why do you only care latter one?
former one seems similar risk.


> > The problem is, alloc_pages(__GFP_HIGHMEM) -> alloc_pages(GFP_KERNEL) is
> > wrong order. alloc_pages(__GFP_HIGHMEM) may allocate page from lower zone.
> > then, next alloc_pages(GFP_KERNEL) lead to OOM.
> > 
> > Please consider alloc_pages(GFP_KERNEL) -> alloc_pages(__GFP_HIGHMEM) order.
> > Even though vmscan fix can avoid infinite loop, OOM situation might makes
> > big slow down on highmem machine. It seems no good.
> 
> There's a problem with the ordering change that it wouldn't be clear how many
> pages to request from the normal zone in step 1 and 3.

ok, I see. thanks for good correction my mistake.





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

* Re: [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang
  2010-09-01 22:02                       ` Rafael J. Wysocki
@ 2010-09-02  0:31                         ` KOSAKI Motohiro
  2010-09-02  0:31                         ` KOSAKI Motohiro
  1 sibling, 0 replies; 66+ messages in thread
From: KOSAKI Motohiro @ 2010-09-02  0:31 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: linux-pm, M. Vefa Bicakci, Linux Kernel Mailing List, kosaki.motohiro

> On Wednesday, September 01, 2010, KOSAKI Motohiro wrote:
> > > === 8< ===
> > > PM: Marking nosave pages: ...0009f000 - ...000100000
> > > PM: basic memory bitmaps created
> > > PM: Syncing filesystems ... done
> > > Freezing user space processes ... (elapsed 0.01 seconds) done.
> > > Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
> > > PM: Preallocating image memory...
> > > shrink_all_memory start
> > > PM: shrink memory: pass=1, req:310171 reclaimed:15492 free:360936
> > > PM: shrink memory: pass=2, req:294679 reclaimed:28864 free:373981
> > > PM: shrink memory: pass=3, req:265815 reclaimed:60311 free:405374
> > > PM: shrink memory: pass=4, req:205504 reclaimed:97870 free:443024
> > > PM: shrink memory: pass=5, req:107634 reclaimed:146948 free:492141
> > > shrink_all_memory: req:107634 reclaimed:146948 free:492141
> > > PM: preallocate_image_highmem 556658 278329
> > > PM: preallocate_image_memory 103139 103139
> > > PM: preallocate_highmem_fraction 183908 556658 760831 -> 183908
> > > === >8 ===
> > 
> > Rafael, this log mean hibernate_preallocate_memory() has a bug.
> 
> Well, it works as designed ...
> 
> > It allocate memory as following order.
> >  1. preallocate_image_highmem()  (i.e. __GFP_HIGHMEM)
> >  2. preallocate_image_memory()   (i.e. GFP_KERNEL)
> >  3. preallocate_highmem_fraction (i.e. __GFP_HIGHMEM)
> >  4. preallocate_image_memory()   (i.e. GFP_KERNEL)
> > 
> > But, please imazine following scenario (as Vefa's scenario).
> >  - system has 3GB memory. 1GB is normal. 2GB is highmem.
> >  - all normal memory is free
> >  - 1.5GB memory of highmem are used for tmpfs. rest 500MB is free.
> 
> Indeed, that's a memory allocation pattern I didn't anticipate.
> 
> > At that time, hibernate_preallocate_memory() works as following.
> > 
> > 1. call preallocate_image_highmem(1GB)
> > 2. call preallocate_image_memory(500M)		total 1.5GB allocated
> > 3. call preallocate_highmem_fraction(660M)	total 2.2GB allocated
> > 
> > then, all of normal zone memory was exhaust. next preallocate_image_memory()
> > makes OOM, and oom_killer_disabled makes infinite loop.
> > (oom_killer_disabled careless is vmscan bug. I'll fix it soon)
> 
> So, it looks like the problem will go away if we check if there are any normal
> pages to allocate from before calling the last preallocate_image_memory()?
> 
> Like in the patch below, perhaps?

Looks like fine. but I have one question. hibernate_preallocate_memory() call
preallocate_image_memory() two times. Why do you only care latter one?
former one seems similar risk.


> > The problem is, alloc_pages(__GFP_HIGHMEM) -> alloc_pages(GFP_KERNEL) is
> > wrong order. alloc_pages(__GFP_HIGHMEM) may allocate page from lower zone.
> > then, next alloc_pages(GFP_KERNEL) lead to OOM.
> > 
> > Please consider alloc_pages(GFP_KERNEL) -> alloc_pages(__GFP_HIGHMEM) order.
> > Even though vmscan fix can avoid infinite loop, OOM situation might makes
> > big slow down on highmem machine. It seems no good.
> 
> There's a problem with the ordering change that it wouldn't be clear how many
> pages to request from the normal zone in step 1 and 3.

ok, I see. thanks for good correction my mistake.

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

* Re: [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang
  2010-09-02  0:31                         ` KOSAKI Motohiro
  2010-09-02 19:57                           ` Rafael J. Wysocki
@ 2010-09-02 19:57                           ` Rafael J. Wysocki
  2010-09-02 20:24                               ` Rafael J. Wysocki
  1 sibling, 1 reply; 66+ messages in thread
From: Rafael J. Wysocki @ 2010-09-02 19:57 UTC (permalink / raw)
  To: KOSAKI Motohiro; +Cc: M. Vefa Bicakci, Linux Kernel Mailing List, linux-pm

On Thursday, September 02, 2010, KOSAKI Motohiro wrote:
> > On Wednesday, September 01, 2010, KOSAKI Motohiro wrote:
> > > > === 8< ===
> > > > PM: Marking nosave pages: ...0009f000 - ...000100000
> > > > PM: basic memory bitmaps created
> > > > PM: Syncing filesystems ... done
> > > > Freezing user space processes ... (elapsed 0.01 seconds) done.
> > > > Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
> > > > PM: Preallocating image memory...
> > > > shrink_all_memory start
> > > > PM: shrink memory: pass=1, req:310171 reclaimed:15492 free:360936
> > > > PM: shrink memory: pass=2, req:294679 reclaimed:28864 free:373981
> > > > PM: shrink memory: pass=3, req:265815 reclaimed:60311 free:405374
> > > > PM: shrink memory: pass=4, req:205504 reclaimed:97870 free:443024
> > > > PM: shrink memory: pass=5, req:107634 reclaimed:146948 free:492141
> > > > shrink_all_memory: req:107634 reclaimed:146948 free:492141
> > > > PM: preallocate_image_highmem 556658 278329
> > > > PM: preallocate_image_memory 103139 103139
> > > > PM: preallocate_highmem_fraction 183908 556658 760831 -> 183908
> > > > === >8 ===
> > > 
> > > Rafael, this log mean hibernate_preallocate_memory() has a bug.
> > 
> > Well, it works as designed ...
> > 
> > > It allocate memory as following order.
> > >  1. preallocate_image_highmem()  (i.e. __GFP_HIGHMEM)
> > >  2. preallocate_image_memory()   (i.e. GFP_KERNEL)
> > >  3. preallocate_highmem_fraction (i.e. __GFP_HIGHMEM)
> > >  4. preallocate_image_memory()   (i.e. GFP_KERNEL)
> > > 
> > > But, please imazine following scenario (as Vefa's scenario).
> > >  - system has 3GB memory. 1GB is normal. 2GB is highmem.
> > >  - all normal memory is free
> > >  - 1.5GB memory of highmem are used for tmpfs. rest 500MB is free.
> > 
> > Indeed, that's a memory allocation pattern I didn't anticipate.
> > 
> > > At that time, hibernate_preallocate_memory() works as following.
> > > 
> > > 1. call preallocate_image_highmem(1GB)
> > > 2. call preallocate_image_memory(500M)		total 1.5GB allocated
> > > 3. call preallocate_highmem_fraction(660M)	total 2.2GB allocated
> > > 
> > > then, all of normal zone memory was exhaust. next preallocate_image_memory()
> > > makes OOM, and oom_killer_disabled makes infinite loop.
> > > (oom_killer_disabled careless is vmscan bug. I'll fix it soon)
> > 
> > So, it looks like the problem will go away if we check if there are any normal
> > pages to allocate from before calling the last preallocate_image_memory()?
> > 
> > Like in the patch below, perhaps?
> 
> Looks like fine. but I have one question. hibernate_preallocate_memory() call
> preallocate_image_memory() two times. Why do you only care latter one?
> former one seems similar risk.

The first one is mandatory, ie. if we can't allocate the requested number of
pages at this point, we fail the entire hibernation.  In that case the
performance hit doesn't matter.

Thanks,
Rafael

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

* Re: [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang
  2010-09-02  0:31                         ` KOSAKI Motohiro
@ 2010-09-02 19:57                           ` Rafael J. Wysocki
  2010-09-02 19:57                           ` Rafael J. Wysocki
  1 sibling, 0 replies; 66+ messages in thread
From: Rafael J. Wysocki @ 2010-09-02 19:57 UTC (permalink / raw)
  To: KOSAKI Motohiro; +Cc: linux-pm, M. Vefa Bicakci, Linux Kernel Mailing List

On Thursday, September 02, 2010, KOSAKI Motohiro wrote:
> > On Wednesday, September 01, 2010, KOSAKI Motohiro wrote:
> > > > === 8< ===
> > > > PM: Marking nosave pages: ...0009f000 - ...000100000
> > > > PM: basic memory bitmaps created
> > > > PM: Syncing filesystems ... done
> > > > Freezing user space processes ... (elapsed 0.01 seconds) done.
> > > > Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
> > > > PM: Preallocating image memory...
> > > > shrink_all_memory start
> > > > PM: shrink memory: pass=1, req:310171 reclaimed:15492 free:360936
> > > > PM: shrink memory: pass=2, req:294679 reclaimed:28864 free:373981
> > > > PM: shrink memory: pass=3, req:265815 reclaimed:60311 free:405374
> > > > PM: shrink memory: pass=4, req:205504 reclaimed:97870 free:443024
> > > > PM: shrink memory: pass=5, req:107634 reclaimed:146948 free:492141
> > > > shrink_all_memory: req:107634 reclaimed:146948 free:492141
> > > > PM: preallocate_image_highmem 556658 278329
> > > > PM: preallocate_image_memory 103139 103139
> > > > PM: preallocate_highmem_fraction 183908 556658 760831 -> 183908
> > > > === >8 ===
> > > 
> > > Rafael, this log mean hibernate_preallocate_memory() has a bug.
> > 
> > Well, it works as designed ...
> > 
> > > It allocate memory as following order.
> > >  1. preallocate_image_highmem()  (i.e. __GFP_HIGHMEM)
> > >  2. preallocate_image_memory()   (i.e. GFP_KERNEL)
> > >  3. preallocate_highmem_fraction (i.e. __GFP_HIGHMEM)
> > >  4. preallocate_image_memory()   (i.e. GFP_KERNEL)
> > > 
> > > But, please imazine following scenario (as Vefa's scenario).
> > >  - system has 3GB memory. 1GB is normal. 2GB is highmem.
> > >  - all normal memory is free
> > >  - 1.5GB memory of highmem are used for tmpfs. rest 500MB is free.
> > 
> > Indeed, that's a memory allocation pattern I didn't anticipate.
> > 
> > > At that time, hibernate_preallocate_memory() works as following.
> > > 
> > > 1. call preallocate_image_highmem(1GB)
> > > 2. call preallocate_image_memory(500M)		total 1.5GB allocated
> > > 3. call preallocate_highmem_fraction(660M)	total 2.2GB allocated
> > > 
> > > then, all of normal zone memory was exhaust. next preallocate_image_memory()
> > > makes OOM, and oom_killer_disabled makes infinite loop.
> > > (oom_killer_disabled careless is vmscan bug. I'll fix it soon)
> > 
> > So, it looks like the problem will go away if we check if there are any normal
> > pages to allocate from before calling the last preallocate_image_memory()?
> > 
> > Like in the patch below, perhaps?
> 
> Looks like fine. but I have one question. hibernate_preallocate_memory() call
> preallocate_image_memory() two times. Why do you only care latter one?
> former one seems similar risk.

The first one is mandatory, ie. if we can't allocate the requested number of
pages at this point, we fail the entire hibernation.  In that case the
performance hit doesn't matter.

Thanks,
Rafael

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

* Re: [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang
  2010-09-02 19:57                           ` Rafael J. Wysocki
@ 2010-09-02 20:24                               ` Rafael J. Wysocki
  0 siblings, 0 replies; 66+ messages in thread
From: Rafael J. Wysocki @ 2010-09-02 20:24 UTC (permalink / raw)
  To: KOSAKI Motohiro
  Cc: M. Vefa Bicakci, Linux Kernel Mailing List, linux-pm, Minchan Kim

On Thursday, September 02, 2010, Rafael J. Wysocki wrote:
> On Thursday, September 02, 2010, KOSAKI Motohiro wrote:
> > > On Wednesday, September 01, 2010, KOSAKI Motohiro wrote:
> > > > > === 8< ===
> > > > > PM: Marking nosave pages: ...0009f000 - ...000100000
> > > > > PM: basic memory bitmaps created
> > > > > PM: Syncing filesystems ... done
> > > > > Freezing user space processes ... (elapsed 0.01 seconds) done.
> > > > > Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
> > > > > PM: Preallocating image memory...
> > > > > shrink_all_memory start
> > > > > PM: shrink memory: pass=1, req:310171 reclaimed:15492 free:360936
> > > > > PM: shrink memory: pass=2, req:294679 reclaimed:28864 free:373981
> > > > > PM: shrink memory: pass=3, req:265815 reclaimed:60311 free:405374
> > > > > PM: shrink memory: pass=4, req:205504 reclaimed:97870 free:443024
> > > > > PM: shrink memory: pass=5, req:107634 reclaimed:146948 free:492141
> > > > > shrink_all_memory: req:107634 reclaimed:146948 free:492141
> > > > > PM: preallocate_image_highmem 556658 278329
> > > > > PM: preallocate_image_memory 103139 103139
> > > > > PM: preallocate_highmem_fraction 183908 556658 760831 -> 183908
> > > > > === >8 ===
> > > > 
> > > > Rafael, this log mean hibernate_preallocate_memory() has a bug.
> > > 
> > > Well, it works as designed ...
> > > 
> > > > It allocate memory as following order.
> > > >  1. preallocate_image_highmem()  (i.e. __GFP_HIGHMEM)
> > > >  2. preallocate_image_memory()   (i.e. GFP_KERNEL)
> > > >  3. preallocate_highmem_fraction (i.e. __GFP_HIGHMEM)
> > > >  4. preallocate_image_memory()   (i.e. GFP_KERNEL)
> > > > 
> > > > But, please imazine following scenario (as Vefa's scenario).
> > > >  - system has 3GB memory. 1GB is normal. 2GB is highmem.
> > > >  - all normal memory is free
> > > >  - 1.5GB memory of highmem are used for tmpfs. rest 500MB is free.
> > > 
> > > Indeed, that's a memory allocation pattern I didn't anticipate.
> > > 
> > > > At that time, hibernate_preallocate_memory() works as following.
> > > > 
> > > > 1. call preallocate_image_highmem(1GB)
> > > > 2. call preallocate_image_memory(500M)		total 1.5GB allocated
> > > > 3. call preallocate_highmem_fraction(660M)	total 2.2GB allocated
> > > > 
> > > > then, all of normal zone memory was exhaust. next preallocate_image_memory()
> > > > makes OOM, and oom_killer_disabled makes infinite loop.
> > > > (oom_killer_disabled careless is vmscan bug. I'll fix it soon)
> > > 
> > > So, it looks like the problem will go away if we check if there are any normal
> > > pages to allocate from before calling the last preallocate_image_memory()?
> > > 
> > > Like in the patch below, perhaps?
> > 
> > Looks like fine. but I have one question. hibernate_preallocate_memory() call
> > preallocate_image_memory() two times. Why do you only care latter one?
> > former one seems similar risk.
> 
> The first one is mandatory, ie. if we can't allocate the requested number of
> pages at this point, we fail the entire hibernation.  In that case the
> performance hit doesn't matter.

IOW, your patch at http://lkml.org/lkml/2010/9/2/262 is still necessary to
protect against the infinite loop in that case.

Thanks,
Rafael

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

* Re: [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang
@ 2010-09-02 20:24                               ` Rafael J. Wysocki
  0 siblings, 0 replies; 66+ messages in thread
From: Rafael J. Wysocki @ 2010-09-02 20:24 UTC (permalink / raw)
  To: KOSAKI Motohiro; +Cc: linux-pm, M. Vefa Bicakci, Linux Kernel Mailing List

On Thursday, September 02, 2010, Rafael J. Wysocki wrote:
> On Thursday, September 02, 2010, KOSAKI Motohiro wrote:
> > > On Wednesday, September 01, 2010, KOSAKI Motohiro wrote:
> > > > > === 8< ===
> > > > > PM: Marking nosave pages: ...0009f000 - ...000100000
> > > > > PM: basic memory bitmaps created
> > > > > PM: Syncing filesystems ... done
> > > > > Freezing user space processes ... (elapsed 0.01 seconds) done.
> > > > > Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
> > > > > PM: Preallocating image memory...
> > > > > shrink_all_memory start
> > > > > PM: shrink memory: pass=1, req:310171 reclaimed:15492 free:360936
> > > > > PM: shrink memory: pass=2, req:294679 reclaimed:28864 free:373981
> > > > > PM: shrink memory: pass=3, req:265815 reclaimed:60311 free:405374
> > > > > PM: shrink memory: pass=4, req:205504 reclaimed:97870 free:443024
> > > > > PM: shrink memory: pass=5, req:107634 reclaimed:146948 free:492141
> > > > > shrink_all_memory: req:107634 reclaimed:146948 free:492141
> > > > > PM: preallocate_image_highmem 556658 278329
> > > > > PM: preallocate_image_memory 103139 103139
> > > > > PM: preallocate_highmem_fraction 183908 556658 760831 -> 183908
> > > > > === >8 ===
> > > > 
> > > > Rafael, this log mean hibernate_preallocate_memory() has a bug.
> > > 
> > > Well, it works as designed ...
> > > 
> > > > It allocate memory as following order.
> > > >  1. preallocate_image_highmem()  (i.e. __GFP_HIGHMEM)
> > > >  2. preallocate_image_memory()   (i.e. GFP_KERNEL)
> > > >  3. preallocate_highmem_fraction (i.e. __GFP_HIGHMEM)
> > > >  4. preallocate_image_memory()   (i.e. GFP_KERNEL)
> > > > 
> > > > But, please imazine following scenario (as Vefa's scenario).
> > > >  - system has 3GB memory. 1GB is normal. 2GB is highmem.
> > > >  - all normal memory is free
> > > >  - 1.5GB memory of highmem are used for tmpfs. rest 500MB is free.
> > > 
> > > Indeed, that's a memory allocation pattern I didn't anticipate.
> > > 
> > > > At that time, hibernate_preallocate_memory() works as following.
> > > > 
> > > > 1. call preallocate_image_highmem(1GB)
> > > > 2. call preallocate_image_memory(500M)		total 1.5GB allocated
> > > > 3. call preallocate_highmem_fraction(660M)	total 2.2GB allocated
> > > > 
> > > > then, all of normal zone memory was exhaust. next preallocate_image_memory()
> > > > makes OOM, and oom_killer_disabled makes infinite loop.
> > > > (oom_killer_disabled careless is vmscan bug. I'll fix it soon)
> > > 
> > > So, it looks like the problem will go away if we check if there are any normal
> > > pages to allocate from before calling the last preallocate_image_memory()?
> > > 
> > > Like in the patch below, perhaps?
> > 
> > Looks like fine. but I have one question. hibernate_preallocate_memory() call
> > preallocate_image_memory() two times. Why do you only care latter one?
> > former one seems similar risk.
> 
> The first one is mandatory, ie. if we can't allocate the requested number of
> pages at this point, we fail the entire hibernation.  In that case the
> performance hit doesn't matter.

IOW, your patch at http://lkml.org/lkml/2010/9/2/262 is still necessary to
protect against the infinite loop in that case.

Thanks,
Rafael

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

* Re: [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang
  2010-09-02 20:24                               ` Rafael J. Wysocki
  (?)
  (?)
@ 2010-09-03  0:13                               ` KOSAKI Motohiro
  2010-09-03  1:07                                   ` Rafael J. Wysocki
  -1 siblings, 1 reply; 66+ messages in thread
From: KOSAKI Motohiro @ 2010-09-03  0:13 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: kosaki.motohiro, M. Vefa Bicakci, Linux Kernel Mailing List,
	linux-pm, Minchan Kim

Hello,

> > > > Like in the patch below, perhaps?
> > > 
> > > Looks like fine. but I have one question. hibernate_preallocate_memory() call
> > > preallocate_image_memory() two times. Why do you only care latter one?
> > > former one seems similar risk.
> > 
> > The first one is mandatory, ie. if we can't allocate the requested number of
> > pages at this point, we fail the entire hibernation.  In that case the
> > performance hit doesn't matter.
> 
> IOW, your patch at http://lkml.org/lkml/2010/9/2/262 is still necessary to
> protect against the infinite loop in that case.

As far as I understand, we need distinguish two allocation failure.
  1) failure because no enough memory
	-> yes, hibernation should fail
 2) failure because already allocated enough lower zone memory
	-> why should we fail?

If the system has a lot of memory, scenario (2) is happen frequently than (1).
I think we need check alloc_highmem and alloc_normal variable and call
preallocate_image_highmem() again instead preallocate_image_memory()
if we've alread allocated enough lots normal memory.

nit?




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

* Re: [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang
  2010-09-02 20:24                               ` Rafael J. Wysocki
  (?)
@ 2010-09-03  0:13                               ` KOSAKI Motohiro
  -1 siblings, 0 replies; 66+ messages in thread
From: KOSAKI Motohiro @ 2010-09-03  0:13 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: linux-pm, M. Vefa Bicakci, Linux Kernel Mailing List, kosaki.motohiro

Hello,

> > > > Like in the patch below, perhaps?
> > > 
> > > Looks like fine. but I have one question. hibernate_preallocate_memory() call
> > > preallocate_image_memory() two times. Why do you only care latter one?
> > > former one seems similar risk.
> > 
> > The first one is mandatory, ie. if we can't allocate the requested number of
> > pages at this point, we fail the entire hibernation.  In that case the
> > performance hit doesn't matter.
> 
> IOW, your patch at http://lkml.org/lkml/2010/9/2/262 is still necessary to
> protect against the infinite loop in that case.

As far as I understand, we need distinguish two allocation failure.
  1) failure because no enough memory
	-> yes, hibernation should fail
 2) failure because already allocated enough lower zone memory
	-> why should we fail?

If the system has a lot of memory, scenario (2) is happen frequently than (1).
I think we need check alloc_highmem and alloc_normal variable and call
preallocate_image_highmem() again instead preallocate_image_memory()
if we've alread allocated enough lots normal memory.

nit?

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

* Re: [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang
  2010-09-03  0:13                               ` KOSAKI Motohiro
@ 2010-09-03  1:07                                   ` Rafael J. Wysocki
  0 siblings, 0 replies; 66+ messages in thread
From: Rafael J. Wysocki @ 2010-09-03  1:07 UTC (permalink / raw)
  To: KOSAKI Motohiro
  Cc: M. Vefa Bicakci, Linux Kernel Mailing List, linux-pm, Minchan Kim

On Friday, September 03, 2010, KOSAKI Motohiro wrote:
> Hello,
> 
> > > > > Like in the patch below, perhaps?
> > > > 
> > > > Looks like fine. but I have one question. hibernate_preallocate_memory() call
> > > > preallocate_image_memory() two times. Why do you only care latter one?
> > > > former one seems similar risk.
> > > 
> > > The first one is mandatory, ie. if we can't allocate the requested number of
> > > pages at this point, we fail the entire hibernation.  In that case the
> > > performance hit doesn't matter.
> > 
> > IOW, your patch at http://lkml.org/lkml/2010/9/2/262 is still necessary to
> > protect against the infinite loop in that case.
> 
> As far as I understand, we need distinguish two allocation failure.
>   1) failure because no enough memory
> 	-> yes, hibernation should fail
>  2) failure because already allocated enough lower zone memory
> 	-> why should we fail?
> 
> If the system has a lot of memory, scenario (2) is happen frequently than (1).
> I think we need check alloc_highmem and alloc_normal variable and call
> preallocate_image_highmem() again instead preallocate_image_memory()
> if we've alread allocated enough lots normal memory.
> 
> nit?

Actually I thought about that, but we don't really see hibernation fail for
this reason.  In all of the tests I carried out the requested 50% of highmem
had been allocated before allocations from the normal zone started to be
made, even if highmem was 100% full at that point.  So this appears to be
a theoretical issue and covering it would require us to change the algorithm
entirely (eg. it doesn't make sense to call preallocate_highmem_fraction() down
the road if that happens).

Thanks,
Rafael

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

* Re: [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang
@ 2010-09-03  1:07                                   ` Rafael J. Wysocki
  0 siblings, 0 replies; 66+ messages in thread
From: Rafael J. Wysocki @ 2010-09-03  1:07 UTC (permalink / raw)
  To: KOSAKI Motohiro; +Cc: linux-pm, M. Vefa Bicakci, Linux Kernel Mailing List

On Friday, September 03, 2010, KOSAKI Motohiro wrote:
> Hello,
> 
> > > > > Like in the patch below, perhaps?
> > > > 
> > > > Looks like fine. but I have one question. hibernate_preallocate_memory() call
> > > > preallocate_image_memory() two times. Why do you only care latter one?
> > > > former one seems similar risk.
> > > 
> > > The first one is mandatory, ie. if we can't allocate the requested number of
> > > pages at this point, we fail the entire hibernation.  In that case the
> > > performance hit doesn't matter.
> > 
> > IOW, your patch at http://lkml.org/lkml/2010/9/2/262 is still necessary to
> > protect against the infinite loop in that case.
> 
> As far as I understand, we need distinguish two allocation failure.
>   1) failure because no enough memory
> 	-> yes, hibernation should fail
>  2) failure because already allocated enough lower zone memory
> 	-> why should we fail?
> 
> If the system has a lot of memory, scenario (2) is happen frequently than (1).
> I think we need check alloc_highmem and alloc_normal variable and call
> preallocate_image_highmem() again instead preallocate_image_memory()
> if we've alread allocated enough lots normal memory.
> 
> nit?

Actually I thought about that, but we don't really see hibernation fail for
this reason.  In all of the tests I carried out the requested 50% of highmem
had been allocated before allocations from the normal zone started to be
made, even if highmem was 100% full at that point.  So this appears to be
a theoretical issue and covering it would require us to change the algorithm
entirely (eg. it doesn't make sense to call preallocate_highmem_fraction() down
the road if that happens).

Thanks,
Rafael

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

* Re: [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang
  2010-09-03  1:07                                   ` Rafael J. Wysocki
  (?)
@ 2010-09-03  1:53                                   ` KOSAKI Motohiro
  2010-09-04  1:44                                     ` Rafael J. Wysocki
  2010-09-04  1:44                                     ` Rafael J. Wysocki
  -1 siblings, 2 replies; 66+ messages in thread
From: KOSAKI Motohiro @ 2010-09-03  1:53 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: kosaki.motohiro, M. Vefa Bicakci, Linux Kernel Mailing List,
	linux-pm, Minchan Kim

> On Friday, September 03, 2010, KOSAKI Motohiro wrote:
> > Hello,
> > 
> > > > > > Like in the patch below, perhaps?
> > > > > 
> > > > > Looks like fine. but I have one question. hibernate_preallocate_memory() call
> > > > > preallocate_image_memory() two times. Why do you only care latter one?
> > > > > former one seems similar risk.
> > > > 
> > > > The first one is mandatory, ie. if we can't allocate the requested number of
> > > > pages at this point, we fail the entire hibernation.  In that case the
> > > > performance hit doesn't matter.
> > > 
> > > IOW, your patch at http://lkml.org/lkml/2010/9/2/262 is still necessary to
> > > protect against the infinite loop in that case.
> > 
> > As far as I understand, we need distinguish two allocation failure.
> >   1) failure because no enough memory
> > 	-> yes, hibernation should fail
> >  2) failure because already allocated enough lower zone memory
> > 	-> why should we fail?
> > 
> > If the system has a lot of memory, scenario (2) is happen frequently than (1).
> > I think we need check alloc_highmem and alloc_normal variable and call
> > preallocate_image_highmem() again instead preallocate_image_memory()
> > if we've alread allocated enough lots normal memory.
> > 
> > nit?
> 
> Actually I thought about that, but we don't really see hibernation fail for
> this reason.  In all of the tests I carried out the requested 50% of highmem
> had been allocated before allocations from the normal zone started to be
> made, even if highmem was 100% full at that point.  So this appears to be
> a theoretical issue and covering it would require us to change the algorithm
> entirely (eg. it doesn't make sense to call preallocate_highmem_fraction() down
> the road if that happens).

ok, thanks. probably I've catched your point. please feel free to use my reviewed-by
for your fix.

thanks.




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

* Re: [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang
  2010-09-03  1:07                                   ` Rafael J. Wysocki
  (?)
  (?)
@ 2010-09-03  1:53                                   ` KOSAKI Motohiro
  -1 siblings, 0 replies; 66+ messages in thread
From: KOSAKI Motohiro @ 2010-09-03  1:53 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: linux-pm, M. Vefa Bicakci, Linux Kernel Mailing List, kosaki.motohiro

> On Friday, September 03, 2010, KOSAKI Motohiro wrote:
> > Hello,
> > 
> > > > > > Like in the patch below, perhaps?
> > > > > 
> > > > > Looks like fine. but I have one question. hibernate_preallocate_memory() call
> > > > > preallocate_image_memory() two times. Why do you only care latter one?
> > > > > former one seems similar risk.
> > > > 
> > > > The first one is mandatory, ie. if we can't allocate the requested number of
> > > > pages at this point, we fail the entire hibernation.  In that case the
> > > > performance hit doesn't matter.
> > > 
> > > IOW, your patch at http://lkml.org/lkml/2010/9/2/262 is still necessary to
> > > protect against the infinite loop in that case.
> > 
> > As far as I understand, we need distinguish two allocation failure.
> >   1) failure because no enough memory
> > 	-> yes, hibernation should fail
> >  2) failure because already allocated enough lower zone memory
> > 	-> why should we fail?
> > 
> > If the system has a lot of memory, scenario (2) is happen frequently than (1).
> > I think we need check alloc_highmem and alloc_normal variable and call
> > preallocate_image_highmem() again instead preallocate_image_memory()
> > if we've alread allocated enough lots normal memory.
> > 
> > nit?
> 
> Actually I thought about that, but we don't really see hibernation fail for
> this reason.  In all of the tests I carried out the requested 50% of highmem
> had been allocated before allocations from the normal zone started to be
> made, even if highmem was 100% full at that point.  So this appears to be
> a theoretical issue and covering it would require us to change the algorithm
> entirely (eg. it doesn't make sense to call preallocate_highmem_fraction() down
> the road if that happens).

ok, thanks. probably I've catched your point. please feel free to use my reviewed-by
for your fix.

thanks.

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

* Re: [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang
  2010-09-03  1:53                                   ` KOSAKI Motohiro
  2010-09-04  1:44                                     ` Rafael J. Wysocki
@ 2010-09-04  1:44                                     ` Rafael J. Wysocki
  2010-09-06  2:08                                       ` KOSAKI Motohiro
  2010-09-06  2:08                                       ` KOSAKI Motohiro
  1 sibling, 2 replies; 66+ messages in thread
From: Rafael J. Wysocki @ 2010-09-04  1:44 UTC (permalink / raw)
  To: KOSAKI Motohiro
  Cc: M. Vefa Bicakci, Linux Kernel Mailing List, linux-pm, Minchan Kim

On Friday, September 03, 2010, KOSAKI Motohiro wrote:
> > On Friday, September 03, 2010, KOSAKI Motohiro wrote:
> > > Hello,
> > > 
> > > > > > > Like in the patch below, perhaps?
> > > > > > 
> > > > > > Looks like fine. but I have one question. hibernate_preallocate_memory() call
> > > > > > preallocate_image_memory() two times. Why do you only care latter one?
> > > > > > former one seems similar risk.
> > > > > 
> > > > > The first one is mandatory, ie. if we can't allocate the requested number of
> > > > > pages at this point, we fail the entire hibernation.  In that case the
> > > > > performance hit doesn't matter.
> > > > 
> > > > IOW, your patch at http://lkml.org/lkml/2010/9/2/262 is still necessary to
> > > > protect against the infinite loop in that case.
> > > 
> > > As far as I understand, we need distinguish two allocation failure.
> > >   1) failure because no enough memory
> > > 	-> yes, hibernation should fail
> > >  2) failure because already allocated enough lower zone memory
> > > 	-> why should we fail?
> > > 
> > > If the system has a lot of memory, scenario (2) is happen frequently than (1).
> > > I think we need check alloc_highmem and alloc_normal variable and call
> > > preallocate_image_highmem() again instead preallocate_image_memory()
> > > if we've alread allocated enough lots normal memory.
> > > 
> > > nit?
> > 
> > Actually I thought about that, but we don't really see hibernation fail for
> > this reason.  In all of the tests I carried out the requested 50% of highmem
> > had been allocated before allocations from the normal zone started to be
> > made, even if highmem was 100% full at that point.  So this appears to be
> > a theoretical issue and covering it would require us to change the algorithm
> > entirely (eg. it doesn't make sense to call preallocate_highmem_fraction() down
> > the road if that happens).
> 
> ok, thanks. probably I've catched your point. please feel free to use my reviewed-by
> for your fix.

Thanks.

In the meantime, though, I prepared a patch that should address the issue
entirely.  The patch is appended and if it looks good to you, I'd rather use it
instead of the previous one (it is still untested).

Rafael

---
From: Rafael J. Wysocki <rjw@sisk.pl>
Subject: PM / Hibernate: Avoid hitting OOM during preallocation of memory

There is a problem in hibernate_preallocate_memory() that it calls
preallocate_image_memory() with an argument that may be greater than
the number of available non-highmem memory pages.  This may trigger
the OOM condition which in turn can cause significant slowdown to
occur.

To avoid that, modify preallocate_image_memory() so that it checks
if there is a sufficient number of non-highmem pages to allocate from
before calling preallocate_image_pages() and change
hibernate_preallocate_memory() to try to allocate from highmem if
the number of pages allocated by preallocate_image_memory() is too
low.

Adjust free_unnecessary_pages() to take all possible memory
allocation patterns into account.

Reported-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 kernel/power/snapshot.c |   66 +++++++++++++++++++++++++++++++++---------------
 1 file changed, 46 insertions(+), 20 deletions(-)

Index: linux-2.6/kernel/power/snapshot.c
===================================================================
--- linux-2.6.orig/kernel/power/snapshot.c
+++ linux-2.6/kernel/power/snapshot.c
@@ -1122,9 +1122,19 @@ static unsigned long preallocate_image_p
 	return nr_alloc;
 }
 
-static unsigned long preallocate_image_memory(unsigned long nr_pages)
+static unsigned long preallocate_image_memory(unsigned long nr_pages,
+					      unsigned long size_normal)
 {
-	return preallocate_image_pages(nr_pages, GFP_IMAGE);
+	unsigned long alloc;
+
+	if (size_normal <= alloc_normal)
+		return 0;
+
+	alloc = size_normal - alloc_normal;
+	if (nr_pages < alloc)
+		alloc = nr_pages;
+
+	return preallocate_image_pages(alloc, GFP_IMAGE);
 }
 
 #ifdef CONFIG_HIGHMEM
@@ -1170,15 +1180,22 @@ static inline unsigned long preallocate_
  */
 static void free_unnecessary_pages(void)
 {
-	unsigned long save_highmem, to_free_normal, to_free_highmem;
+	unsigned long save, to_free_normal, to_free_highmem;
 
-	to_free_normal = alloc_normal - count_data_pages();
-	save_highmem = count_highmem_pages();
-	if (alloc_highmem > save_highmem) {
-		to_free_highmem = alloc_highmem - save_highmem;
+	save = count_data_pages();
+	if (alloc_normal >= save) {
+		to_free_normal = alloc_normal - save;
+		save = 0;
+	} else {
+		to_free_normal = 0;
+		save -= alloc_normal;
+	}
+	save += count_highmem_pages();
+	if (alloc_highmem >= save) {
+		to_free_highmem = alloc_highmem - save;
 	} else {
 		to_free_highmem = 0;
-		to_free_normal -= save_highmem - alloc_highmem;
+		to_free_normal -= save - alloc_highmem;
 	}
 
 	memory_bm_position_reset(&copy_bm);
@@ -1259,7 +1276,7 @@ int hibernate_preallocate_memory(void)
 {
 	struct zone *zone;
 	unsigned long saveable, size, max_size, count, highmem, pages = 0;
-	unsigned long alloc, save_highmem, pages_highmem;
+	unsigned long alloc, save_highmem, pages_highmem, size_normal;
 	struct timeval start, stop;
 	int error;
 
@@ -1296,6 +1313,7 @@ int hibernate_preallocate_memory(void)
 		else
 			count += zone_page_state(zone, NR_FREE_PAGES);
 	}
+	size_normal = count;
 	count += highmem;
 	count -= totalreserve_pages;
 
@@ -1310,7 +1328,7 @@ int hibernate_preallocate_memory(void)
 	 */
 	if (size >= saveable) {
 		pages = preallocate_image_highmem(save_highmem);
-		pages += preallocate_image_memory(saveable - pages);
+		pages += preallocate_image_memory(saveable - pages, size_normal);
 		goto out;
 	}
 
@@ -1336,16 +1354,24 @@ int hibernate_preallocate_memory(void)
 	 */
 	pages_highmem = preallocate_image_highmem(highmem / 2);
 	alloc = (count - max_size) - pages_highmem;
-	pages = preallocate_image_memory(alloc);
-	if (pages < alloc)
-		goto err_out;
-	size = max_size - size;
-	alloc = size;
-	size = preallocate_highmem_fraction(size, highmem, count);
-	pages_highmem += size;
-	alloc -= size;
-	pages += preallocate_image_memory(alloc);
-	pages += pages_highmem;
+	pages = preallocate_image_memory(alloc, size_normal);
+	if (pages < alloc) {
+		/* We have exhausted non-highmem pages, try highmem. */
+		alloc -= pages;
+		pages = preallocate_image_highmem(alloc);
+		if (pages < alloc)
+			goto err_out;
+		pages += preallocate_image_highmem(max_size - size);
+	} else {
+		size = max_size - size;
+		alloc = size;
+		size = preallocate_highmem_fraction(size, highmem, count);
+		pages_highmem += size;
+		alloc -= size;
+		size = preallocate_image_memory(alloc, size_normal);
+		pages_highmem += preallocate_image_highmem(alloc - size);
+		pages += pages_highmem + size;
+	}
 
 	/*
 	 * We only need as many page frames for the image as there are saveable

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

* Re: [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang
  2010-09-03  1:53                                   ` KOSAKI Motohiro
@ 2010-09-04  1:44                                     ` Rafael J. Wysocki
  2010-09-04  1:44                                     ` Rafael J. Wysocki
  1 sibling, 0 replies; 66+ messages in thread
From: Rafael J. Wysocki @ 2010-09-04  1:44 UTC (permalink / raw)
  To: KOSAKI Motohiro; +Cc: linux-pm, M. Vefa Bicakci, Linux Kernel Mailing List

On Friday, September 03, 2010, KOSAKI Motohiro wrote:
> > On Friday, September 03, 2010, KOSAKI Motohiro wrote:
> > > Hello,
> > > 
> > > > > > > Like in the patch below, perhaps?
> > > > > > 
> > > > > > Looks like fine. but I have one question. hibernate_preallocate_memory() call
> > > > > > preallocate_image_memory() two times. Why do you only care latter one?
> > > > > > former one seems similar risk.
> > > > > 
> > > > > The first one is mandatory, ie. if we can't allocate the requested number of
> > > > > pages at this point, we fail the entire hibernation.  In that case the
> > > > > performance hit doesn't matter.
> > > > 
> > > > IOW, your patch at http://lkml.org/lkml/2010/9/2/262 is still necessary to
> > > > protect against the infinite loop in that case.
> > > 
> > > As far as I understand, we need distinguish two allocation failure.
> > >   1) failure because no enough memory
> > > 	-> yes, hibernation should fail
> > >  2) failure because already allocated enough lower zone memory
> > > 	-> why should we fail?
> > > 
> > > If the system has a lot of memory, scenario (2) is happen frequently than (1).
> > > I think we need check alloc_highmem and alloc_normal variable and call
> > > preallocate_image_highmem() again instead preallocate_image_memory()
> > > if we've alread allocated enough lots normal memory.
> > > 
> > > nit?
> > 
> > Actually I thought about that, but we don't really see hibernation fail for
> > this reason.  In all of the tests I carried out the requested 50% of highmem
> > had been allocated before allocations from the normal zone started to be
> > made, even if highmem was 100% full at that point.  So this appears to be
> > a theoretical issue and covering it would require us to change the algorithm
> > entirely (eg. it doesn't make sense to call preallocate_highmem_fraction() down
> > the road if that happens).
> 
> ok, thanks. probably I've catched your point. please feel free to use my reviewed-by
> for your fix.

Thanks.

In the meantime, though, I prepared a patch that should address the issue
entirely.  The patch is appended and if it looks good to you, I'd rather use it
instead of the previous one (it is still untested).

Rafael

---
From: Rafael J. Wysocki <rjw@sisk.pl>
Subject: PM / Hibernate: Avoid hitting OOM during preallocation of memory

There is a problem in hibernate_preallocate_memory() that it calls
preallocate_image_memory() with an argument that may be greater than
the number of available non-highmem memory pages.  This may trigger
the OOM condition which in turn can cause significant slowdown to
occur.

To avoid that, modify preallocate_image_memory() so that it checks
if there is a sufficient number of non-highmem pages to allocate from
before calling preallocate_image_pages() and change
hibernate_preallocate_memory() to try to allocate from highmem if
the number of pages allocated by preallocate_image_memory() is too
low.

Adjust free_unnecessary_pages() to take all possible memory
allocation patterns into account.

Reported-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 kernel/power/snapshot.c |   66 +++++++++++++++++++++++++++++++++---------------
 1 file changed, 46 insertions(+), 20 deletions(-)

Index: linux-2.6/kernel/power/snapshot.c
===================================================================
--- linux-2.6.orig/kernel/power/snapshot.c
+++ linux-2.6/kernel/power/snapshot.c
@@ -1122,9 +1122,19 @@ static unsigned long preallocate_image_p
 	return nr_alloc;
 }
 
-static unsigned long preallocate_image_memory(unsigned long nr_pages)
+static unsigned long preallocate_image_memory(unsigned long nr_pages,
+					      unsigned long size_normal)
 {
-	return preallocate_image_pages(nr_pages, GFP_IMAGE);
+	unsigned long alloc;
+
+	if (size_normal <= alloc_normal)
+		return 0;
+
+	alloc = size_normal - alloc_normal;
+	if (nr_pages < alloc)
+		alloc = nr_pages;
+
+	return preallocate_image_pages(alloc, GFP_IMAGE);
 }
 
 #ifdef CONFIG_HIGHMEM
@@ -1170,15 +1180,22 @@ static inline unsigned long preallocate_
  */
 static void free_unnecessary_pages(void)
 {
-	unsigned long save_highmem, to_free_normal, to_free_highmem;
+	unsigned long save, to_free_normal, to_free_highmem;
 
-	to_free_normal = alloc_normal - count_data_pages();
-	save_highmem = count_highmem_pages();
-	if (alloc_highmem > save_highmem) {
-		to_free_highmem = alloc_highmem - save_highmem;
+	save = count_data_pages();
+	if (alloc_normal >= save) {
+		to_free_normal = alloc_normal - save;
+		save = 0;
+	} else {
+		to_free_normal = 0;
+		save -= alloc_normal;
+	}
+	save += count_highmem_pages();
+	if (alloc_highmem >= save) {
+		to_free_highmem = alloc_highmem - save;
 	} else {
 		to_free_highmem = 0;
-		to_free_normal -= save_highmem - alloc_highmem;
+		to_free_normal -= save - alloc_highmem;
 	}
 
 	memory_bm_position_reset(&copy_bm);
@@ -1259,7 +1276,7 @@ int hibernate_preallocate_memory(void)
 {
 	struct zone *zone;
 	unsigned long saveable, size, max_size, count, highmem, pages = 0;
-	unsigned long alloc, save_highmem, pages_highmem;
+	unsigned long alloc, save_highmem, pages_highmem, size_normal;
 	struct timeval start, stop;
 	int error;
 
@@ -1296,6 +1313,7 @@ int hibernate_preallocate_memory(void)
 		else
 			count += zone_page_state(zone, NR_FREE_PAGES);
 	}
+	size_normal = count;
 	count += highmem;
 	count -= totalreserve_pages;
 
@@ -1310,7 +1328,7 @@ int hibernate_preallocate_memory(void)
 	 */
 	if (size >= saveable) {
 		pages = preallocate_image_highmem(save_highmem);
-		pages += preallocate_image_memory(saveable - pages);
+		pages += preallocate_image_memory(saveable - pages, size_normal);
 		goto out;
 	}
 
@@ -1336,16 +1354,24 @@ int hibernate_preallocate_memory(void)
 	 */
 	pages_highmem = preallocate_image_highmem(highmem / 2);
 	alloc = (count - max_size) - pages_highmem;
-	pages = preallocate_image_memory(alloc);
-	if (pages < alloc)
-		goto err_out;
-	size = max_size - size;
-	alloc = size;
-	size = preallocate_highmem_fraction(size, highmem, count);
-	pages_highmem += size;
-	alloc -= size;
-	pages += preallocate_image_memory(alloc);
-	pages += pages_highmem;
+	pages = preallocate_image_memory(alloc, size_normal);
+	if (pages < alloc) {
+		/* We have exhausted non-highmem pages, try highmem. */
+		alloc -= pages;
+		pages = preallocate_image_highmem(alloc);
+		if (pages < alloc)
+			goto err_out;
+		pages += preallocate_image_highmem(max_size - size);
+	} else {
+		size = max_size - size;
+		alloc = size;
+		size = preallocate_highmem_fraction(size, highmem, count);
+		pages_highmem += size;
+		alloc -= size;
+		size = preallocate_image_memory(alloc, size_normal);
+		pages_highmem += preallocate_image_highmem(alloc - size);
+		pages += pages_highmem + size;
+	}
 
 	/*
 	 * We only need as many page frames for the image as there are saveable

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

* Re: [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang
  2010-09-04  1:44                                     ` Rafael J. Wysocki
@ 2010-09-06  2:08                                       ` KOSAKI Motohiro
  2010-09-06 11:27                                         ` Important news regarding the two different patches M. Vefa Bicakci
                                                           ` (3 more replies)
  2010-09-06  2:08                                       ` KOSAKI Motohiro
  1 sibling, 4 replies; 66+ messages in thread
From: KOSAKI Motohiro @ 2010-09-06  2:08 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: kosaki.motohiro, M. Vefa Bicakci, Linux Kernel Mailing List,
	linux-pm, Minchan Kim

> > ok, thanks. probably I've catched your point. please feel free to use my reviewed-by
> > for your fix.
> 
> Thanks.
> 
> In the meantime, though, I prepared a patch that should address the issue
> entirely.  The patch is appended and if it looks good to you, I'd rather use it
> instead of the previous one (it is still untested).

Yeah, this one looks nicer to me :)

Thanks, rafael!




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

* Re: [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang
  2010-09-04  1:44                                     ` Rafael J. Wysocki
  2010-09-06  2:08                                       ` KOSAKI Motohiro
@ 2010-09-06  2:08                                       ` KOSAKI Motohiro
  1 sibling, 0 replies; 66+ messages in thread
From: KOSAKI Motohiro @ 2010-09-06  2:08 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: linux-pm, M. Vefa Bicakci, Linux Kernel Mailing List, kosaki.motohiro

> > ok, thanks. probably I've catched your point. please feel free to use my reviewed-by
> > for your fix.
> 
> Thanks.
> 
> In the meantime, though, I prepared a patch that should address the issue
> entirely.  The patch is appended and if it looks good to you, I'd rather use it
> instead of the previous one (it is still untested).

Yeah, this one looks nicer to me :)

Thanks, rafael!

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

* Important news regarding the two different patches
  2010-09-06  2:08                                       ` KOSAKI Motohiro
@ 2010-09-06 11:27                                         ` M. Vefa Bicakci
  2010-09-06 18:43                                           ` Rafael J. Wysocki
  2010-09-06 18:43                                           ` Rafael J. Wysocki
  2010-09-06 11:27                                         ` M. Vefa Bicakci
                                                           ` (2 subsequent siblings)
  3 siblings, 2 replies; 66+ messages in thread
From: M. Vefa Bicakci @ 2010-09-06 11:27 UTC (permalink / raw)
  To: KOSAKI Motohiro
  Cc: Rafael J. Wysocki, Linux Kernel Mailing List, linux-pm,
	Minchan Kim, minchan.kim

On 05/09/10 10:08 PM, KOSAKI Motohiro wrote:
>>> ok, thanks. probably I've catched your point. please feel free to use my reviewed-by
>>> for your fix.
>>
>> Thanks.
>>
>> In the meantime, though, I prepared a patch that should address the issue
>> entirely.  The patch is appended and if it looks good to you, I'd rather use it
>> instead of the previous one (it is still untested).
> 
> Yeah, this one looks nicer to me :)
> 
> Thanks, rafael!

Dear Rafael Wysocki, Kosaki Motohiro and Minchan Kim,

Upon Kosaki Motohiro's kind request via an off-list e-mail,
I tested the following two patches separately with a vanilla
2.6.35.4 kernel:

Patch 1:
	http://lkml.org/lkml/2010/9/5/86

Patch 2:
	http://kerneltrap.org/mailarchive/linux-kernel/2010/9/4/4615426

The first of these was prepared by Minchan Kim, and it fixes
the issue; i.e. no hangs during hibernation with a full tmpfs.

However, the second patch, prepared by Rafael Wysocki, does *not*
fix the problem. I still experience hangs with a full tmpfs upon
hibernation.

As always, I am willing to test newer patches and help in debugging
this issue.

I really appreciate all of your help,

M. Vefa Bicakci

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

* Important news regarding the two different patches
  2010-09-06  2:08                                       ` KOSAKI Motohiro
  2010-09-06 11:27                                         ` Important news regarding the two different patches M. Vefa Bicakci
@ 2010-09-06 11:27                                         ` M. Vefa Bicakci
  2010-09-06 18:46                                         ` [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang Rafael J. Wysocki
  2010-09-06 18:46                                         ` Rafael J. Wysocki
  3 siblings, 0 replies; 66+ messages in thread
From: M. Vefa Bicakci @ 2010-09-06 11:27 UTC (permalink / raw)
  To: KOSAKI Motohiro; +Cc: linux-pm, Linux Kernel Mailing List

On 05/09/10 10:08 PM, KOSAKI Motohiro wrote:
>>> ok, thanks. probably I've catched your point. please feel free to use my reviewed-by
>>> for your fix.
>>
>> Thanks.
>>
>> In the meantime, though, I prepared a patch that should address the issue
>> entirely.  The patch is appended and if it looks good to you, I'd rather use it
>> instead of the previous one (it is still untested).
> 
> Yeah, this one looks nicer to me :)
> 
> Thanks, rafael!

Dear Rafael Wysocki, Kosaki Motohiro and Minchan Kim,

Upon Kosaki Motohiro's kind request via an off-list e-mail,
I tested the following two patches separately with a vanilla
2.6.35.4 kernel:

Patch 1:
	http://lkml.org/lkml/2010/9/5/86

Patch 2:
	http://kerneltrap.org/mailarchive/linux-kernel/2010/9/4/4615426

The first of these was prepared by Minchan Kim, and it fixes
the issue; i.e. no hangs during hibernation with a full tmpfs.

However, the second patch, prepared by Rafael Wysocki, does *not*
fix the problem. I still experience hangs with a full tmpfs upon
hibernation.

As always, I am willing to test newer patches and help in debugging
this issue.

I really appreciate all of your help,

M. Vefa Bicakci

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

* Re: Important news regarding the two different patches
  2010-09-06 11:27                                         ` Important news regarding the two different patches M. Vefa Bicakci
  2010-09-06 18:43                                           ` Rafael J. Wysocki
@ 2010-09-06 18:43                                           ` Rafael J. Wysocki
  2010-09-07  1:34                                             ` M. Vefa Bicakci
  2010-09-07  1:34                                             ` M. Vefa Bicakci
  1 sibling, 2 replies; 66+ messages in thread
From: Rafael J. Wysocki @ 2010-09-06 18:43 UTC (permalink / raw)
  To: M. Vefa Bicakci
  Cc: KOSAKI Motohiro, Linux Kernel Mailing List, linux-pm, Minchan Kim

On Monday, September 06, 2010, M. Vefa Bicakci wrote:
> On 05/09/10 10:08 PM, KOSAKI Motohiro wrote:
> >>> ok, thanks. probably I've catched your point. please feel free to use my reviewed-by
> >>> for your fix.
> >>
> >> Thanks.
> >>
> >> In the meantime, though, I prepared a patch that should address the issue
> >> entirely.  The patch is appended and if it looks good to you, I'd rather use it
> >> instead of the previous one (it is still untested).
> > 
> > Yeah, this one looks nicer to me :)
> > 
> > Thanks, rafael!
> 
> Dear Rafael Wysocki, Kosaki Motohiro and Minchan Kim,
> 
> Upon Kosaki Motohiro's kind request via an off-list e-mail,
> I tested the following two patches separately with a vanilla
> 2.6.35.4 kernel:
> 
> Patch 1:
> 	http://lkml.org/lkml/2010/9/5/86
> 
> Patch 2:
> 	http://kerneltrap.org/mailarchive/linux-kernel/2010/9/4/4615426
> 
> The first of these was prepared by Minchan Kim, and it fixes
> the issue; i.e. no hangs during hibernation with a full tmpfs.

We've already agreed that this patch should be applied.

> However, the second patch, prepared by Rafael Wysocki, does *not*
> fix the problem. I still experience hangs with a full tmpfs upon
> hibernation.

So we still manage to trigger OOM with this approach.

> As always, I am willing to test newer patches and help in debugging
> this issue.

What happens if you apply them both at the same time?

Thanks,
Rafael

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

* Re: Important news regarding the two different patches
  2010-09-06 11:27                                         ` Important news regarding the two different patches M. Vefa Bicakci
@ 2010-09-06 18:43                                           ` Rafael J. Wysocki
  2010-09-06 18:43                                           ` Rafael J. Wysocki
  1 sibling, 0 replies; 66+ messages in thread
From: Rafael J. Wysocki @ 2010-09-06 18:43 UTC (permalink / raw)
  To: M. Vefa Bicakci; +Cc: linux-pm, Linux Kernel Mailing List, KOSAKI Motohiro

On Monday, September 06, 2010, M. Vefa Bicakci wrote:
> On 05/09/10 10:08 PM, KOSAKI Motohiro wrote:
> >>> ok, thanks. probably I've catched your point. please feel free to use my reviewed-by
> >>> for your fix.
> >>
> >> Thanks.
> >>
> >> In the meantime, though, I prepared a patch that should address the issue
> >> entirely.  The patch is appended and if it looks good to you, I'd rather use it
> >> instead of the previous one (it is still untested).
> > 
> > Yeah, this one looks nicer to me :)
> > 
> > Thanks, rafael!
> 
> Dear Rafael Wysocki, Kosaki Motohiro and Minchan Kim,
> 
> Upon Kosaki Motohiro's kind request via an off-list e-mail,
> I tested the following two patches separately with a vanilla
> 2.6.35.4 kernel:
> 
> Patch 1:
> 	http://lkml.org/lkml/2010/9/5/86
> 
> Patch 2:
> 	http://kerneltrap.org/mailarchive/linux-kernel/2010/9/4/4615426
> 
> The first of these was prepared by Minchan Kim, and it fixes
> the issue; i.e. no hangs during hibernation with a full tmpfs.

We've already agreed that this patch should be applied.

> However, the second patch, prepared by Rafael Wysocki, does *not*
> fix the problem. I still experience hangs with a full tmpfs upon
> hibernation.

So we still manage to trigger OOM with this approach.

> As always, I am willing to test newer patches and help in debugging
> this issue.

What happens if you apply them both at the same time?

Thanks,
Rafael

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

* Re: [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang
  2010-09-06  2:08                                       ` KOSAKI Motohiro
  2010-09-06 11:27                                         ` Important news regarding the two different patches M. Vefa Bicakci
  2010-09-06 11:27                                         ` M. Vefa Bicakci
@ 2010-09-06 18:46                                         ` Rafael J. Wysocki
  2010-09-06 19:54                                           ` Rafael J. Wysocki
  2010-09-06 19:54                                           ` Rafael J. Wysocki
  2010-09-06 18:46                                         ` Rafael J. Wysocki
  3 siblings, 2 replies; 66+ messages in thread
From: Rafael J. Wysocki @ 2010-09-06 18:46 UTC (permalink / raw)
  To: KOSAKI Motohiro
  Cc: M. Vefa Bicakci, Linux Kernel Mailing List, linux-pm, Minchan Kim

On Monday, September 06, 2010, KOSAKI Motohiro wrote:
> > > ok, thanks. probably I've catched your point. please feel free to use my reviewed-by
> > > for your fix.
> > 
> > Thanks.
> > 
> > In the meantime, though, I prepared a patch that should address the issue
> > entirely.  The patch is appended and if it looks good to you, I'd rather use it
> > instead of the previous one (it is still untested).
> 
> Yeah, this one looks nicer to me :)
> 
> Thanks, rafael!

OK, I'll put it into my linux-next branch, then.

Probably, though, I should modify the changelog, because what it really does
is to check if it makes sense to try to allocat from non-highmem pages, but it
doesn't really prevent the OOM from occuring.

Thanks,
Rafael

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

* Re: [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang
  2010-09-06  2:08                                       ` KOSAKI Motohiro
                                                           ` (2 preceding siblings ...)
  2010-09-06 18:46                                         ` [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang Rafael J. Wysocki
@ 2010-09-06 18:46                                         ` Rafael J. Wysocki
  3 siblings, 0 replies; 66+ messages in thread
From: Rafael J. Wysocki @ 2010-09-06 18:46 UTC (permalink / raw)
  To: KOSAKI Motohiro; +Cc: linux-pm, M. Vefa Bicakci, Linux Kernel Mailing List

On Monday, September 06, 2010, KOSAKI Motohiro wrote:
> > > ok, thanks. probably I've catched your point. please feel free to use my reviewed-by
> > > for your fix.
> > 
> > Thanks.
> > 
> > In the meantime, though, I prepared a patch that should address the issue
> > entirely.  The patch is appended and if it looks good to you, I'd rather use it
> > instead of the previous one (it is still untested).
> 
> Yeah, this one looks nicer to me :)
> 
> Thanks, rafael!

OK, I'll put it into my linux-next branch, then.

Probably, though, I should modify the changelog, because what it really does
is to check if it makes sense to try to allocat from non-highmem pages, but it
doesn't really prevent the OOM from occuring.

Thanks,
Rafael

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

* Re: [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang
  2010-09-06 18:46                                         ` [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang Rafael J. Wysocki
@ 2010-09-06 19:54                                           ` Rafael J. Wysocki
  2010-09-06 19:54                                           ` Rafael J. Wysocki
  1 sibling, 0 replies; 66+ messages in thread
From: Rafael J. Wysocki @ 2010-09-06 19:54 UTC (permalink / raw)
  To: KOSAKI Motohiro
  Cc: M. Vefa Bicakci, Linux Kernel Mailing List, linux-pm, Minchan Kim

On Monday, September 06, 2010, Rafael J. Wysocki wrote:
> On Monday, September 06, 2010, KOSAKI Motohiro wrote:
> > > > ok, thanks. probably I've catched your point. please feel free to use my reviewed-by
> > > > for your fix.
> > > 
> > > Thanks.
> > > 
> > > In the meantime, though, I prepared a patch that should address the issue
> > > entirely.  The patch is appended and if it looks good to you, I'd rather use it
> > > instead of the previous one (it is still untested).
> > 
> > Yeah, this one looks nicer to me :)
> > 
> > Thanks, rafael!
> 
> OK, I'll put it into my linux-next branch, then.
> 
> Probably, though, I should modify the changelog, because what it really does
> is to check if it makes sense to try to allocat from non-highmem pages, but it
> doesn't really prevent the OOM from occuring.

For completness, below is the patch with the new changelog.

Thanks,
Rafael

---
From: Rafael J. Wysocki <rjw@sisk.pl>
Subject: PM / Hibernate: Avoid hitting OOM during preallocation of memory

There is a problem in hibernate_preallocate_memory() that it calls
preallocate_image_memory() with an argument that may be greater than
the total number of non-highmem memory pages that haven't been
already preallocated.  If that's the case, the OOM condition is
guaranteed to trigger, which in turn can cause significant slowdown
to occur.

To avoid that, make preallocate_image_memory() adjust its argument
before calling preallocate_image_pages(), so that it doesn't exceed
the number of non-highmem pages that weren't preallocated previously.
Change hibernate_preallocate_memory() to try to allocate from highmem
if the number of pages allocated by preallocate_image_memory() is too
low.  Modify free_unnecessary_pages() to take all possible memory
allocation patterns into account.

Reported-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 kernel/power/snapshot.c |   66 +++++++++++++++++++++++++++++++++---------------
 1 file changed, 46 insertions(+), 20 deletions(-)

Index: linux-2.6/kernel/power/snapshot.c
===================================================================
--- linux-2.6.orig/kernel/power/snapshot.c
+++ linux-2.6/kernel/power/snapshot.c
@@ -1122,9 +1122,19 @@ static unsigned long preallocate_image_p
 	return nr_alloc;
 }
 
-static unsigned long preallocate_image_memory(unsigned long nr_pages)
+static unsigned long preallocate_image_memory(unsigned long nr_pages,
+					      unsigned long size_normal)
 {
-	return preallocate_image_pages(nr_pages, GFP_IMAGE);
+	unsigned long alloc;
+
+	if (size_normal <= alloc_normal)
+		return 0;
+
+	alloc = size_normal - alloc_normal;
+	if (nr_pages < alloc)
+		alloc = nr_pages;
+
+	return preallocate_image_pages(alloc, GFP_IMAGE);
 }
 
 #ifdef CONFIG_HIGHMEM
@@ -1170,15 +1180,22 @@ static inline unsigned long preallocate_
  */
 static void free_unnecessary_pages(void)
 {
-	unsigned long save_highmem, to_free_normal, to_free_highmem;
+	unsigned long save, to_free_normal, to_free_highmem;
 
-	to_free_normal = alloc_normal - count_data_pages();
-	save_highmem = count_highmem_pages();
-	if (alloc_highmem > save_highmem) {
-		to_free_highmem = alloc_highmem - save_highmem;
+	save = count_data_pages();
+	if (alloc_normal >= save) {
+		to_free_normal = alloc_normal - save;
+		save = 0;
+	} else {
+		to_free_normal = 0;
+		save -= alloc_normal;
+	}
+	save += count_highmem_pages();
+	if (alloc_highmem >= save) {
+		to_free_highmem = alloc_highmem - save;
 	} else {
 		to_free_highmem = 0;
-		to_free_normal -= save_highmem - alloc_highmem;
+		to_free_normal -= save - alloc_highmem;
 	}
 
 	memory_bm_position_reset(&copy_bm);
@@ -1259,7 +1276,7 @@ int hibernate_preallocate_memory(void)
 {
 	struct zone *zone;
 	unsigned long saveable, size, max_size, count, highmem, pages = 0;
-	unsigned long alloc, save_highmem, pages_highmem;
+	unsigned long alloc, save_highmem, pages_highmem, size_normal;
 	struct timeval start, stop;
 	int error;
 
@@ -1296,6 +1313,7 @@ int hibernate_preallocate_memory(void)
 		else
 			count += zone_page_state(zone, NR_FREE_PAGES);
 	}
+	size_normal = count;
 	count += highmem;
 	count -= totalreserve_pages;
 
@@ -1310,7 +1328,7 @@ int hibernate_preallocate_memory(void)
 	 */
 	if (size >= saveable) {
 		pages = preallocate_image_highmem(save_highmem);
-		pages += preallocate_image_memory(saveable - pages);
+		pages += preallocate_image_memory(saveable - pages, size_normal);
 		goto out;
 	}
 
@@ -1336,16 +1354,24 @@ int hibernate_preallocate_memory(void)
 	 */
 	pages_highmem = preallocate_image_highmem(highmem / 2);
 	alloc = (count - max_size) - pages_highmem;
-	pages = preallocate_image_memory(alloc);
-	if (pages < alloc)
-		goto err_out;
-	size = max_size - size;
-	alloc = size;
-	size = preallocate_highmem_fraction(size, highmem, count);
-	pages_highmem += size;
-	alloc -= size;
-	pages += preallocate_image_memory(alloc);
-	pages += pages_highmem;
+	pages = preallocate_image_memory(alloc, size_normal);
+	if (pages < alloc) {
+		/* We have exhausted non-highmem pages, try highmem. */
+		alloc -= pages;
+		pages = preallocate_image_highmem(alloc);
+		if (pages < alloc)
+			goto err_out;
+		pages += preallocate_image_highmem(max_size - size);
+	} else {
+		size = max_size - size;
+		alloc = size;
+		size = preallocate_highmem_fraction(size, highmem, count);
+		pages_highmem += size;
+		alloc -= size;
+		size = preallocate_image_memory(alloc, size_normal);
+		pages_highmem += preallocate_image_highmem(alloc - size);
+		pages += pages_highmem + size;
+	}
 
 	/*
 	 * We only need as many page frames for the image as there are saveable

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

* Re: [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang
  2010-09-06 18:46                                         ` [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang Rafael J. Wysocki
  2010-09-06 19:54                                           ` Rafael J. Wysocki
@ 2010-09-06 19:54                                           ` Rafael J. Wysocki
  1 sibling, 0 replies; 66+ messages in thread
From: Rafael J. Wysocki @ 2010-09-06 19:54 UTC (permalink / raw)
  To: KOSAKI Motohiro; +Cc: linux-pm, M. Vefa Bicakci, Linux Kernel Mailing List

On Monday, September 06, 2010, Rafael J. Wysocki wrote:
> On Monday, September 06, 2010, KOSAKI Motohiro wrote:
> > > > ok, thanks. probably I've catched your point. please feel free to use my reviewed-by
> > > > for your fix.
> > > 
> > > Thanks.
> > > 
> > > In the meantime, though, I prepared a patch that should address the issue
> > > entirely.  The patch is appended and if it looks good to you, I'd rather use it
> > > instead of the previous one (it is still untested).
> > 
> > Yeah, this one looks nicer to me :)
> > 
> > Thanks, rafael!
> 
> OK, I'll put it into my linux-next branch, then.
> 
> Probably, though, I should modify the changelog, because what it really does
> is to check if it makes sense to try to allocat from non-highmem pages, but it
> doesn't really prevent the OOM from occuring.

For completness, below is the patch with the new changelog.

Thanks,
Rafael

---
From: Rafael J. Wysocki <rjw@sisk.pl>
Subject: PM / Hibernate: Avoid hitting OOM during preallocation of memory

There is a problem in hibernate_preallocate_memory() that it calls
preallocate_image_memory() with an argument that may be greater than
the total number of non-highmem memory pages that haven't been
already preallocated.  If that's the case, the OOM condition is
guaranteed to trigger, which in turn can cause significant slowdown
to occur.

To avoid that, make preallocate_image_memory() adjust its argument
before calling preallocate_image_pages(), so that it doesn't exceed
the number of non-highmem pages that weren't preallocated previously.
Change hibernate_preallocate_memory() to try to allocate from highmem
if the number of pages allocated by preallocate_image_memory() is too
low.  Modify free_unnecessary_pages() to take all possible memory
allocation patterns into account.

Reported-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 kernel/power/snapshot.c |   66 +++++++++++++++++++++++++++++++++---------------
 1 file changed, 46 insertions(+), 20 deletions(-)

Index: linux-2.6/kernel/power/snapshot.c
===================================================================
--- linux-2.6.orig/kernel/power/snapshot.c
+++ linux-2.6/kernel/power/snapshot.c
@@ -1122,9 +1122,19 @@ static unsigned long preallocate_image_p
 	return nr_alloc;
 }
 
-static unsigned long preallocate_image_memory(unsigned long nr_pages)
+static unsigned long preallocate_image_memory(unsigned long nr_pages,
+					      unsigned long size_normal)
 {
-	return preallocate_image_pages(nr_pages, GFP_IMAGE);
+	unsigned long alloc;
+
+	if (size_normal <= alloc_normal)
+		return 0;
+
+	alloc = size_normal - alloc_normal;
+	if (nr_pages < alloc)
+		alloc = nr_pages;
+
+	return preallocate_image_pages(alloc, GFP_IMAGE);
 }
 
 #ifdef CONFIG_HIGHMEM
@@ -1170,15 +1180,22 @@ static inline unsigned long preallocate_
  */
 static void free_unnecessary_pages(void)
 {
-	unsigned long save_highmem, to_free_normal, to_free_highmem;
+	unsigned long save, to_free_normal, to_free_highmem;
 
-	to_free_normal = alloc_normal - count_data_pages();
-	save_highmem = count_highmem_pages();
-	if (alloc_highmem > save_highmem) {
-		to_free_highmem = alloc_highmem - save_highmem;
+	save = count_data_pages();
+	if (alloc_normal >= save) {
+		to_free_normal = alloc_normal - save;
+		save = 0;
+	} else {
+		to_free_normal = 0;
+		save -= alloc_normal;
+	}
+	save += count_highmem_pages();
+	if (alloc_highmem >= save) {
+		to_free_highmem = alloc_highmem - save;
 	} else {
 		to_free_highmem = 0;
-		to_free_normal -= save_highmem - alloc_highmem;
+		to_free_normal -= save - alloc_highmem;
 	}
 
 	memory_bm_position_reset(&copy_bm);
@@ -1259,7 +1276,7 @@ int hibernate_preallocate_memory(void)
 {
 	struct zone *zone;
 	unsigned long saveable, size, max_size, count, highmem, pages = 0;
-	unsigned long alloc, save_highmem, pages_highmem;
+	unsigned long alloc, save_highmem, pages_highmem, size_normal;
 	struct timeval start, stop;
 	int error;
 
@@ -1296,6 +1313,7 @@ int hibernate_preallocate_memory(void)
 		else
 			count += zone_page_state(zone, NR_FREE_PAGES);
 	}
+	size_normal = count;
 	count += highmem;
 	count -= totalreserve_pages;
 
@@ -1310,7 +1328,7 @@ int hibernate_preallocate_memory(void)
 	 */
 	if (size >= saveable) {
 		pages = preallocate_image_highmem(save_highmem);
-		pages += preallocate_image_memory(saveable - pages);
+		pages += preallocate_image_memory(saveable - pages, size_normal);
 		goto out;
 	}
 
@@ -1336,16 +1354,24 @@ int hibernate_preallocate_memory(void)
 	 */
 	pages_highmem = preallocate_image_highmem(highmem / 2);
 	alloc = (count - max_size) - pages_highmem;
-	pages = preallocate_image_memory(alloc);
-	if (pages < alloc)
-		goto err_out;
-	size = max_size - size;
-	alloc = size;
-	size = preallocate_highmem_fraction(size, highmem, count);
-	pages_highmem += size;
-	alloc -= size;
-	pages += preallocate_image_memory(alloc);
-	pages += pages_highmem;
+	pages = preallocate_image_memory(alloc, size_normal);
+	if (pages < alloc) {
+		/* We have exhausted non-highmem pages, try highmem. */
+		alloc -= pages;
+		pages = preallocate_image_highmem(alloc);
+		if (pages < alloc)
+			goto err_out;
+		pages += preallocate_image_highmem(max_size - size);
+	} else {
+		size = max_size - size;
+		alloc = size;
+		size = preallocate_highmem_fraction(size, highmem, count);
+		pages_highmem += size;
+		alloc -= size;
+		size = preallocate_image_memory(alloc, size_normal);
+		pages_highmem += preallocate_image_highmem(alloc - size);
+		pages += pages_highmem + size;
+	}
 
 	/*
 	 * We only need as many page frames for the image as there are saveable

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

* Re: Important news regarding the two different patches
  2010-09-06 18:43                                           ` Rafael J. Wysocki
  2010-09-07  1:34                                             ` M. Vefa Bicakci
@ 2010-09-07  1:34                                             ` M. Vefa Bicakci
  2010-09-07  1:58                                               ` KOSAKI Motohiro
  2010-09-07  1:58                                               ` KOSAKI Motohiro
  1 sibling, 2 replies; 66+ messages in thread
From: M. Vefa Bicakci @ 2010-09-07  1:34 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: KOSAKI Motohiro, Linux Kernel Mailing List, linux-pm, Minchan Kim

On 06/09/10 02:43 PM, Rafael J. Wysocki wrote:
> On Monday, September 06, 2010, M. Vefa Bicakci wrote:
>> [snip]
>>
>> Patch 1:
>> 	http://lkml.org/lkml/2010/9/5/86
>>
>> Patch 2:
>> 	http://kerneltrap.org/mailarchive/linux-kernel/2010/9/4/4615426
>>
>> The first of these was prepared by Minchan Kim, and it fixes
>> the issue; i.e. no hangs during hibernation with a full tmpfs.
> 
> We've already agreed that this patch should be applied.
> 
>> However, the second patch, prepared by Rafael Wysocki, does *not*
>> fix the problem. I still experience hangs with a full tmpfs upon
>> hibernation.
> 
> So we still manage to trigger OOM with this approach.
> 
>> As always, I am willing to test newer patches and help in debugging
>> this issue.
> 
> What happens if you apply them both at the same time?

Hello,

When I apply both of the patches, then I don't get any hangs with
hibernation. However, I do get another problem, which I am not sure
is related or not. I should note that I haven't experienced this
with only the vmscan.c patch, but maybe I haven't repeated my test
enough times.

One test consists of an automated run of 7 hibernate/thaw cycles. 

Here's what I got in dmesg in two of the iterations in one test.
Sorry for the long e-mail and the long lines.

=== 8< ===
[  166.512085] PM: Hibernation mode set to 'reboot'
[  166.516503] PM: Marking nosave pages: 000000000009f000 - 0000000000100000
[  166.517654] PM: Basic memory bitmaps created
[  166.518781] PM: Syncing filesystems ... done.
[  166.546308] Freezing user space processes ... (elapsed 0.01 seconds) done.
[  166.559596] Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
[  166.571649] PM: Preallocating image memory... 
[  185.712457] iwl3945: page allocation failure. order:0, mode:0xd0
[  185.714564] Pid: 1225, comm: iwl3945 Not tainted 2.6.35.4-test-mm5v2-vmscan+snapshot-dirty #7
[  185.715741] Call Trace:
[  185.716853]  [<c019aa67>] ? __alloc_pages_nodemask+0x577/0x630
[  185.718126]  [<f8a562c5>] ? iwl3945_rx_allocate+0x75/0x240 [iwl3945]
[  185.719379]  [<c03f0516>] ? schedule+0x356/0x730
[  185.720556]  [<f8a56d50>] ? iwl3945_rx_replenish+0x20/0x50 [iwl3945]
[  185.721914]  [<f8a56dbc>] ? iwl3945_bg_rx_replenish+0x3c/0x50 [iwl3945]
[  185.723929]  [<c014b167>] ? worker_thread+0x117/0x1f0
[  185.725745]  [<f8a56d80>] ? iwl3945_bg_rx_replenish+0x0/0x50 [iwl3945]
[  185.727097]  [<c014ebd0>] ? autoremove_wake_function+0x0/0x40
[  185.728468]  [<c014b050>] ? worker_thread+0x0/0x1f0
[  185.730235]  [<c014e854>] ? kthread+0x74/0x80
[  185.731601]  [<c014e7e0>] ? kthread+0x0/0x80
[  185.732919]  [<c0103cb6>] ? kernel_thread_helper+0x6/0x10
[  185.734851] Mem-Info:
[  185.736144] DMA per-cpu:
[  185.737439] CPU    0: hi:    0, btch:   1 usd:   0
[  185.738635] CPU    1: hi:    0, btch:   1 usd:   0
[  185.740296] Normal per-cpu:
[  185.741560] CPU    0: hi:  186, btch:  31 usd: 173
[  185.742752] CPU    1: hi:  186, btch:  31 usd:  49
[  185.744092] HighMem per-cpu:
[  185.745897] CPU    0: hi:  186, btch:  31 usd: 159
[  185.747239] CPU    1: hi:  186, btch:  31 usd: 170
[  185.748547] active_anon:136410 inactive_anon:34149 isolated_anon:0
[  185.748549]  active_file:689 inactive_file:344 isolated_file:0
[  185.748550]  unevictable:0 dirty:0 writeback:392 unstable:0
[  185.748551]  free:1928 slab_reclaimable:933 slab_unreclaimable:1680
[  185.748552]  mapped:952 shmem:168120 pagetables:304 bounce:0
[  185.755444] DMA free:3516kB min:64kB low:80kB high:96kB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:15804kB mlocked:0kB dirty:0kB writeback:0kB mapped:0kB shmem:0kB slab_reclaimable:0kB slab_unreclaimable:8kB kernel_stack:0kB pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no
[  185.759708] lowmem_reserve[]: 0 865 3022 3022
[  185.761135] Normal free:3444kB min:3728kB low:4660kB high:5592kB active_anon:0kB inactive_anon:0kB active_file:52kB inactive_file:0kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:885944kB mlocked:0kB dirty:0kB writeback:0kB mapped:4kB shmem:0kB slab_reclaimable:3732kB slab_unreclaimable:6712kB kernel_stack:1480kB pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:96 all_unreclaimable? no
[  185.765935] lowmem_reserve[]: 0 0 17259 17259
[  185.767626] HighMem free:628kB min:512kB low:2836kB high:5160kB active_anon:545256kB inactive_anon:136444kB active_file:2704kB inactive_file:1376kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:2209236kB mlocked:0kB dirty:0kB writeback:1416kB mapped:3804kB shmem:671948kB slab_reclaimable:0kB slab_unreclaimable:0kB kernel_stack:0kB pagetables:1216kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:32 all_unreclaimable? no
[  185.773232] lowmem_reserve[]: 0 0 0 0
[  185.775142] DMA: 1*4kB 1*8kB 1*16kB 1*32kB 0*64kB 1*128kB 1*256kB 0*512kB 1*1024kB 1*2048kB 0*4096kB = 3516kB
[  185.777152] Normal: 1*4kB 0*8kB 1*16kB 1*32kB 1*64kB 0*128kB 1*256kB 0*512kB 1*1024kB 1*2048kB 0*4096kB = 3444kB
[  185.779420] HighMem: 151*4kB 14*8kB 6*16kB 2*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 876kB
[  185.781487] 170219 total pagecache pages
[  185.783662] 1273 pages in swap cache
[  185.785764] Swap cache stats: add 295103, delete 293899, find 177724/191474
[  185.787782] Free swap  = 8072684kB
[  185.789940] Total swap = 8385376kB
[  185.802225] 783968 pages RAM
[  185.804258] 556658 pages HighMem
[  185.806241] 7853 pages reserved
[  185.808263] 14784 pages shared
[  185.810237] 764178 pages non-shared
[  185.812216] iwl3945 0000:05:00.0: Failed to allocate SKB buffer with GFP_KERNEL. Only 5 free buffers remaining.
[  185.871861] iwl3945: page allocation failure. order:0, mode:0xd0
[  185.873847] Pid: 1225, comm: iwl3945 Not tainted 2.6.35.4-test-mm5v2-vmscan+snapshot-dirty #7
[  185.876345] Call Trace:
[  185.878416]  [<c019aa67>] ? __alloc_pages_nodemask+0x577/0x630
[  185.880493]  [<f8a562c5>] ? iwl3945_rx_allocate+0x75/0x240 [iwl3945]
[  185.882558]  [<f8a56d50>] ? iwl3945_rx_replenish+0x20/0x50 [iwl3945]
[  185.884651]  [<f8a56dbc>] ? iwl3945_bg_rx_replenish+0x3c/0x50 [iwl3945]
[  185.886753]  [<c014b167>] ? worker_thread+0x117/0x1f0
[  185.888831]  [<f8a56d80>] ? iwl3945_bg_rx_replenish+0x0/0x50 [iwl3945]
[  185.890856]  [<c014ebd0>] ? autoremove_wake_function+0x0/0x40
[  185.892984]  [<c014b050>] ? worker_thread+0x0/0x1f0
[  185.895116]  [<c014e854>] ? kthread+0x74/0x80
[  185.897249]  [<c014e7e0>] ? kthread+0x0/0x80
[  185.899367]  [<c0103cb6>] ? kernel_thread_helper+0x6/0x10
[  185.901465] Mem-Info:
[  185.903580] DMA per-cpu:
[  185.905697] CPU    0: hi:    0, btch:   1 usd:   0
[  185.907801] CPU    1: hi:    0, btch:   1 usd:   0
[  185.909915] Normal per-cpu:
[  185.912014] CPU    0: hi:  186, btch:  31 usd: 184
[  185.914144] CPU    1: hi:  186, btch:  31 usd:  71
[  185.916228] HighMem per-cpu:
[  185.918285] CPU    0: hi:  186, btch:  31 usd: 164
[  185.920370] CPU    1: hi:  186, btch:  31 usd: 156
[  185.922390] active_anon:134202 inactive_anon:33609 isolated_anon:0
[  185.922391]  active_file:689 inactive_file:344 isolated_file:0
[  185.922393]  unevictable:0 dirty:0 writeback:409 unstable:0
[  185.922394]  free:1897 slab_reclaimable:933 slab_unreclaimable:1678
[  185.922395]  mapped:952 shmem:165367 pagetables:304 bounce:0
[  185.931250] DMA free:3516kB min:64kB low:80kB high:96kB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:15804kB mlocked:0kB dirty:0kB writeback:0kB mapped:0kB shmem:0kB slab_reclaimable:0kB slab_unreclaimable:8kB kernel_stack:0kB pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no
[  185.936496] lowmem_reserve[]: 0 865 3022 3022
[  185.938184] Normal free:3568kB min:3728kB low:4660kB high:5592kB active_anon:0kB inactive_anon:0kB active_file:52kB inactive_file:0kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:885944kB mlocked:0kB dirty:0kB writeback:0kB mapped:4kB shmem:0kB slab_reclaimable:3732kB slab_unreclaimable:6772kB kernel_stack:1480kB pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no
[  185.943403] lowmem_reserve[]: 0 0 17259 17259
[  185.945089] HighMem free:1000kB min:512kB low:2836kB high:5160kB active_anon:536552kB inactive_anon:134300kB active_file:2704kB inactive_file:1376kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:2209236kB mlocked:0kB dirty:0kB writeback:1620kB mapped:3804kB shmem:660876kB slab_reclaimable:0kB slab_unreclaimable:0kB kernel_stack:0kB pagetables:1216kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no
[  185.950324] lowmem_reserve[]: 0 0 0 0
[  185.952105] DMA: 1*4kB 1*8kB 1*16kB 1*32kB 0*64kB 1*128kB 1*256kB 0*512kB 1*1024kB 1*2048kB 0*4096kB = 3516kB
[  185.953979] Normal: 20*4kB 4*8kB 2*16kB 1*32kB 1*64kB 0*128kB 1*256kB 0*512kB 1*1024kB 1*2048kB 0*4096kB = 3568kB
[  185.955929] HighMem: 176*4kB 23*8kB 3*16kB 2*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 1000kB
[  185.957877] 167673 total pagecache pages
[  185.959787] 1391 pages in swap cache
[  185.961686] Swap cache stats: add 297661, delete 296270, find 177724/191474
[  185.963640] Free swap  = 8062924kB
[  185.965591] Total swap = 8385376kB
[  185.975363] 783968 pages RAM
[  185.977245] 556658 pages HighMem
[  185.979082] 7853 pages reserved
[  185.980889] 14760 pages shared
[  185.982676] 764093 pages non-shared
[  185.984478] iwl3945 0000:05:00.0: Failed to allocate SKB buffer with GFP_KERNEL. Only 4 free buffers remaining.
...
...
[  245.712056] usb usb3: __pm_runtime_suspend() from workqueue!
[  245.712088] usb usb3: __pm_runtime_suspend() returns 0!
[  245.712093] usb usb5: __pm_runtime_suspend() from workqueue!
[  245.712114] usb usb5: __pm_runtime_suspend() returns 0!
[  245.712119] usb usb1: __pm_runtime_suspend() from workqueue!
[  245.712165] usb usb1: __pm_runtime_suspend() returns 0!
[  265.583404] PM: Hibernation mode set to 'reboot'
[  265.584286] PM: Marking nosave pages: 000000000009f000 - 0000000000100000
[  265.584291] PM: Basic memory bitmaps created
[  265.584292] PM: Syncing filesystems ... done.
[  265.630328] Freezing user space processes ... (elapsed 0.01 seconds) done.
[  265.644327] Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
[  265.657301] PM: Preallocating image memory... 
[  277.545121] iwl3945: page allocation failure. order:0, mode:0xd0
[  277.547985] Pid: 1144, comm: iwl3945 Not tainted 2.6.35.4-test-mm5v2-vmscan+snapshot-dirty #7
[  277.547988] Call Trace:
[  277.548001]  [<c019aa67>] ? __alloc_pages_nodemask+0x577/0x630
[  277.548015]  [<f897d2c5>] ? iwl3945_rx_allocate+0x75/0x240 [iwl3945]
[  277.548019]  [<c03f0516>] ? schedule+0x356/0x730
[  277.548024]  [<f897dd50>] ? iwl3945_rx_replenish+0x20/0x50 [iwl3945]
[  277.548029]  [<f897ddbc>] ? iwl3945_bg_rx_replenish+0x3c/0x50 [iwl3945]
[  277.548033]  [<c014b167>] ? worker_thread+0x117/0x1f0
[  277.548038]  [<f897dd80>] ? iwl3945_bg_rx_replenish+0x0/0x50 [iwl3945]
[  277.548042]  [<c014ebd0>] ? autoremove_wake_function+0x0/0x40
[  277.548045]  [<c014b050>] ? worker_thread+0x0/0x1f0
[  277.548048]  [<c014e854>] ? kthread+0x74/0x80
[  277.548050]  [<c014e7e0>] ? kthread+0x0/0x80
[  277.548054]  [<c0103cb6>] ? kernel_thread_helper+0x6/0x10
[  277.548056] Mem-Info:
[  277.548059] DMA per-cpu:
[  277.548061] CPU    0: hi:    0, btch:   1 usd:   0
[  277.548063] CPU    1: hi:    0, btch:   1 usd:   0
[  277.548065] Normal per-cpu:
[  277.548067] CPU    0: hi:  186, btch:  31 usd: 158
[  277.548069] CPU    1: hi:  186, btch:  31 usd:  81
[  277.548070] HighMem per-cpu:
[  277.548072] CPU    0: hi:  186, btch:  31 usd: 194
[  277.548074] CPU    1: hi:  186, btch:  31 usd: 185
[  277.548079] active_anon:132061 inactive_anon:33051 isolated_anon:0
[  277.548080]  active_file:890 inactive_file:320 isolated_file:0
[  277.548081]  unevictable:0 dirty:0 writeback:282 unstable:0
[  277.548082]  free:1884 slab_reclaimable:880 slab_unreclaimable:1633
[  277.548084]  mapped:991 shmem:164563 pagetables:306 bounce:0
[  277.548090] DMA free:3520kB min:64kB low:80kB high:96kB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:15804kB mlocked:0kB dirty:0kB writeback:0kB mapped:0kB shmem:0kB slab_reclaimable:0kB slab_unreclaimable:8kB kernel_stack:0kB pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no
[  277.548094] lowmem_reserve[]: 0 865 3022 3022
[  277.548102] Normal free:3608kB min:3728kB low:4660kB high:5592kB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:76kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:885944kB mlocked:0kB dirty:0kB writeback:0kB mapped:4kB shmem:0kB slab_reclaimable:3520kB slab_unreclaimable:6524kB kernel_stack:1480kB pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:122 all_unreclaimable? no
[  277.548106] lowmem_reserve[]: 0 0 17259 17259
[  277.548114] HighMem free:408kB min:512kB low:2836kB high:5160kB active_anon:528244kB inactive_anon:132204kB active_file:3560kB inactive_file:1204kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:2209236kB mlocked:0kB dirty:0kB writeback:1128kB mapped:3960kB shmem:658252kB slab_reclaimable:0kB slab_unreclaimable:0kB kernel_stack:0kB pagetables:1224kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:4384 all_unreclaimable? no
[  277.548118] lowmem_reserve[]: 0 0 0 0
[  277.548121] DMA: 0*4kB 0*8kB 0*16kB 0*32kB 1*64kB 1*128kB 1*256kB 0*512kB 1*1024kB 1*2048kB 0*4096kB = 3520kB
[  277.548129] Normal: 0*4kB 1*8kB 1*16kB 0*32kB 0*64kB 0*128kB 0*256kB 1*512kB 1*1024kB 1*2048kB 0*4096kB = 3608kB
[  277.548136] HighMem: 100*4kB 1*8kB 0*16kB 0*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 408kB
[  277.548143] 166232 total pagecache pages
[  277.548145] 460 pages in swap cache
[  277.548147] Swap cache stats: add 947081, delete 946621, find 437341/491917
[  277.548148] Free swap  = 2665828kB
[  277.548150] Total swap = 2996084kB
[  277.560847] 783968 pages RAM
[  277.560849] 556658 pages HighMem
[  277.560851] 7853 pages reserved
[  277.560852] 14928 pages shared
[  277.560854] 764721 pages non-shared
[  277.560860] iwl3945 0000:05:00.0: Failed to allocate SKB buffer with GFP_KERNEL. Only 8 free buffers remaining.
[  277.560897] iwl3945: page allocation failure. order:0, mode:0xd0
[  277.560901] Pid: 1144, comm: iwl3945 Not tainted 2.6.35.4-test-mm5v2-vmscan+snapshot-dirty #7
[  277.560903] Call Trace:
[  277.560912]  [<c019aa67>] ? __alloc_pages_nodemask+0x577/0x630
[  277.560925]  [<f897d2c5>] ? iwl3945_rx_allocate+0x75/0x240 [iwl3945]
[  277.560930]  [<c014b815>] ? __queue_work+0x25/0x40
[  277.560933]  [<c014b908>] ? queue_work_on+0x38/0x60
[  277.560937]  [<f897dd50>] ? iwl3945_rx_replenish+0x20/0x50 [iwl3945]
[  277.560942]  [<f897ddbc>] ? iwl3945_bg_rx_replenish+0x3c/0x50 [iwl3945]
[  277.560945]  [<c014b167>] ? worker_thread+0x117/0x1f0
[  277.560949]  [<f897dd80>] ? iwl3945_bg_rx_replenish+0x0/0x50 [iwl3945]
[  277.560953]  [<c014ebd0>] ? autoremove_wake_function+0x0/0x40
[  277.560956]  [<c014b050>] ? worker_thread+0x0/0x1f0
[  277.560959]  [<c014e854>] ? kthread+0x74/0x80
[  277.560962]  [<c014e7e0>] ? kthread+0x0/0x80
[  277.560966]  [<c0103cb6>] ? kernel_thread_helper+0x6/0x10
[  277.560968] Mem-Info:
[  277.560970] DMA per-cpu:
[  277.560972] CPU    0: hi:    0, btch:   1 usd:   0
[  277.560975] CPU    1: hi:    0, btch:   1 usd:   0
[  277.560976] Normal per-cpu:
[  277.560978] CPU    0: hi:  186, btch:  31 usd: 159
[  277.560980] CPU    1: hi:  186, btch:  31 usd:  81
[  277.560982] HighMem per-cpu:
[  277.560984] CPU    0: hi:  186, btch:  31 usd: 194
[  277.560986] CPU    1: hi:  186, btch:  31 usd: 185
[  277.560991] active_anon:132061 inactive_anon:33051 isolated_anon:0
[  277.560992]  active_file:890 inactive_file:320 isolated_file:0
[  277.560994]  unevictable:0 dirty:0 writeback:168 unstable:0
[  277.560995]  free:1884 slab_reclaimable:880 slab_unreclaimable:1633
[  277.560996]  mapped:991 shmem:164563 pagetables:306 bounce:0
[  277.561003] DMA free:3520kB min:64kB low:80kB high:96kB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:15804kB mlocked:0kB dirty:0kB writeback:0kB mapped:0kB shmem:0kB slab_reclaimable:0kB slab_unreclaimable:8kB kernel_stack:0kB pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no
[  277.561007] lowmem_reserve[]: 0 865 3022 3022
[  277.561014] Normal free:3608kB min:3728kB low:4660kB high:5592kB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:76kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:885944kB mlocked:0kB dirty:0kB writeback:0kB mapped:4kB shmem:0kB slab_reclaimable:3520kB slab_unreclaimable:6524kB kernel_stack:1480kB pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:122 all_unreclaimable? no
[  277.561019] lowmem_reserve[]: 0 0 17259 17259
[  277.561027] HighMem free:408kB min:512kB low:2836kB high:5160kB active_anon:528244kB inactive_anon:132204kB active_file:3560kB inactive_file:1204kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:2209236kB mlocked:0kB dirty:0kB writeback:672kB mapped:3960kB shmem:658252kB slab_reclaimable:0kB slab_unreclaimable:0kB kernel_stack:0kB pagetables:1224kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:4384 all_unreclaimable? no
[  277.561031] lowmem_reserve[]: 0 0 0 0
[  277.561034] DMA: 0*4kB 0*8kB 0*16kB 0*32kB 1*64kB 1*128kB 1*256kB 0*512kB 1*1024kB 1*2048kB 0*4096kB = 3520kB
[  277.561042] Normal: 0*4kB 1*8kB 1*16kB 0*32kB 0*64kB 0*128kB 0*256kB 1*512kB 1*1024kB 1*2048kB 0*4096kB = 3608kB
[  277.561049] HighMem: 100*4kB 1*8kB 0*16kB 0*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 408kB
[  277.561057] 166232 total pagecache pages
[  277.561059] 460 pages in swap cache
[  277.561061] Swap cache stats: add 947081, delete 946621, find 437341/491917
[  277.561063] Free swap  = 2665828kB
[  277.561065] Total swap = 2996084kB
[  277.573331] 783968 pages RAM
[  277.573333] 556658 pages HighMem
[  277.573334] 7853 pages reserved
[  277.573335] 14928 pages shared
[  277.573336] 764720 pages non-shared
[  277.573341] iwl3945 0000:05:00.0: Failed to allocate SKB buffer with GFP_KERNEL. Only 8 free buffers remaining.
=== >8 ===


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

* Re: Important news regarding the two different patches
  2010-09-06 18:43                                           ` Rafael J. Wysocki
@ 2010-09-07  1:34                                             ` M. Vefa Bicakci
  2010-09-07  1:34                                             ` M. Vefa Bicakci
  1 sibling, 0 replies; 66+ messages in thread
From: M. Vefa Bicakci @ 2010-09-07  1:34 UTC (permalink / raw)
  To: Rafael J. Wysocki; +Cc: linux-pm, Linux Kernel Mailing List, KOSAKI Motohiro

On 06/09/10 02:43 PM, Rafael J. Wysocki wrote:
> On Monday, September 06, 2010, M. Vefa Bicakci wrote:
>> [snip]
>>
>> Patch 1:
>> 	http://lkml.org/lkml/2010/9/5/86
>>
>> Patch 2:
>> 	http://kerneltrap.org/mailarchive/linux-kernel/2010/9/4/4615426
>>
>> The first of these was prepared by Minchan Kim, and it fixes
>> the issue; i.e. no hangs during hibernation with a full tmpfs.
> 
> We've already agreed that this patch should be applied.
> 
>> However, the second patch, prepared by Rafael Wysocki, does *not*
>> fix the problem. I still experience hangs with a full tmpfs upon
>> hibernation.
> 
> So we still manage to trigger OOM with this approach.
> 
>> As always, I am willing to test newer patches and help in debugging
>> this issue.
> 
> What happens if you apply them both at the same time?

Hello,

When I apply both of the patches, then I don't get any hangs with
hibernation. However, I do get another problem, which I am not sure
is related or not. I should note that I haven't experienced this
with only the vmscan.c patch, but maybe I haven't repeated my test
enough times.

One test consists of an automated run of 7 hibernate/thaw cycles. 

Here's what I got in dmesg in two of the iterations in one test.
Sorry for the long e-mail and the long lines.

=== 8< ===
[  166.512085] PM: Hibernation mode set to 'reboot'
[  166.516503] PM: Marking nosave pages: 000000000009f000 - 0000000000100000
[  166.517654] PM: Basic memory bitmaps created
[  166.518781] PM: Syncing filesystems ... done.
[  166.546308] Freezing user space processes ... (elapsed 0.01 seconds) done.
[  166.559596] Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
[  166.571649] PM: Preallocating image memory... 
[  185.712457] iwl3945: page allocation failure. order:0, mode:0xd0
[  185.714564] Pid: 1225, comm: iwl3945 Not tainted 2.6.35.4-test-mm5v2-vmscan+snapshot-dirty #7
[  185.715741] Call Trace:
[  185.716853]  [<c019aa67>] ? __alloc_pages_nodemask+0x577/0x630
[  185.718126]  [<f8a562c5>] ? iwl3945_rx_allocate+0x75/0x240 [iwl3945]
[  185.719379]  [<c03f0516>] ? schedule+0x356/0x730
[  185.720556]  [<f8a56d50>] ? iwl3945_rx_replenish+0x20/0x50 [iwl3945]
[  185.721914]  [<f8a56dbc>] ? iwl3945_bg_rx_replenish+0x3c/0x50 [iwl3945]
[  185.723929]  [<c014b167>] ? worker_thread+0x117/0x1f0
[  185.725745]  [<f8a56d80>] ? iwl3945_bg_rx_replenish+0x0/0x50 [iwl3945]
[  185.727097]  [<c014ebd0>] ? autoremove_wake_function+0x0/0x40
[  185.728468]  [<c014b050>] ? worker_thread+0x0/0x1f0
[  185.730235]  [<c014e854>] ? kthread+0x74/0x80
[  185.731601]  [<c014e7e0>] ? kthread+0x0/0x80
[  185.732919]  [<c0103cb6>] ? kernel_thread_helper+0x6/0x10
[  185.734851] Mem-Info:
[  185.736144] DMA per-cpu:
[  185.737439] CPU    0: hi:    0, btch:   1 usd:   0
[  185.738635] CPU    1: hi:    0, btch:   1 usd:   0
[  185.740296] Normal per-cpu:
[  185.741560] CPU    0: hi:  186, btch:  31 usd: 173
[  185.742752] CPU    1: hi:  186, btch:  31 usd:  49
[  185.744092] HighMem per-cpu:
[  185.745897] CPU    0: hi:  186, btch:  31 usd: 159
[  185.747239] CPU    1: hi:  186, btch:  31 usd: 170
[  185.748547] active_anon:136410 inactive_anon:34149 isolated_anon:0
[  185.748549]  active_file:689 inactive_file:344 isolated_file:0
[  185.748550]  unevictable:0 dirty:0 writeback:392 unstable:0
[  185.748551]  free:1928 slab_reclaimable:933 slab_unreclaimable:1680
[  185.748552]  mapped:952 shmem:168120 pagetables:304 bounce:0
[  185.755444] DMA free:3516kB min:64kB low:80kB high:96kB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:15804kB mlocked:0kB dirty:0kB writeback:0kB mapped:0kB shmem:0kB slab_reclaimable:0kB slab_unreclaimable:8kB kernel_stack:0kB pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no
[  185.759708] lowmem_reserve[]: 0 865 3022 3022
[  185.761135] Normal free:3444kB min:3728kB low:4660kB high:5592kB active_anon:0kB inactive_anon:0kB active_file:52kB inactive_file:0kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:885944kB mlocked:0kB dirty:0kB writeback:0kB mapped:4kB shmem:0kB slab_reclaimable:3732kB slab_unreclaimable:6712kB kernel_stack:1480kB pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:96 all_unreclaimable? no
[  185.765935] lowmem_reserve[]: 0 0 17259 17259
[  185.767626] HighMem free:628kB min:512kB low:2836kB high:5160kB active_anon:545256kB inactive_anon:136444kB active_file:2704kB inactive_file:1376kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:2209236kB mlocked:0kB dirty:0kB writeback:1416kB mapped:3804kB shmem:671948kB slab_reclaimable:0kB slab_unreclaimable:0kB kernel_stack:0kB pagetables:1216kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:32 all_unreclaimable? no
[  185.773232] lowmem_reserve[]: 0 0 0 0
[  185.775142] DMA: 1*4kB 1*8kB 1*16kB 1*32kB 0*64kB 1*128kB 1*256kB 0*512kB 1*1024kB 1*2048kB 0*4096kB = 3516kB
[  185.777152] Normal: 1*4kB 0*8kB 1*16kB 1*32kB 1*64kB 0*128kB 1*256kB 0*512kB 1*1024kB 1*2048kB 0*4096kB = 3444kB
[  185.779420] HighMem: 151*4kB 14*8kB 6*16kB 2*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 876kB
[  185.781487] 170219 total pagecache pages
[  185.783662] 1273 pages in swap cache
[  185.785764] Swap cache stats: add 295103, delete 293899, find 177724/191474
[  185.787782] Free swap  = 8072684kB
[  185.789940] Total swap = 8385376kB
[  185.802225] 783968 pages RAM
[  185.804258] 556658 pages HighMem
[  185.806241] 7853 pages reserved
[  185.808263] 14784 pages shared
[  185.810237] 764178 pages non-shared
[  185.812216] iwl3945 0000:05:00.0: Failed to allocate SKB buffer with GFP_KERNEL. Only 5 free buffers remaining.
[  185.871861] iwl3945: page allocation failure. order:0, mode:0xd0
[  185.873847] Pid: 1225, comm: iwl3945 Not tainted 2.6.35.4-test-mm5v2-vmscan+snapshot-dirty #7
[  185.876345] Call Trace:
[  185.878416]  [<c019aa67>] ? __alloc_pages_nodemask+0x577/0x630
[  185.880493]  [<f8a562c5>] ? iwl3945_rx_allocate+0x75/0x240 [iwl3945]
[  185.882558]  [<f8a56d50>] ? iwl3945_rx_replenish+0x20/0x50 [iwl3945]
[  185.884651]  [<f8a56dbc>] ? iwl3945_bg_rx_replenish+0x3c/0x50 [iwl3945]
[  185.886753]  [<c014b167>] ? worker_thread+0x117/0x1f0
[  185.888831]  [<f8a56d80>] ? iwl3945_bg_rx_replenish+0x0/0x50 [iwl3945]
[  185.890856]  [<c014ebd0>] ? autoremove_wake_function+0x0/0x40
[  185.892984]  [<c014b050>] ? worker_thread+0x0/0x1f0
[  185.895116]  [<c014e854>] ? kthread+0x74/0x80
[  185.897249]  [<c014e7e0>] ? kthread+0x0/0x80
[  185.899367]  [<c0103cb6>] ? kernel_thread_helper+0x6/0x10
[  185.901465] Mem-Info:
[  185.903580] DMA per-cpu:
[  185.905697] CPU    0: hi:    0, btch:   1 usd:   0
[  185.907801] CPU    1: hi:    0, btch:   1 usd:   0
[  185.909915] Normal per-cpu:
[  185.912014] CPU    0: hi:  186, btch:  31 usd: 184
[  185.914144] CPU    1: hi:  186, btch:  31 usd:  71
[  185.916228] HighMem per-cpu:
[  185.918285] CPU    0: hi:  186, btch:  31 usd: 164
[  185.920370] CPU    1: hi:  186, btch:  31 usd: 156
[  185.922390] active_anon:134202 inactive_anon:33609 isolated_anon:0
[  185.922391]  active_file:689 inactive_file:344 isolated_file:0
[  185.922393]  unevictable:0 dirty:0 writeback:409 unstable:0
[  185.922394]  free:1897 slab_reclaimable:933 slab_unreclaimable:1678
[  185.922395]  mapped:952 shmem:165367 pagetables:304 bounce:0
[  185.931250] DMA free:3516kB min:64kB low:80kB high:96kB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:15804kB mlocked:0kB dirty:0kB writeback:0kB mapped:0kB shmem:0kB slab_reclaimable:0kB slab_unreclaimable:8kB kernel_stack:0kB pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no
[  185.936496] lowmem_reserve[]: 0 865 3022 3022
[  185.938184] Normal free:3568kB min:3728kB low:4660kB high:5592kB active_anon:0kB inactive_anon:0kB active_file:52kB inactive_file:0kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:885944kB mlocked:0kB dirty:0kB writeback:0kB mapped:4kB shmem:0kB slab_reclaimable:3732kB slab_unreclaimable:6772kB kernel_stack:1480kB pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no
[  185.943403] lowmem_reserve[]: 0 0 17259 17259
[  185.945089] HighMem free:1000kB min:512kB low:2836kB high:5160kB active_anon:536552kB inactive_anon:134300kB active_file:2704kB inactive_file:1376kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:2209236kB mlocked:0kB dirty:0kB writeback:1620kB mapped:3804kB shmem:660876kB slab_reclaimable:0kB slab_unreclaimable:0kB kernel_stack:0kB pagetables:1216kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no
[  185.950324] lowmem_reserve[]: 0 0 0 0
[  185.952105] DMA: 1*4kB 1*8kB 1*16kB 1*32kB 0*64kB 1*128kB 1*256kB 0*512kB 1*1024kB 1*2048kB 0*4096kB = 3516kB
[  185.953979] Normal: 20*4kB 4*8kB 2*16kB 1*32kB 1*64kB 0*128kB 1*256kB 0*512kB 1*1024kB 1*2048kB 0*4096kB = 3568kB
[  185.955929] HighMem: 176*4kB 23*8kB 3*16kB 2*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 1000kB
[  185.957877] 167673 total pagecache pages
[  185.959787] 1391 pages in swap cache
[  185.961686] Swap cache stats: add 297661, delete 296270, find 177724/191474
[  185.963640] Free swap  = 8062924kB
[  185.965591] Total swap = 8385376kB
[  185.975363] 783968 pages RAM
[  185.977245] 556658 pages HighMem
[  185.979082] 7853 pages reserved
[  185.980889] 14760 pages shared
[  185.982676] 764093 pages non-shared
[  185.984478] iwl3945 0000:05:00.0: Failed to allocate SKB buffer with GFP_KERNEL. Only 4 free buffers remaining.
...
...
[  245.712056] usb usb3: __pm_runtime_suspend() from workqueue!
[  245.712088] usb usb3: __pm_runtime_suspend() returns 0!
[  245.712093] usb usb5: __pm_runtime_suspend() from workqueue!
[  245.712114] usb usb5: __pm_runtime_suspend() returns 0!
[  245.712119] usb usb1: __pm_runtime_suspend() from workqueue!
[  245.712165] usb usb1: __pm_runtime_suspend() returns 0!
[  265.583404] PM: Hibernation mode set to 'reboot'
[  265.584286] PM: Marking nosave pages: 000000000009f000 - 0000000000100000
[  265.584291] PM: Basic memory bitmaps created
[  265.584292] PM: Syncing filesystems ... done.
[  265.630328] Freezing user space processes ... (elapsed 0.01 seconds) done.
[  265.644327] Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
[  265.657301] PM: Preallocating image memory... 
[  277.545121] iwl3945: page allocation failure. order:0, mode:0xd0
[  277.547985] Pid: 1144, comm: iwl3945 Not tainted 2.6.35.4-test-mm5v2-vmscan+snapshot-dirty #7
[  277.547988] Call Trace:
[  277.548001]  [<c019aa67>] ? __alloc_pages_nodemask+0x577/0x630
[  277.548015]  [<f897d2c5>] ? iwl3945_rx_allocate+0x75/0x240 [iwl3945]
[  277.548019]  [<c03f0516>] ? schedule+0x356/0x730
[  277.548024]  [<f897dd50>] ? iwl3945_rx_replenish+0x20/0x50 [iwl3945]
[  277.548029]  [<f897ddbc>] ? iwl3945_bg_rx_replenish+0x3c/0x50 [iwl3945]
[  277.548033]  [<c014b167>] ? worker_thread+0x117/0x1f0
[  277.548038]  [<f897dd80>] ? iwl3945_bg_rx_replenish+0x0/0x50 [iwl3945]
[  277.548042]  [<c014ebd0>] ? autoremove_wake_function+0x0/0x40
[  277.548045]  [<c014b050>] ? worker_thread+0x0/0x1f0
[  277.548048]  [<c014e854>] ? kthread+0x74/0x80
[  277.548050]  [<c014e7e0>] ? kthread+0x0/0x80
[  277.548054]  [<c0103cb6>] ? kernel_thread_helper+0x6/0x10
[  277.548056] Mem-Info:
[  277.548059] DMA per-cpu:
[  277.548061] CPU    0: hi:    0, btch:   1 usd:   0
[  277.548063] CPU    1: hi:    0, btch:   1 usd:   0
[  277.548065] Normal per-cpu:
[  277.548067] CPU    0: hi:  186, btch:  31 usd: 158
[  277.548069] CPU    1: hi:  186, btch:  31 usd:  81
[  277.548070] HighMem per-cpu:
[  277.548072] CPU    0: hi:  186, btch:  31 usd: 194
[  277.548074] CPU    1: hi:  186, btch:  31 usd: 185
[  277.548079] active_anon:132061 inactive_anon:33051 isolated_anon:0
[  277.548080]  active_file:890 inactive_file:320 isolated_file:0
[  277.548081]  unevictable:0 dirty:0 writeback:282 unstable:0
[  277.548082]  free:1884 slab_reclaimable:880 slab_unreclaimable:1633
[  277.548084]  mapped:991 shmem:164563 pagetables:306 bounce:0
[  277.548090] DMA free:3520kB min:64kB low:80kB high:96kB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:15804kB mlocked:0kB dirty:0kB writeback:0kB mapped:0kB shmem:0kB slab_reclaimable:0kB slab_unreclaimable:8kB kernel_stack:0kB pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no
[  277.548094] lowmem_reserve[]: 0 865 3022 3022
[  277.548102] Normal free:3608kB min:3728kB low:4660kB high:5592kB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:76kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:885944kB mlocked:0kB dirty:0kB writeback:0kB mapped:4kB shmem:0kB slab_reclaimable:3520kB slab_unreclaimable:6524kB kernel_stack:1480kB pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:122 all_unreclaimable? no
[  277.548106] lowmem_reserve[]: 0 0 17259 17259
[  277.548114] HighMem free:408kB min:512kB low:2836kB high:5160kB active_anon:528244kB inactive_anon:132204kB active_file:3560kB inactive_file:1204kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:2209236kB mlocked:0kB dirty:0kB writeback:1128kB mapped:3960kB shmem:658252kB slab_reclaimable:0kB slab_unreclaimable:0kB kernel_stack:0kB pagetables:1224kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:4384 all_unreclaimable? no
[  277.548118] lowmem_reserve[]: 0 0 0 0
[  277.548121] DMA: 0*4kB 0*8kB 0*16kB 0*32kB 1*64kB 1*128kB 1*256kB 0*512kB 1*1024kB 1*2048kB 0*4096kB = 3520kB
[  277.548129] Normal: 0*4kB 1*8kB 1*16kB 0*32kB 0*64kB 0*128kB 0*256kB 1*512kB 1*1024kB 1*2048kB 0*4096kB = 3608kB
[  277.548136] HighMem: 100*4kB 1*8kB 0*16kB 0*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 408kB
[  277.548143] 166232 total pagecache pages
[  277.548145] 460 pages in swap cache
[  277.548147] Swap cache stats: add 947081, delete 946621, find 437341/491917
[  277.548148] Free swap  = 2665828kB
[  277.548150] Total swap = 2996084kB
[  277.560847] 783968 pages RAM
[  277.560849] 556658 pages HighMem
[  277.560851] 7853 pages reserved
[  277.560852] 14928 pages shared
[  277.560854] 764721 pages non-shared
[  277.560860] iwl3945 0000:05:00.0: Failed to allocate SKB buffer with GFP_KERNEL. Only 8 free buffers remaining.
[  277.560897] iwl3945: page allocation failure. order:0, mode:0xd0
[  277.560901] Pid: 1144, comm: iwl3945 Not tainted 2.6.35.4-test-mm5v2-vmscan+snapshot-dirty #7
[  277.560903] Call Trace:
[  277.560912]  [<c019aa67>] ? __alloc_pages_nodemask+0x577/0x630
[  277.560925]  [<f897d2c5>] ? iwl3945_rx_allocate+0x75/0x240 [iwl3945]
[  277.560930]  [<c014b815>] ? __queue_work+0x25/0x40
[  277.560933]  [<c014b908>] ? queue_work_on+0x38/0x60
[  277.560937]  [<f897dd50>] ? iwl3945_rx_replenish+0x20/0x50 [iwl3945]
[  277.560942]  [<f897ddbc>] ? iwl3945_bg_rx_replenish+0x3c/0x50 [iwl3945]
[  277.560945]  [<c014b167>] ? worker_thread+0x117/0x1f0
[  277.560949]  [<f897dd80>] ? iwl3945_bg_rx_replenish+0x0/0x50 [iwl3945]
[  277.560953]  [<c014ebd0>] ? autoremove_wake_function+0x0/0x40
[  277.560956]  [<c014b050>] ? worker_thread+0x0/0x1f0
[  277.560959]  [<c014e854>] ? kthread+0x74/0x80
[  277.560962]  [<c014e7e0>] ? kthread+0x0/0x80
[  277.560966]  [<c0103cb6>] ? kernel_thread_helper+0x6/0x10
[  277.560968] Mem-Info:
[  277.560970] DMA per-cpu:
[  277.560972] CPU    0: hi:    0, btch:   1 usd:   0
[  277.560975] CPU    1: hi:    0, btch:   1 usd:   0
[  277.560976] Normal per-cpu:
[  277.560978] CPU    0: hi:  186, btch:  31 usd: 159
[  277.560980] CPU    1: hi:  186, btch:  31 usd:  81
[  277.560982] HighMem per-cpu:
[  277.560984] CPU    0: hi:  186, btch:  31 usd: 194
[  277.560986] CPU    1: hi:  186, btch:  31 usd: 185
[  277.560991] active_anon:132061 inactive_anon:33051 isolated_anon:0
[  277.560992]  active_file:890 inactive_file:320 isolated_file:0
[  277.560994]  unevictable:0 dirty:0 writeback:168 unstable:0
[  277.560995]  free:1884 slab_reclaimable:880 slab_unreclaimable:1633
[  277.560996]  mapped:991 shmem:164563 pagetables:306 bounce:0
[  277.561003] DMA free:3520kB min:64kB low:80kB high:96kB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:15804kB mlocked:0kB dirty:0kB writeback:0kB mapped:0kB shmem:0kB slab_reclaimable:0kB slab_unreclaimable:8kB kernel_stack:0kB pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no
[  277.561007] lowmem_reserve[]: 0 865 3022 3022
[  277.561014] Normal free:3608kB min:3728kB low:4660kB high:5592kB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:76kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:885944kB mlocked:0kB dirty:0kB writeback:0kB mapped:4kB shmem:0kB slab_reclaimable:3520kB slab_unreclaimable:6524kB kernel_stack:1480kB pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:122 all_unreclaimable? no
[  277.561019] lowmem_reserve[]: 0 0 17259 17259
[  277.561027] HighMem free:408kB min:512kB low:2836kB high:5160kB active_anon:528244kB inactive_anon:132204kB active_file:3560kB inactive_file:1204kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:2209236kB mlocked:0kB dirty:0kB writeback:672kB mapped:3960kB shmem:658252kB slab_reclaimable:0kB slab_unreclaimable:0kB kernel_stack:0kB pagetables:1224kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:4384 all_unreclaimable? no
[  277.561031] lowmem_reserve[]: 0 0 0 0
[  277.561034] DMA: 0*4kB 0*8kB 0*16kB 0*32kB 1*64kB 1*128kB 1*256kB 0*512kB 1*1024kB 1*2048kB 0*4096kB = 3520kB
[  277.561042] Normal: 0*4kB 1*8kB 1*16kB 0*32kB 0*64kB 0*128kB 0*256kB 1*512kB 1*1024kB 1*2048kB 0*4096kB = 3608kB
[  277.561049] HighMem: 100*4kB 1*8kB 0*16kB 0*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 408kB
[  277.561057] 166232 total pagecache pages
[  277.561059] 460 pages in swap cache
[  277.561061] Swap cache stats: add 947081, delete 946621, find 437341/491917
[  277.561063] Free swap  = 2665828kB
[  277.561065] Total swap = 2996084kB
[  277.573331] 783968 pages RAM
[  277.573333] 556658 pages HighMem
[  277.573334] 7853 pages reserved
[  277.573335] 14928 pages shared
[  277.573336] 764720 pages non-shared
[  277.573341] iwl3945 0000:05:00.0: Failed to allocate SKB buffer with GFP_KERNEL. Only 8 free buffers remaining.
=== >8 ===

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

* Re: Important news regarding the two different patches
  2010-09-07  1:34                                             ` M. Vefa Bicakci
@ 2010-09-07  1:58                                               ` KOSAKI Motohiro
  2010-09-07 21:44                                                 ` Rafael J. Wysocki
  2010-09-07 21:44                                                 ` Rafael J. Wysocki
  2010-09-07  1:58                                               ` KOSAKI Motohiro
  1 sibling, 2 replies; 66+ messages in thread
From: KOSAKI Motohiro @ 2010-09-07  1:58 UTC (permalink / raw)
  To: M. Vefa Bicakci
  Cc: kosaki.motohiro, Rafael J. Wysocki, Linux Kernel Mailing List,
	linux-pm, Minchan Kim

> Hello,
> 
> When I apply both of the patches, then I don't get any hangs with
> hibernation. However, I do get another problem, which I am not sure
> is related or not. I should note that I haven't experienced this
> with only the vmscan.c patch, but maybe I haven't repeated my test
> enough times.
> 
> One test consists of an automated run of 7 hibernate/thaw cycles. 
> 
> Here's what I got in dmesg in two of the iterations in one test.
> Sorry for the long e-mail and the long lines.
> 
> === 8< ===
> [  166.512085] PM: Hibernation mode set to 'reboot'
> [  166.516503] PM: Marking nosave pages: 000000000009f000 - 0000000000100000
> [  166.517654] PM: Basic memory bitmaps created
> [  166.518781] PM: Syncing filesystems ... done.
> [  166.546308] Freezing user space processes ... (elapsed 0.01 seconds) done.
> [  166.559596] Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
> [  166.571649] PM: Preallocating image memory... 
> [  185.712457] iwl3945: page allocation failure. order:0, mode:0xd0
> [  185.714564] Pid: 1225, comm: iwl3945 Not tainted 2.6.35.4-test-mm5v2-vmscan+snapshot-dirty #7
> [  185.715741] Call Trace:
> [  185.716853]  [<c019aa67>] ? __alloc_pages_nodemask+0x577/0x630
> [  185.718126]  [<f8a562c5>] ? iwl3945_rx_allocate+0x75/0x240 [iwl3945]
> [  185.719379]  [<c03f0516>] ? schedule+0x356/0x730
> [  185.720556]  [<f8a56d50>] ? iwl3945_rx_replenish+0x20/0x50 [iwl3945]
> [  185.721914]  [<f8a56dbc>] ? iwl3945_bg_rx_replenish+0x3c/0x50 [iwl3945]
> [  185.723929]  [<c014b167>] ? worker_thread+0x117/0x1f0
> [  185.725745]  [<f8a56d80>] ? iwl3945_bg_rx_replenish+0x0/0x50 [iwl3945]
> [  185.727097]  [<c014ebd0>] ? autoremove_wake_function+0x0/0x40
> [  185.728468]  [<c014b050>] ? worker_thread+0x0/0x1f0
> [  185.730235]  [<c014e854>] ? kthread+0x74/0x80
> [  185.731601]  [<c014e7e0>] ? kthread+0x0/0x80
> [  185.732919]  [<c0103cb6>] ? kernel_thread_helper+0x6/0x10

Hm, interesting.

Rafael's patch seems works intentionally. preallocate much much memory and
release over allocated memory. But on your system, iwl3945 allocate memory 
concurrently. If it try to allocate before the hibernation code release 
extra memory, It may get allocation failure.

So, I'm not sure wich behavior is desired.
  1) preallocate enough much memory
	pros) hibernate faster
	cons) failure risk of network card memory allocation
  2) preallocate small memory
	pros) hibernate slower
	cons) don't makes network card memory allocation

But, I wonder why this kernel thread is not frozen. afaik, hibernation
doesn't need network capability. Is this really intentional?

Rafael, Could you please explain the design of hibernation and your
intention?

Vefa, note: this allocation failure doesn't makes any problem. this mean
network card can't receive one network packet. But while hibernation,
we always can't receive network patchet. so no problem.




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

* Re: Important news regarding the two different patches
  2010-09-07  1:34                                             ` M. Vefa Bicakci
  2010-09-07  1:58                                               ` KOSAKI Motohiro
@ 2010-09-07  1:58                                               ` KOSAKI Motohiro
  1 sibling, 0 replies; 66+ messages in thread
From: KOSAKI Motohiro @ 2010-09-07  1:58 UTC (permalink / raw)
  To: M. Vefa Bicakci; +Cc: linux-pm, Linux Kernel Mailing List, kosaki.motohiro

> Hello,
> 
> When I apply both of the patches, then I don't get any hangs with
> hibernation. However, I do get another problem, which I am not sure
> is related or not. I should note that I haven't experienced this
> with only the vmscan.c patch, but maybe I haven't repeated my test
> enough times.
> 
> One test consists of an automated run of 7 hibernate/thaw cycles. 
> 
> Here's what I got in dmesg in two of the iterations in one test.
> Sorry for the long e-mail and the long lines.
> 
> === 8< ===
> [  166.512085] PM: Hibernation mode set to 'reboot'
> [  166.516503] PM: Marking nosave pages: 000000000009f000 - 0000000000100000
> [  166.517654] PM: Basic memory bitmaps created
> [  166.518781] PM: Syncing filesystems ... done.
> [  166.546308] Freezing user space processes ... (elapsed 0.01 seconds) done.
> [  166.559596] Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
> [  166.571649] PM: Preallocating image memory... 
> [  185.712457] iwl3945: page allocation failure. order:0, mode:0xd0
> [  185.714564] Pid: 1225, comm: iwl3945 Not tainted 2.6.35.4-test-mm5v2-vmscan+snapshot-dirty #7
> [  185.715741] Call Trace:
> [  185.716853]  [<c019aa67>] ? __alloc_pages_nodemask+0x577/0x630
> [  185.718126]  [<f8a562c5>] ? iwl3945_rx_allocate+0x75/0x240 [iwl3945]
> [  185.719379]  [<c03f0516>] ? schedule+0x356/0x730
> [  185.720556]  [<f8a56d50>] ? iwl3945_rx_replenish+0x20/0x50 [iwl3945]
> [  185.721914]  [<f8a56dbc>] ? iwl3945_bg_rx_replenish+0x3c/0x50 [iwl3945]
> [  185.723929]  [<c014b167>] ? worker_thread+0x117/0x1f0
> [  185.725745]  [<f8a56d80>] ? iwl3945_bg_rx_replenish+0x0/0x50 [iwl3945]
> [  185.727097]  [<c014ebd0>] ? autoremove_wake_function+0x0/0x40
> [  185.728468]  [<c014b050>] ? worker_thread+0x0/0x1f0
> [  185.730235]  [<c014e854>] ? kthread+0x74/0x80
> [  185.731601]  [<c014e7e0>] ? kthread+0x0/0x80
> [  185.732919]  [<c0103cb6>] ? kernel_thread_helper+0x6/0x10

Hm, interesting.

Rafael's patch seems works intentionally. preallocate much much memory and
release over allocated memory. But on your system, iwl3945 allocate memory 
concurrently. If it try to allocate before the hibernation code release 
extra memory, It may get allocation failure.

So, I'm not sure wich behavior is desired.
  1) preallocate enough much memory
	pros) hibernate faster
	cons) failure risk of network card memory allocation
  2) preallocate small memory
	pros) hibernate slower
	cons) don't makes network card memory allocation

But, I wonder why this kernel thread is not frozen. afaik, hibernation
doesn't need network capability. Is this really intentional?

Rafael, Could you please explain the design of hibernation and your
intention?

Vefa, note: this allocation failure doesn't makes any problem. this mean
network card can't receive one network packet. But while hibernation,
we always can't receive network patchet. so no problem.

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

* Re: Important news regarding the two different patches
  2010-09-07  1:58                                               ` KOSAKI Motohiro
  2010-09-07 21:44                                                 ` Rafael J. Wysocki
@ 2010-09-07 21:44                                                 ` Rafael J. Wysocki
  2010-09-08 12:56                                                   ` M. Vefa Bicakci
  2010-09-08 12:56                                                   ` Important news regarding the two different patches M. Vefa Bicakci
  1 sibling, 2 replies; 66+ messages in thread
From: Rafael J. Wysocki @ 2010-09-07 21:44 UTC (permalink / raw)
  To: KOSAKI Motohiro, M. Vefa Bicakci
  Cc: Linux Kernel Mailing List, linux-pm, Minchan Kim

On Tuesday, September 07, 2010, KOSAKI Motohiro wrote:
> > Hello,
> > 
> > When I apply both of the patches, then I don't get any hangs with
> > hibernation. However, I do get another problem, which I am not sure
> > is related or not. I should note that I haven't experienced this
> > with only the vmscan.c patch, but maybe I haven't repeated my test
> > enough times.
> > 
> > One test consists of an automated run of 7 hibernate/thaw cycles. 
> > 
> > Here's what I got in dmesg in two of the iterations in one test.
> > Sorry for the long e-mail and the long lines.
> > 
> > === 8< ===
> > [  166.512085] PM: Hibernation mode set to 'reboot'
> > [  166.516503] PM: Marking nosave pages: 000000000009f000 - 0000000000100000
> > [  166.517654] PM: Basic memory bitmaps created
> > [  166.518781] PM: Syncing filesystems ... done.
> > [  166.546308] Freezing user space processes ... (elapsed 0.01 seconds) done.
> > [  166.559596] Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
> > [  166.571649] PM: Preallocating image memory... 
> > [  185.712457] iwl3945: page allocation failure. order:0, mode:0xd0
> > [  185.714564] Pid: 1225, comm: iwl3945 Not tainted 2.6.35.4-test-mm5v2-vmscan+snapshot-dirty #7
> > [  185.715741] Call Trace:
> > [  185.716853]  [<c019aa67>] ? __alloc_pages_nodemask+0x577/0x630
> > [  185.718126]  [<f8a562c5>] ? iwl3945_rx_allocate+0x75/0x240 [iwl3945]
> > [  185.719379]  [<c03f0516>] ? schedule+0x356/0x730
> > [  185.720556]  [<f8a56d50>] ? iwl3945_rx_replenish+0x20/0x50 [iwl3945]
> > [  185.721914]  [<f8a56dbc>] ? iwl3945_bg_rx_replenish+0x3c/0x50 [iwl3945]
> > [  185.723929]  [<c014b167>] ? worker_thread+0x117/0x1f0
> > [  185.725745]  [<f8a56d80>] ? iwl3945_bg_rx_replenish+0x0/0x50 [iwl3945]
> > [  185.727097]  [<c014ebd0>] ? autoremove_wake_function+0x0/0x40
> > [  185.728468]  [<c014b050>] ? worker_thread+0x0/0x1f0
> > [  185.730235]  [<c014e854>] ? kthread+0x74/0x80
> > [  185.731601]  [<c014e7e0>] ? kthread+0x0/0x80
> > [  185.732919]  [<c0103cb6>] ? kernel_thread_helper+0x6/0x10
> 
> Hm, interesting.
> 
> Rafael's patch seems works intentionally. preallocate much much memory and
> release over allocated memory. But on your system, iwl3945 allocate memory 
> concurrently. If it try to allocate before the hibernation code release 
> extra memory, It may get allocation failure.
> 
> So, I'm not sure wich behavior is desired.
>   1) preallocate enough much memory
> 	pros) hibernate faster
> 	cons) failure risk of network card memory allocation
>   2) preallocate small memory
> 	pros) hibernate slower
> 	cons) don't makes network card memory allocation
> 
> But, I wonder why this kernel thread is not frozen. afaik, hibernation
> doesn't need network capability. Is this really intentional?

It's a kernel thread, we don't freeze them by default, only the ones that
directly request to be frozen.

BTW, please note that the card probably allocates from normal zone and that
may be the reason of the failure.

> Rafael, Could you please explain the design of hibernation and your
> intention?

The design of the preallocator is pretty straightforward.

First, if there's already enough free memory to make a copy of all memory in
use, we simply allocate as much memory as needed for that copy and return
(the size >= saveable condition).

Next, we preallocate as much memory as to accommodate the largest possible
image.  A little more than 50% of RAM is preallocated in this step (this causes
some pages that were in use before to be freed, so the resulting image size is
a little below 50% of RAM).

Next, there is the sysfs file /sys/power/image_size that represents the user's
desired size of the image.  If this number is much less than 50% of RAM,
we do our best to force the mm subsystem to free more pages so that the
resulting image size is possibly close to the desired one.  So, I guess, if
Vefa writes a greater number into /sys/power/image_size (this is in bytes),
the problems should go away. :-)

Still, I see a way to improve things in my patch.  Namely, I guess the number
returned by minimum_image_size() may also be regarded as the number of
non-highmem pages we can't free with good approximation.  Thus the
second argument of preallocate_image_memory() should be
size_normal - "the number returned by minimum_image_size()".

[BTW, there seems to be a bug in minimum_image_size(), because if
saveable < size, this means that the minimum image size is equal to saveable
rather than 0.  This shouldn't happen, though.]

Vefa, can you please test the patch below with and without the
patch at http://lkml.org/lkml/2010/9/5/86 (please don't try to change
/sys/power/image_size yet)?

Thanks,
Rafael


---
 kernel/power/snapshot.c |   75 +++++++++++++++++++++++++++++++++++-------------
 1 file changed, 55 insertions(+), 20 deletions(-)

Index: linux-2.6/kernel/power/snapshot.c
===================================================================
--- linux-2.6.orig/kernel/power/snapshot.c
+++ linux-2.6/kernel/power/snapshot.c
@@ -1122,9 +1122,19 @@ static unsigned long preallocate_image_p
 	return nr_alloc;
 }
 
-static unsigned long preallocate_image_memory(unsigned long nr_pages)
+static unsigned long preallocate_image_memory(unsigned long nr_pages,
+					      unsigned long avail_normal)
 {
-	return preallocate_image_pages(nr_pages, GFP_IMAGE);
+	unsigned long alloc;
+
+	if (avail_normal <= alloc_normal)
+		return 0;
+
+	alloc = avail_normal - alloc_normal;
+	if (nr_pages < alloc)
+		alloc = nr_pages;
+
+	return preallocate_image_pages(alloc, GFP_IMAGE);
 }
 
 #ifdef CONFIG_HIGHMEM
@@ -1170,15 +1180,22 @@ static inline unsigned long preallocate_
  */
 static void free_unnecessary_pages(void)
 {
-	unsigned long save_highmem, to_free_normal, to_free_highmem;
+	unsigned long save, to_free_normal, to_free_highmem;
 
-	to_free_normal = alloc_normal - count_data_pages();
-	save_highmem = count_highmem_pages();
-	if (alloc_highmem > save_highmem) {
-		to_free_highmem = alloc_highmem - save_highmem;
+	save = count_data_pages();
+	if (alloc_normal >= save) {
+		to_free_normal = alloc_normal - save;
+		save = 0;
+	} else {
+		to_free_normal = 0;
+		save -= alloc_normal;
+	}
+	save += count_highmem_pages();
+	if (alloc_highmem >= save) {
+		to_free_highmem = alloc_highmem - save;
 	} else {
 		to_free_highmem = 0;
-		to_free_normal -= save_highmem - alloc_highmem;
+		to_free_normal -= save - alloc_highmem;
 	}
 
 	memory_bm_position_reset(&copy_bm);
@@ -1259,7 +1276,7 @@ int hibernate_preallocate_memory(void)
 {
 	struct zone *zone;
 	unsigned long saveable, size, max_size, count, highmem, pages = 0;
-	unsigned long alloc, save_highmem, pages_highmem;
+	unsigned long alloc, save_highmem, pages_highmem, avail_normal;
 	struct timeval start, stop;
 	int error;
 
@@ -1296,6 +1313,7 @@ int hibernate_preallocate_memory(void)
 		else
 			count += zone_page_state(zone, NR_FREE_PAGES);
 	}
+	avail_normal = count;
 	count += highmem;
 	count -= totalreserve_pages;
 
@@ -1310,12 +1328,21 @@ int hibernate_preallocate_memory(void)
 	 */
 	if (size >= saveable) {
 		pages = preallocate_image_highmem(save_highmem);
-		pages += preallocate_image_memory(saveable - pages);
+		pages += preallocate_image_memory(saveable - pages, avail_normal);
 		goto out;
 	}
 
 	/* Estimate the minimum size of the image. */
 	pages = minimum_image_size(saveable);
+	/*
+	 * To avoid excessive pressure on the normal zone, leave room in it to
+	 * accommodate the image of the minimum size (unless it's already too
+	 * small, in which case don't preallocate pages from it at all).
+	 */
+	if (avail_normal > pages)
+		avail_normal -= pages;
+	else
+		avail_normal = 0;
 	if (size < pages)
 		size = min_t(unsigned long, pages, max_size);
 
@@ -1336,16 +1363,24 @@ int hibernate_preallocate_memory(void)
 	 */
 	pages_highmem = preallocate_image_highmem(highmem / 2);
 	alloc = (count - max_size) - pages_highmem;
-	pages = preallocate_image_memory(alloc);
-	if (pages < alloc)
-		goto err_out;
-	size = max_size - size;
-	alloc = size;
-	size = preallocate_highmem_fraction(size, highmem, count);
-	pages_highmem += size;
-	alloc -= size;
-	pages += preallocate_image_memory(alloc);
-	pages += pages_highmem;
+	pages = preallocate_image_memory(alloc, avail_normal);
+	if (pages < alloc) {
+		/* We have exhausted non-highmem pages, try highmem. */
+		alloc -= pages;
+		pages = preallocate_image_highmem(alloc);
+		if (pages < alloc)
+			goto err_out;
+		pages += preallocate_image_highmem(max_size - size);
+	} else {
+		size = max_size - size;
+		alloc = size;
+		size = preallocate_highmem_fraction(size, highmem, count);
+		pages_highmem += size;
+		alloc -= size;
+		size = preallocate_image_memory(alloc, avail_normal);
+		pages_highmem += preallocate_image_highmem(alloc - size);
+		pages += pages_highmem + size;
+	}
 
 	/*
 	 * We only need as many page frames for the image as there are saveable

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

* Re: Important news regarding the two different patches
  2010-09-07  1:58                                               ` KOSAKI Motohiro
@ 2010-09-07 21:44                                                 ` Rafael J. Wysocki
  2010-09-07 21:44                                                 ` Rafael J. Wysocki
  1 sibling, 0 replies; 66+ messages in thread
From: Rafael J. Wysocki @ 2010-09-07 21:44 UTC (permalink / raw)
  To: KOSAKI Motohiro, M. Vefa Bicakci; +Cc: linux-pm, Linux Kernel Mailing List

On Tuesday, September 07, 2010, KOSAKI Motohiro wrote:
> > Hello,
> > 
> > When I apply both of the patches, then I don't get any hangs with
> > hibernation. However, I do get another problem, which I am not sure
> > is related or not. I should note that I haven't experienced this
> > with only the vmscan.c patch, but maybe I haven't repeated my test
> > enough times.
> > 
> > One test consists of an automated run of 7 hibernate/thaw cycles. 
> > 
> > Here's what I got in dmesg in two of the iterations in one test.
> > Sorry for the long e-mail and the long lines.
> > 
> > === 8< ===
> > [  166.512085] PM: Hibernation mode set to 'reboot'
> > [  166.516503] PM: Marking nosave pages: 000000000009f000 - 0000000000100000
> > [  166.517654] PM: Basic memory bitmaps created
> > [  166.518781] PM: Syncing filesystems ... done.
> > [  166.546308] Freezing user space processes ... (elapsed 0.01 seconds) done.
> > [  166.559596] Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
> > [  166.571649] PM: Preallocating image memory... 
> > [  185.712457] iwl3945: page allocation failure. order:0, mode:0xd0
> > [  185.714564] Pid: 1225, comm: iwl3945 Not tainted 2.6.35.4-test-mm5v2-vmscan+snapshot-dirty #7
> > [  185.715741] Call Trace:
> > [  185.716853]  [<c019aa67>] ? __alloc_pages_nodemask+0x577/0x630
> > [  185.718126]  [<f8a562c5>] ? iwl3945_rx_allocate+0x75/0x240 [iwl3945]
> > [  185.719379]  [<c03f0516>] ? schedule+0x356/0x730
> > [  185.720556]  [<f8a56d50>] ? iwl3945_rx_replenish+0x20/0x50 [iwl3945]
> > [  185.721914]  [<f8a56dbc>] ? iwl3945_bg_rx_replenish+0x3c/0x50 [iwl3945]
> > [  185.723929]  [<c014b167>] ? worker_thread+0x117/0x1f0
> > [  185.725745]  [<f8a56d80>] ? iwl3945_bg_rx_replenish+0x0/0x50 [iwl3945]
> > [  185.727097]  [<c014ebd0>] ? autoremove_wake_function+0x0/0x40
> > [  185.728468]  [<c014b050>] ? worker_thread+0x0/0x1f0
> > [  185.730235]  [<c014e854>] ? kthread+0x74/0x80
> > [  185.731601]  [<c014e7e0>] ? kthread+0x0/0x80
> > [  185.732919]  [<c0103cb6>] ? kernel_thread_helper+0x6/0x10
> 
> Hm, interesting.
> 
> Rafael's patch seems works intentionally. preallocate much much memory and
> release over allocated memory. But on your system, iwl3945 allocate memory 
> concurrently. If it try to allocate before the hibernation code release 
> extra memory, It may get allocation failure.
> 
> So, I'm not sure wich behavior is desired.
>   1) preallocate enough much memory
> 	pros) hibernate faster
> 	cons) failure risk of network card memory allocation
>   2) preallocate small memory
> 	pros) hibernate slower
> 	cons) don't makes network card memory allocation
> 
> But, I wonder why this kernel thread is not frozen. afaik, hibernation
> doesn't need network capability. Is this really intentional?

It's a kernel thread, we don't freeze them by default, only the ones that
directly request to be frozen.

BTW, please note that the card probably allocates from normal zone and that
may be the reason of the failure.

> Rafael, Could you please explain the design of hibernation and your
> intention?

The design of the preallocator is pretty straightforward.

First, if there's already enough free memory to make a copy of all memory in
use, we simply allocate as much memory as needed for that copy and return
(the size >= saveable condition).

Next, we preallocate as much memory as to accommodate the largest possible
image.  A little more than 50% of RAM is preallocated in this step (this causes
some pages that were in use before to be freed, so the resulting image size is
a little below 50% of RAM).

Next, there is the sysfs file /sys/power/image_size that represents the user's
desired size of the image.  If this number is much less than 50% of RAM,
we do our best to force the mm subsystem to free more pages so that the
resulting image size is possibly close to the desired one.  So, I guess, if
Vefa writes a greater number into /sys/power/image_size (this is in bytes),
the problems should go away. :-)

Still, I see a way to improve things in my patch.  Namely, I guess the number
returned by minimum_image_size() may also be regarded as the number of
non-highmem pages we can't free with good approximation.  Thus the
second argument of preallocate_image_memory() should be
size_normal - "the number returned by minimum_image_size()".

[BTW, there seems to be a bug in minimum_image_size(), because if
saveable < size, this means that the minimum image size is equal to saveable
rather than 0.  This shouldn't happen, though.]

Vefa, can you please test the patch below with and without the
patch at http://lkml.org/lkml/2010/9/5/86 (please don't try to change
/sys/power/image_size yet)?

Thanks,
Rafael


---
 kernel/power/snapshot.c |   75 +++++++++++++++++++++++++++++++++++-------------
 1 file changed, 55 insertions(+), 20 deletions(-)

Index: linux-2.6/kernel/power/snapshot.c
===================================================================
--- linux-2.6.orig/kernel/power/snapshot.c
+++ linux-2.6/kernel/power/snapshot.c
@@ -1122,9 +1122,19 @@ static unsigned long preallocate_image_p
 	return nr_alloc;
 }
 
-static unsigned long preallocate_image_memory(unsigned long nr_pages)
+static unsigned long preallocate_image_memory(unsigned long nr_pages,
+					      unsigned long avail_normal)
 {
-	return preallocate_image_pages(nr_pages, GFP_IMAGE);
+	unsigned long alloc;
+
+	if (avail_normal <= alloc_normal)
+		return 0;
+
+	alloc = avail_normal - alloc_normal;
+	if (nr_pages < alloc)
+		alloc = nr_pages;
+
+	return preallocate_image_pages(alloc, GFP_IMAGE);
 }
 
 #ifdef CONFIG_HIGHMEM
@@ -1170,15 +1180,22 @@ static inline unsigned long preallocate_
  */
 static void free_unnecessary_pages(void)
 {
-	unsigned long save_highmem, to_free_normal, to_free_highmem;
+	unsigned long save, to_free_normal, to_free_highmem;
 
-	to_free_normal = alloc_normal - count_data_pages();
-	save_highmem = count_highmem_pages();
-	if (alloc_highmem > save_highmem) {
-		to_free_highmem = alloc_highmem - save_highmem;
+	save = count_data_pages();
+	if (alloc_normal >= save) {
+		to_free_normal = alloc_normal - save;
+		save = 0;
+	} else {
+		to_free_normal = 0;
+		save -= alloc_normal;
+	}
+	save += count_highmem_pages();
+	if (alloc_highmem >= save) {
+		to_free_highmem = alloc_highmem - save;
 	} else {
 		to_free_highmem = 0;
-		to_free_normal -= save_highmem - alloc_highmem;
+		to_free_normal -= save - alloc_highmem;
 	}
 
 	memory_bm_position_reset(&copy_bm);
@@ -1259,7 +1276,7 @@ int hibernate_preallocate_memory(void)
 {
 	struct zone *zone;
 	unsigned long saveable, size, max_size, count, highmem, pages = 0;
-	unsigned long alloc, save_highmem, pages_highmem;
+	unsigned long alloc, save_highmem, pages_highmem, avail_normal;
 	struct timeval start, stop;
 	int error;
 
@@ -1296,6 +1313,7 @@ int hibernate_preallocate_memory(void)
 		else
 			count += zone_page_state(zone, NR_FREE_PAGES);
 	}
+	avail_normal = count;
 	count += highmem;
 	count -= totalreserve_pages;
 
@@ -1310,12 +1328,21 @@ int hibernate_preallocate_memory(void)
 	 */
 	if (size >= saveable) {
 		pages = preallocate_image_highmem(save_highmem);
-		pages += preallocate_image_memory(saveable - pages);
+		pages += preallocate_image_memory(saveable - pages, avail_normal);
 		goto out;
 	}
 
 	/* Estimate the minimum size of the image. */
 	pages = minimum_image_size(saveable);
+	/*
+	 * To avoid excessive pressure on the normal zone, leave room in it to
+	 * accommodate the image of the minimum size (unless it's already too
+	 * small, in which case don't preallocate pages from it at all).
+	 */
+	if (avail_normal > pages)
+		avail_normal -= pages;
+	else
+		avail_normal = 0;
 	if (size < pages)
 		size = min_t(unsigned long, pages, max_size);
 
@@ -1336,16 +1363,24 @@ int hibernate_preallocate_memory(void)
 	 */
 	pages_highmem = preallocate_image_highmem(highmem / 2);
 	alloc = (count - max_size) - pages_highmem;
-	pages = preallocate_image_memory(alloc);
-	if (pages < alloc)
-		goto err_out;
-	size = max_size - size;
-	alloc = size;
-	size = preallocate_highmem_fraction(size, highmem, count);
-	pages_highmem += size;
-	alloc -= size;
-	pages += preallocate_image_memory(alloc);
-	pages += pages_highmem;
+	pages = preallocate_image_memory(alloc, avail_normal);
+	if (pages < alloc) {
+		/* We have exhausted non-highmem pages, try highmem. */
+		alloc -= pages;
+		pages = preallocate_image_highmem(alloc);
+		if (pages < alloc)
+			goto err_out;
+		pages += preallocate_image_highmem(max_size - size);
+	} else {
+		size = max_size - size;
+		alloc = size;
+		size = preallocate_highmem_fraction(size, highmem, count);
+		pages_highmem += size;
+		alloc -= size;
+		size = preallocate_image_memory(alloc, avail_normal);
+		pages_highmem += preallocate_image_highmem(alloc - size);
+		pages += pages_highmem + size;
+	}
 
 	/*
 	 * We only need as many page frames for the image as there are saveable

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

* Re: Important news regarding the two different patches
  2010-09-07 21:44                                                 ` Rafael J. Wysocki
@ 2010-09-08 12:56                                                   ` M. Vefa Bicakci
  2010-09-08 21:34                                                     ` [PATCH] PM / Hibernate: Avoid hitting OOM during preallocation of memory (was: Re: Important news ...) Rafael J. Wysocki
  2010-09-08 21:34                                                     ` [PATCH] PM / Hibernate: Avoid hitting OOM during preallocation of memory (was: Re: Important news ...) Rafael J. Wysocki
  2010-09-08 12:56                                                   ` Important news regarding the two different patches M. Vefa Bicakci
  1 sibling, 2 replies; 66+ messages in thread
From: M. Vefa Bicakci @ 2010-09-08 12:56 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: KOSAKI Motohiro, Linux Kernel Mailing List, linux-pm, Minchan Kim

On 07/09/10 05:44 PM, Rafael J. Wysocki wrote:
> On Tuesday, September 07, 2010, KOSAKI Motohiro wrote:
>>> [snip - M. Vefa Bicakci's last e-mail]
>>
>> Hm, interesting.
>>
>> Rafael's patch seems works intentionally. preallocate much much memory and
>> release over allocated memory. But on your system, iwl3945 allocate memory 
>> concurrently. If it try to allocate before the hibernation code release 
>> extra memory, It may get allocation failure.
>>
>> So, I'm not sure wich behavior is desired.
>>   1) preallocate enough much memory
>> 	pros) hibernate faster
>> 	cons) failure risk of network card memory allocation
>>   2) preallocate small memory
>> 	pros) hibernate slower
>> 	cons) don't makes network card memory allocation
>>
>> But, I wonder why this kernel thread is not frozen. afaik, hibernation
>> doesn't need network capability. Is this really intentional?
> 
> It's a kernel thread, we don't freeze them by default, only the ones that
> directly request to be frozen.
> 
> BTW, please note that the card probably allocates from normal zone and that
> may be the reason of the failure.
> 
>> Rafael, Could you please explain the design of hibernation and your
>> intention?
> 
> The design of the preallocator is pretty straightforward.
> 
> First, if there's already enough free memory to make a copy of all memory in
> use, we simply allocate as much memory as needed for that copy and return
> (the size >= saveable condition).
> 
> Next, we preallocate as much memory as to accommodate the largest possible
> image.  A little more than 50% of RAM is preallocated in this step (this causes
> some pages that were in use before to be freed, so the resulting image size is
> a little below 50% of RAM).
> 
> Next, there is the sysfs file /sys/power/image_size that represents the user's
> desired size of the image.  If this number is much less than 50% of RAM,
> we do our best to force the mm subsystem to free more pages so that the
> resulting image size is possibly close to the desired one.  So, I guess, if
> Vefa writes a greater number into /sys/power/image_size (this is in bytes),
> the problems should go away. :-)
> 
> Still, I see a way to improve things in my patch.  Namely, I guess the number
> returned by minimum_image_size() may also be regarded as the number of
> non-highmem pages we can't free with good approximation.  Thus the
> second argument of preallocate_image_memory() should be
> size_normal - "the number returned by minimum_image_size()".
> 
> [BTW, there seems to be a bug in minimum_image_size(), because if
> saveable < size, this means that the minimum image size is equal to saveable
> rather than 0.  This shouldn't happen, though.]
> 
> Vefa, can you please test the patch below with and without the
> patch at http://lkml.org/lkml/2010/9/5/86 (please don't try to change
> /sys/power/image_size yet)?
> 
> Thanks,
> Rafael

Dear Rafael Wysocki,

I applied the patch below to a clean 2.6.35.4 tree and tested 6 hibernate/thaw
cycles consecutively. I am happy to report that it works properly.

Then I applied the patch at http://lkml.org/lkml/2010/9/5/86 (the "vmscan.c
patch") on top of the tree I used above, and I also ran 6 hibernate/thaw
cycles. Again, I am happy to report that this combination of patches also
works properly.

I should note a few things though,

1) I don't think I ever changed /sys/power/image_size, so we can rule out the
possibility of that option changing the results.

2) With the patch below, for the *first* hibernation operation, the computer
enters a "thoughtful" state without any disk activity for 6-8 (maybe 10)
seconds after printing "Preallocating image memory". It works properly after
the wait however.

3) For some reason, with the patch below by itself, or in combination with the
above-mentioned vmscan.c patch, I haven't seen any page allocation errors
regarding the iwl3945 driver. To be honest I am not sure why this change
occurred, but I think you might know.

4) I made sure that I was not being impatient with the previous snapshot.c
patch, so I tested that on its own once again, and I confirmed that hibernation
hangs with the older version of the snapshot.c patch.

I am very happy that we are getting closer to a solution. Please let me know
if there is anything I need to test further.

Regards,

M. Vefa Bicakci

> ---
>  kernel/power/snapshot.c |   75 +++++++++++++++++++++++++++++++++++-------------
>  1 file changed, 55 insertions(+), 20 deletions(-)
> 
> Index: linux-2.6/kernel/power/snapshot.c
> ===================================================================
> --- linux-2.6.orig/kernel/power/snapshot.c
> +++ linux-2.6/kernel/power/snapshot.c
> @@ -1122,9 +1122,19 @@ static unsigned long preallocate_image_p
>  	return nr_alloc;
>  }
>  
> -static unsigned long preallocate_image_memory(unsigned long nr_pages)
> +static unsigned long preallocate_image_memory(unsigned long nr_pages,
> +					      unsigned long avail_normal)
>  {
> -	return preallocate_image_pages(nr_pages, GFP_IMAGE);
> +	unsigned long alloc;
> +
> +	if (avail_normal <= alloc_normal)
> +		return 0;
> +
> +	alloc = avail_normal - alloc_normal;
> +	if (nr_pages < alloc)
> +		alloc = nr_pages;
> +
> +	return preallocate_image_pages(alloc, GFP_IMAGE);
>  }
>  
>  #ifdef CONFIG_HIGHMEM
> @@ -1170,15 +1180,22 @@ static inline unsigned long preallocate_
>   */
>  static void free_unnecessary_pages(void)
>  {
> -	unsigned long save_highmem, to_free_normal, to_free_highmem;
> +	unsigned long save, to_free_normal, to_free_highmem;
>  
> -	to_free_normal = alloc_normal - count_data_pages();
> -	save_highmem = count_highmem_pages();
> -	if (alloc_highmem > save_highmem) {
> -		to_free_highmem = alloc_highmem - save_highmem;
> +	save = count_data_pages();
> +	if (alloc_normal >= save) {
> +		to_free_normal = alloc_normal - save;
> +		save = 0;
> +	} else {
> +		to_free_normal = 0;
> +		save -= alloc_normal;
> +	}
> +	save += count_highmem_pages();
> +	if (alloc_highmem >= save) {
> +		to_free_highmem = alloc_highmem - save;
>  	} else {
>  		to_free_highmem = 0;
> -		to_free_normal -= save_highmem - alloc_highmem;
> +		to_free_normal -= save - alloc_highmem;
>  	}
>  
>  	memory_bm_position_reset(&copy_bm);
> @@ -1259,7 +1276,7 @@ int hibernate_preallocate_memory(void)
>  {
>  	struct zone *zone;
>  	unsigned long saveable, size, max_size, count, highmem, pages = 0;
> -	unsigned long alloc, save_highmem, pages_highmem;
> +	unsigned long alloc, save_highmem, pages_highmem, avail_normal;
>  	struct timeval start, stop;
>  	int error;
>  
> @@ -1296,6 +1313,7 @@ int hibernate_preallocate_memory(void)
>  		else
>  			count += zone_page_state(zone, NR_FREE_PAGES);
>  	}
> +	avail_normal = count;
>  	count += highmem;
>  	count -= totalreserve_pages;
>  
> @@ -1310,12 +1328,21 @@ int hibernate_preallocate_memory(void)
>  	 */
>  	if (size >= saveable) {
>  		pages = preallocate_image_highmem(save_highmem);
> -		pages += preallocate_image_memory(saveable - pages);
> +		pages += preallocate_image_memory(saveable - pages, avail_normal);
>  		goto out;
>  	}
>  
>  	/* Estimate the minimum size of the image. */
>  	pages = minimum_image_size(saveable);
> +	/*
> +	 * To avoid excessive pressure on the normal zone, leave room in it to
> +	 * accommodate the image of the minimum size (unless it's already too
> +	 * small, in which case don't preallocate pages from it at all).
> +	 */
> +	if (avail_normal > pages)
> +		avail_normal -= pages;
> +	else
> +		avail_normal = 0;
>  	if (size < pages)
>  		size = min_t(unsigned long, pages, max_size);
>  
> @@ -1336,16 +1363,24 @@ int hibernate_preallocate_memory(void)
>  	 */
>  	pages_highmem = preallocate_image_highmem(highmem / 2);
>  	alloc = (count - max_size) - pages_highmem;
> -	pages = preallocate_image_memory(alloc);
> -	if (pages < alloc)
> -		goto err_out;
> -	size = max_size - size;
> -	alloc = size;
> -	size = preallocate_highmem_fraction(size, highmem, count);
> -	pages_highmem += size;
> -	alloc -= size;
> -	pages += preallocate_image_memory(alloc);
> -	pages += pages_highmem;
> +	pages = preallocate_image_memory(alloc, avail_normal);
> +	if (pages < alloc) {
> +		/* We have exhausted non-highmem pages, try highmem. */
> +		alloc -= pages;
> +		pages = preallocate_image_highmem(alloc);
> +		if (pages < alloc)
> +			goto err_out;
> +		pages += preallocate_image_highmem(max_size - size);
> +	} else {
> +		size = max_size - size;
> +		alloc = size;
> +		size = preallocate_highmem_fraction(size, highmem, count);
> +		pages_highmem += size;
> +		alloc -= size;
> +		size = preallocate_image_memory(alloc, avail_normal);
> +		pages_highmem += preallocate_image_highmem(alloc - size);
> +		pages += pages_highmem + size;
> +	}
>  
>  	/*
>  	 * We only need as many page frames for the image as there are saveable
> 
> 


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

* Re: Important news regarding the two different patches
  2010-09-07 21:44                                                 ` Rafael J. Wysocki
  2010-09-08 12:56                                                   ` M. Vefa Bicakci
@ 2010-09-08 12:56                                                   ` M. Vefa Bicakci
  1 sibling, 0 replies; 66+ messages in thread
From: M. Vefa Bicakci @ 2010-09-08 12:56 UTC (permalink / raw)
  To: Rafael J. Wysocki; +Cc: linux-pm, Linux Kernel Mailing List, KOSAKI Motohiro

On 07/09/10 05:44 PM, Rafael J. Wysocki wrote:
> On Tuesday, September 07, 2010, KOSAKI Motohiro wrote:
>>> [snip - M. Vefa Bicakci's last e-mail]
>>
>> Hm, interesting.
>>
>> Rafael's patch seems works intentionally. preallocate much much memory and
>> release over allocated memory. But on your system, iwl3945 allocate memory 
>> concurrently. If it try to allocate before the hibernation code release 
>> extra memory, It may get allocation failure.
>>
>> So, I'm not sure wich behavior is desired.
>>   1) preallocate enough much memory
>> 	pros) hibernate faster
>> 	cons) failure risk of network card memory allocation
>>   2) preallocate small memory
>> 	pros) hibernate slower
>> 	cons) don't makes network card memory allocation
>>
>> But, I wonder why this kernel thread is not frozen. afaik, hibernation
>> doesn't need network capability. Is this really intentional?
> 
> It's a kernel thread, we don't freeze them by default, only the ones that
> directly request to be frozen.
> 
> BTW, please note that the card probably allocates from normal zone and that
> may be the reason of the failure.
> 
>> Rafael, Could you please explain the design of hibernation and your
>> intention?
> 
> The design of the preallocator is pretty straightforward.
> 
> First, if there's already enough free memory to make a copy of all memory in
> use, we simply allocate as much memory as needed for that copy and return
> (the size >= saveable condition).
> 
> Next, we preallocate as much memory as to accommodate the largest possible
> image.  A little more than 50% of RAM is preallocated in this step (this causes
> some pages that were in use before to be freed, so the resulting image size is
> a little below 50% of RAM).
> 
> Next, there is the sysfs file /sys/power/image_size that represents the user's
> desired size of the image.  If this number is much less than 50% of RAM,
> we do our best to force the mm subsystem to free more pages so that the
> resulting image size is possibly close to the desired one.  So, I guess, if
> Vefa writes a greater number into /sys/power/image_size (this is in bytes),
> the problems should go away. :-)
> 
> Still, I see a way to improve things in my patch.  Namely, I guess the number
> returned by minimum_image_size() may also be regarded as the number of
> non-highmem pages we can't free with good approximation.  Thus the
> second argument of preallocate_image_memory() should be
> size_normal - "the number returned by minimum_image_size()".
> 
> [BTW, there seems to be a bug in minimum_image_size(), because if
> saveable < size, this means that the minimum image size is equal to saveable
> rather than 0.  This shouldn't happen, though.]
> 
> Vefa, can you please test the patch below with and without the
> patch at http://lkml.org/lkml/2010/9/5/86 (please don't try to change
> /sys/power/image_size yet)?
> 
> Thanks,
> Rafael

Dear Rafael Wysocki,

I applied the patch below to a clean 2.6.35.4 tree and tested 6 hibernate/thaw
cycles consecutively. I am happy to report that it works properly.

Then I applied the patch at http://lkml.org/lkml/2010/9/5/86 (the "vmscan.c
patch") on top of the tree I used above, and I also ran 6 hibernate/thaw
cycles. Again, I am happy to report that this combination of patches also
works properly.

I should note a few things though,

1) I don't think I ever changed /sys/power/image_size, so we can rule out the
possibility of that option changing the results.

2) With the patch below, for the *first* hibernation operation, the computer
enters a "thoughtful" state without any disk activity for 6-8 (maybe 10)
seconds after printing "Preallocating image memory". It works properly after
the wait however.

3) For some reason, with the patch below by itself, or in combination with the
above-mentioned vmscan.c patch, I haven't seen any page allocation errors
regarding the iwl3945 driver. To be honest I am not sure why this change
occurred, but I think you might know.

4) I made sure that I was not being impatient with the previous snapshot.c
patch, so I tested that on its own once again, and I confirmed that hibernation
hangs with the older version of the snapshot.c patch.

I am very happy that we are getting closer to a solution. Please let me know
if there is anything I need to test further.

Regards,

M. Vefa Bicakci

> ---
>  kernel/power/snapshot.c |   75 +++++++++++++++++++++++++++++++++++-------------
>  1 file changed, 55 insertions(+), 20 deletions(-)
> 
> Index: linux-2.6/kernel/power/snapshot.c
> ===================================================================
> --- linux-2.6.orig/kernel/power/snapshot.c
> +++ linux-2.6/kernel/power/snapshot.c
> @@ -1122,9 +1122,19 @@ static unsigned long preallocate_image_p
>  	return nr_alloc;
>  }
>  
> -static unsigned long preallocate_image_memory(unsigned long nr_pages)
> +static unsigned long preallocate_image_memory(unsigned long nr_pages,
> +					      unsigned long avail_normal)
>  {
> -	return preallocate_image_pages(nr_pages, GFP_IMAGE);
> +	unsigned long alloc;
> +
> +	if (avail_normal <= alloc_normal)
> +		return 0;
> +
> +	alloc = avail_normal - alloc_normal;
> +	if (nr_pages < alloc)
> +		alloc = nr_pages;
> +
> +	return preallocate_image_pages(alloc, GFP_IMAGE);
>  }
>  
>  #ifdef CONFIG_HIGHMEM
> @@ -1170,15 +1180,22 @@ static inline unsigned long preallocate_
>   */
>  static void free_unnecessary_pages(void)
>  {
> -	unsigned long save_highmem, to_free_normal, to_free_highmem;
> +	unsigned long save, to_free_normal, to_free_highmem;
>  
> -	to_free_normal = alloc_normal - count_data_pages();
> -	save_highmem = count_highmem_pages();
> -	if (alloc_highmem > save_highmem) {
> -		to_free_highmem = alloc_highmem - save_highmem;
> +	save = count_data_pages();
> +	if (alloc_normal >= save) {
> +		to_free_normal = alloc_normal - save;
> +		save = 0;
> +	} else {
> +		to_free_normal = 0;
> +		save -= alloc_normal;
> +	}
> +	save += count_highmem_pages();
> +	if (alloc_highmem >= save) {
> +		to_free_highmem = alloc_highmem - save;
>  	} else {
>  		to_free_highmem = 0;
> -		to_free_normal -= save_highmem - alloc_highmem;
> +		to_free_normal -= save - alloc_highmem;
>  	}
>  
>  	memory_bm_position_reset(&copy_bm);
> @@ -1259,7 +1276,7 @@ int hibernate_preallocate_memory(void)
>  {
>  	struct zone *zone;
>  	unsigned long saveable, size, max_size, count, highmem, pages = 0;
> -	unsigned long alloc, save_highmem, pages_highmem;
> +	unsigned long alloc, save_highmem, pages_highmem, avail_normal;
>  	struct timeval start, stop;
>  	int error;
>  
> @@ -1296,6 +1313,7 @@ int hibernate_preallocate_memory(void)
>  		else
>  			count += zone_page_state(zone, NR_FREE_PAGES);
>  	}
> +	avail_normal = count;
>  	count += highmem;
>  	count -= totalreserve_pages;
>  
> @@ -1310,12 +1328,21 @@ int hibernate_preallocate_memory(void)
>  	 */
>  	if (size >= saveable) {
>  		pages = preallocate_image_highmem(save_highmem);
> -		pages += preallocate_image_memory(saveable - pages);
> +		pages += preallocate_image_memory(saveable - pages, avail_normal);
>  		goto out;
>  	}
>  
>  	/* Estimate the minimum size of the image. */
>  	pages = minimum_image_size(saveable);
> +	/*
> +	 * To avoid excessive pressure on the normal zone, leave room in it to
> +	 * accommodate the image of the minimum size (unless it's already too
> +	 * small, in which case don't preallocate pages from it at all).
> +	 */
> +	if (avail_normal > pages)
> +		avail_normal -= pages;
> +	else
> +		avail_normal = 0;
>  	if (size < pages)
>  		size = min_t(unsigned long, pages, max_size);
>  
> @@ -1336,16 +1363,24 @@ int hibernate_preallocate_memory(void)
>  	 */
>  	pages_highmem = preallocate_image_highmem(highmem / 2);
>  	alloc = (count - max_size) - pages_highmem;
> -	pages = preallocate_image_memory(alloc);
> -	if (pages < alloc)
> -		goto err_out;
> -	size = max_size - size;
> -	alloc = size;
> -	size = preallocate_highmem_fraction(size, highmem, count);
> -	pages_highmem += size;
> -	alloc -= size;
> -	pages += preallocate_image_memory(alloc);
> -	pages += pages_highmem;
> +	pages = preallocate_image_memory(alloc, avail_normal);
> +	if (pages < alloc) {
> +		/* We have exhausted non-highmem pages, try highmem. */
> +		alloc -= pages;
> +		pages = preallocate_image_highmem(alloc);
> +		if (pages < alloc)
> +			goto err_out;
> +		pages += preallocate_image_highmem(max_size - size);
> +	} else {
> +		size = max_size - size;
> +		alloc = size;
> +		size = preallocate_highmem_fraction(size, highmem, count);
> +		pages_highmem += size;
> +		alloc -= size;
> +		size = preallocate_image_memory(alloc, avail_normal);
> +		pages_highmem += preallocate_image_highmem(alloc - size);
> +		pages += pages_highmem + size;
> +	}
>  
>  	/*
>  	 * We only need as many page frames for the image as there are saveable
> 
> 

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

* [PATCH] PM / Hibernate: Avoid hitting OOM during preallocation of memory (was: Re: Important news ...)
  2010-09-08 12:56                                                   ` M. Vefa Bicakci
@ 2010-09-08 21:34                                                     ` Rafael J. Wysocki
  2010-09-11 18:12                                                       ` PATCH: PM / Hibernate: Avoid hitting OOM during preallocationof memory M. Vefa Bicakci
  2010-09-11 18:12                                                       ` M. Vefa Bicakci
  2010-09-08 21:34                                                     ` [PATCH] PM / Hibernate: Avoid hitting OOM during preallocation of memory (was: Re: Important news ...) Rafael J. Wysocki
  1 sibling, 2 replies; 66+ messages in thread
From: Rafael J. Wysocki @ 2010-09-08 21:34 UTC (permalink / raw)
  To: M. Vefa Bicakci
  Cc: KOSAKI Motohiro, Linux Kernel Mailing List, linux-pm, Minchan Kim

On Wednesday, September 08, 2010, M. Vefa Bicakci wrote:
> On 07/09/10 05:44 PM, Rafael J. Wysocki wrote:
> > On Tuesday, September 07, 2010, KOSAKI Motohiro wrote:
> >>> [snip - M. Vefa Bicakci's last e-mail]
> >>
> >> Hm, interesting.
> >>
> >> Rafael's patch seems works intentionally. preallocate much much memory and
> >> release over allocated memory. But on your system, iwl3945 allocate memory 
> >> concurrently. If it try to allocate before the hibernation code release 
> >> extra memory, It may get allocation failure.
> >>
> >> So, I'm not sure wich behavior is desired.
> >>   1) preallocate enough much memory
> >> 	pros) hibernate faster
> >> 	cons) failure risk of network card memory allocation
> >>   2) preallocate small memory
> >> 	pros) hibernate slower
> >> 	cons) don't makes network card memory allocation
> >>
> >> But, I wonder why this kernel thread is not frozen. afaik, hibernation
> >> doesn't need network capability. Is this really intentional?
> > 
> > It's a kernel thread, we don't freeze them by default, only the ones that
> > directly request to be frozen.
> > 
> > BTW, please note that the card probably allocates from normal zone and that
> > may be the reason of the failure.
> > 
> >> Rafael, Could you please explain the design of hibernation and your
> >> intention?
> > 
> > The design of the preallocator is pretty straightforward.
> > 
> > First, if there's already enough free memory to make a copy of all memory in
> > use, we simply allocate as much memory as needed for that copy and return
> > (the size >= saveable condition).
> > 
> > Next, we preallocate as much memory as to accommodate the largest possible
> > image.  A little more than 50% of RAM is preallocated in this step (this causes
> > some pages that were in use before to be freed, so the resulting image size is
> > a little below 50% of RAM).
> > 
> > Next, there is the sysfs file /sys/power/image_size that represents the user's
> > desired size of the image.  If this number is much less than 50% of RAM,
> > we do our best to force the mm subsystem to free more pages so that the
> > resulting image size is possibly close to the desired one.  So, I guess, if
> > Vefa writes a greater number into /sys/power/image_size (this is in bytes),
> > the problems should go away. :-)
> > 
> > Still, I see a way to improve things in my patch.  Namely, I guess the number
> > returned by minimum_image_size() may also be regarded as the number of
> > non-highmem pages we can't free with good approximation.  Thus the
> > second argument of preallocate_image_memory() should be
> > size_normal - "the number returned by minimum_image_size()".
> > 
> > [BTW, there seems to be a bug in minimum_image_size(), because if
> > saveable < size, this means that the minimum image size is equal to saveable
> > rather than 0.  This shouldn't happen, though.]
> > 
> > Vefa, can you please test the patch below with and without the
> > patch at http://lkml.org/lkml/2010/9/5/86 (please don't try to change
> > /sys/power/image_size yet)?
> > 
> > Thanks,
> > Rafael
> 
> Dear Rafael Wysocki,
> 
> I applied the patch below to a clean 2.6.35.4 tree and tested 6 hibernate/thaw
> cycles consecutively. I am happy to report that it works properly.
> 
> Then I applied the patch at http://lkml.org/lkml/2010/9/5/86 (the "vmscan.c
> patch") on top of the tree I used above, and I also ran 6 hibernate/thaw
> cycles. Again, I am happy to report that this combination of patches also
> works properly.

Great, that's encouraging.

> I should note a few things though,
> 
> 1) I don't think I ever changed /sys/power/image_size, so we can rule out the
> possibility of that option changing the results.

Can you please check what value is there in this file?

> 2) With the patch below, for the *first* hibernation operation, the computer
> enters a "thoughtful" state without any disk activity for 6-8 (maybe 10)
> seconds after printing "Preallocating image memory". It works properly after
> the wait however.

That probably is a result of spending time in the memory allocator trying to
reduce the size of the image as much as possible.

> 3) For some reason, with the patch below by itself, or in combination with the
> above-mentioned vmscan.c patch, I haven't seen any page allocation errors
> regarding the iwl3945 driver. To be honest I am not sure why this change
> occurred, but I think you might know.

I think we just keep enough free pages in the normal zone all the time for the
driver to allocate from.

> 4) I made sure that I was not being impatient with the previous snapshot.c
> patch, so I tested that on its own once again, and I confirmed that hibernation
> hangs with the older version of the snapshot.c patch.
> 
> I am very happy that we are getting closer to a solution. Please let me know
> if there is anything I need to test further.

Below is the patch I'd like to apply.  It should work just like the previous
one (there are a few fixes that shouldn't affect the functionality in it), but
please test it if you can.

I think the slowdown you saw in 2) may be eliminated by increasing the
image_size value, so I'm going to prepare a patch that will compute the
value automatically during boot so that it's approximately 50% of RAM.

Thanks,
Rafael

---
From: Rafael J. Wysocki <rjw@sisk.pl>
Subject: PM / Hibernate: Avoid hitting OOM during preallocation of memory

There is a problem in hibernate_preallocate_memory() that it calls
preallocate_image_memory() with an argument that may be greater than
the total number of available non-highmem memory pages.  If that's
the case, the OOM condition is guaranteed to trigger, which in turn
can cause significant slowdown to occur during hibernation.

To avoid that, make preallocate_image_memory() adjust its argument
before calling preallocate_image_pages(), so that the total number of
saveable non-highem pages left is not less than the minimum size of
a hibernation image.  Change hibernate_preallocate_memory() to try to
allocate from highmem if the number of pages allocated by
preallocate_image_memory() is too low.

Modify free_unnecessary_pages() to take all possible memory
allocation patterns into account.

Reported-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 kernel/power/snapshot.c |   85 ++++++++++++++++++++++++++++++++++++------------
 1 file changed, 65 insertions(+), 20 deletions(-)

Index: linux-2.6/kernel/power/snapshot.c
===================================================================
--- linux-2.6.orig/kernel/power/snapshot.c
+++ linux-2.6/kernel/power/snapshot.c
@@ -1122,9 +1122,19 @@ static unsigned long preallocate_image_p
 	return nr_alloc;
 }
 
-static unsigned long preallocate_image_memory(unsigned long nr_pages)
+static unsigned long preallocate_image_memory(unsigned long nr_pages,
+					      unsigned long avail_normal)
 {
-	return preallocate_image_pages(nr_pages, GFP_IMAGE);
+	unsigned long alloc;
+
+	if (avail_normal <= alloc_normal)
+		return 0;
+
+	alloc = avail_normal - alloc_normal;
+	if (nr_pages < alloc)
+		alloc = nr_pages;
+
+	return preallocate_image_pages(alloc, GFP_IMAGE);
 }
 
 #ifdef CONFIG_HIGHMEM
@@ -1170,15 +1180,22 @@ static inline unsigned long preallocate_
  */
 static void free_unnecessary_pages(void)
 {
-	unsigned long save_highmem, to_free_normal, to_free_highmem;
+	unsigned long save, to_free_normal, to_free_highmem;
 
-	to_free_normal = alloc_normal - count_data_pages();
-	save_highmem = count_highmem_pages();
-	if (alloc_highmem > save_highmem) {
-		to_free_highmem = alloc_highmem - save_highmem;
+	save = count_data_pages();
+	if (alloc_normal >= save) {
+		to_free_normal = alloc_normal - save;
+		save = 0;
+	} else {
+		to_free_normal = 0;
+		save -= alloc_normal;
+	}
+	save += count_highmem_pages();
+	if (alloc_highmem >= save) {
+		to_free_highmem = alloc_highmem - save;
 	} else {
 		to_free_highmem = 0;
-		to_free_normal -= save_highmem - alloc_highmem;
+		to_free_normal -= save - alloc_highmem;
 	}
 
 	memory_bm_position_reset(&copy_bm);
@@ -1259,7 +1276,7 @@ int hibernate_preallocate_memory(void)
 {
 	struct zone *zone;
 	unsigned long saveable, size, max_size, count, highmem, pages = 0;
-	unsigned long alloc, save_highmem, pages_highmem;
+	unsigned long alloc, save_highmem, pages_highmem, avail_normal;
 	struct timeval start, stop;
 	int error;
 
@@ -1296,6 +1313,7 @@ int hibernate_preallocate_memory(void)
 		else
 			count += zone_page_state(zone, NR_FREE_PAGES);
 	}
+	avail_normal = count;
 	count += highmem;
 	count -= totalreserve_pages;
 
@@ -1310,12 +1328,21 @@ int hibernate_preallocate_memory(void)
 	 */
 	if (size >= saveable) {
 		pages = preallocate_image_highmem(save_highmem);
-		pages += preallocate_image_memory(saveable - pages);
+		pages += preallocate_image_memory(saveable - pages, avail_normal);
 		goto out;
 	}
 
 	/* Estimate the minimum size of the image. */
 	pages = minimum_image_size(saveable);
+	/*
+	 * To avoid excessive pressure on the normal zone, leave room in it to
+	 * accommodate an image of the minimum size (unless it's already too
+	 * small, in which case don't preallocate pages from it at all).
+	 */
+	if (avail_normal > pages)
+		avail_normal -= pages;
+	else
+		avail_normal = 0;
 	if (size < pages)
 		size = min_t(unsigned long, pages, max_size);
 
@@ -1336,16 +1363,34 @@ int hibernate_preallocate_memory(void)
 	 */
 	pages_highmem = preallocate_image_highmem(highmem / 2);
 	alloc = (count - max_size) - pages_highmem;
-	pages = preallocate_image_memory(alloc);
-	if (pages < alloc)
-		goto err_out;
-	size = max_size - size;
-	alloc = size;
-	size = preallocate_highmem_fraction(size, highmem, count);
-	pages_highmem += size;
-	alloc -= size;
-	pages += preallocate_image_memory(alloc);
-	pages += pages_highmem;
+	pages = preallocate_image_memory(alloc, avail_normal);
+	if (pages < alloc) {
+		/* We have exhausted non-highmem pages, try highmem. */
+		alloc -= pages;
+		pages += pages_highmem;
+		pages_highmem = preallocate_image_highmem(alloc);
+		if (pages_highmem < alloc)
+			goto err_out;
+		pages += pages_highmem;
+		/*
+		 * size is the desired number of saveable pages to leave in
+		 * memory, so try to preallocate (all memory - size) pages.
+		 */
+		alloc = (count - pages) - size;
+		pages += preallocate_image_highmem(alloc);
+	} else {
+		/*
+		 * There are approximately max_size saveable pages at this point
+		 * and we want to reduce this number down to size.
+		 */
+		alloc = max_size - size;
+		size = preallocate_highmem_fraction(alloc, highmem, count);
+		pages_highmem += size;
+		alloc -= size;
+		size = preallocate_image_memory(alloc, avail_normal);
+		pages_highmem += preallocate_image_highmem(alloc - size);
+		pages += pages_highmem + size;
+	}
 
 	/*
 	 * We only need as many page frames for the image as there are saveable

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

* [PATCH] PM / Hibernate: Avoid hitting OOM during preallocation of memory (was: Re: Important news ...)
  2010-09-08 12:56                                                   ` M. Vefa Bicakci
  2010-09-08 21:34                                                     ` [PATCH] PM / Hibernate: Avoid hitting OOM during preallocation of memory (was: Re: Important news ...) Rafael J. Wysocki
@ 2010-09-08 21:34                                                     ` Rafael J. Wysocki
  1 sibling, 0 replies; 66+ messages in thread
From: Rafael J. Wysocki @ 2010-09-08 21:34 UTC (permalink / raw)
  To: M. Vefa Bicakci; +Cc: linux-pm, Linux Kernel Mailing List, KOSAKI Motohiro

On Wednesday, September 08, 2010, M. Vefa Bicakci wrote:
> On 07/09/10 05:44 PM, Rafael J. Wysocki wrote:
> > On Tuesday, September 07, 2010, KOSAKI Motohiro wrote:
> >>> [snip - M. Vefa Bicakci's last e-mail]
> >>
> >> Hm, interesting.
> >>
> >> Rafael's patch seems works intentionally. preallocate much much memory and
> >> release over allocated memory. But on your system, iwl3945 allocate memory 
> >> concurrently. If it try to allocate before the hibernation code release 
> >> extra memory, It may get allocation failure.
> >>
> >> So, I'm not sure wich behavior is desired.
> >>   1) preallocate enough much memory
> >> 	pros) hibernate faster
> >> 	cons) failure risk of network card memory allocation
> >>   2) preallocate small memory
> >> 	pros) hibernate slower
> >> 	cons) don't makes network card memory allocation
> >>
> >> But, I wonder why this kernel thread is not frozen. afaik, hibernation
> >> doesn't need network capability. Is this really intentional?
> > 
> > It's a kernel thread, we don't freeze them by default, only the ones that
> > directly request to be frozen.
> > 
> > BTW, please note that the card probably allocates from normal zone and that
> > may be the reason of the failure.
> > 
> >> Rafael, Could you please explain the design of hibernation and your
> >> intention?
> > 
> > The design of the preallocator is pretty straightforward.
> > 
> > First, if there's already enough free memory to make a copy of all memory in
> > use, we simply allocate as much memory as needed for that copy and return
> > (the size >= saveable condition).
> > 
> > Next, we preallocate as much memory as to accommodate the largest possible
> > image.  A little more than 50% of RAM is preallocated in this step (this causes
> > some pages that were in use before to be freed, so the resulting image size is
> > a little below 50% of RAM).
> > 
> > Next, there is the sysfs file /sys/power/image_size that represents the user's
> > desired size of the image.  If this number is much less than 50% of RAM,
> > we do our best to force the mm subsystem to free more pages so that the
> > resulting image size is possibly close to the desired one.  So, I guess, if
> > Vefa writes a greater number into /sys/power/image_size (this is in bytes),
> > the problems should go away. :-)
> > 
> > Still, I see a way to improve things in my patch.  Namely, I guess the number
> > returned by minimum_image_size() may also be regarded as the number of
> > non-highmem pages we can't free with good approximation.  Thus the
> > second argument of preallocate_image_memory() should be
> > size_normal - "the number returned by minimum_image_size()".
> > 
> > [BTW, there seems to be a bug in minimum_image_size(), because if
> > saveable < size, this means that the minimum image size is equal to saveable
> > rather than 0.  This shouldn't happen, though.]
> > 
> > Vefa, can you please test the patch below with and without the
> > patch at http://lkml.org/lkml/2010/9/5/86 (please don't try to change
> > /sys/power/image_size yet)?
> > 
> > Thanks,
> > Rafael
> 
> Dear Rafael Wysocki,
> 
> I applied the patch below to a clean 2.6.35.4 tree and tested 6 hibernate/thaw
> cycles consecutively. I am happy to report that it works properly.
> 
> Then I applied the patch at http://lkml.org/lkml/2010/9/5/86 (the "vmscan.c
> patch") on top of the tree I used above, and I also ran 6 hibernate/thaw
> cycles. Again, I am happy to report that this combination of patches also
> works properly.

Great, that's encouraging.

> I should note a few things though,
> 
> 1) I don't think I ever changed /sys/power/image_size, so we can rule out the
> possibility of that option changing the results.

Can you please check what value is there in this file?

> 2) With the patch below, for the *first* hibernation operation, the computer
> enters a "thoughtful" state without any disk activity for 6-8 (maybe 10)
> seconds after printing "Preallocating image memory". It works properly after
> the wait however.

That probably is a result of spending time in the memory allocator trying to
reduce the size of the image as much as possible.

> 3) For some reason, with the patch below by itself, or in combination with the
> above-mentioned vmscan.c patch, I haven't seen any page allocation errors
> regarding the iwl3945 driver. To be honest I am not sure why this change
> occurred, but I think you might know.

I think we just keep enough free pages in the normal zone all the time for the
driver to allocate from.

> 4) I made sure that I was not being impatient with the previous snapshot.c
> patch, so I tested that on its own once again, and I confirmed that hibernation
> hangs with the older version of the snapshot.c patch.
> 
> I am very happy that we are getting closer to a solution. Please let me know
> if there is anything I need to test further.

Below is the patch I'd like to apply.  It should work just like the previous
one (there are a few fixes that shouldn't affect the functionality in it), but
please test it if you can.

I think the slowdown you saw in 2) may be eliminated by increasing the
image_size value, so I'm going to prepare a patch that will compute the
value automatically during boot so that it's approximately 50% of RAM.

Thanks,
Rafael

---
From: Rafael J. Wysocki <rjw@sisk.pl>
Subject: PM / Hibernate: Avoid hitting OOM during preallocation of memory

There is a problem in hibernate_preallocate_memory() that it calls
preallocate_image_memory() with an argument that may be greater than
the total number of available non-highmem memory pages.  If that's
the case, the OOM condition is guaranteed to trigger, which in turn
can cause significant slowdown to occur during hibernation.

To avoid that, make preallocate_image_memory() adjust its argument
before calling preallocate_image_pages(), so that the total number of
saveable non-highem pages left is not less than the minimum size of
a hibernation image.  Change hibernate_preallocate_memory() to try to
allocate from highmem if the number of pages allocated by
preallocate_image_memory() is too low.

Modify free_unnecessary_pages() to take all possible memory
allocation patterns into account.

Reported-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 kernel/power/snapshot.c |   85 ++++++++++++++++++++++++++++++++++++------------
 1 file changed, 65 insertions(+), 20 deletions(-)

Index: linux-2.6/kernel/power/snapshot.c
===================================================================
--- linux-2.6.orig/kernel/power/snapshot.c
+++ linux-2.6/kernel/power/snapshot.c
@@ -1122,9 +1122,19 @@ static unsigned long preallocate_image_p
 	return nr_alloc;
 }
 
-static unsigned long preallocate_image_memory(unsigned long nr_pages)
+static unsigned long preallocate_image_memory(unsigned long nr_pages,
+					      unsigned long avail_normal)
 {
-	return preallocate_image_pages(nr_pages, GFP_IMAGE);
+	unsigned long alloc;
+
+	if (avail_normal <= alloc_normal)
+		return 0;
+
+	alloc = avail_normal - alloc_normal;
+	if (nr_pages < alloc)
+		alloc = nr_pages;
+
+	return preallocate_image_pages(alloc, GFP_IMAGE);
 }
 
 #ifdef CONFIG_HIGHMEM
@@ -1170,15 +1180,22 @@ static inline unsigned long preallocate_
  */
 static void free_unnecessary_pages(void)
 {
-	unsigned long save_highmem, to_free_normal, to_free_highmem;
+	unsigned long save, to_free_normal, to_free_highmem;
 
-	to_free_normal = alloc_normal - count_data_pages();
-	save_highmem = count_highmem_pages();
-	if (alloc_highmem > save_highmem) {
-		to_free_highmem = alloc_highmem - save_highmem;
+	save = count_data_pages();
+	if (alloc_normal >= save) {
+		to_free_normal = alloc_normal - save;
+		save = 0;
+	} else {
+		to_free_normal = 0;
+		save -= alloc_normal;
+	}
+	save += count_highmem_pages();
+	if (alloc_highmem >= save) {
+		to_free_highmem = alloc_highmem - save;
 	} else {
 		to_free_highmem = 0;
-		to_free_normal -= save_highmem - alloc_highmem;
+		to_free_normal -= save - alloc_highmem;
 	}
 
 	memory_bm_position_reset(&copy_bm);
@@ -1259,7 +1276,7 @@ int hibernate_preallocate_memory(void)
 {
 	struct zone *zone;
 	unsigned long saveable, size, max_size, count, highmem, pages = 0;
-	unsigned long alloc, save_highmem, pages_highmem;
+	unsigned long alloc, save_highmem, pages_highmem, avail_normal;
 	struct timeval start, stop;
 	int error;
 
@@ -1296,6 +1313,7 @@ int hibernate_preallocate_memory(void)
 		else
 			count += zone_page_state(zone, NR_FREE_PAGES);
 	}
+	avail_normal = count;
 	count += highmem;
 	count -= totalreserve_pages;
 
@@ -1310,12 +1328,21 @@ int hibernate_preallocate_memory(void)
 	 */
 	if (size >= saveable) {
 		pages = preallocate_image_highmem(save_highmem);
-		pages += preallocate_image_memory(saveable - pages);
+		pages += preallocate_image_memory(saveable - pages, avail_normal);
 		goto out;
 	}
 
 	/* Estimate the minimum size of the image. */
 	pages = minimum_image_size(saveable);
+	/*
+	 * To avoid excessive pressure on the normal zone, leave room in it to
+	 * accommodate an image of the minimum size (unless it's already too
+	 * small, in which case don't preallocate pages from it at all).
+	 */
+	if (avail_normal > pages)
+		avail_normal -= pages;
+	else
+		avail_normal = 0;
 	if (size < pages)
 		size = min_t(unsigned long, pages, max_size);
 
@@ -1336,16 +1363,34 @@ int hibernate_preallocate_memory(void)
 	 */
 	pages_highmem = preallocate_image_highmem(highmem / 2);
 	alloc = (count - max_size) - pages_highmem;
-	pages = preallocate_image_memory(alloc);
-	if (pages < alloc)
-		goto err_out;
-	size = max_size - size;
-	alloc = size;
-	size = preallocate_highmem_fraction(size, highmem, count);
-	pages_highmem += size;
-	alloc -= size;
-	pages += preallocate_image_memory(alloc);
-	pages += pages_highmem;
+	pages = preallocate_image_memory(alloc, avail_normal);
+	if (pages < alloc) {
+		/* We have exhausted non-highmem pages, try highmem. */
+		alloc -= pages;
+		pages += pages_highmem;
+		pages_highmem = preallocate_image_highmem(alloc);
+		if (pages_highmem < alloc)
+			goto err_out;
+		pages += pages_highmem;
+		/*
+		 * size is the desired number of saveable pages to leave in
+		 * memory, so try to preallocate (all memory - size) pages.
+		 */
+		alloc = (count - pages) - size;
+		pages += preallocate_image_highmem(alloc);
+	} else {
+		/*
+		 * There are approximately max_size saveable pages at this point
+		 * and we want to reduce this number down to size.
+		 */
+		alloc = max_size - size;
+		size = preallocate_highmem_fraction(alloc, highmem, count);
+		pages_highmem += size;
+		alloc -= size;
+		size = preallocate_image_memory(alloc, avail_normal);
+		pages_highmem += preallocate_image_highmem(alloc - size);
+		pages += pages_highmem + size;
+	}
 
 	/*
 	 * We only need as many page frames for the image as there are saveable

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

* Re: PATCH: PM / Hibernate: Avoid hitting OOM during preallocationof memory
  2010-09-08 21:34                                                     ` [PATCH] PM / Hibernate: Avoid hitting OOM during preallocation of memory (was: Re: Important news ...) Rafael J. Wysocki
  2010-09-11 18:12                                                       ` PATCH: PM / Hibernate: Avoid hitting OOM during preallocationof memory M. Vefa Bicakci
@ 2010-09-11 18:12                                                       ` M. Vefa Bicakci
  2010-09-11 19:06                                                         ` Rafael J. Wysocki
  2010-09-11 19:06                                                         ` Rafael J. Wysocki
  1 sibling, 2 replies; 66+ messages in thread
From: M. Vefa Bicakci @ 2010-09-11 18:12 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: KOSAKI Motohiro, Linux Kernel Mailing List, linux-pm, Minchan Kim

Hello,

Sorry for the late reply. I have been busy the past few days.

On 08/09/10 05:34 PM, Rafael J. Wysocki wrote:
> On Wednesday, September 08, 2010, M. Vefa Bicakci wrote:
>> [snip]
>>
>> I should note a few things though,
>>
>> 1) I don't think I ever changed /sys/power/image_size, so we can rule out the
>> possibility of that option changing the results.
> 
> Can you please check what value is there in this file?

It contains 524288000, so I think it is set to 500 MB. I believe that this is
the default value, but I am not sure.

>> 2) With the patch below, for the *first* hibernation operation, the computer
>> enters a "thoughtful" state without any disk activity for 6-8 (maybe 10)
>> seconds after printing "Preallocating image memory". It works properly after
>> the wait however.
> 
> That probably is a result of spending time in the memory allocator trying to
> reduce the size of the image as much as possible.

I am not sure if this is a new thing with the new patch, but the behavior
seems to continue with the later hibernation operations too, not just the
first one. I haven't confirmed if I really didn't realize the problem in
the previous version of the patch, but it is very possible that I didn't
realize it since I used to automate my tests. (I didn't automate my tests
this time.)

However, considering that the kernel needs to worry about compacting 1500 MB
of data when hibernating with my tmpfs-is-full system, I guess these wait
times are normal, even though a bit inconvenient.

>> [snip]
> 
>> 4) I made sure that I was not being impatient with the previous snapshot.c
>> patch, so I tested that on its own once again, and I confirmed that hibernation
>> hangs with the older version of the snapshot.c patch.
>>
>> I am very happy that we are getting closer to a solution. Please let me know
>> if there is anything I need to test further.
> 
> Below is the patch I'd like to apply.  It should work just like the previous
> one (there are a few fixes that shouldn't affect the functionality in it), but
> please test it if you can.

I am happy to report that it works properly by only itself when applied to
a clean 2.6.35.4 tree. I haven't had any problems (aside from the "thoughtful
state" issue I mentioned above) with my 6 consecutive hibernation attempts.

> I think the slowdown you saw in 2) may be eliminated by increasing the
> image_size value, so I'm going to prepare a patch that will compute the
> value automatically during boot so that it's approximately 50% of RAM.

I would be glad to test that patch as well, to see if it brings speed-ups.
Actually, I might test hibernation with a larger value written to
/sys/power/image_size when I have time.

> 
> Thanks,
> Rafael

I really appreciate your help. Thanks a lot!

M. Vefa Bicakci

> [patch snipped]

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

* Re: PATCH: PM / Hibernate: Avoid hitting OOM during preallocationof memory
  2010-09-08 21:34                                                     ` [PATCH] PM / Hibernate: Avoid hitting OOM during preallocation of memory (was: Re: Important news ...) Rafael J. Wysocki
@ 2010-09-11 18:12                                                       ` M. Vefa Bicakci
  2010-09-11 18:12                                                       ` M. Vefa Bicakci
  1 sibling, 0 replies; 66+ messages in thread
From: M. Vefa Bicakci @ 2010-09-11 18:12 UTC (permalink / raw)
  To: Rafael J. Wysocki; +Cc: linux-pm, Linux Kernel Mailing List, KOSAKI Motohiro

Hello,

Sorry for the late reply. I have been busy the past few days.

On 08/09/10 05:34 PM, Rafael J. Wysocki wrote:
> On Wednesday, September 08, 2010, M. Vefa Bicakci wrote:
>> [snip]
>>
>> I should note a few things though,
>>
>> 1) I don't think I ever changed /sys/power/image_size, so we can rule out the
>> possibility of that option changing the results.
> 
> Can you please check what value is there in this file?

It contains 524288000, so I think it is set to 500 MB. I believe that this is
the default value, but I am not sure.

>> 2) With the patch below, for the *first* hibernation operation, the computer
>> enters a "thoughtful" state without any disk activity for 6-8 (maybe 10)
>> seconds after printing "Preallocating image memory". It works properly after
>> the wait however.
> 
> That probably is a result of spending time in the memory allocator trying to
> reduce the size of the image as much as possible.

I am not sure if this is a new thing with the new patch, but the behavior
seems to continue with the later hibernation operations too, not just the
first one. I haven't confirmed if I really didn't realize the problem in
the previous version of the patch, but it is very possible that I didn't
realize it since I used to automate my tests. (I didn't automate my tests
this time.)

However, considering that the kernel needs to worry about compacting 1500 MB
of data when hibernating with my tmpfs-is-full system, I guess these wait
times are normal, even though a bit inconvenient.

>> [snip]
> 
>> 4) I made sure that I was not being impatient with the previous snapshot.c
>> patch, so I tested that on its own once again, and I confirmed that hibernation
>> hangs with the older version of the snapshot.c patch.
>>
>> I am very happy that we are getting closer to a solution. Please let me know
>> if there is anything I need to test further.
> 
> Below is the patch I'd like to apply.  It should work just like the previous
> one (there are a few fixes that shouldn't affect the functionality in it), but
> please test it if you can.

I am happy to report that it works properly by only itself when applied to
a clean 2.6.35.4 tree. I haven't had any problems (aside from the "thoughtful
state" issue I mentioned above) with my 6 consecutive hibernation attempts.

> I think the slowdown you saw in 2) may be eliminated by increasing the
> image_size value, so I'm going to prepare a patch that will compute the
> value automatically during boot so that it's approximately 50% of RAM.

I would be glad to test that patch as well, to see if it brings speed-ups.
Actually, I might test hibernation with a larger value written to
/sys/power/image_size when I have time.

> 
> Thanks,
> Rafael

I really appreciate your help. Thanks a lot!

M. Vefa Bicakci

> [patch snipped]

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

* Re: PATCH: PM / Hibernate: Avoid hitting OOM during preallocationof memory
  2010-09-11 18:12                                                       ` M. Vefa Bicakci
  2010-09-11 19:06                                                         ` Rafael J. Wysocki
@ 2010-09-11 19:06                                                         ` Rafael J. Wysocki
  2010-09-11 22:27                                                           ` [PATCH] PM / Hibernate: Make default image size depend on total RAM size (was: Re: PATCH: PM / Hibernate: Avoid hitting OOM ...) Rafael J. Wysocki
  2010-09-11 22:27                                                           ` [PATCH] PM / Hibernate: Make default image size depend on total RAM size (was: Re: PATCH: PM / Hibernate: Avoid hitting OOM ...) Rafael J. Wysocki
  1 sibling, 2 replies; 66+ messages in thread
From: Rafael J. Wysocki @ 2010-09-11 19:06 UTC (permalink / raw)
  To: M. Vefa Bicakci
  Cc: KOSAKI Motohiro, Linux Kernel Mailing List, linux-pm, Minchan Kim

On Saturday, September 11, 2010, M. Vefa Bicakci wrote:
> Hello,
> 
> Sorry for the late reply. I have been busy the past few days.
> 
> On 08/09/10 05:34 PM, Rafael J. Wysocki wrote:
> > On Wednesday, September 08, 2010, M. Vefa Bicakci wrote:
> >> [snip]
> >>
> >> I should note a few things though,
> >>
> >> 1) I don't think I ever changed /sys/power/image_size, so we can rule out the
> >> possibility of that option changing the results.
> > 
> > Can you please check what value is there in this file?
> 
> It contains 524288000, so I think it is set to 500 MB. I believe that this is
> the default value, but I am not sure.

Yes, this is the (hard coded) default, which very likely is to small for your system.

> >> 2) With the patch below, for the *first* hibernation operation, the computer
> >> enters a "thoughtful" state without any disk activity for 6-8 (maybe 10)
> >> seconds after printing "Preallocating image memory". It works properly after
> >> the wait however.
> > 
> > That probably is a result of spending time in the memory allocator trying to
> > reduce the size of the image as much as possible.
> 
> I am not sure if this is a new thing with the new patch, but the behavior
> seems to continue with the later hibernation operations too, not just the
> first one. I haven't confirmed if I really didn't realize the problem in
> the previous version of the patch, but it is very possible that I didn't
> realize it since I used to automate my tests. (I didn't automate my tests
> this time.)
> 
> However, considering that the kernel needs to worry about compacting 1500 MB
> of data when hibernating with my tmpfs-is-full system, I guess these wait
> times are normal, even though a bit inconvenient.
> 
> >> [snip]
> > 
> >> 4) I made sure that I was not being impatient with the previous snapshot.c
> >> patch, so I tested that on its own once again, and I confirmed that hibernation
> >> hangs with the older version of the snapshot.c patch.
> >>
> >> I am very happy that we are getting closer to a solution. Please let me know
> >> if there is anything I need to test further.
> > 
> > Below is the patch I'd like to apply.  It should work just like the previous
> > one (there are a few fixes that shouldn't affect the functionality in it), but
> > please test it if you can.
> 
> I am happy to report that it works properly by only itself when applied to
> a clean 2.6.35.4 tree. I haven't had any problems (aside from the "thoughtful
> state" issue I mentioned above) with my 6 consecutive hibernation attempts.

Great, thanks a lot for your excellent feedback!

> > I think the slowdown you saw in 2) may be eliminated by increasing the
> > image_size value, so I'm going to prepare a patch that will compute the
> > value automatically during boot so that it's approximately 50% of RAM.
> 
> I would be glad to test that patch as well, to see if it brings speed-ups.
> Actually, I might test hibernation with a larger value written to
> /sys/power/image_size when I have time.

I think that would improve things, as it probably is impossible to reduce the
image size to 500 MB on your system.

Anyway, I'll let you know when the patch is ready.

Thanks,
Rafael

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

* Re: PATCH: PM / Hibernate: Avoid hitting OOM during preallocationof memory
  2010-09-11 18:12                                                       ` M. Vefa Bicakci
@ 2010-09-11 19:06                                                         ` Rafael J. Wysocki
  2010-09-11 19:06                                                         ` Rafael J. Wysocki
  1 sibling, 0 replies; 66+ messages in thread
From: Rafael J. Wysocki @ 2010-09-11 19:06 UTC (permalink / raw)
  To: M. Vefa Bicakci; +Cc: linux-pm, Linux Kernel Mailing List, KOSAKI Motohiro

On Saturday, September 11, 2010, M. Vefa Bicakci wrote:
> Hello,
> 
> Sorry for the late reply. I have been busy the past few days.
> 
> On 08/09/10 05:34 PM, Rafael J. Wysocki wrote:
> > On Wednesday, September 08, 2010, M. Vefa Bicakci wrote:
> >> [snip]
> >>
> >> I should note a few things though,
> >>
> >> 1) I don't think I ever changed /sys/power/image_size, so we can rule out the
> >> possibility of that option changing the results.
> > 
> > Can you please check what value is there in this file?
> 
> It contains 524288000, so I think it is set to 500 MB. I believe that this is
> the default value, but I am not sure.

Yes, this is the (hard coded) default, which very likely is to small for your system.

> >> 2) With the patch below, for the *first* hibernation operation, the computer
> >> enters a "thoughtful" state without any disk activity for 6-8 (maybe 10)
> >> seconds after printing "Preallocating image memory". It works properly after
> >> the wait however.
> > 
> > That probably is a result of spending time in the memory allocator trying to
> > reduce the size of the image as much as possible.
> 
> I am not sure if this is a new thing with the new patch, but the behavior
> seems to continue with the later hibernation operations too, not just the
> first one. I haven't confirmed if I really didn't realize the problem in
> the previous version of the patch, but it is very possible that I didn't
> realize it since I used to automate my tests. (I didn't automate my tests
> this time.)
> 
> However, considering that the kernel needs to worry about compacting 1500 MB
> of data when hibernating with my tmpfs-is-full system, I guess these wait
> times are normal, even though a bit inconvenient.
> 
> >> [snip]
> > 
> >> 4) I made sure that I was not being impatient with the previous snapshot.c
> >> patch, so I tested that on its own once again, and I confirmed that hibernation
> >> hangs with the older version of the snapshot.c patch.
> >>
> >> I am very happy that we are getting closer to a solution. Please let me know
> >> if there is anything I need to test further.
> > 
> > Below is the patch I'd like to apply.  It should work just like the previous
> > one (there are a few fixes that shouldn't affect the functionality in it), but
> > please test it if you can.
> 
> I am happy to report that it works properly by only itself when applied to
> a clean 2.6.35.4 tree. I haven't had any problems (aside from the "thoughtful
> state" issue I mentioned above) with my 6 consecutive hibernation attempts.

Great, thanks a lot for your excellent feedback!

> > I think the slowdown you saw in 2) may be eliminated by increasing the
> > image_size value, so I'm going to prepare a patch that will compute the
> > value automatically during boot so that it's approximately 50% of RAM.
> 
> I would be glad to test that patch as well, to see if it brings speed-ups.
> Actually, I might test hibernation with a larger value written to
> /sys/power/image_size when I have time.

I think that would improve things, as it probably is impossible to reduce the
image size to 500 MB on your system.

Anyway, I'll let you know when the patch is ready.

Thanks,
Rafael

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

* [PATCH] PM / Hibernate: Make default image size depend on total RAM size (was: Re: PATCH: PM / Hibernate: Avoid hitting OOM ...)
  2010-09-11 19:06                                                         ` Rafael J. Wysocki
@ 2010-09-11 22:27                                                           ` Rafael J. Wysocki
  2010-09-13 15:40                                                             ` [PATCH] PM / Hibernate: Make default image size depend on totalRAM size M. Vefa Bicakci
  2010-09-13 15:40                                                             ` M. Vefa Bicakci
  2010-09-11 22:27                                                           ` [PATCH] PM / Hibernate: Make default image size depend on total RAM size (was: Re: PATCH: PM / Hibernate: Avoid hitting OOM ...) Rafael J. Wysocki
  1 sibling, 2 replies; 66+ messages in thread
From: Rafael J. Wysocki @ 2010-09-11 22:27 UTC (permalink / raw)
  To: M. Vefa Bicakci
  Cc: KOSAKI Motohiro, Linux Kernel Mailing List, linux-pm, Minchan Kim

On Saturday, September 11, 2010, Rafael J. Wysocki wrote:
> On Saturday, September 11, 2010, M. Vefa Bicakci wrote:
...
> > 
> > I would be glad to test that patch as well, to see if it brings speed-ups.
> > Actually, I might test hibernation with a larger value written to
> > /sys/power/image_size when I have time.
> 
> I think that would improve things, as it probably is impossible to reduce the
> image size to 500 MB on your system.
> 
> Anyway, I'll let you know when the patch is ready.

OK, please try the patch below on top of the previous one and see if it makes
hibernation run faster on your system.

Thanks,
Rafael

---
From: Rafael J. Wysocki <rjw@sisk.pl>
Subject: PM / Hibernate: Make default image size depend on total RAM size

The default hibernation image size is currently hard coded and euqal
to 500 MB, which is not a reasonable default on many contemporary
systems.  Make it equal 2/5 of the total RAM size (this is slightly
below the maximum, i.e. 1/2 of the total RAM size, and seems to be
generally suitable).

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 Documentation/power/interface.txt |    2 +-
 kernel/power/main.c               |    1 +
 kernel/power/power.h              |    9 ++++++++-
 kernel/power/snapshot.c           |    7 ++++++-
 4 files changed, 16 insertions(+), 3 deletions(-)

Index: linux-2.6/kernel/power/snapshot.c
===================================================================
--- linux-2.6.orig/kernel/power/snapshot.c
+++ linux-2.6/kernel/power/snapshot.c
@@ -46,7 +46,12 @@ static void swsusp_unset_page_forbidden(
  * size will not exceed N bytes, but if that is impossible, it will
  * try to create the smallest image possible.
  */
-unsigned long image_size = 500 * 1024 * 1024;
+unsigned long image_size;
+
+void __init hibernate_image_size_init(void)
+{
+	image_size = ((totalram_pages * 2) / 5) * PAGE_SIZE;
+}
 
 /* List of PBEs needed for restoring the pages that were allocated before
  * the suspend and included in the suspend image, but have also been
Index: linux-2.6/kernel/power/power.h
===================================================================
--- linux-2.6.orig/kernel/power/power.h
+++ linux-2.6/kernel/power/power.h
@@ -14,6 +14,9 @@ struct swsusp_info {
 } __attribute__((aligned(PAGE_SIZE)));
 
 #ifdef CONFIG_HIBERNATION
+/* kernel/power/snapshot.c */
+extern void __init hibernate_image_size_init(void);
+
 #ifdef CONFIG_ARCH_HIBERNATION_HEADER
 /* Maximum size of architecture specific data in a hibernation header */
 #define MAX_ARCH_HEADER_SIZE	(sizeof(struct new_utsname) + 4)
@@ -49,7 +52,11 @@ static inline char *check_image_kernel(s
 extern int hibernation_snapshot(int platform_mode);
 extern int hibernation_restore(int platform_mode);
 extern int hibernation_platform_enter(void);
-#endif
+
+#else /* !CONFIG_HIBERNATION */
+
+static inline void hibernate_image_size_init(void) {}
+#endif /* !CONFIG_HIBERNATION */
 
 extern int pfn_is_nosave(unsigned long);
 
Index: linux-2.6/kernel/power/main.c
===================================================================
--- linux-2.6.orig/kernel/power/main.c
+++ linux-2.6/kernel/power/main.c
@@ -321,6 +321,7 @@ static int __init pm_init(void)
 	int error = pm_start_workqueue();
 	if (error)
 		return error;
+	hibernate_image_size_init();
 	power_kobj = kobject_create_and_add("power", NULL);
 	if (!power_kobj)
 		return -ENOMEM;
Index: linux-2.6/Documentation/power/interface.txt
===================================================================
--- linux-2.6.orig/Documentation/power/interface.txt
+++ linux-2.6/Documentation/power/interface.txt
@@ -57,7 +57,7 @@ smallest image possible.  In particular,
 suspend image will be as small as possible.
 
 Reading from this file will display the current image size limit, which
-is set to 500 MB by default.
+is set to 2/5 of available RAM by default.
 
 /sys/power/pm_trace controls the code which saves the last PM event point in
 the RTC across reboots, so that you can debug a machine that just hangs

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

* [PATCH] PM / Hibernate: Make default image size depend on total RAM size (was: Re: PATCH: PM / Hibernate: Avoid hitting OOM ...)
  2010-09-11 19:06                                                         ` Rafael J. Wysocki
  2010-09-11 22:27                                                           ` [PATCH] PM / Hibernate: Make default image size depend on total RAM size (was: Re: PATCH: PM / Hibernate: Avoid hitting OOM ...) Rafael J. Wysocki
@ 2010-09-11 22:27                                                           ` Rafael J. Wysocki
  1 sibling, 0 replies; 66+ messages in thread
From: Rafael J. Wysocki @ 2010-09-11 22:27 UTC (permalink / raw)
  To: M. Vefa Bicakci; +Cc: linux-pm, Linux Kernel Mailing List, KOSAKI Motohiro

On Saturday, September 11, 2010, Rafael J. Wysocki wrote:
> On Saturday, September 11, 2010, M. Vefa Bicakci wrote:
...
> > 
> > I would be glad to test that patch as well, to see if it brings speed-ups.
> > Actually, I might test hibernation with a larger value written to
> > /sys/power/image_size when I have time.
> 
> I think that would improve things, as it probably is impossible to reduce the
> image size to 500 MB on your system.
> 
> Anyway, I'll let you know when the patch is ready.

OK, please try the patch below on top of the previous one and see if it makes
hibernation run faster on your system.

Thanks,
Rafael

---
From: Rafael J. Wysocki <rjw@sisk.pl>
Subject: PM / Hibernate: Make default image size depend on total RAM size

The default hibernation image size is currently hard coded and euqal
to 500 MB, which is not a reasonable default on many contemporary
systems.  Make it equal 2/5 of the total RAM size (this is slightly
below the maximum, i.e. 1/2 of the total RAM size, and seems to be
generally suitable).

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 Documentation/power/interface.txt |    2 +-
 kernel/power/main.c               |    1 +
 kernel/power/power.h              |    9 ++++++++-
 kernel/power/snapshot.c           |    7 ++++++-
 4 files changed, 16 insertions(+), 3 deletions(-)

Index: linux-2.6/kernel/power/snapshot.c
===================================================================
--- linux-2.6.orig/kernel/power/snapshot.c
+++ linux-2.6/kernel/power/snapshot.c
@@ -46,7 +46,12 @@ static void swsusp_unset_page_forbidden(
  * size will not exceed N bytes, but if that is impossible, it will
  * try to create the smallest image possible.
  */
-unsigned long image_size = 500 * 1024 * 1024;
+unsigned long image_size;
+
+void __init hibernate_image_size_init(void)
+{
+	image_size = ((totalram_pages * 2) / 5) * PAGE_SIZE;
+}
 
 /* List of PBEs needed for restoring the pages that were allocated before
  * the suspend and included in the suspend image, but have also been
Index: linux-2.6/kernel/power/power.h
===================================================================
--- linux-2.6.orig/kernel/power/power.h
+++ linux-2.6/kernel/power/power.h
@@ -14,6 +14,9 @@ struct swsusp_info {
 } __attribute__((aligned(PAGE_SIZE)));
 
 #ifdef CONFIG_HIBERNATION
+/* kernel/power/snapshot.c */
+extern void __init hibernate_image_size_init(void);
+
 #ifdef CONFIG_ARCH_HIBERNATION_HEADER
 /* Maximum size of architecture specific data in a hibernation header */
 #define MAX_ARCH_HEADER_SIZE	(sizeof(struct new_utsname) + 4)
@@ -49,7 +52,11 @@ static inline char *check_image_kernel(s
 extern int hibernation_snapshot(int platform_mode);
 extern int hibernation_restore(int platform_mode);
 extern int hibernation_platform_enter(void);
-#endif
+
+#else /* !CONFIG_HIBERNATION */
+
+static inline void hibernate_image_size_init(void) {}
+#endif /* !CONFIG_HIBERNATION */
 
 extern int pfn_is_nosave(unsigned long);
 
Index: linux-2.6/kernel/power/main.c
===================================================================
--- linux-2.6.orig/kernel/power/main.c
+++ linux-2.6/kernel/power/main.c
@@ -321,6 +321,7 @@ static int __init pm_init(void)
 	int error = pm_start_workqueue();
 	if (error)
 		return error;
+	hibernate_image_size_init();
 	power_kobj = kobject_create_and_add("power", NULL);
 	if (!power_kobj)
 		return -ENOMEM;
Index: linux-2.6/Documentation/power/interface.txt
===================================================================
--- linux-2.6.orig/Documentation/power/interface.txt
+++ linux-2.6/Documentation/power/interface.txt
@@ -57,7 +57,7 @@ smallest image possible.  In particular,
 suspend image will be as small as possible.
 
 Reading from this file will display the current image size limit, which
-is set to 500 MB by default.
+is set to 2/5 of available RAM by default.
 
 /sys/power/pm_trace controls the code which saves the last PM event point in
 the RTC across reboots, so that you can debug a machine that just hangs

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

* Re: [PATCH] PM / Hibernate: Make default image size depend on totalRAM size
  2010-09-11 22:27                                                           ` [PATCH] PM / Hibernate: Make default image size depend on total RAM size (was: Re: PATCH: PM / Hibernate: Avoid hitting OOM ...) Rafael J. Wysocki
  2010-09-13 15:40                                                             ` [PATCH] PM / Hibernate: Make default image size depend on totalRAM size M. Vefa Bicakci
@ 2010-09-13 15:40                                                             ` M. Vefa Bicakci
  2010-09-13 17:52                                                               ` Rafael J. Wysocki
  2010-09-13 17:52                                                               ` Rafael J. Wysocki
  1 sibling, 2 replies; 66+ messages in thread
From: M. Vefa Bicakci @ 2010-09-13 15:40 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: KOSAKI Motohiro, Linux Kernel Mailing List, linux-pm, Minchan Kim

On 11/09/10 06:27 PM, Rafael J. Wysocki wrote:
> On Saturday, September 11, 2010, Rafael J. Wysocki wrote:
>> On Saturday, September 11, 2010, M. Vefa Bicakci wrote:
> ...
>>>
>>> I would be glad to test that patch as well, to see if it brings speed-ups.
>>> Actually, I might test hibernation with a larger value written to
>>> /sys/power/image_size when I have time.
>>
>> I think that would improve things, as it probably is impossible to reduce the
>> image size to 500 MB on your system.
>>
>> Anyway, I'll let you know when the patch is ready.
> 
> OK, please try the patch below on top of the previous one and see if it makes
> hibernation run faster on your system.

Dear Rafael Wysocki,

I think I have good news. I took a clean 2.6.35.4 tree, and first applied
the latest version of your larger snapshot.c patch, and then the patch you
appended to your final e-mail in this thread.

Here is a comparison of the timings from a kernel without your patch, and
one with it.

=== 8< ===
Sep 11 10:22:24 debian kernel: [  499.968989] PM: Allocated 2531300 kbytes in 52.66 seconds (48.06 MB/s)
Sep 11 10:44:08 debian kernel: [  764.379131] PM: Allocated 2531308 kbytes in 143.41 seconds (17.65 MB/s)
Sep 11 10:48:41 debian kernel: [  920.626386] PM: Allocated 2531300 kbytes in 66.44 seconds (38.09 MB/s)
Sep 11 10:53:37 debian kernel: [ 1092.919140] PM: Allocated 2531316 kbytes in 81.28 seconds (31.14 MB/s)
...
Sep 13 01:26:09 debian kernel: [   94.948054] PM: Allocated 1804008 kbytes in 28.72 seconds (62.81 MB/s)
Sep 13 01:29:58 debian kernel: [  176.678880] PM: Allocated 1803992 kbytes in 34.44 seconds (52.38 MB/s)
Sep 13 01:33:48 debian kernel: [  253.336405] PM: Allocated 1804000 kbytes in 27.35 seconds (65.95 MB/s)
=== >8 ===

I didn't have your latest patch applied on September 11, and it was applied
last night.

It looks like there is a good improvement. I think the data rates look
faster on Sept. 13 because the kernel spent less time "thinking" less
while compacting the memory image. (I don't think I have changed anything
in my configuration that could affect the data rates that much.)

Is it possible to have these patches applied to the 2.6.35 tree so that
the regression I reported is fixed? Should I e-mail Greg Kroah-Hartman
about this?

Once again, thank a lot to you, Kosaki Motohiro and Minchan Kim!

M. Vefa Bicakci

> [snip patch]

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

* Re: [PATCH] PM / Hibernate: Make default image size depend on totalRAM size
  2010-09-11 22:27                                                           ` [PATCH] PM / Hibernate: Make default image size depend on total RAM size (was: Re: PATCH: PM / Hibernate: Avoid hitting OOM ...) Rafael J. Wysocki
@ 2010-09-13 15:40                                                             ` M. Vefa Bicakci
  2010-09-13 15:40                                                             ` M. Vefa Bicakci
  1 sibling, 0 replies; 66+ messages in thread
From: M. Vefa Bicakci @ 2010-09-13 15:40 UTC (permalink / raw)
  To: Rafael J. Wysocki; +Cc: linux-pm, Linux Kernel Mailing List, KOSAKI Motohiro

On 11/09/10 06:27 PM, Rafael J. Wysocki wrote:
> On Saturday, September 11, 2010, Rafael J. Wysocki wrote:
>> On Saturday, September 11, 2010, M. Vefa Bicakci wrote:
> ...
>>>
>>> I would be glad to test that patch as well, to see if it brings speed-ups.
>>> Actually, I might test hibernation with a larger value written to
>>> /sys/power/image_size when I have time.
>>
>> I think that would improve things, as it probably is impossible to reduce the
>> image size to 500 MB on your system.
>>
>> Anyway, I'll let you know when the patch is ready.
> 
> OK, please try the patch below on top of the previous one and see if it makes
> hibernation run faster on your system.

Dear Rafael Wysocki,

I think I have good news. I took a clean 2.6.35.4 tree, and first applied
the latest version of your larger snapshot.c patch, and then the patch you
appended to your final e-mail in this thread.

Here is a comparison of the timings from a kernel without your patch, and
one with it.

=== 8< ===
Sep 11 10:22:24 debian kernel: [  499.968989] PM: Allocated 2531300 kbytes in 52.66 seconds (48.06 MB/s)
Sep 11 10:44:08 debian kernel: [  764.379131] PM: Allocated 2531308 kbytes in 143.41 seconds (17.65 MB/s)
Sep 11 10:48:41 debian kernel: [  920.626386] PM: Allocated 2531300 kbytes in 66.44 seconds (38.09 MB/s)
Sep 11 10:53:37 debian kernel: [ 1092.919140] PM: Allocated 2531316 kbytes in 81.28 seconds (31.14 MB/s)
...
Sep 13 01:26:09 debian kernel: [   94.948054] PM: Allocated 1804008 kbytes in 28.72 seconds (62.81 MB/s)
Sep 13 01:29:58 debian kernel: [  176.678880] PM: Allocated 1803992 kbytes in 34.44 seconds (52.38 MB/s)
Sep 13 01:33:48 debian kernel: [  253.336405] PM: Allocated 1804000 kbytes in 27.35 seconds (65.95 MB/s)
=== >8 ===

I didn't have your latest patch applied on September 11, and it was applied
last night.

It looks like there is a good improvement. I think the data rates look
faster on Sept. 13 because the kernel spent less time "thinking" less
while compacting the memory image. (I don't think I have changed anything
in my configuration that could affect the data rates that much.)

Is it possible to have these patches applied to the 2.6.35 tree so that
the regression I reported is fixed? Should I e-mail Greg Kroah-Hartman
about this?

Once again, thank a lot to you, Kosaki Motohiro and Minchan Kim!

M. Vefa Bicakci

> [snip patch]

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

* Re: [PATCH] PM / Hibernate: Make default image size depend on totalRAM size
  2010-09-13 15:40                                                             ` M. Vefa Bicakci
@ 2010-09-13 17:52                                                               ` Rafael J. Wysocki
  2010-09-13 17:52                                                               ` Rafael J. Wysocki
  1 sibling, 0 replies; 66+ messages in thread
From: Rafael J. Wysocki @ 2010-09-13 17:52 UTC (permalink / raw)
  To: M. Vefa Bicakci
  Cc: KOSAKI Motohiro, Linux Kernel Mailing List, linux-pm,
	Minchan Kim, stable, Greg Kroah-Hartman

On Monday, September 13, 2010, M. Vefa Bicakci wrote:
> On 11/09/10 06:27 PM, Rafael J. Wysocki wrote:
> > On Saturday, September 11, 2010, Rafael J. Wysocki wrote:
> >> On Saturday, September 11, 2010, M. Vefa Bicakci wrote:
> > ...
> >>>
> >>> I would be glad to test that patch as well, to see if it brings speed-ups.
> >>> Actually, I might test hibernation with a larger value written to
> >>> /sys/power/image_size when I have time.
> >>
> >> I think that would improve things, as it probably is impossible to reduce the
> >> image size to 500 MB on your system.
> >>
> >> Anyway, I'll let you know when the patch is ready.
> > 
> > OK, please try the patch below on top of the previous one and see if it makes
> > hibernation run faster on your system.
> 
> Dear Rafael Wysocki,
> 
> I think I have good news. I took a clean 2.6.35.4 tree, and first applied
> the latest version of your larger snapshot.c patch, and then the patch you
> appended to your final e-mail in this thread.
> 
> Here is a comparison of the timings from a kernel without your patch, and
> one with it.
> 
> === 8< ===
> Sep 11 10:22:24 debian kernel: [  499.968989] PM: Allocated 2531300 kbytes in 52.66 seconds (48.06 MB/s)
> Sep 11 10:44:08 debian kernel: [  764.379131] PM: Allocated 2531308 kbytes in 143.41 seconds (17.65 MB/s)
> Sep 11 10:48:41 debian kernel: [  920.626386] PM: Allocated 2531300 kbytes in 66.44 seconds (38.09 MB/s)
> Sep 11 10:53:37 debian kernel: [ 1092.919140] PM: Allocated 2531316 kbytes in 81.28 seconds (31.14 MB/s)
> ...
> Sep 13 01:26:09 debian kernel: [   94.948054] PM: Allocated 1804008 kbytes in 28.72 seconds (62.81 MB/s)
> Sep 13 01:29:58 debian kernel: [  176.678880] PM: Allocated 1803992 kbytes in 34.44 seconds (52.38 MB/s)
> Sep 13 01:33:48 debian kernel: [  253.336405] PM: Allocated 1804000 kbytes in 27.35 seconds (65.95 MB/s)
> === >8 ===
> 
> I didn't have your latest patch applied on September 11, and it was applied
> last night.
> 
> It looks like there is a good improvement. I think the data rates look
> faster on Sept. 13 because the kernel spent less time "thinking" less
> while compacting the memory image. (I don't think I have changed anything
> in my configuration that could affect the data rates that much.)

OK, thanks for testing and information.

> Is it possible to have these patches applied to the 2.6.35 tree so that
> the regression I reported is fixed?

The "snapshot.c" patch has just been included into the Linus' tree as

http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=6715045ddc7472a22be5e49d4047d2d89b391f45

> Should I e-mail Greg Kroah-Hartman about this?

and I've already told Greg that it should go into 2.6.35.y.

The second patch, however, only changes the default value of image_size, so it
is not -stable material.

As a workaround, you can change the init scripts on your system to set
/sys/power/image_size to the same value that's in it when the second patch is
applied.

Thanks,
Rafael

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

* Re: [PATCH] PM / Hibernate: Make default image size depend on totalRAM size
  2010-09-13 15:40                                                             ` M. Vefa Bicakci
  2010-09-13 17:52                                                               ` Rafael J. Wysocki
@ 2010-09-13 17:52                                                               ` Rafael J. Wysocki
  1 sibling, 0 replies; 66+ messages in thread
From: Rafael J. Wysocki @ 2010-09-13 17:52 UTC (permalink / raw)
  To: M. Vefa Bicakci
  Cc: Greg Kroah-Hartman, Linux Kernel Mailing List, KOSAKI Motohiro,
	linux-pm, stable

On Monday, September 13, 2010, M. Vefa Bicakci wrote:
> On 11/09/10 06:27 PM, Rafael J. Wysocki wrote:
> > On Saturday, September 11, 2010, Rafael J. Wysocki wrote:
> >> On Saturday, September 11, 2010, M. Vefa Bicakci wrote:
> > ...
> >>>
> >>> I would be glad to test that patch as well, to see if it brings speed-ups.
> >>> Actually, I might test hibernation with a larger value written to
> >>> /sys/power/image_size when I have time.
> >>
> >> I think that would improve things, as it probably is impossible to reduce the
> >> image size to 500 MB on your system.
> >>
> >> Anyway, I'll let you know when the patch is ready.
> > 
> > OK, please try the patch below on top of the previous one and see if it makes
> > hibernation run faster on your system.
> 
> Dear Rafael Wysocki,
> 
> I think I have good news. I took a clean 2.6.35.4 tree, and first applied
> the latest version of your larger snapshot.c patch, and then the patch you
> appended to your final e-mail in this thread.
> 
> Here is a comparison of the timings from a kernel without your patch, and
> one with it.
> 
> === 8< ===
> Sep 11 10:22:24 debian kernel: [  499.968989] PM: Allocated 2531300 kbytes in 52.66 seconds (48.06 MB/s)
> Sep 11 10:44:08 debian kernel: [  764.379131] PM: Allocated 2531308 kbytes in 143.41 seconds (17.65 MB/s)
> Sep 11 10:48:41 debian kernel: [  920.626386] PM: Allocated 2531300 kbytes in 66.44 seconds (38.09 MB/s)
> Sep 11 10:53:37 debian kernel: [ 1092.919140] PM: Allocated 2531316 kbytes in 81.28 seconds (31.14 MB/s)
> ...
> Sep 13 01:26:09 debian kernel: [   94.948054] PM: Allocated 1804008 kbytes in 28.72 seconds (62.81 MB/s)
> Sep 13 01:29:58 debian kernel: [  176.678880] PM: Allocated 1803992 kbytes in 34.44 seconds (52.38 MB/s)
> Sep 13 01:33:48 debian kernel: [  253.336405] PM: Allocated 1804000 kbytes in 27.35 seconds (65.95 MB/s)
> === >8 ===
> 
> I didn't have your latest patch applied on September 11, and it was applied
> last night.
> 
> It looks like there is a good improvement. I think the data rates look
> faster on Sept. 13 because the kernel spent less time "thinking" less
> while compacting the memory image. (I don't think I have changed anything
> in my configuration that could affect the data rates that much.)

OK, thanks for testing and information.

> Is it possible to have these patches applied to the 2.6.35 tree so that
> the regression I reported is fixed?

The "snapshot.c" patch has just been included into the Linus' tree as

http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=6715045ddc7472a22be5e49d4047d2d89b391f45

> Should I e-mail Greg Kroah-Hartman about this?

and I've already told Greg that it should go into 2.6.35.y.

The second patch, however, only changes the default value of image_size, so it
is not -stable material.

As a workaround, you can change the init scripts on your system to set
/sys/power/image_size to the same value that's in it when the second patch is
applied.

Thanks,
Rafael

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

end of thread, other threads:[~2010-09-13 17:54 UTC | newest]

Thread overview: 66+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-08-15  5:25 [Bisected Regression in 2.6.35] A full tmpfs filesystem causes hibernationto hang M. Vefa Bicakci
2010-08-17  2:37 ` KOSAKI Motohiro
2010-08-22 11:06 ` KOSAKI Motohiro
2010-08-22 16:28   ` [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang M. Vefa Bicakci
2010-08-25  8:55     ` KOSAKI Motohiro
2010-08-25 10:11       ` [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernationto hang M. Vefa Bicakci
2010-08-25 17:31       ` [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang Rafael J. Wysocki
2010-08-23  0:22   ` [Bisected Regression in 2.6.35] A full tmpfs filesystem causes hibernationto hang KOSAKI Motohiro
2010-08-23  6:27     ` [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang M. Vefa Bicakci
2010-08-25  0:48       ` KOSAKI Motohiro
2010-08-25  8:39         ` KOSAKI Motohiro
2010-08-25 10:10           ` [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernationto hang M. Vefa Bicakci
     [not found]           ` <4C74EB70.3080406@superonline.com>
     [not found]             ` <20100826134506.F676.A69D9226@jp.fujitsu.com>
2010-08-26 10:36               ` M. Vefa Bicakci
2010-08-30  2:28                 ` KOSAKI Motohiro
2010-08-30 16:54                   ` [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang M. Vefa Bicakci
2010-08-31  6:35                     ` KOSAKI Motohiro
2010-08-31  6:54                       ` KOSAKI Motohiro
2010-08-31 11:25                         ` [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernationto hang M. Vefa Bicakci
2010-09-01  0:48                     ` [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang KOSAKI Motohiro
2010-09-01 22:02                       ` Rafael J. Wysocki
2010-09-01 22:02                       ` Rafael J. Wysocki
2010-09-02  0:31                         ` KOSAKI Motohiro
2010-09-02  0:31                         ` KOSAKI Motohiro
2010-09-02 19:57                           ` Rafael J. Wysocki
2010-09-02 19:57                           ` Rafael J. Wysocki
2010-09-02 20:24                             ` Rafael J. Wysocki
2010-09-02 20:24                               ` Rafael J. Wysocki
2010-09-03  0:13                               ` KOSAKI Motohiro
2010-09-03  0:13                               ` KOSAKI Motohiro
2010-09-03  1:07                                 ` Rafael J. Wysocki
2010-09-03  1:07                                   ` Rafael J. Wysocki
2010-09-03  1:53                                   ` KOSAKI Motohiro
2010-09-04  1:44                                     ` Rafael J. Wysocki
2010-09-04  1:44                                     ` Rafael J. Wysocki
2010-09-06  2:08                                       ` KOSAKI Motohiro
2010-09-06 11:27                                         ` Important news regarding the two different patches M. Vefa Bicakci
2010-09-06 18:43                                           ` Rafael J. Wysocki
2010-09-06 18:43                                           ` Rafael J. Wysocki
2010-09-07  1:34                                             ` M. Vefa Bicakci
2010-09-07  1:34                                             ` M. Vefa Bicakci
2010-09-07  1:58                                               ` KOSAKI Motohiro
2010-09-07 21:44                                                 ` Rafael J. Wysocki
2010-09-07 21:44                                                 ` Rafael J. Wysocki
2010-09-08 12:56                                                   ` M. Vefa Bicakci
2010-09-08 21:34                                                     ` [PATCH] PM / Hibernate: Avoid hitting OOM during preallocation of memory (was: Re: Important news ...) Rafael J. Wysocki
2010-09-11 18:12                                                       ` PATCH: PM / Hibernate: Avoid hitting OOM during preallocationof memory M. Vefa Bicakci
2010-09-11 18:12                                                       ` M. Vefa Bicakci
2010-09-11 19:06                                                         ` Rafael J. Wysocki
2010-09-11 19:06                                                         ` Rafael J. Wysocki
2010-09-11 22:27                                                           ` [PATCH] PM / Hibernate: Make default image size depend on total RAM size (was: Re: PATCH: PM / Hibernate: Avoid hitting OOM ...) Rafael J. Wysocki
2010-09-13 15:40                                                             ` [PATCH] PM / Hibernate: Make default image size depend on totalRAM size M. Vefa Bicakci
2010-09-13 15:40                                                             ` M. Vefa Bicakci
2010-09-13 17:52                                                               ` Rafael J. Wysocki
2010-09-13 17:52                                                               ` Rafael J. Wysocki
2010-09-11 22:27                                                           ` [PATCH] PM / Hibernate: Make default image size depend on total RAM size (was: Re: PATCH: PM / Hibernate: Avoid hitting OOM ...) Rafael J. Wysocki
2010-09-08 21:34                                                     ` [PATCH] PM / Hibernate: Avoid hitting OOM during preallocation of memory (was: Re: Important news ...) Rafael J. Wysocki
2010-09-08 12:56                                                   ` Important news regarding the two different patches M. Vefa Bicakci
2010-09-07  1:58                                               ` KOSAKI Motohiro
2010-09-06 11:27                                         ` M. Vefa Bicakci
2010-09-06 18:46                                         ` [Bisected Regression in 2.6.35] A full tmpfs filesystem causeshibernation to hang Rafael J. Wysocki
2010-09-06 19:54                                           ` Rafael J. Wysocki
2010-09-06 19:54                                           ` Rafael J. Wysocki
2010-09-06 18:46                                         ` Rafael J. Wysocki
2010-09-06  2:08                                       ` KOSAKI Motohiro
2010-09-03  1:53                                   ` KOSAKI Motohiro
2010-09-01  0:48                     ` KOSAKI Motohiro

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.