| Message ID | 20260925183050.56839-1-rosenp@gmail.com |
|---|---|
| State | New |
| Headers | show |
| Series | serial: arc_uart: Use platform IRQ helper | expand |
On Fri, Sep 25, 2026 at 11:30:50AM -0700, Rosen Penev wrote: > Avoid calling irq_dispose_mapping() by letting the platform_device > machinery handle it. Also enable possibility of handling -EPROBE_DEFER > and other errors. Handle as early as possible to avoid doing unnecessary > work. > > Signed-off-by: Rosen Penev <rosenp@gmail.com> > --- > drivers/tty/serial/arc_uart.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/drivers/tty/serial/arc_uart.c b/drivers/tty/serial/arc_uart.c > index 3988e5958896..b46b057a181b 100644 > --- a/drivers/tty/serial/arc_uart.c > +++ b/drivers/tty/serial/arc_uart.c > @@ -30,7 +30,6 @@ > #include <linux/tty_flip.h> > #include <linux/serial_core.h> > #include <linux/io.h> > -#include <linux/of_irq.h> > #include <linux/of_address.h> > > /************************************* > @@ -571,12 +570,17 @@ static int arc_serial_probe(struct platform_device *pdev) > struct arc_uart_port *uart; > struct uart_port *port; > int dev_id; > + int irq; > u32 val; > > /* no device tree device */ > if (!np) > return -ENODEV; > > + irq = platform_get_irq(pdev, 0); > + if (irq < 0) > + return irq; > + > dev_id = of_alias_get_id(np, "serial"); > if (dev_id < 0) > dev_id = 0; > @@ -607,7 +611,7 @@ static int arc_serial_probe(struct platform_device *pdev) > return PTR_ERR(port->membase); > } > > - port->irq = irq_of_parse_and_map(np, 0); > + port->irq = irq; > > port->dev = &pdev->dev; > port->iotype = UPIO_MEM; > -- > 2.55.0 > > You forgot an Assisted-by: tag here :(
On Thu, Oct 1, 2026 at 1:42 AM Greg Kroah-Hartman <gregkh@linuxfoundation.org> wrote: > > On Fri, Sep 25, 2026 at 11:30:50AM -0700, Rosen Penev wrote: > > Avoid calling irq_dispose_mapping() by letting the platform_device > > machinery handle it. Also enable possibility of handling -EPROBE_DEFER > > and other errors. Handle as early as possible to avoid doing unnecessary > > work. > > > > Signed-off-by: Rosen Penev <rosenp@gmail.com> > > --- > > drivers/tty/serial/arc_uart.c | 8 ++++++-- > > 1 file changed, 6 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/tty/serial/arc_uart.c b/drivers/tty/serial/arc_uart.c > > index 3988e5958896..b46b057a181b 100644 > > --- a/drivers/tty/serial/arc_uart.c > > +++ b/drivers/tty/serial/arc_uart.c > > @@ -30,7 +30,6 @@ > > #include <linux/tty_flip.h> > > #include <linux/serial_core.h> > > #include <linux/io.h> > > -#include <linux/of_irq.h> > > #include <linux/of_address.h> > > > > /************************************* > > @@ -571,12 +570,17 @@ static int arc_serial_probe(struct platform_device *pdev) > > struct arc_uart_port *uart; > > struct uart_port *port; > > int dev_id; > > + int irq; > > u32 val; > > > > /* no device tree device */ > > if (!np) > > return -ENODEV; > > > > + irq = platform_get_irq(pdev, 0); > > + if (irq < 0) > > + return irq; > > + > > dev_id = of_alias_get_id(np, "serial"); > > if (dev_id < 0) > > dev_id = 0; > > @@ -607,7 +611,7 @@ static int arc_serial_probe(struct platform_device *pdev) > > return PTR_ERR(port->membase); > > } > > > > - port->irq = irq_of_parse_and_map(np, 0); > > + port->irq = irq; > > > > port->dev = &pdev->dev; > > port->iotype = UPIO_MEM; > > -- > > 2.55.0 > > > > > > You forgot an Assisted-by: tag here :( No LLM used here.
On Thu, Oct 01, 2026 at 11:58:05AM -0700, Rosen Penev wrote: > On Thu, Oct 1, 2026 at 1:42 AM Greg Kroah-Hartman > <gregkh@linuxfoundation.org> wrote: > > > > On Fri, Sep 25, 2026 at 11:30:50AM -0700, Rosen Penev wrote: > > > Avoid calling irq_dispose_mapping() by letting the platform_device > > > machinery handle it. Also enable possibility of handling -EPROBE_DEFER > > > and other errors. Handle as early as possible to avoid doing unnecessary > > > work. > > > > > > Signed-off-by: Rosen Penev <rosenp@gmail.com> > > > --- > > > drivers/tty/serial/arc_uart.c | 8 ++++++-- > > > 1 file changed, 6 insertions(+), 2 deletions(-) > > > > > > diff --git a/drivers/tty/serial/arc_uart.c b/drivers/tty/serial/arc_uart.c > > > index 3988e5958896..b46b057a181b 100644 > > > --- a/drivers/tty/serial/arc_uart.c > > > +++ b/drivers/tty/serial/arc_uart.c > > > @@ -30,7 +30,6 @@ > > > #include <linux/tty_flip.h> > > > #include <linux/serial_core.h> > > > #include <linux/io.h> > > > -#include <linux/of_irq.h> > > > #include <linux/of_address.h> > > > > > > /************************************* > > > @@ -571,12 +570,17 @@ static int arc_serial_probe(struct platform_device *pdev) > > > struct arc_uart_port *uart; > > > struct uart_port *port; > > > int dev_id; > > > + int irq; > > > u32 val; > > > > > > /* no device tree device */ > > > if (!np) > > > return -ENODEV; > > > > > > + irq = platform_get_irq(pdev, 0); > > > + if (irq < 0) > > > + return irq; > > > + > > > dev_id = of_alias_get_id(np, "serial"); > > > if (dev_id < 0) > > > dev_id = 0; > > > @@ -607,7 +611,7 @@ static int arc_serial_probe(struct platform_device *pdev) > > > return PTR_ERR(port->membase); > > > } > > > > > > - port->irq = irq_of_parse_and_map(np, 0); > > > + port->irq = irq; > > > > > > port->dev = &pdev->dev; > > > port->iotype = UPIO_MEM; > > > -- > > > 2.55.0 > > > > > > > > > > You forgot an Assisted-by: tag here :( > No LLM used here. Then what tool was used to find this issue?
On Thu, Oct 1, 2026 at 10:55 PM Greg Kroah-Hartman <gregkh@linuxfoundation.org> wrote: > > On Thu, Oct 01, 2026 at 11:58:05AM -0700, Rosen Penev wrote: > > On Thu, Oct 1, 2026 at 1:42 AM Greg Kroah-Hartman > > <gregkh@linuxfoundation.org> wrote: > > > > > > On Fri, Sep 25, 2026 at 11:30:50AM -0700, Rosen Penev wrote: > > > > Avoid calling irq_dispose_mapping() by letting the platform_device > > > > machinery handle it. Also enable possibility of handling -EPROBE_DEFER > > > > and other errors. Handle as early as possible to avoid doing unnecessary > > > > work. > > > > > > > > Signed-off-by: Rosen Penev <rosenp@gmail.com> > > > > --- > > > > drivers/tty/serial/arc_uart.c | 8 ++++++-- > > > > 1 file changed, 6 insertions(+), 2 deletions(-) > > > > > > > > diff --git a/drivers/tty/serial/arc_uart.c b/drivers/tty/serial/arc_uart.c > > > > index 3988e5958896..b46b057a181b 100644 > > > > --- a/drivers/tty/serial/arc_uart.c > > > > +++ b/drivers/tty/serial/arc_uart.c > > > > @@ -30,7 +30,6 @@ > > > > #include <linux/tty_flip.h> > > > > #include <linux/serial_core.h> > > > > #include <linux/io.h> > > > > -#include <linux/of_irq.h> > > > > #include <linux/of_address.h> > > > > > > > > /************************************* > > > > @@ -571,12 +570,17 @@ static int arc_serial_probe(struct platform_device *pdev) > > > > struct arc_uart_port *uart; > > > > struct uart_port *port; > > > > int dev_id; > > > > + int irq; > > > > u32 val; > > > > > > > > /* no device tree device */ > > > > if (!np) > > > > return -ENODEV; > > > > > > > > + irq = platform_get_irq(pdev, 0); > > > > + if (irq < 0) > > > > + return irq; > > > > + > > > > dev_id = of_alias_get_id(np, "serial"); > > > > if (dev_id < 0) > > > > dev_id = 0; > > > > @@ -607,7 +611,7 @@ static int arc_serial_probe(struct platform_device *pdev) > > > > return PTR_ERR(port->membase); > > > > } > > > > > > > > - port->irq = irq_of_parse_and_map(np, 0); > > > > + port->irq = irq; > > > > > > > > port->dev = &pdev->dev; > > > > port->iotype = UPIO_MEM; > > > > -- > > > > 2.55.0 > > > > > > > > > > > > > > You forgot an Assisted-by: tag here :( > > No LLM used here. > > Then what tool was used to find this issue? git grep irq_of_parse_and_map
diff --git a/drivers/tty/serial/arc_uart.c b/drivers/tty/serial/arc_uart.c index 3988e5958896..b46b057a181b 100644 --- a/drivers/tty/serial/arc_uart.c +++ b/drivers/tty/serial/arc_uart.c @@ -30,7 +30,6 @@ #include <linux/tty_flip.h> #include <linux/serial_core.h> #include <linux/io.h> -#include <linux/of_irq.h> #include <linux/of_address.h> /************************************* @@ -571,12 +570,17 @@ static int arc_serial_probe(struct platform_device *pdev) struct arc_uart_port *uart; struct uart_port *port; int dev_id; + int irq; u32 val; /* no device tree device */ if (!np) return -ENODEV; + irq = platform_get_irq(pdev, 0); + if (irq < 0) + return irq; + dev_id = of_alias_get_id(np, "serial"); if (dev_id < 0) dev_id = 0; @@ -607,7 +611,7 @@ static int arc_serial_probe(struct platform_device *pdev) return PTR_ERR(port->membase); } - port->irq = irq_of_parse_and_map(np, 0); + port->irq = irq; port->dev = &pdev->dev; port->iotype = UPIO_MEM;
Avoid calling irq_dispose_mapping() by letting the platform_device machinery handle it. Also enable possibility of handling -EPROBE_DEFER and other errors. Handle as early as possible to avoid doing unnecessary work. Signed-off-by: Rosen Penev <rosenp@gmail.com> --- drivers/tty/serial/arc_uart.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)