All of lore.kernel.org
 help / color / mirror / Atom feed
From: Frank Lee <frank@allwinnertech.com>
To: tiny.windzz@gmail.com
Cc: linux-gpio@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org,
	Yangtao Li <frank@allwinnertech.com>,
	stable@vger.kernel.org, Linus Walleij <linus.walleij@linaro.org>,
	Maxime Ripard <mripard@kernel.org>, Chen-Yu Tsai <wens@csie.org>
Subject: [RESEND PATCH 03/19] pinctrl: sunxi: Always call chained_irq_{enter, exit} in sunxi_pinctrl_irq_handler
Date: Tue, 10 Nov 2020 14:24:40 +0800	[thread overview]
Message-ID: <85263ce8b058e80cea25c6ad6383eb256ce96cc8.1604988979.git.frank@allwinnertech.com> (raw)
In-Reply-To: <cover.1604988979.git.frank@allwinnertech.com>

From: Yangtao Li <frank@allwinnertech.com>

It is found on many allwinner soc that there is a low probability that
the interrupt status cannot be read in sunxi_pinctrl_irq_handler. This
will cause the interrupt status of a gpio bank to always be active on
gic, preventing gic from responding to other spi interrupts correctly.

So we should call the chained_irq_* each time enter sunxi_pinctrl_irq_handler().

Cc: stable@vger.kernel.org
Signed-off-by: Yangtao Li <frank@allwinnertech.com>
---
 drivers/pinctrl/sunxi/pinctrl-sunxi.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/pinctrl/sunxi/pinctrl-sunxi.c b/drivers/pinctrl/sunxi/pinctrl-sunxi.c
index 9d8b59dafa4b..dc8d39ae045b 100644
--- a/drivers/pinctrl/sunxi/pinctrl-sunxi.c
+++ b/drivers/pinctrl/sunxi/pinctrl-sunxi.c
@@ -1141,20 +1141,22 @@ static void sunxi_pinctrl_irq_handler(struct irq_desc *desc)
 
 	WARN_ON(bank == pctl->desc->irq_banks);
 
+	chained_irq_enter(chip, desc);
+
 	reg = sunxi_irq_status_reg_from_bank(pctl->desc, bank);
 	val = readl(pctl->membase + reg);
 
 	if (val) {
 		int irqoffset;
 
-		chained_irq_enter(chip, desc);
 		for_each_set_bit(irqoffset, &val, IRQ_PER_BANK) {
 			int pin_irq = irq_find_mapping(pctl->domain,
 						       bank * IRQ_PER_BANK + irqoffset);
 			generic_handle_irq(pin_irq);
 		}
-		chained_irq_exit(chip, desc);
 	}
+
+	chained_irq_exit(chip, desc);
 }
 
 static int sunxi_pinctrl_add_function(struct sunxi_pinctrl *pctl,
-- 
2.28.0


WARNING: multiple messages have this Message-ID (diff)
From: Frank Lee <frank@allwinnertech.com>
To: tiny.windzz@gmail.com
Cc: Linus Walleij <linus.walleij@linaro.org>,
	linux-kernel@vger.kernel.org, stable@vger.kernel.org,
	linux-gpio@vger.kernel.org, Chen-Yu Tsai <wens@csie.org>,
	Maxime Ripard <mripard@kernel.org>,
	Yangtao Li <frank@allwinnertech.com>,
	linux-arm-kernel@lists.infradead.org
Subject: [RESEND PATCH 03/19] pinctrl: sunxi: Always call chained_irq_{enter, exit} in sunxi_pinctrl_irq_handler
Date: Tue, 10 Nov 2020 14:24:40 +0800	[thread overview]
Message-ID: <85263ce8b058e80cea25c6ad6383eb256ce96cc8.1604988979.git.frank@allwinnertech.com> (raw)
In-Reply-To: <cover.1604988979.git.frank@allwinnertech.com>

From: Yangtao Li <frank@allwinnertech.com>

It is found on many allwinner soc that there is a low probability that
the interrupt status cannot be read in sunxi_pinctrl_irq_handler. This
will cause the interrupt status of a gpio bank to always be active on
gic, preventing gic from responding to other spi interrupts correctly.

So we should call the chained_irq_* each time enter sunxi_pinctrl_irq_handler().

Cc: stable@vger.kernel.org
Signed-off-by: Yangtao Li <frank@allwinnertech.com>
---
 drivers/pinctrl/sunxi/pinctrl-sunxi.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/pinctrl/sunxi/pinctrl-sunxi.c b/drivers/pinctrl/sunxi/pinctrl-sunxi.c
index 9d8b59dafa4b..dc8d39ae045b 100644
--- a/drivers/pinctrl/sunxi/pinctrl-sunxi.c
+++ b/drivers/pinctrl/sunxi/pinctrl-sunxi.c
@@ -1141,20 +1141,22 @@ static void sunxi_pinctrl_irq_handler(struct irq_desc *desc)
 
 	WARN_ON(bank == pctl->desc->irq_banks);
 
+	chained_irq_enter(chip, desc);
+
 	reg = sunxi_irq_status_reg_from_bank(pctl->desc, bank);
 	val = readl(pctl->membase + reg);
 
 	if (val) {
 		int irqoffset;
 
-		chained_irq_enter(chip, desc);
 		for_each_set_bit(irqoffset, &val, IRQ_PER_BANK) {
 			int pin_irq = irq_find_mapping(pctl->domain,
 						       bank * IRQ_PER_BANK + irqoffset);
 			generic_handle_irq(pin_irq);
 		}
-		chained_irq_exit(chip, desc);
 	}
+
+	chained_irq_exit(chip, desc);
 }
 
 static int sunxi_pinctrl_add_function(struct sunxi_pinctrl *pctl,
-- 
2.28.0


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  parent reply	other threads:[~2020-11-10  6:24 UTC|newest]

Thread overview: 84+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-10  6:20 [RESEND PATCH 00/19] Second step support for A100 Frank Lee
2020-11-10  6:20 ` Frank Lee
2020-11-10  6:22 ` [RESEND PATCH 01/19] pinctrl: sunxi: fix irq bank map for the Allwinner A100 pin controller Frank Lee
2020-11-10  6:22   ` Frank Lee
2020-11-24  8:40   ` Linus Walleij
2020-11-24  8:40     ` Linus Walleij
2020-11-10  6:23 ` [RESEND PATCH 02/19] pinctrl: sunxi: Mark the irq bank not found in sunxi_pinctrl_irq_handler() with WARN_ON Frank Lee
2020-11-10  6:23   ` Frank Lee
2020-11-24  8:41   ` Linus Walleij
2020-11-24  8:41     ` Linus Walleij
2020-11-10  6:24 ` Frank Lee [this message]
2020-11-10  6:24   ` [RESEND PATCH 03/19] pinctrl: sunxi: Always call chained_irq_{enter, exit} in sunxi_pinctrl_irq_handler Frank Lee
2020-11-24  8:41   ` Linus Walleij
2020-11-24  8:41     ` Linus Walleij
2020-11-10  6:26 ` [RESEND PATCH 04/19] dt-bindings: dma: allwinner,sun50i-a64-dma: Add A100 compatible Frank Lee
2020-11-10  6:26   ` [RESEND PATCH 04/19] dt-bindings: dma: allwinner, sun50i-a64-dma: " Frank Lee
2020-11-11 22:46   ` [RESEND PATCH 04/19] dt-bindings: dma: allwinner,sun50i-a64-dma: " Rob Herring
2020-11-11 22:46     ` [RESEND PATCH 04/19] dt-bindings: dma: allwinner, sun50i-a64-dma: " Rob Herring
2020-11-18 11:01   ` [RESEND PATCH 04/19] dt-bindings: dma: allwinner,sun50i-a64-dma: " Vinod Koul
2020-11-18 11:01     ` [RESEND PATCH 04/19] dt-bindings: dma: allwinner, sun50i-a64-dma: " Vinod Koul
2020-11-10  6:28 ` [RESEND PATCH 05/19] dmaengine: sun6i: Add support for A100 DMA Frank Lee
2020-11-10  6:28   ` Frank Lee
2020-11-18 10:59   ` Vinod Koul
2020-11-18 10:59     ` Vinod Koul
2020-11-28 20:31   ` André Przywara
2020-11-28 20:31     ` André Przywara
2020-11-10  6:29 ` [RESEND PATCH 06/19] arm64: allwinner: a100: Add device node for DMA controller Frank Lee
2020-11-10  6:29   ` Frank Lee
2020-11-28 20:34   ` André Przywara
2020-11-28 20:34     ` André Przywara
2020-11-10  6:31 ` [RESEND PATCH 07/19] arm64: dts: allwinner: A100: Add PMU mode Frank Lee
2020-11-10  6:31   ` Frank Lee
2020-11-28 20:47   ` André Przywara
2020-11-28 20:47     ` André Przywara
2020-11-10  6:32 ` [RESEND PATCH 08/19] phy: sun4i-usb: remove enable_pmu_unk1 from sun50i_h6_cfg Frank Lee
2020-11-10  6:32   ` Frank Lee
2020-11-19  6:19   ` Vinod Koul
2020-11-19  6:19     ` Vinod Koul
2020-11-10  6:35 ` [RESEND PATCH 09/19] phy: allwinner: Convert to devm_platform_ioremap_* API Frank Lee
2020-11-10  6:35   ` Frank Lee
2020-11-19  6:20   ` Vinod Koul
2020-11-19  6:20     ` Vinod Koul
2020-11-10  6:36 ` [RESEND PATCH 10/19] dt-bindings: watchdog: sun4i: Add A100 compatible Frank Lee
2020-11-10  6:36   ` Frank Lee
2020-11-11 22:46   ` Rob Herring
2020-11-11 22:46     ` Rob Herring
2020-11-10  6:38 ` [RESEND PATCH 11/19] arm64: dts: allwinner: a100: add watchdog node Frank Lee
2020-11-10  6:38   ` Frank Lee
2020-11-28 20:20   ` André Przywara
2020-11-28 20:20     ` André Przywara
2020-11-10  6:39 ` [RESEND PATCH 12/19] dt-bindings: Add bindings for USB phy on Allwinner A100 Frank Lee
2020-11-10  6:39   ` Frank Lee
2020-11-11 22:50   ` Rob Herring
2020-11-11 22:50     ` Rob Herring
2020-11-28 20:18     ` André Przywara
2020-11-28 20:18       ` André Przywara
2020-12-01 18:44       ` Maxime Ripard
2020-12-01 18:44         ` Maxime Ripard
2020-11-10  6:40 ` [RESEND PATCH 13/19] phy: sun4i-usb: add support for A100 USB PHY Frank Lee
2020-11-10  6:40   ` Frank Lee
2020-11-28 19:39   ` André Przywara
2020-11-28 19:39     ` André Przywara
2020-12-07  1:18   ` André Przywara
2020-12-07  1:18     ` André Przywara
2020-11-10  6:41 ` [RESEND PATCH 14/19] arm64: dts: allwinner: a100: add usb related nodes Frank Lee
2020-11-10  6:41   ` Frank Lee
2020-11-10  6:43 ` [RESEND PATCH 15/19] arm64: allwinner: A100: enable EHCI, OHCI and USB PHY nodes in Perf1 Frank Lee
2020-11-10  6:43   ` Frank Lee
2020-11-10  6:45 ` [RESEND PATCH 16/19] dt-bindings: mmc: sunxi: Add A100 compatibles Frank Lee
2020-11-10  6:45   ` Frank Lee
2020-11-11 22:51   ` Rob Herring
2020-11-11 22:51     ` Rob Herring
2020-11-10  6:46 ` [RESEND PATCH 17/19] mmc: sunxi: add support for A100 mmc controller Frank Lee
2020-11-10  6:46   ` Frank Lee
2020-11-28 19:56   ` André Przywara
2020-11-28 19:56     ` André Przywara
2020-11-29  1:38     ` André Przywara
2020-11-29  1:38       ` André Przywara
2020-11-10  6:48 ` [RESEND PATCH 18/19] arm64: allwinner: a100: Add MMC related nodes Frank Lee
2020-11-10  6:48   ` Frank Lee
2020-11-28 20:07   ` André Przywara
2020-11-28 20:07     ` André Przywara
2020-11-10  6:49 ` [RESEND PATCH 19/19] arm64: dts: allwinner: a100: perf1: Add eMMC and MMC node Frank Lee
2020-11-10  6:49   ` Frank Lee

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=85263ce8b058e80cea25c6ad6383eb256ce96cc8.1604988979.git.frank@allwinnertech.com \
    --to=frank@allwinnertech.com \
    --cc=linus.walleij@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mripard@kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=tiny.windzz@gmail.com \
    --cc=wens@csie.org \
    /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.