Re: [PATCH] drivers: rtc: rtc-wm831x: Add IRQF_ONESHOT flag

From: Charles Keepax
Date: Fri Jul 12 2019 - 09:28:37 EST


On Thu, Jul 11, 2019 at 11:26:15PM +0530, Hariprasad Kelam wrote:
> fix below issue reported by coccicheck
> drivers//rtc/rtc-wm831x.c:436:7-32: ERROR: Threaded IRQ with no primary
> handler requested without IRQF_ONESHOT
>
> Signed-off-by: Hariprasad Kelam <hariprasad.kelam@xxxxxxxxx>
> ---
> drivers/rtc/rtc-wm831x.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/rtc/rtc-wm831x.c b/drivers/rtc/rtc-wm831x.c
> index d2e8b21..ccef887 100644
> --- a/drivers/rtc/rtc-wm831x.c
> +++ b/drivers/rtc/rtc-wm831x.c
> @@ -435,7 +435,8 @@ static int wm831x_rtc_probe(struct platform_device *pdev)
>
> ret = devm_request_threaded_irq(&pdev->dev, alm_irq, NULL,
> wm831x_alm_irq,
> - IRQF_TRIGGER_RISING, "RTC alarm",
> + IRQF_TRIGGER_RISING | IRQF_ONESHOT,
> + "RTC alarm",

I guess this code pre-dates the check in the core that doesn't
allow the default handler with no oneshot (if you check the comment
it definitely looks like this would have worked before that check
was added).

I am a little worried there might be a bit more required to fix this
one. I seem to remember edge triggered IRQs and ONESHOT don't play
very nicely together, but on the flip side this is just a virtual
domain used within the chip so in practice it is probably safe.

A tentative ack from me, but I would certainly appreciate any
additional opinions.

Acked-by: Charles Keepax <ckeepax@xxxxxxxxxxxxxxxxxxxxx>


Thanks,
Charles

> wm831x_rtc);
> if (ret != 0) {
> dev_err(&pdev->dev, "Failed to request alarm IRQ %d: %d\n",
> --
> 2.7.4
>