From: "Kiwoong Kim" <kwmad.kim@samsung.com>
To: "'Bart Van Assche'" <bvanassche@acm.org>,
<linux-scsi@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
<alim.akhtar@samsung.com>, <avri.altman@wdc.com>,
<jejb@linux.ibm.com>, <martin.petersen@oracle.com>,
<beanhuo@micron.com>, <cang@codeaurora.org>,
<adrian.hunter@intel.com>, <sc.suh@samsung.com>,
<hy50.seo@samsung.com>, <sh425.lee@samsung.com>,
<bhoon95.kim@samsung.com>
Subject: RE: [RFC PATCH v1 1/2] scsi: ufs: introduce vendor isr
Date: Mon, 9 Aug 2021 16:33:04 +0900 [thread overview]
Message-ID: <000501d78cf0$ca3157b0$5e940710$@samsung.com> (raw)
In-Reply-To: <9ed9f56c-d7a4-8e68-0968-da0eccb0b38d@acm.org>
> On 8/5/21 11:34 PM, Kiwoong Kim wrote:
> > This patch is to activate some interrupt sources that aren't defined
> > in UFSHCI specifications. Those purpose could be error handling,
> > workaround or whatever.
> >
> > Signed-off-by: Kiwoong Kim <kwmad.kim@samsung.com>
> > ---
> > drivers/scsi/ufs/ufshcd.c | 10 ++++++++++
> > drivers/scsi/ufs/ufshcd.h | 8 ++++++++
> > 2 files changed, 18 insertions(+)
> >
> > diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
> > index 05495c34a2b7..f85a9b335e0b 100644
> > --- a/drivers/scsi/ufs/ufshcd.c
> > +++ b/drivers/scsi/ufs/ufshcd.c
> > @@ -6428,6 +6428,16 @@ static irqreturn_t ufshcd_tmc_handler(struct
> ufs_hba *hba)
> > static irqreturn_t ufshcd_sl_intr(struct ufs_hba *hba, u32 intr_status)
> > {
> > irqreturn_t retval = IRQ_NONE;
> > + int res = 0;
> > + unsigned long flags;
> > +
> > + retval = ufshcd_vops_intr(hba, &res);
> > + if (res) {
> > + spin_lock_irqsave(hba->host->host_lock, flags);
> > + hba->force_reset = true;
> > + ufshcd_schedule_eh_work(hba);
> > + spin_unlock_irqrestore(hba->host->host_lock, flags);
> > + }
>
> How can a non-standard extension have error handling code in common code?
> Please move the code under if (res) into the vendor code.
Got it.
>
> > if (intr_status & UFSHCD_UIC_MASK)
> > retval |= ufshcd_uic_cmd_compl(hba, intr_status); diff --git
> > a/drivers/scsi/ufs/ufshcd.h b/drivers/scsi/ufs/ufshcd.h index
> > 971cfabc4a1e..1ed0a911f864 100644
> > --- a/drivers/scsi/ufs/ufshcd.h
> > +++ b/drivers/scsi/ufs/ufshcd.h
> > @@ -356,6 +356,7 @@ struct ufs_hba_variant_ops {
> > const union ufs_crypto_cfg_entry *cfg, int slot);
> > void (*event_notify)(struct ufs_hba *hba,
> > enum ufs_event_type evt, void *data);
> > + irqreturn_t (*intr)(struct ufs_hba *hba, int *res);
> > };
> >
> > /* clock gating state */
> > @@ -1296,6 +1297,13 @@ static inline void
> ufshcd_vops_config_scaling_param(struct ufs_hba *hba,
> > hba->vops->config_scaling_param(hba, profile, data);
> > }
> >
> > +static inline irqreturn_t ufshcd_vops_intr(struct ufs_hba *hba, int
> > +*res) {
> > + if (hba->vops && hba->vops->intr)
> > + return hba->vops->intr(hba, res);
> > + return IRQ_NONE;
> > +}
> > +
> > extern struct ufs_pm_lvl_states ufs_pm_lvl_states[];
>
> So this code adds an indirect function call in the interrupt handler?
> This will have a negative impact on performance, especially on a kernel
> with security mitigations enabled. See also
> https://protect2.fireeye.com/v1/url?k=fe14d1e9-a18fe89c-fe155aa6-
> 0cc47a31ce4e-8200591154f8c42c&q=1&e=7cf22799-390c-4209-8a19-
> 6ad1fa5fa811&u=https%3A%2F%2Flwn.net%2FArticles%2F774743%2F.
Interesting. I'll refer to this. Thanks.
>
> Thanks,
>
> Bart.
next prev parent reply other threads:[~2021-08-09 7:33 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20210806064923epcas2p13dd6b442eed02404d87684afd9c1b229@epcas2p1.samsung.com>
2021-08-06 6:34 ` [RFC PATCH v1 0/2] scsi: ufs: introduce vendor isr Kiwoong Kim
2021-08-06 6:34 ` [RFC PATCH v1 1/2] " Kiwoong Kim
2021-08-06 16:18 ` Bart Van Assche
2021-08-09 7:33 ` Kiwoong Kim [this message]
2021-08-06 6:34 ` [RFC PATCH v1 2/2] scsi: ufs: ufs-exynos: implement exynos isr Kiwoong Kim
2021-08-06 16:37 ` Bart Van Assche
2021-08-09 7:31 ` Kiwoong Kim
2021-08-06 16:14 ` [RFC PATCH v1 0/2] scsi: ufs: introduce vendor isr Bart Van Assche
2021-08-08 5:56 ` Avri Altman
2021-08-09 7:46 ` Kiwoong Kim
2021-08-09 16:08 ` Bart Van Assche
2021-08-13 5:31 ` Kiwoong Kim
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='000501d78cf0$ca3157b0$5e940710$@samsung.com' \
--to=kwmad.kim@samsung.com \
--cc=adrian.hunter@intel.com \
--cc=alim.akhtar@samsung.com \
--cc=avri.altman@wdc.com \
--cc=beanhuo@micron.com \
--cc=bhoon95.kim@samsung.com \
--cc=bvanassche@acm.org \
--cc=cang@codeaurora.org \
--cc=hy50.seo@samsung.com \
--cc=jejb@linux.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=martin.petersen@oracle.com \
--cc=sc.suh@samsung.com \
--cc=sh425.lee@samsung.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.