linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Song Bao Hua (Barry Song)" <song.bao.hua@hisilicon.com>
To: Finn Thain <fthain@telegraphics.com.au>,
	tanxiaofei <tanxiaofei@huawei.com>
Cc: "jejb@linux.ibm.com" <jejb@linux.ibm.com>,
	"martin.petersen@oracle.com" <martin.petersen@oracle.com>,
	"linux-scsi@vger.kernel.org" <linux-scsi@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linuxarm@openeuler.org" <linuxarm@openeuler.org>,
	"linux-m68k@vger.kernel.org" <linux-m68k@vger.kernel.org>
Subject: RE: [Linuxarm] Re: [PATCH for-next 00/32] spin lock usage optimization for SCSI drivers
Date: Mon, 22 Feb 2021 02:04:24 +0000	[thread overview]
Message-ID: <8c99b5c060eb4e5aa5b604666a8db516@hisilicon.com> (raw)
In-Reply-To: <588a87f-ae42-0b7-749e-c780ce5c3e4f@telegraphics.com.au>



> -----Original Message-----
> From: Finn Thain [mailto:fthain@telegraphics.com.au]
> Sent: Saturday, February 20, 2021 6:18 PM
> To: tanxiaofei <tanxiaofei@huawei.com>
> Cc: Song Bao Hua (Barry Song) <song.bao.hua@hisilicon.com>; 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: Re: [Linuxarm] Re: [PATCH for-next 00/32] spin lock usage optimization
> for SCSI drivers
> 
> On Thu, 18 Feb 2021, Xiaofei Tan wrote:
> 
> > On 2021/2/9 13:06, Finn Thain wrote:
> > > On Tue, 9 Feb 2021, Song Bao Hua (Barry Song) wrote:
> > >
> > > > > On Sun, 7 Feb 2021, Xiaofei Tan wrote:
> > > > >
> > > > > > Replace spin_lock_irqsave with spin_lock in hard IRQ of SCSI
> > > > > > drivers. There are no function changes, but may speed up if
> > > > > > interrupt happen too often.
> > > > >
> > > > > This change doesn't necessarily work on platforms that support
> > > > > nested interrupts.
> > > > >
> > > > > Were you able to measure any benefit from this change on some
> > > > > other platform?
> > > >
> > > > I think the code disabling irq in hardIRQ is simply wrong.
> > > > 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.
> > > >
> > >
> > > Repeating the same claim does not somehow make it true. If you put
> > > your claim to the test, you'll see that that interrupts are not
> > > disabled on m68k when interrupt handlers execute.
> > >
> > > The Interrupt Priority Level (IPL) can prevent any given irq handler
> > > from being re-entered, but an irq with a higher priority level may be
> > > handled during execution of a lower priority irq handler.
> > >
> > > 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.
> > >
> >
> > According to your discussion with Barry, it seems that m68k is a little
> > different from other architecture, and this kind of modification of this
> > patch cannot be applied to m68k. So, could help to point out which
> > driver belong to m68k architecture in this patch set of SCSI? I can
> > remove them.
> >
> 
> If you would claim that "there are no function changes" in your patches
> (as above) then the onus is on you to support that claim.
> 
> I assume that there are some platforms on which your assumptions hold.
> 
> With regard to drivers for those platforms, you might want to explain why
> your patches should be applied there, given that the existing code is
> superior for being more portable.

I don't think it has nothing to do with portability. In the case of
sonic_interrupt() you pointed out, on m68k, there is a high-priority
interrupt can preempt low-priority interrupt, they will result in
access the same critical data. M68K's spin_lock_irqsave() can disable
the high-priority interrupt and avoid the race condition of the data.
So the case should not be touched. I'd like to accept the reality
and leave sonic_interrupt() alone.

However, even on m68k, spin_lock_irqsave is not needed for other
ordinary cases.
If there is no other irq handler coming to access same critical data,
it is pointless to hold a redundant irqsave lock in irqhandler even
on m68k.

In thread contexts, we always need that if an irqhandler can preempt
those threads and access the same data. In hardirq, if there is an
high-priority which can jump out on m68k to access the critical data
which needs protection, we use the spin_lock_irqsave as you have used
in sonic_interrupt(). Otherwise, the irqsave is also redundant for
m68k.

> 
> > BTW, sonic_interrupt() is from net driver natsemi, right?  It would be
> > appreciative if only discuss SCSI drivers in this patch set. thanks.
> >
> 
> The 'net' subsystem does have some different requirements than the 'scsi'
> subsystem. But I don't see how that's relevant. Perhaps you can explain
> it. Thanks.

