diff mbox series

Input: ps2-gpio - Use IRQF_NO_AUTOEN flag in request_irq()

Message ID 20240912033013.2610949-1-ruanjinjie@huawei.com (mailing list archive)
State Mainlined
Commit dcd18a3fb1228409dfc24373c5c6868a655810b0
Headers show
Series Input: ps2-gpio - Use IRQF_NO_AUTOEN flag in request_irq() | expand

Commit Message

Jinjie Ruan Sept. 12, 2024, 3:30 a.m. UTC
disable_irq() after request_irq() still has a time gap in which
interrupts can come. request_irq() with IRQF_NO_AUTOEN flag will
disable IRQ auto-enable when request IRQ.

Fixes: 9ee0a0558819 ("Input: PS/2 gpio bit banging driver for serio bus")
Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
---
 drivers/input/serio/ps2-gpio.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

Comments

Danilo Krummrich Sept. 12, 2024, 8:49 p.m. UTC | #1
On 9/12/24 5:30 AM, Jinjie Ruan wrote:
> disable_irq() after request_irq() still has a time gap in which
> interrupts can come. request_irq() with IRQF_NO_AUTOEN flag will
> disable IRQ auto-enable when request IRQ.
> 
> Fixes: 9ee0a0558819 ("Input: PS/2 gpio bit banging driver for serio bus")
> Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>

Acked-by: Danilo Krummrich <dakr@kernel.org>

> ---
>   drivers/input/serio/ps2-gpio.c | 6 ++----
>   1 file changed, 2 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/input/serio/ps2-gpio.c b/drivers/input/serio/ps2-gpio.c
> index 0c8b390b8b4f..3a431395c464 100644
> --- a/drivers/input/serio/ps2-gpio.c
> +++ b/drivers/input/serio/ps2-gpio.c
> @@ -429,16 +429,14 @@ static int ps2_gpio_probe(struct platform_device *pdev)
>   	}
>   
>   	error = devm_request_irq(dev, drvdata->irq, ps2_gpio_irq,
> -				 IRQF_NO_THREAD, DRIVER_NAME, drvdata);
> +				 IRQF_NO_THREAD | IRQF_NO_AUTOEN, DRIVER_NAME,
> +				 drvdata);
>   	if (error) {
>   		dev_err(dev, "failed to request irq %d: %d\n",
>   			drvdata->irq, error);
>   		goto err_free_serio;
>   	}
>   
> -	/* Keep irq disabled until serio->open is called. */
> -	disable_irq(drvdata->irq);
> -
>   	serio->id.type = SERIO_8042;
>   	serio->open = ps2_gpio_open;
>   	serio->close = ps2_gpio_close;
Dmitry Torokhov Sept. 13, 2024, 5:21 p.m. UTC | #2
On Thu, Sep 12, 2024 at 11:30:13AM +0800, Jinjie Ruan wrote:
> disable_irq() after request_irq() still has a time gap in which
> interrupts can come. request_irq() with IRQF_NO_AUTOEN flag will
> disable IRQ auto-enable when request IRQ.
> 
> Fixes: 9ee0a0558819 ("Input: PS/2 gpio bit banging driver for serio bus")
> Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>

Applied, thank you.
diff mbox series

Patch

diff --git a/drivers/input/serio/ps2-gpio.c b/drivers/input/serio/ps2-gpio.c
index 0c8b390b8b4f..3a431395c464 100644
--- a/drivers/input/serio/ps2-gpio.c
+++ b/drivers/input/serio/ps2-gpio.c
@@ -429,16 +429,14 @@  static int ps2_gpio_probe(struct platform_device *pdev)
 	}
 
 	error = devm_request_irq(dev, drvdata->irq, ps2_gpio_irq,
-				 IRQF_NO_THREAD, DRIVER_NAME, drvdata);
+				 IRQF_NO_THREAD | IRQF_NO_AUTOEN, DRIVER_NAME,
+				 drvdata);
 	if (error) {
 		dev_err(dev, "failed to request irq %d: %d\n",
 			drvdata->irq, error);
 		goto err_free_serio;
 	}
 
-	/* Keep irq disabled until serio->open is called. */
-	disable_irq(drvdata->irq);
-
 	serio->id.type = SERIO_8042;
 	serio->open = ps2_gpio_open;
 	serio->close = ps2_gpio_close;