public inbox for stable@vger.kernel.org
 help / color / mirror / Atom feed
* FAILED: patch "[PATCH] pinctrl: qcom: Properly clear "intr_ack_high" interrupts when" failed to apply to 5.4-stable tree
@ 2021-01-25 14:41 gregkh
  2021-01-25 16:26 ` Doug Anderson
  0 siblings, 1 reply; 3+ messages in thread
From: gregkh @ 2021-01-25 14:41 UTC (permalink / raw)
  To: dianders, bjorn.andersson, linus.walleij, mkshah, swboyd; +Cc: stable


The patch below does not apply to the 5.4-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable@vger.kernel.org>.

thanks,

greg k-h

------------------ original commit in Linus's tree ------------------

From a95881d6aa2c000e3649f27a1a7329cf356e6bb3 Mon Sep 17 00:00:00 2001
From: Douglas Anderson <dianders@chromium.org>
Date: Thu, 14 Jan 2021 19:16:23 -0800
Subject: [PATCH] pinctrl: qcom: Properly clear "intr_ack_high" interrupts when
 unmasking

In commit 4b7618fdc7e6 ("pinctrl: qcom: Add irq_enable callback for
msm gpio") we tried to Ack interrupts during unmask.  However, that
patch forgot to check "intr_ack_high" so, presumably, it only worked
for a certain subset of SoCs.

Let's add a small accessor so we don't need to open-code the logic in
both places.

This was found by code inspection.  I don't have any access to the
hardware in question nor software that needs the Ack during unmask.

Fixes: 4b7618fdc7e6 ("pinctrl: qcom: Add irq_enable callback for msm gpio")
Signed-off-by: Douglas Anderson <dianders@chromium.org>
Reviewed-by: Maulik Shah <mkshah@codeaurora.org>
Tested-by: Maulik Shah <mkshah@codeaurora.org>
Reviewed-by: Stephen Boyd <swboyd@chromium.org>
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Link: https://lore.kernel.org/r/20210114191601.v7.3.I32d0f4e174d45363b49ab611a13c3da8f1e87d0f@changeid
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>

diff --git a/drivers/pinctrl/qcom/pinctrl-msm.c b/drivers/pinctrl/qcom/pinctrl-msm.c
index 2f363c28d9d9..192ed31eabf4 100644
--- a/drivers/pinctrl/qcom/pinctrl-msm.c
+++ b/drivers/pinctrl/qcom/pinctrl-msm.c
@@ -96,6 +96,14 @@ MSM_ACCESSOR(intr_cfg)
 MSM_ACCESSOR(intr_status)
 MSM_ACCESSOR(intr_target)
 
+static void msm_ack_intr_status(struct msm_pinctrl *pctrl,
+				const struct msm_pingroup *g)
+{
+	u32 val = g->intr_ack_high ? BIT(g->intr_status_bit) : 0;
+
+	msm_writel_intr_status(val, pctrl, g);
+}
+
 static int msm_get_groups_count(struct pinctrl_dev *pctldev)
 {
 	struct msm_pinctrl *pctrl = pinctrl_dev_get_drvdata(pctldev);
@@ -797,7 +805,7 @@ static void msm_gpio_irq_clear_unmask(struct irq_data *d, bool status_clear)
 	 * when the interrupt is not in use.
 	 */
 	if (status_clear)
-		msm_writel_intr_status(0, pctrl, g);
+		msm_ack_intr_status(pctrl, g);
 
 	val = msm_readl_intr_cfg(pctrl, g);
 	val |= BIT(g->intr_raw_status_bit);
@@ -890,7 +898,6 @@ static void msm_gpio_irq_ack(struct irq_data *d)
 	struct msm_pinctrl *pctrl = gpiochip_get_data(gc);
 	const struct msm_pingroup *g;
 	unsigned long flags;
-	u32 val;
 
 	if (test_bit(d->hwirq, pctrl->skip_wake_irqs)) {
 		if (test_bit(d->hwirq, pctrl->dual_edge_irqs))
@@ -902,8 +909,7 @@ static void msm_gpio_irq_ack(struct irq_data *d)
 
 	raw_spin_lock_irqsave(&pctrl->lock, flags);
 
-	val = g->intr_ack_high ? BIT(g->intr_status_bit) : 0;
-	msm_writel_intr_status(val, pctrl, g);
+	msm_ack_intr_status(pctrl, g);
 
 	if (test_bit(d->hwirq, pctrl->dual_edge_irqs))
 		msm_gpio_update_dual_edge_pos(pctrl, g, d);


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: FAILED: patch "[PATCH] pinctrl: qcom: Properly clear "intr_ack_high" interrupts when" failed to apply to 5.4-stable tree
  2021-01-25 14:41 FAILED: patch "[PATCH] pinctrl: qcom: Properly clear "intr_ack_high" interrupts when" failed to apply to 5.4-stable tree gregkh
@ 2021-01-25 16:26 ` Doug Anderson
  2021-01-25 16:37   ` Greg Kroah-Hartman
  0 siblings, 1 reply; 3+ messages in thread
From: Doug Anderson @ 2021-01-25 16:26 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: Bjorn Andersson, LinusW, Maulik Shah, Stephen Boyd, # 4.0+

Hi,

On Mon, Jan 25, 2021 at 6:41 AM <gregkh@linuxfoundation.org> wrote:
>
>
> The patch below does not apply to the 5.4-stable tree.
> If someone wants it applied there, or to any other stable or longterm
> tree, then please email the backport, including the original git commit
> id to <stable@vger.kernel.org>.
>
> thanks,
>
> greg k-h
>
> ------------------ original commit in Linus's tree ------------------
>
> From a95881d6aa2c000e3649f27a1a7329cf356e6bb3 Mon Sep 17 00:00:00 2001
> From: Douglas Anderson <dianders@chromium.org>
> Date: Thu, 14 Jan 2021 19:16:23 -0800
> Subject: [PATCH] pinctrl: qcom: Properly clear "intr_ack_high" interrupts when
>  unmasking

I think for 5.4 the most expedient thing is to take these two:

a95881d6aa2c pinctrl: qcom: Properly clear "intr_ack_high" interrupts
when unmasking
4079d35fa4fc pinctrl: qcom: No need to read-modify-write the interrupt status

Then it should apply cleanly and you'll get this one fix.

After fixing, you might hit the next failure when trying to apply
("pinctrl: qcom: Don't clear pending interrupts when enabling").  That
one might be slightly harder to backport since it interacts with the
PDC patches.  Presumably anyone running a real system on 5.4 also has
the PDC patches backported so they can get wakeup, but getting all the
PDC support in 5.4 stable would probably be too much of a "feature"
for linux-stable?  In any case, my default answer for that I'd be
happy to help review a backport if someone saw a benefit but I won't
attempt it myself.

-Doug

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: FAILED: patch "[PATCH] pinctrl: qcom: Properly clear "intr_ack_high" interrupts when" failed to apply to 5.4-stable tree
  2021-01-25 16:26 ` Doug Anderson
