[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <33834852-af8f-451d-9a39-8787330c2694@google.com>
Date: Tue, 8 Jul 2025 09:43:06 +0800
From: Liangyan <liangyan.peng@...edance.com>
To: Thomas Gleixner <tglx@...utronix.de>
Cc: linux-kernel@...r.kernel.org, Yicong Shen
<shenyicong.1023@...edance.com>, ziqianlu@...edance.com,
songmuchun@...edance.com, yuanzhu@...edance.com
Subject: Re: [External] Re: [RFC] genirq: Fix lockup in handle_edge_irq
On 2025/7/4 22:42, Thomas Gleixner wrote:
>
> So playing games with the unmask is not really feasible. But let's take
> a step back and look at the actual problem.
>
> It only happens when the interrupt affinity is moved or the interrupt
> has multiple target CPUs enabled in the effective affinity mask. x86 and
> arm64 enforce the effective affinity to be a single CPU, so on those
> architectures the problem only arises when the interrupt affinity
> changes.
>
> Now we can use that fact and check whether the CPU, which observes
> INPROGRESS, is the target CPU in the effective affinity mask. If so,
> then the obvious cure is to busy poll the INPROGRESS flag instead of
> doing the mask()/PENDING/unmask() dance.
>
> Something like the uncompiled and therefore untested patch below should
> do the trick. If you find bugs in it, you can keep and fix them :)
>
Hello Thomas,
After over a day of testing the patch, the softlockup issue has not
recurred. This confirms that your patch should fix the problem. Thanks.
Would you consider upstreaming this patch?
Regards,
Liangyan
Powered by blists - more mailing lists