Re: [regression] suspend stress test stalls within 30 minutes

From: Kalle Valo
Date: Fri May 17 2024 - 13:20:13 EST


Pawan Gupta <pawan.kumar.gupta@xxxxxxxxxxxxxxx> writes:

> On Tue, May 14, 2024 at 09:10:07AM -0700, Dave Hansen wrote:
>
>> On 5/14/24 06:17, Kalle Valo wrote:
>> > The kernel we use in our ath11k testing has almost all kernel debug
>> > features enabled so I decided disable all of them, which unsurprisingly
>> > also fixed my suspend problems. So maybe this is something which happens
>> > only when MITIGATION_IBRS_ENTRY and some debug option from 'Kernel
>> > hacking' are both enabled?
>>
>> I had my money on DEBUG_ENTRY, but it doesn't look like you ever had it
>> enabled.
>>
>> I've got basically two theories:
>>
>> One, the IBRS value is getting mucked up somewhere, either that %r15
>> value is getting stepped on or the per-cpu value is corrupt and the
>> WRMSR #GP's, causing the hang.
>>
>> Two, IBRS_{ENTER,EXIT} is called in a "wrong" context somewhere. Either
>> it is clobbering something it shouldn't or it is assuming something is
>> in place that is not (like a valid stack).
>>
>> But the whole "'sudo shutdown -h now' then suspend somehow immediately
>> unstalls" thing is really perplexing. I hope Pawan has some ideas.
>
> Nothing promising yet. I now have the system with the same model, but the
> system is only booting in recovery mode with the config attached with the
> report.
>
> Kalle, I wanted to try reverting the below commits:
>
> aa1567a7e644 ("intel_idle: Add ibrs_off module parameter to force-disable IBRS")
> 1e4d3001f59f ("x86/entry: Harden return-to-user")
> c516213726fb ("x86/entry: Optimize common_interrupt_return()")
>
> ... but I haven't reproduced the issue yet.

I can try to revert those but didn't manage to do it yet.

> FYI, cmdline "spectre_v2=off" should have the same effect as
> CONFIG_IBRS_ENTRY=n.

Confirmed, I don't see the bug with "spectre_v2=off" and the box
suspended succesfully 400 times.

> Other interesting thing to try is cmdline "dis_ucode_ldr".

This didn't help. I tried twice, the first time it failed after 11
suspend loops and the second time after 34 loops.

--
https://patchwork.kernel.org/project/linux-wireless/list/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches