Subject: [PATCH] extcon: palmas: Drop stray IRQF_EARLY_RESUME flag

From: [email-masked] (Lee Jones)
Date: Fri, 1 Apr 2016 08:59:21 +0100

On Thu, 31 Mar 2016, Nishanth Menon wrote:

> Palams extcon IRQs are nested threaded and wired to the Palmas
> inerrupt controller. So, this flag is not required for nested
> irqs anymore, since commit 3c646f2c6aa9 ("genirq: Don't suspend
> nested_thread irqs over system suspend") was merged. However, the
> fix missed a stray flag causing the following crash on resume on
> BeagleBoard-X15 platform:
> [   53.670141] Unhandled fault: imprecise external abort (0x1406) at 0x00000000
> [   53.670141] pgd = ecd30000
> [   53.670141] [00000000] *pgd=fe3c1835
> [   53.670141] Internal error: : 1406 [#1] SMP ARM
> [   53.670141] Modules linked in: xhci_plat_hcd xhci_hcd usbcore encoder_tpd12s015 connector_hdmi omapfb cfbcopyarea c
> fbimgblt cfbfillrect evdev dwc3 snd_soc_simple_card udc_core leds_gpio gpio_fan cpufreq_dt omapdss snd_soc_davinci_mca
> sp snd_soc_omap snd_soc_edma snd_soc_tlv320aic3x omap_wdt extcon_usb_gpio led_class rtc_omap snd_soc_core snd_pcm_dmae
> ngine extcon_palmas ti_soc_thermal dwc3_omap palmas_pwrbutton phy_omap_usb2 tmp102 snd_pcm thermal_sys rtc_palmas snd_
> timer at24 extcon rtc_ds1307 hwmon snd soundcore nvmem_core
> [   53.670141] CPU: 0 PID: 2297 Comm: rtcwake Not tainted 4.6.0-rc1-00004-g7b08b6942309-dirty #6
> [   53.670141] Hardware name: Generic DRA74X (Flattened Device Tree)
> [   53.670141] task: ed3ab280 ti: ecb28000 task.ti: ecb28000
> [   53.670141] PC is at omap_set_gpio_triggering+0x44/0x23c
> [   53.670141] LR is at 0xfa059140
> [   53.670141] pc : [<c04ae734>]    lr : [<fa059140>]    psr: 60070093
> [   53.670141] sp : ecb29db8  ip : fa059000  fp : c09d3fd4
> [   53.670141] r10: 60070093  r9 : ee143660  r8 : 60070093
> [   53.670141] r7 : ee13bc64  r6 : 00000003  r5 : ee13bc10  r4 : 00000000
> [   53.670141] r3 : c10821cc  r2 : 00000003  r1 : 00200000  r0 : ee13bc10
> [   53.670141] Flags: nZCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment none
> [   53.670141] Control: 10c5387d  Table: acd3006a  DAC: 00000051
> [   53.670141] Process rtcwake (pid: 2297, stack limit = 0xecb28218)
> [   53.670141] Stack: (0xecb29db8 to 0xecb2a000)
> [   53.670141] 9da0:                                                       00000015 ee13bc10
> [   53.670141] 9dc0: 00000003 c04aeb94 ee143600 ee143600 c1043dd0 00000001 c099c354 c01a0b88
> [   53.670141] 9de0: ee143600 c019ebd8 00000099 c01a4e60 c1044100 c108baf8 c10c6020 c10c20e0
> [   53.670141] 9e00: c10029cc c10c169f c09d3fa8 c0514840 c100409c 00000003 c1851644 00000000
> [   53.670141] 9e20: c1851628 00000000 00000000 c10c20e0 00000000 c01981cc c1851650 00000000
> [   53.670141] 9e40: c099b204 ecb29f88 0000000c c019bd04 c099b1c8 ecb29e74 c10029cc 00000003
> [   53.670141] 9e60: c10029cc c10c20e0 c1851650 00000000 c099b204 ecb29f88 0000000c c0198a60
> [   53.670141] 9e80: 0000006d 00000003 c0995434 00000003 c1851654 00000004 ecaddc80 ecb29f88
> [   53.670141] 9ea0: 00000051 c0196bec ecb13500 00000000 00000004 ecaddc80 00000000 00000000
> [   53.670141] 9ec0: ecb29f88 c0307944 00000000 00000000 00000001 ecb1350c ecb28000 ecc5d280
> [   53.670141] 9ee0: c0307884 b6f8f000 ecb29f88 c01079e4 ecb28000 00000000 bedaab3b c028acb0
> [   53.670141] 9f00: 00000003 00000000 bedaae72 ee6f023c ee6f023c 00000001 00000000 c018abc0
> [   53.670141] 9f20: ee6f023c 00000001 00000000 c018ac5c 00000001 00000000 c028ec60 c028b940
> [   53.670141] 9f40: 00001000 00000001 00000004 ecc5d280 00000004 b6f8f000 ecb29f88 c01079e4
> [   53.670141] 9f60: ecb28000 c028bba0 b6f8f000 c024c784 ecc5d280 ecc5d280 b6f8f000 00000004
> [   53.670141] 9f80: c01079e4 c028c8c0 00000000 00000000 000277b8 00000004 b6f8f000 000277b8
> [   53.670141] 9fa0: 00000004 c0107840 00000004 b6f8f000 00000004 b6f8f000 00000004 00000000
> [   53.670141] 9fc0: 00000004 b6f8f000 000277b8 00000004 00000004 00000000 bedaae65 bedaab3b
> [   53.670141] 9fe0: 00000000 bedaaa3c b6ebac85 b6ef6026 400d0030 00000004 00000000 00000000
> [   53.670141] [<c04ae734>] (omap_set_gpio_triggering) from [<c04aeb94>] (omap_gpio_unmask_irq+0xc0/0xc4)
> [   53.670141] [<c04aeb94>] (omap_gpio_unmask_irq) from [<c01a0b88>] (irq_enable+0x30/0x44)
> [   53.670141] [<c01a0b88>] (irq_enable) from [<c019ebd8>] (__enable_irq+0x54/0x78)
> [   53.670141] [<c019ebd8>] (__enable_irq) from [<c01a4e60>] (resume_irqs+0xe8/0x100)
> [   53.670141] [<c01a4e60>] (resume_irqs) from [<c0514840>] (syscore_resume+0x94/0x298)
> [   53.670141] [<c0514840>] (syscore_resume) from [<c01981cc>] (suspend_devices_and_enter+0x790/0x9e4)
> [   53.670141] [<c01981cc>] (suspend_devices_and_enter) from [<c0198a60>] (pm_suspend+0x640/0x75c)
> [   53.670141] [<c0198a60>] (pm_suspend) from [<c0196bec>] (state_store+0x64/0xb8)
> [   53.670141] [<c0196bec>] (state_store) from [<c0307944>] (kernfs_fop_write+0xc0/0x1bc)
> [   53.670141] [<c0307944>] (kernfs_fop_write) from [<c028acb0>] (__vfs_write+0x1c/0xd8)
> [   53.670141] [<c028acb0>] (__vfs_write) from [<c028bba0>] (vfs_write+0x90/0x16c)
> [   53.670141] [<c028bba0>] (vfs_write) from [<c028c8c0>] (SyS_write+0x44/0x9c)
> [   53.670141] [<c028c8c0>] (SyS_write) from [<c0107840>] (ret_fast_syscall+0x0/0x1c)
> [   53.670141] Code: e3120008 11814004 01c44001 e58e4000 (e1d342b6)

Please don't put all this in the commit message.  Can you trim it
(right) down to only the critical information required please?

> Fixes: ae64e42cc2b3 ("extcon: palmas: Drop IRQF_EARLY_RESUME flag")
> Cc: Grygorii Strashko <[email-masked]>
> Cc: MyungJoo Ham <[email-masked]>
> Cc: Chanwoo Choi <[email-masked]>
> Cc: Tony Lindgren <[email-masked]>
> Cc: Lee Jones <[email-masked]>
> Cc: Roger Quadros <[email-masked]>
> 
> Signed-off-by: Nishanth Menon <[email-masked]>
> ---
>  drivers/extcon/extcon-palmas.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/drivers/extcon/extcon-palmas.c b/drivers/extcon/extcon-palmas.c
> index 841a4b586395..8b3226dca1d9 100644
> --- a/drivers/extcon/extcon-palmas.c
> +++ b/drivers/extcon/extcon-palmas.c
> @@ -348,8 +348,7 @@ static int palmas_usb_probe(struct platform_device *pdev)
>  						palmas_vbus_irq_handler,
>  						IRQF_TRIGGER_FALLING |
>  						IRQF_TRIGGER_RISING |
> -						IRQF_ONESHOT |
> -						IRQF_EARLY_RESUME,
> +						IRQF_ONESHOT,
>  						"palmas_usb_vbus",
>  						palmas_usb);
>  		if (status < 0) {

-- 
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org ? Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog