Subject: Re: [linux-next][s390] Boot hang after merge c50f05bd3c4e (sched/hrtick)

From: Mikhail Zaslonko <[email-masked]>
Date: Thu, 5 Mar 2026 18:24:48 +0100

On 05-Mar-26 16:02, Heiko Carstens wrote:
> On Thu, Mar 05, 2026 at 02:07:25PM +0100, Peter Zijlstra wrote:
>>>> Moving that before irq_enter_rcu() means it doesn't see HARDIRQ_OFFSET
>>>> in preempt_count(). As such, it might actually call into schedule() from
>>>> hardirq context.
>>>>
>>>> Or am I missing something?
>>>
>>> N/m, it turns into __this_cpu_add() and that doesn't have
>>> preempt_enable().
>>>
>>> 00d8b035eb71 ("s390/idle: Slightly optimize idle time accounting")
>>>
>>> Is actually a correctness fix afaict.
> 
> Yes. Those dependencies become quite subtle when calling early into C code.
> 
>> Another change is that you clear I and E in the PSW bit before
>> irq_enter_rcu(), which, per:
>>
>>   7e641e52cf5f ("softirq: Prepare for deferred hrtimer rearming")
>>
>> can re-arm the timer.
>>
>> So where previously it would re-arm and still have the I/E bits set, so
>> the timer could fire, they are now disabled.
>>
>> I really don't know if this is a problem; I'm clutching at s390 straws
>> here that I really don't know much about.
> 
> That's the old PSW where the interrupt happened, not the one with which the
> CPU is running with, and shouldn't have any effect.
> 
> ...but reverting that commit actually does fix it for me. 

For me it doesn't. But reverting this one helps:
15dd3a948855 ("hrtimer: Push reprogramming timers into the interrupt return path")