RE: [Linuxarm] Re: [PATCH for-next 00/32] spin lock usage optimization for SCSI drivers
From: Song Bao Hua (Barry Song) <hidden>
Date: 2021-02-10 05:15:08
Also in:
linux-m68k, lkml
-----Original Message----- From: Finn Thain [mailto:fthain@telegraphics.com.au] Sent: Wednesday, February 10, 2021 5:16 PM To: Song Bao Hua (Barry Song) <redacted> Cc: tanxiaofei <redacted>; jejb@linux.ibm.com; martin.petersen@oracle.com; linux-scsi@vger.kernel.org; linux-kernel@vger.kernel.org; linuxarm@openeuler.org; linux-m68k@vger.kernel.org Subject: [Linuxarm] Re: [PATCH for-next 00/32] spin lock usage optimization for SCSI drivers On Tue, 9 Feb 2021, Song Bao Hua (Barry Song) wrote:quoted
quoted
quoted
sonic_interrupt() uses an irq lock within an interrupt handler to avoid issues relating to this. This kind of locking may be needed in the drivers you are trying to patch. Or it might not. Apparently, no-one has looked.Is the comment in sonic_interrupt() outdated according to this: m68k: irq: Remove IRQF_DISABLEDhttps://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/ ?id=77a4279The removal of IRQF_DISABLED isn't relevant to this driver. Commit 77a42796786c ("m68k: Remove deprecated IRQF_DISABLED") did not disable interrupts, it just removed some code to enable them. The code and comments in sonic_interrupt() are correct. You can confirm this for yourself quite easily using QEMU and a cross-compiler.quoted
and this: genirq: Warn when handler enables interruptshttps://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/ ?id=b738a50aquoted
wouldn't genirq report a warning on m68k?There is no warning from m68k builds. That's because arch_irqs_disabled() returns true when the IPL is non-zero.
So for m68k, the case is arch_irqs_disabled() is true, but interrupts can still come? Then it seems it is very confusing. If prioritized interrupts can still come while arch_irqs_disabled() is true, how could spin_lock_irqsave() block the prioritized interrupts? Isn't arch_irqs_disabled() a status reflection of irq disable API? Thanks Barry