| From 8548c84da2f47e71bbbe300f55edb768492575f7 Mon Sep 17 00:00:00 2001 |
| From: Takashi Iwai <tiwai@suse.de> |
| Date: Sun, 23 Oct 2011 23:19:12 +0200 |
| Subject: x86: Fix S4 regression |
| |
| From: Takashi Iwai <tiwai@suse.de> |
| |
| commit 8548c84da2f47e71bbbe300f55edb768492575f7 upstream. |
| |
| Commit 4b239f458 ("x86-64, mm: Put early page table high") causes a S4 |
| regression since 2.6.39, namely the machine reboots occasionally at S4 |
| resume. It doesn't happen always, overall rate is about 1/20. But, |
| like other bugs, once when this happens, it continues to happen. |
| |
| This patch fixes the problem by essentially reverting the memory |
| assignment in the older way. |
| |
| Signed-off-by: Takashi Iwai <tiwai@suse.de> |
| Cc: Rafael J. Wysocki <rjw@sisk.pl> |
| Cc: Yinghai Lu <yinghai.lu@oracle.com> |
| [ We'll hopefully find the real fix, but that's too late for 3.1 now ] |
| Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| arch/x86/mm/init.c | 3 +-- |
| 1 file changed, 1 insertion(+), 2 deletions(-) |
| |
| --- a/arch/x86/mm/init.c |
| +++ b/arch/x86/mm/init.c |
| @@ -63,9 +63,8 @@ static void __init find_early_table_spac |
| #ifdef CONFIG_X86_32 |
| /* for fixmap */ |
| tables += roundup(__end_of_fixed_addresses * sizeof(pte_t), PAGE_SIZE); |
| - |
| - good_end = max_pfn_mapped << PAGE_SHIFT; |
| #endif |
| + good_end = max_pfn_mapped << PAGE_SHIFT; |
| |
| base = memblock_find_in_range(start, good_end, tables, PAGE_SIZE); |
| if (base == MEMBLOCK_ERROR) |