Thread (15 messages) read the whole thread 15 messages, 5 authors, 2021-02-11

Re: [Linuxarm] [PATCH for next v1 0/2] gpio: few clean up patches to replace spin_lock_irqsave with spin_lock

From: Andy Shevchenko <hidden>
Date: 2021-02-09 09:44:32
Also in: lkml

On Tue, Feb 9, 2021 at 11:24 AM luojiaxing [off-list ref] wrote:
On 2021/2/8 21:28, Andy Shevchenko wrote:
quoted
On Mon, Feb 8, 2021 at 11:11 AM luojiaxing [off-list ref] wrote:
quoted
Sorry, my operation error causes a patch missing from this patch set. I
re-send the patch set. Please check the new one.
What is the new one?! You have to give proper versioning and change
log for your series.
sure, I will send a new one later, but let me answer your question first.
quoted
quoted
On 2021/2/8 16:56, Luo Jiaxing wrote:
quoted
There is no need to use API with _irqsave in hard IRQ handler, So replace
those with spin_lock.
How do you know that another CPU in the system can't serve the
The keyword here is: *another*.
quoted
following interrupt from the hardware at the same time?
Yes, I have some question before.

There are some similar discussion here,  please take a look, Song baohua
explained it more professionally.

https://lore.kernel.org/lkml/e949a474a9284ac6951813bfc8b34945@hisilicon.com/ (local)

Here are some excerpts from the discussion:

I think the code disabling irq in hardIRQ is simply wrong.
Why?
Since this commit
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e58aa3d2d0cc
genirq: Run irq handlers with interrupts disabled

interrupt handlers are definitely running in a irq-disabled context
unless irq handlers enable them explicitly in the handler to permit
other interrupts.
This doesn't explain any changes in the behaviour on SMP.
IRQ line can be disabled on a few stages:
 a) on the source (IP that generates an event)
 b) on IRQ router / controller
 c) on CPU side

The commit above is discussing (rightfully!) the problem when all
interrupts are being served by a *single* core. Nobody prevents them
from being served by *different* cores simultaneously. Also, see [1].

[1]: https://www.kernel.org/doc/htmldocs/kernel-locking/cheatsheet.html

-- 
With Best Regards,
Andy Shevchenko
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help