The difference is that if there are two co-existing interrupts which can
access the same critical data on m68k. I don't think net and scsi matter.
What really matters is the specific driver.

Thanks
Barry


  reply	other threads:[~2021-02-22  2:05 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-07 11:36 [PATCH for-next 00/32] spin lock usage optimization for SCSI drivers Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 01/32] scsi: 53c700: Replace spin_lock_irqsave with spin_lock in hard IRQ Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 02/32] scsi: ipr: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 03/32] scsi: lpfc: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 04/32] scsi: qla4xxx: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 05/32] scsi: BusLogic: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 06/32] scsi: a100u2w: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 07/32] scsi: a2091: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 08/32] scsi: a3000: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 09/32] scsi: aha1740: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 10/32] scsi: bfa: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 11/32] scsi: esp_scsi: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 12/32] scsi: gvp11: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 13/32] scsi: hptiop: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 14/32] scsi: ibmvscsi: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 15/32] scsi: initio: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 16/32] scsi: megaraid: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 17/32] scsi: mac53c94: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 18/32] scsi: mesh: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 19/32] scsi: mvumi: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 20/32] scsi: myrb: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 21/32] scsi: myrs: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 22/32] scsi: ncr53c8xx: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 23/32] scsi: nsp32: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 24/32] scsi: pmcraid: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 25/32] scsi: pcmcia: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 26/32] scsi: qlogicfas408: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 27/32] scsi: qlogicpti: " Xiaofei Tan
2021-02-07 11:36 ` [PATCH for-next 28/32] scsi: sgiwd93: " Xiaofei Tan
2021-02-07 11:37 ` [PATCH for-next 29/32] scsi: stex: " Xiaofei Tan
2021-02-07 11:37 ` [PATCH for-next 30/32] scsi: vmw_pvscsi: " Xiaofei Tan
2021-02-07 11:37 ` [PATCH for-next 31/32] scsi: wd719x: " Xiaofei Tan
2021-02-07 11:37 ` [PATCH for-next 32/32] scsi: advansys: " Xiaofei Tan
2021-02-08  7:57 ` [PATCH for-next 00/32] spin lock usage optimization for SCSI drivers Finn Thain
2021-02-09  1:48   ` [Linuxarm] " Song Bao Hua (Barry Song)
2021-02-09  5:06     ` Finn Thain
2021-02-09  5:33       ` Song Bao Hua (Barry Song)
2021-02-10  0:28         ` Finn Thain
2021-02-10  0:37           ` Song Bao Hua (Barry Song)
2021-02-10  4:14             ` Finn Thain
2021-02-09  5:46       ` Song Bao Hua (Barry Song)
2021-02-10  4:16         ` Finn Thain
2021-02-10  5:14           ` Song Bao Hua (Barry Song)
2021-02-10 21:06             ` Finn Thain
2021-02-10 21:28               ` Song Bao Hua (Barry Song)
2021-02-10 22:34                 ` Finn Thain
2021-02-10 23:49                   ` Song Bao Hua (Barry Song)
2021-02-11  1:11                     ` Finn Thain
2021-02-11  3:02                       ` Song Bao Hua (Barry Song)
2021-02-11 23:58                         ` Finn Thain
2021-02-12  0:21                           ` Song Bao Hua (Barry Song)
2021-02-18  7:12       ` Xiaofei Tan
2021-02-20  5:18         ` Finn Thain
2021-02-22  2:04           ` Song Bao Hua (Barry Song) [this message]
2021-02-23  5:25             ` Finn Thain
2021-02-23  5:47               ` Song Bao Hua (Barry Song)
2021-02-24  5:20                 ` Finn Thain
2021-02-24 10:50                   ` Song Bao Hua (Barry Song)
2021-02-25  7:07                     ` Finn Thain
2021-02-09  2:00   ` tanxiaofei
2021-02-09  5:11     ` Finn Thain
2021-02-24  9:41 ` Geert Uytterhoeven
2021-02-25  2:37   ` [Linuxarm] " Xiaofei Tan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=8c99b5c060eb4e5aa5b604666a8db516@hisilicon.com \
    --to=song.bao.hua@hisilicon.com \
    --cc=fthain@telegraphics.com.au \
    --cc=jejb@linux.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-m68k@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=linuxarm@openeuler.org \
    --cc=martin.petersen@oracle.com \
    --cc=tanxiaofei@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).