Re: [PATCH] x86: Fix S4 regression
From: Yinghai Lu
Date: Mon Oct 24 2011 - 00:10:15 EST
On Sun, Oct 23, 2011 at 5:29 PM, Yinghai Lu <yinghai.lu@xxxxxxxxxx> wrote:
> On 10/23/2011 02:19 PM, Takashi Iwai wrote:
>
>> The 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.
>>
>> Cc: <stable@xxxxxxxxxx>
>> Signed-off-by: Takashi Iwai <tiwai@xxxxxxx>
>>
>> ---
>> I resend this as a "fix" patch now before it's forgotten and rotten.
>> It's just papering again over the mystery, but IMO better than the
>> hard-reset behavior as of now. Unfortunately, bisection is pretty
>> much difficult because the bug itself is fairly unstable...
>
>
>
> Did you try to check several commit that Rafael pointed out:
>
>
> On Wed, Sep 28, 2011 at 12:30 PM, Rafael J. Wysocki <rjw@xxxxxxx> wrote:
>> On Wednesday, September 28, 2011, Takashi Iwai wrote:
>>>
>>> If my previous test -- 2.6.37+Yinghai's patches didn't show the
>>> problem -- is correct, it means that some change in 2.6.38 reacted
>>> badly with Yinghai's patches, not about 2.6.39. I'll check tomorrow
>>> again whether this observation is really correct.
>>
>> Yes, that would be good to know, thanks for doing this!
>>
>> If that turns out to be the case, there are the following commits
>> looking like worth checking:
>>
>> d344e38 x86, nx: Mark the ACPI resume trampoline code as +x
>> 884b821 ACPI: Fix acpi_os_read_memory() and acpi_os_write_memory() (v2)
>> d551d81 ACPI / PM: Call suspend_nvs_free() earlier during resume
>> 2d6d9fd ACPI: Introduce acpi_os_ioremap()
>
Also, can you check if reverting following patch could help?
| commit e5f15b45ddf3afa2bbbb10c7ea34fb32b6de0a0e
| Author: Yinghai Lu <yinghai@xxxxxxxxxx>
| Date: Fri Feb 18 11:30:30 2011 +0000
|
| x86: Cleanup highmap after brk is concluded
|
| Now cleanup_highmap actually is in two steps: one is early in head64.c
| and only clears above _end; a second one is in init_memory_mapping() and
| tries to clean from _brk_end to _end.
| It should check if those boundaries are PMD_SIZE aligned but currently
| does not.
| Also init_memory_mapping() is called several times for numa or memory
| hotplug, so we really should not handle initial kernel mappings there.
|
| This patch moves cleanup_highmap() down after _brk_end is settled so
| we can do everything in one step.
| Also we honor max_pfn_mapped in the implementation of cleanup_highmap.
Thanks
Yinghai Lu
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/