[PATCH] ARM: OMAP2+: Fix omap3 prm shared irq
Tero Kristo
t-kristo at ti.com
Fri Jul 28 02:35:53 PDT 2017
On 27/06/17 11:48, Tony Lindgren wrote:
> Shared interrupts with IRQ_NOAUTOEN got a warning added with commit
> 04c848d39879 ("genirq: Warn when IRQ_NOAUTOEN is used with shared
> interrupts").
>
> Let's just drop the IRQ_NOAUTOEN use for omap3 PRM shared interrupt as
> it does not seem to cause any other issues based on my testing. We have
> moved a lot of the code to initialize later, and whatever problems the
> legacy booting had seem to be gone now with pinctrl driver and device
> tree based booting.
>
> Otherwise we will get:
>
> WARNING: CPU: 0 PID: 1 at kernel/irq/manage.c:1348 __setup_irq+0x5d0/0x64c
> [<c01b0260>] (__setup_irq) from [<c01b0480>]
> (request_threaded_irq+0xdc/0x188)
> [<c01b0480>] (request_threaded_irq) from [<c051c780>]
> (pcs_probe+0x6ec/0x8a4)
> [<c051c780>] (pcs_probe) from [<c05a84b8>] (platform_drv_probe+0x50/0xb0)
> [<c05a84b8>] (platform_drv_probe) from [<c05a6288>]
> (driver_probe_device+0x33c/0x478)
>
> Note that we also need to remove the related enable_irq() to avoid
> getting the following:
>
> WARNING: CPU: 0 PID: 1 at kernel/irq/manage.c:529 enable_irq+0x34/0x70
> [<c01afa04>] (enable_irq) from [<c0c0f1fc>] (omap3_pm_init+0x118/0x3f8)
> [<c0c0f1fc>] (omap3_pm_init) from [<c0c0ae7c>] (am35xx_init_late+0x10/0x18)
>
> Cc: Kevin Hilman <khilman at baylibre.com>
> Cc: Tero Kristo <t-kristo at ti.com>
> Signed-off-by: Tony Lindgren <tony at atomide.com>
Looks fine to me.
-Tero
> ---
> arch/arm/mach-omap2/pm34xx.c | 1 -
> arch/arm/mach-omap2/prm3xxx.c | 7 +------
> 2 files changed, 1 insertion(+), 7 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
> --- a/arch/arm/mach-omap2/pm34xx.c
> +++ b/arch/arm/mach-omap2/pm34xx.c
> @@ -483,7 +483,6 @@ int __init omap3_pm_init(void)
> ret = request_irq(omap_prcm_event_to_irq("io"),
> _prcm_int_handle_io, IRQF_SHARED | IRQF_NO_SUSPEND, "pm_io",
> omap3_pm_init);
> - enable_irq(omap_prcm_event_to_irq("io"));
>
> if (ret) {
> pr_err("pm: Failed to request pm_io irq\n");
> diff --git a/arch/arm/mach-omap2/prm3xxx.c b/arch/arm/mach-omap2/prm3xxx.c
> --- a/arch/arm/mach-omap2/prm3xxx.c
> +++ b/arch/arm/mach-omap2/prm3xxx.c
> @@ -692,7 +692,6 @@ static int omap3xxx_prm_late_init(void)
> {
> struct device_node *np;
> int irq_num;
> - int ret;
>
> if (!(prm_features & PRM_HAS_IO_WAKEUP))
> return 0;
> @@ -712,12 +711,8 @@ static int omap3xxx_prm_late_init(void)
> }
>
> omap3xxx_prm_enable_io_wakeup();
> - ret = omap_prcm_register_chain_handler(&omap3_prcm_irq_setup);
> - if (!ret)
> - irq_set_status_flags(omap_prcm_event_to_irq("io"),
> - IRQ_NOAUTOEN);
>
> - return ret;
> + return omap_prcm_register_chain_handler(&omap3_prcm_irq_setup);
> }
>
> static void __exit omap3xxx_prm_exit(void)
>
More information about the linux-arm-kernel
mailing list