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.
Unified · Split
| @@ -63,9 +63,8 @@ static void __init find_early_table_space(unsigned long end, int use_pse, · 62 unmodified lines | ||
| 63 | 63 | #ifdef CONFIG_X86_32 |
| 64 | 64 | /* for fixmap */ |
| 65 | 65 | tables += roundup(__end_of_fixed_addresses * sizeof(pte_t), PAGE_SIZE); |
| 66 | − | |
| 67 | − good_end = max_pfn_mapped << PAGE_SHIFT; | |
| 68 | 66 | #endif |
| 67 | + good_end = max_pfn_mapped << PAGE_SHIFT; | |
| 69 | 68 | |
| 70 | 69 | base = memblock_find_in_range(start, good_end, tables, PAGE_SIZE); |
| 71 | 70 | if (base == MEMBLOCK_ERROR) |