@ 2021-01-25 16:37   ` Greg Kroah-Hartman
  0 siblings, 0 replies; 3+ messages in thread
From: Greg Kroah-Hartman @ 2021-01-25 16:37 UTC (permalink / raw)
  To: Doug Anderson; +Cc: Bjorn Andersson, LinusW, Maulik Shah, Stephen Boyd, # 4.0+

On Mon, Jan 25, 2021 at 08:26:55AM -0800, Doug Anderson wrote:
> Hi,
> 
> On Mon, Jan 25, 2021 at 6:41 AM <gregkh@linuxfoundation.org> wrote:
> >
> >
> > The patch below does not apply to the 5.4-stable tree.
> > If someone wants it applied there, or to any other stable or longterm
> > tree, then please email the backport, including the original git commit
> > id to <stable@vger.kernel.org>.
> >
> > thanks,
> >
> > greg k-h
> >
> > ------------------ original commit in Linus's tree ------------------
> >
> > From a95881d6aa2c000e3649f27a1a7329cf356e6bb3 Mon Sep 17 00:00:00 2001
> > From: Douglas Anderson <dianders@chromium.org>
> > Date: Thu, 14 Jan 2021 19:16:23 -0800
> > Subject: [PATCH] pinctrl: qcom: Properly clear "intr_ack_high" interrupts when
> >  unmasking
> 
> I think for 5.4 the most expedient thing is to take these two:
> 
> a95881d6aa2c pinctrl: qcom: Properly clear "intr_ack_high" interrupts
> when unmasking
> 4079d35fa4fc pinctrl: qcom: No need to read-modify-write the interrupt status
> 
> Then it should apply cleanly and you'll get this one fix.
> 
> After fixing, you might hit the next failure when trying to apply
> ("pinctrl: qcom: Don't clear pending interrupts when enabling").  That
> one might be slightly harder to backport since it interacts with the
> PDC patches.  Presumably anyone running a real system on 5.4 also has
> the PDC patches backported so they can get wakeup, but getting all the
> PDC support in 5.4 stable would probably be too much of a "feature"
> for linux-stable?  In any case, my default answer for that I'd be
> happy to help review a backport if someone saw a benefit but I won't
> attempt it myself.

Ok, I'll just not worry about these for 5.4.y for now, thanks!

greg k-h

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2021-01-25 16:40 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-01-25 14:41 FAILED: patch "[PATCH] pinctrl: qcom: Properly clear "intr_ack_high" interrupts when" failed to apply to 5.4-stable tree gregkh
2021-01-25 16:26 ` Doug Anderson
2021-01-25 16:37   ` Greg Kroah-Hartman

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox