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
next prev 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: linkBe 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.