* [PATCH] serial: 8250: 8250_core: Fix irq name for 8250 serial irq
@ 2017-03-16 12:26 ` Vignesh R
0 siblings, 0 replies; 24+ messages in thread
From: Vignesh R @ 2017-03-16 12:26 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: Jiri Slaby, linux-serial, linux-kernel, linux-arm-kernel,
Vignesh R, Andy Shevchenko, Jisheng Zhang
Using dev_name() as irq name during request_irq() might be misleading in
case of serial over PCI. Therefore use a better alternative name for
identifying serial port irqs as "serial" appended with serial_index of
the port. This ensures that "serial" string is always present in irq
name while port index will help in distinguishing b/w different ports.
Signed-off-by: Vignesh R <vigneshr@ti.com>
---
Based on top of tty-next.
drivers/tty/serial/8250/8250_core.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/drivers/tty/serial/8250/8250_core.c b/drivers/tty/serial/8250/8250_core.c
index f83b69f30987..78bf621d6827 100644
--- a/drivers/tty/serial/8250/8250_core.c
+++ b/drivers/tty/serial/8250/8250_core.c
@@ -213,12 +213,20 @@ static int serial_link_irq_chain(struct uart_8250_port *up)
ret = 0;
} else {
+ char *irqname = kmalloc(20, GFP_KERNEL);
+ if (!irqname) {
+ spin_unlock_irq(&i->lock);
+ return -ENOMEM;
+ }
+ snprintf(irqname, 20,
+ "serial%d", serial_index(&up->port));
+
INIT_LIST_HEAD(&up->list);
i->head = &up->list;
spin_unlock_irq(&i->lock);
irq_flags |= up->port.irqflags;
ret = request_irq(up->port.irq, serial8250_interrupt,
- irq_flags, dev_name(up->port.dev), i);
+ irq_flags, irqname, i);
if (ret < 0)
serial_do_unlink(i, up);
}
--
2.11.0
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH] serial: 8250: 8250_core: Fix irq name for 8250 serial irq
@ 2017-03-16 12:26 ` Vignesh R
0 siblings, 0 replies; 24+ messages in thread
From: Vignesh R @ 2017-03-16 12:26 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: Jisheng Zhang, Vignesh R, linux-kernel, Andy Shevchenko,
linux-serial, Jiri Slaby, linux-arm-kernel
Using dev_name() as irq name during request_irq() might be misleading in
case of serial over PCI. Therefore use a better alternative name for
identifying serial port irqs as "serial" appended with serial_index of
the port. This ensures that "serial" string is always present in irq
name while port index will help in distinguishing b/w different ports.
Signed-off-by: Vignesh R <vigneshr@ti.com>
---
Based on top of tty-next.
drivers/tty/serial/8250/8250_core.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/drivers/tty/serial/8250/8250_core.c b/drivers/tty/serial/8250/8250_core.c
index f83b69f30987..78bf621d6827 100644
--- a/drivers/tty/serial/8250/8250_core.c
+++ b/drivers/tty/serial/8250/8250_core.c
@@ -213,12 +213,20 @@ static int serial_link_irq_chain(struct uart_8250_port *up)
ret = 0;
} else {
+ char *irqname = kmalloc(20, GFP_KERNEL);
+ if (!irqname) {
+ spin_unlock_irq(&i->lock);
+ return -ENOMEM;
+ }
+ snprintf(irqname, 20,
+ "serial%d", serial_index(&up->port));
+
INIT_LIST_HEAD(&up->list);
i->head = &up->list;
spin_unlock_irq(&i->lock);
irq_flags |= up->port.irqflags;
ret = request_irq(up->port.irq, serial8250_interrupt,
- irq_flags, dev_name(up->port.dev), i);
+ irq_flags, irqname, i);
if (ret < 0)
serial_do_unlink(i, up);
}
--
2.11.0
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH] serial: 8250: 8250_core: Fix irq name for 8250 serial irq
@ 2017-03-16 12:26 ` Vignesh R
0 siblings, 0 replies; 24+ messages in thread
From: Vignesh R @ 2017-03-16 12:26 UTC (permalink / raw)
To: linux-arm-kernel
Using dev_name() as irq name during request_irq() might be misleading in
case of serial over PCI. Therefore use a better alternative name for
identifying serial port irqs as "serial" appended with serial_index of
the port. This ensures that "serial" string is always present in irq
name while port index will help in distinguishing b/w different ports.
Signed-off-by: Vignesh R <vigneshr@ti.com>
---
Based on top of tty-next.
drivers/tty/serial/8250/8250_core.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/drivers/tty/serial/8250/8250_core.c b/drivers/tty/serial/8250/8250_core.c
index f83b69f30987..78bf621d6827 100644
--- a/drivers/tty/serial/8250/8250_core.c
+++ b/drivers/tty/serial/8250/8250_core.c
@@ -213,12 +213,20 @@ static int serial_link_irq_chain(struct uart_8250_port *up)
ret = 0;
} else {
+ char *irqname = kmalloc(20, GFP_KERNEL);
+ if (!irqname) {
+ spin_unlock_irq(&i->lock);
+ return -ENOMEM;
+ }
+ snprintf(irqname, 20,
+ "serial%d", serial_index(&up->port));
+
INIT_LIST_HEAD(&up->list);
i->head = &up->list;
spin_unlock_irq(&i->lock);
irq_flags |= up->port.irqflags;
ret = request_irq(up->port.irq, serial8250_interrupt,
- irq_flags, dev_name(up->port.dev), i);
+ irq_flags, irqname, i);
if (ret < 0)
serial_do_unlink(i, up);
}
--
2.11.0
^ permalink raw reply related [flat|nested] 24+ messages in thread
* Re: [PATCH] serial: 8250: 8250_core: Fix irq name for 8250 serial irq
2017-03-16 12:26 ` Vignesh R
@ 2017-03-16 12:46 ` Jiri Slaby
-1 siblings, 0 replies; 24+ messages in thread
From: Jiri Slaby @ 2017-03-16 12:46 UTC (permalink / raw)
To: Vignesh R, Greg Kroah-Hartman
Cc: Andy Shevchenko, linux-arm-kernel, Jisheng Zhang, linux-kernel,
linux-serial
On 03/16/2017, 01:26 PM, Vignesh R wrote:
> Using dev_name() as irq name during request_irq() might be misleading in
> case of serial over PCI. Therefore use a better alternative name for
> identifying serial port irqs as "serial" appended with serial_index of
> the port. This ensures that "serial" string is always present in irq
> name while port index will help in distinguishing b/w different ports.
>
> Signed-off-by: Vignesh R <vigneshr@ti.com>
> ---
>
> Based on top of tty-next.
>
> drivers/tty/serial/8250/8250_core.c | 10 +++++++++-
> 1 file changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/tty/serial/8250/8250_core.c b/drivers/tty/serial/8250/8250_core.c
> index f83b69f30987..78bf621d6827 100644
> --- a/drivers/tty/serial/8250/8250_core.c
> +++ b/drivers/tty/serial/8250/8250_core.c
> @@ -213,12 +213,20 @@ static int serial_link_irq_chain(struct uart_8250_port *up)
>
> ret = 0;
> } else {
> + char *irqname = kmalloc(20, GFP_KERNEL);
> + if (!irqname) {
> + spin_unlock_irq(&i->lock);
GFP_KERNEL and spin_lock won't play well together.
--
js
suse labs
^ permalink raw reply [flat|nested] 24+ messages in thread
* [PATCH] serial: 8250: 8250_core: Fix irq name for 8250 serial irq
@ 2017-03-16 12:46 ` Jiri Slaby
0 siblings, 0 replies; 24+ messages in thread
From: Jiri Slaby @ 2017-03-16 12:46 UTC (permalink / raw)
To: linux-arm-kernel
On 03/16/2017, 01:26 PM, Vignesh R wrote:
> Using dev_name() as irq name during request_irq() might be misleading in
> case of serial over PCI. Therefore use a better alternative name for
> identifying serial port irqs as "serial" appended with serial_index of
> the port. This ensures that "serial" string is always present in irq
> name while port index will help in distinguishing b/w different ports.
>
> Signed-off-by: Vignesh R <vigneshr@ti.com>
> ---
>
> Based on top of tty-next.
>
> drivers/tty/serial/8250/8250_core.c | 10 +++++++++-
> 1 file changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/tty/serial/8250/8250_core.c b/drivers/tty/serial/8250/8250_core.c
> index f83b69f30987..78bf621d6827 100644
> --- a/drivers/tty/serial/8250/8250_core.c
> +++ b/drivers/tty/serial/8250/8250_core.c
> @@ -213,12 +213,20 @@ static int serial_link_irq_chain(struct uart_8250_port *up)
>
> ret = 0;
> } else {
> + char *irqname = kmalloc(20, GFP_KERNEL);
> + if (!irqname) {
> + spin_unlock_irq(&i->lock);
GFP_KERNEL and spin_lock won't play well together.
--
js
suse labs
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH] serial: 8250: 8250_core: Fix irq name for 8250 serial irq
2017-03-16 12:46 ` Jiri Slaby
@ 2017-03-16 12:54 ` Jiri Slaby
-1 siblings, 0 replies; 24+ messages in thread
From: Jiri Slaby @ 2017-03-16 12:54 UTC (permalink / raw)
To: Vignesh R, Greg Kroah-Hartman
Cc: Andy Shevchenko, linux-arm-kernel, Jisheng Zhang, linux-kernel,
linux-serial
On 03/16/2017, 01:46 PM, Jiri Slaby wrote:
> On 03/16/2017, 01:26 PM, Vignesh R wrote:
>> Using dev_name() as irq name during request_irq() might be misleading in
>> case of serial over PCI. Therefore use a better alternative name for
>> identifying serial port irqs as "serial" appended with serial_index of
>> the port. This ensures that "serial" string is always present in irq
>> name while port index will help in distinguishing b/w different ports.
>>
>> Signed-off-by: Vignesh R <vigneshr@ti.com>
>> ---
>>
>> Based on top of tty-next.
>>
>> drivers/tty/serial/8250/8250_core.c | 10 +++++++++-
>> 1 file changed, 9 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/tty/serial/8250/8250_core.c b/drivers/tty/serial/8250/8250_core.c
>> index f83b69f30987..78bf621d6827 100644
>> --- a/drivers/tty/serial/8250/8250_core.c
>> +++ b/drivers/tty/serial/8250/8250_core.c
>> @@ -213,12 +213,20 @@ static int serial_link_irq_chain(struct uart_8250_port *up)
>>
>> ret = 0;
>> } else {
>> + char *irqname = kmalloc(20, GFP_KERNEL);
>> + if (!irqname) {
>> + spin_unlock_irq(&i->lock);
>
> GFP_KERNEL and spin_lock won't play well together.
And you never free the memory. Given we have struct device, can we use
devm_kmalloc after spin_unlock_irq (you have to check if we cannot
allocate multiple times)?
thanks,
--
js
suse labs
^ permalink raw reply [flat|nested] 24+ messages in thread
* [PATCH] serial: 8250: 8250_core: Fix irq name for 8250 serial irq
@ 2017-03-16 12:54 ` Jiri Slaby
0 siblings, 0 replies; 24+ messages in thread
From: Jiri Slaby @ 2017-03-16 12:54 UTC (permalink / raw)
To: linux-arm-kernel
On 03/16/2017, 01:46 PM, Jiri Slaby wrote:
> On 03/16/2017, 01:26 PM, Vignesh R wrote:
>> Using dev_name() as irq name during request_irq() might be misleading in
>> case of serial over PCI. Therefore use a better alternative name for
>> identifying serial port irqs as "serial" appended with serial_index of
>> the port. This ensures that "serial" string is always present in irq
>> name while port index will help in distinguishing b/w different ports.
>>
>> Signed-off-by: Vignesh R <vigneshr@ti.com>
>> ---
>>
>> Based on top of tty-next.
>>
>> drivers/tty/serial/8250/8250_core.c | 10 +++++++++-
>> 1 file changed, 9 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/tty/serial/8250/8250_core.c b/drivers/tty/serial/8250/8250_core.c
>> index f83b69f30987..78bf621d6827 100644
>> --- a/drivers/tty/serial/8250/8250_core.c
>> +++ b/drivers/tty/serial/8250/8250_core.c
>> @@ -213,12 +213,20 @@ static int serial_link_irq_chain(struct uart_8250_port *up)
>>
>> ret = 0;
>> } else {
>> + char *irqname = kmalloc(20, GFP_KERNEL);
>> + if (!irqname) {
>> + spin_unlock_irq(&i->lock);
>
> GFP_KERNEL and spin_lock won't play well together.
And you never free the memory. Given we have struct device, can we use
devm_kmalloc after spin_unlock_irq (you have to check if we cannot
allocate multiple times)?
thanks,
--
js
suse labs
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH] serial: 8250: 8250_core: Fix irq name for 8250 serial irq
2017-03-16 12:26 ` Vignesh R
@ 2017-03-16 13:36 ` Russell King - ARM Linux
-1 siblings, 0 replies; 24+ messages in thread
From: Russell King - ARM Linux @ 2017-03-16 13:36 UTC (permalink / raw)
To: Vignesh R
Cc: Greg Kroah-Hartman, Jisheng Zhang, linux-kernel, Andy Shevchenko,
linux-serial, Jiri Slaby, linux-arm-kernel
On Thu, Mar 16, 2017 at 05:56:53PM +0530, Vignesh R wrote:
> Using dev_name() as irq name during request_irq() might be misleading in
> case of serial over PCI. Therefore use a better alternative name for
> identifying serial port irqs as "serial" appended with serial_index of
> the port. This ensures that "serial" string is always present in irq
> name while port index will help in distinguishing b/w different ports.
Wouldn't it be better to use the device name (iow, ttySx) rather than
"serialx" ?
Maybe a helper function in serial_core.c to format the device name into
a supplied string, which can be re-used elsewhere, eg, uart_report_port()
and uart_suspend_port(). IOW:
const char *uart_port_name(char *buf, size_t n, struct uart_driver *drv,
struct uart_port *port)
{
snprintf(buf, n, "%s%d", drv->dev_name,
drv->tty_driver->name_base + port->line);
return buf;
}
which means you can do this:
char name[16];
request_irq(..., uart_port_name(name, sizeof(name), driver, port), ...)
which also avoids the allocation. 8250 device names are always "ttyS"
plus a number, so 16 characters (including NULL terminator) should be
more than sufficient, and that's most likely true of all serial drivers.
(The longest device name I'm aware of is ttyAMA plus a small integer
for PL011 ports.)
--
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up
according to speedtest.net.
^ permalink raw reply [flat|nested] 24+ messages in thread
* [PATCH] serial: 8250: 8250_core: Fix irq name for 8250 serial irq
@ 2017-03-16 13:36 ` Russell King - ARM Linux
0 siblings, 0 replies; 24+ messages in thread
From: Russell King - ARM Linux @ 2017-03-16 13:36 UTC (permalink / raw)
To: linux-arm-kernel
On Thu, Mar 16, 2017 at 05:56:53PM +0530, Vignesh R wrote:
> Using dev_name() as irq name during request_irq() might be misleading in
> case of serial over PCI. Therefore use a better alternative name for
> identifying serial port irqs as "serial" appended with serial_index of
> the port. This ensures that "serial" string is always present in irq
> name while port index will help in distinguishing b/w different ports.
Wouldn't it be better to use the device name (iow, ttySx) rather than
"serialx" ?
Maybe a helper function in serial_core.c to format the device name into
a supplied string, which can be re-used elsewhere, eg, uart_report_port()
and uart_suspend_port(). IOW:
const char *uart_port_name(char *buf, size_t n, struct uart_driver *drv,
struct uart_port *port)
{
snprintf(buf, n, "%s%d", drv->dev_name,
drv->tty_driver->name_base + port->line);
return buf;
}
which means you can do this:
char name[16];
request_irq(..., uart_port_name(name, sizeof(name), driver, port), ...)
which also avoids the allocation. 8250 device names are always "ttyS"
plus a number, so 16 characters (including NULL terminator) should be
more than sufficient, and that's most likely true of all serial drivers.
(The longest device name I'm aware of is ttyAMA plus a small integer
for PL011 ports.)
--
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up
according to speedtest.net.
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH] serial: 8250: 8250_core: Fix irq name for 8250 serial irq
2017-03-16 13:36 ` Russell King - ARM Linux
(?)
@ 2017-03-16 14:55 ` Robin Murphy
-1 siblings, 0 replies; 24+ messages in thread
From: Robin Murphy @ 2017-03-16 14:55 UTC (permalink / raw)
To: Russell King - ARM Linux, Vignesh R
Cc: Jisheng Zhang, Greg Kroah-Hartman, linux-kernel, Andy Shevchenko,
linux-serial, Jiri Slaby, linux-arm-kernel
On 16/03/17 13:36, Russell King - ARM Linux wrote:
> On Thu, Mar 16, 2017 at 05:56:53PM +0530, Vignesh R wrote:
>> Using dev_name() as irq name during request_irq() might be misleading in
>> case of serial over PCI. Therefore use a better alternative name for
>> identifying serial port irqs as "serial" appended with serial_index of
>> the port. This ensures that "serial" string is always present in irq
>> name while port index will help in distinguishing b/w different ports.
>
> Wouldn't it be better to use the device name (iow, ttySx) rather than
> "serialx" ?
>
> Maybe a helper function in serial_core.c to format the device name into
> a supplied string, which can be re-used elsewhere, eg, uart_report_port()
> and uart_suspend_port(). IOW:
>
> const char *uart_port_name(char *buf, size_t n, struct uart_driver *drv,
> struct uart_port *port)
> {
> snprintf(buf, n, "%s%d", drv->dev_name,
> drv->tty_driver->name_base + port->line);
>
> return buf;
> }
>
> which means you can do this:
>
> char name[16];
>
> request_irq(..., uart_port_name(name, sizeof(name), driver, port), ...)
>
> which also avoids the allocation.
...and makes 'cat /proc/interrupts' particularly fun later:
8: 0 GICv2 72 Level �\x04�h ����V!
Unless a suitably long-lived string already exists somewhere else in the
serial core, the allocation is unavoidable, although kasprintf() (or its
devm_ variant) might make matters a little simpler.
Robin.
> 8250 device names are always "ttyS"
> plus a number, so 16 characters (including NULL terminator) should be
> more than sufficient, and that's most likely true of all serial drivers.
> (The longest device name I'm aware of is ttyAMA plus a small integer
> for PL011 ports.)
>
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH] serial: 8250: 8250_core: Fix irq name for 8250 serial irq
@ 2017-03-16 14:55 ` Robin Murphy
0 siblings, 0 replies; 24+ messages in thread
From: Robin Murphy @ 2017-03-16 14:55 UTC (permalink / raw)
To: Russell King - ARM Linux, Vignesh R
Cc: Jisheng Zhang, Greg Kroah-Hartman, linux-kernel, Andy Shevchenko,
linux-serial, Jiri Slaby, linux-arm-kernel
On 16/03/17 13:36, Russell King - ARM Linux wrote:
> On Thu, Mar 16, 2017 at 05:56:53PM +0530, Vignesh R wrote:
>> Using dev_name() as irq name during request_irq() might be misleading in
>> case of serial over PCI. Therefore use a better alternative name for
>> identifying serial port irqs as "serial" appended with serial_index of
>> the port. This ensures that "serial" string is always present in irq
>> name while port index will help in distinguishing b/w different ports.
>
> Wouldn't it be better to use the device name (iow, ttySx) rather than
> "serialx" ?
>
> Maybe a helper function in serial_core.c to format the device name into
> a supplied string, which can be re-used elsewhere, eg, uart_report_port()
> and uart_suspend_port(). IOW:
>
> const char *uart_port_name(char *buf, size_t n, struct uart_driver *drv,
> struct uart_port *port)
> {
> snprintf(buf, n, "%s%d", drv->dev_name,
> drv->tty_driver->name_base + port->line);
>
> return buf;
> }
>
> which means you can do this:
>
> char name[16];
>
> request_irq(..., uart_port_name(name, sizeof(name), driver, port), ...)
>
> which also avoids the allocation.
...and makes 'cat /proc/interrupts' particularly fun later:
8: 0 GICv2 72 Level �\x04�h ����V!
Unless a suitably long-lived string already exists somewhere else in the
serial core, the allocation is unavoidable, although kasprintf() (or its
devm_ variant) might make matters a little simpler.
Robin.
> 8250 device names are always "ttyS"
> plus a number, so 16 characters (including NULL terminator) should be
> more than sufficient, and that's most likely true of all serial drivers.
> (The longest device name I'm aware of is ttyAMA plus a small integer
> for PL011 ports.)
>
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 24+ messages in thread
* [PATCH] serial: 8250: 8250_core: Fix irq name for 8250 serial irq
@ 2017-03-16 14:55 ` Robin Murphy
0 siblings, 0 replies; 24+ messages in thread
From: Robin Murphy @ 2017-03-16 14:55 UTC (permalink / raw)
To: linux-arm-kernel
On 16/03/17 13:36, Russell King - ARM Linux wrote:
> On Thu, Mar 16, 2017 at 05:56:53PM +0530, Vignesh R wrote:
>> Using dev_name() as irq name during request_irq() might be misleading in
>> case of serial over PCI. Therefore use a better alternative name for
>> identifying serial port irqs as "serial" appended with serial_index of
>> the port. This ensures that "serial" string is always present in irq
>> name while port index will help in distinguishing b/w different ports.
>
> Wouldn't it be better to use the device name (iow, ttySx) rather than
> "serialx" ?
>
> Maybe a helper function in serial_core.c to format the device name into
> a supplied string, which can be re-used elsewhere, eg, uart_report_port()
> and uart_suspend_port(). IOW:
>
> const char *uart_port_name(char *buf, size_t n, struct uart_driver *drv,
> struct uart_port *port)
> {
> snprintf(buf, n, "%s%d", drv->dev_name,
> drv->tty_driver->name_base + port->line);
>
> return buf;
> }
>
> which means you can do this:
>
> char name[16];
>
> request_irq(..., uart_port_name(name, sizeof(name), driver, port), ...)
>
> which also avoids the allocation.
...and makes 'cat /proc/interrupts' particularly fun later:
8: 0 GICv2 72 Level ?\x04?h ????V!
Unless a suitably long-lived string already exists somewhere else in the
serial core, the allocation is unavoidable, although kasprintf() (or its
devm_ variant) might make matters a little simpler.
Robin.
> 8250 device names are always "ttyS"
> plus a number, so 16 characters (including NULL terminator) should be
> more than sufficient, and that's most likely true of all serial drivers.
> (The longest device name I'm aware of is ttyAMA plus a small integer
> for PL011 ports.)
>
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH] serial: 8250: 8250_core: Fix irq name for 8250 serial irq
2017-03-16 14:55 ` Robin Murphy
(?)
@ 2017-03-16 20:58 ` Andy Shevchenko
-1 siblings, 0 replies; 24+ messages in thread
From: Andy Shevchenko @ 2017-03-16 20:58 UTC (permalink / raw)
To: Robin Murphy
Cc: Russell King - ARM Linux, Vignesh R, Jisheng Zhang,
Greg Kroah-Hartman, linux-kernel, linux-serial, Jiri Slaby,
linux-arm Mailing List
On Thu, Mar 16, 2017 at 4:55 PM, Robin Murphy <robin.murphy@arm.com> wrote:
> On 16/03/17 13:36, Russell King - ARM Linux wrote:
>> On Thu, Mar 16, 2017 at 05:56:53PM +0530, Vignesh R wrote:
>>> Using dev_name() as irq name during request_irq() might be misleading in
>>> case of serial over PCI. Therefore use a better alternative name for
>>> identifying serial port irqs as "serial" appended with serial_index of
>>> the port. This ensures that "serial" string is always present in irq
>>> name while port index will help in distinguishing b/w different ports.
>>
>> Wouldn't it be better to use the device name (iow, ttySx) rather than
>> "serialx" ?
>>
>> Maybe a helper function in serial_core.c to format the device name into
>> a supplied string, which can be re-used elsewhere, eg, uart_report_port()
>> and uart_suspend_port(). IOW:
>>
>> const char *uart_port_name(char *buf, size_t n, struct uart_driver *drv,
>> struct uart_port *port)
>> {
>> snprintf(buf, n, "%s%d", drv->dev_name,
>> drv->tty_driver->name_base + port->line);
>>
>> return buf;
>> }
>>
>> which means you can do this:
>>
>> char name[16];
>>
>> request_irq(..., uart_port_name(name, sizeof(name), driver, port), ...)
>>
>> which also avoids the allocation.
>
> ...and makes 'cat /proc/interrupts' particularly fun later:
>
> 8: 0 GICv2 72 Level � �h ����V!
>
> Unless a suitably long-lived string already exists somewhere else in the
> serial core, the allocation is unavoidable, although kasprintf() (or its
> devm_ variant) might make matters a little simpler.
What prevents us to create a field in uart_port (uart8250_port?) where
we put the uart_port_name() for future use as long as uart_port is
alive?
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH] serial: 8250: 8250_core: Fix irq name for 8250 serial irq
@ 2017-03-16 20:58 ` Andy Shevchenko
0 siblings, 0 replies; 24+ messages in thread
From: Andy Shevchenko @ 2017-03-16 20:58 UTC (permalink / raw)
To: Robin Murphy
Cc: Jisheng Zhang, Vignesh R, Greg Kroah-Hartman,
Russell King - ARM Linux, linux-kernel, linux-serial, Jiri Slaby,
linux-arm Mailing List
On Thu, Mar 16, 2017 at 4:55 PM, Robin Murphy <robin.murphy@arm.com> wrote:
> On 16/03/17 13:36, Russell King - ARM Linux wrote:
>> On Thu, Mar 16, 2017 at 05:56:53PM +0530, Vignesh R wrote:
>>> Using dev_name() as irq name during request_irq() might be misleading in
>>> case of serial over PCI. Therefore use a better alternative name for
>>> identifying serial port irqs as "serial" appended with serial_index of
>>> the port. This ensures that "serial" string is always present in irq
>>> name while port index will help in distinguishing b/w different ports.
>>
>> Wouldn't it be better to use the device name (iow, ttySx) rather than
>> "serialx" ?
>>
>> Maybe a helper function in serial_core.c to format the device name into
>> a supplied string, which can be re-used elsewhere, eg, uart_report_port()
>> and uart_suspend_port(). IOW:
>>
>> const char *uart_port_name(char *buf, size_t n, struct uart_driver *drv,
>> struct uart_port *port)
>> {
>> snprintf(buf, n, "%s%d", drv->dev_name,
>> drv->tty_driver->name_base + port->line);
>>
>> return buf;
>> }
>>
>> which means you can do this:
>>
>> char name[16];
>>
>> request_irq(..., uart_port_name(name, sizeof(name), driver, port), ...)
>>
>> which also avoids the allocation.
>
> ...and makes 'cat /proc/interrupts' particularly fun later:
>
> 8: 0 GICv2 72 Level � �h ����V!
>
> Unless a suitably long-lived string already exists somewhere else in the
> serial core, the allocation is unavoidable, although kasprintf() (or its
> devm_ variant) might make matters a little simpler.
What prevents us to create a field in uart_port (uart8250_port?) where
we put the uart_port_name() for future use as long as uart_port is
alive?
--
With Best Regards,
Andy Shevchenko
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 24+ messages in thread
* [PATCH] serial: 8250: 8250_core: Fix irq name for 8250 serial irq
@ 2017-03-16 20:58 ` Andy Shevchenko
0 siblings, 0 replies; 24+ messages in thread
From: Andy Shevchenko @ 2017-03-16 20:58 UTC (permalink / raw)
To: linux-arm-kernel
On Thu, Mar 16, 2017 at 4:55 PM, Robin Murphy <robin.murphy@arm.com> wrote:
> On 16/03/17 13:36, Russell King - ARM Linux wrote:
>> On Thu, Mar 16, 2017 at 05:56:53PM +0530, Vignesh R wrote:
>>> Using dev_name() as irq name during request_irq() might be misleading in
>>> case of serial over PCI. Therefore use a better alternative name for
>>> identifying serial port irqs as "serial" appended with serial_index of
>>> the port. This ensures that "serial" string is always present in irq
>>> name while port index will help in distinguishing b/w different ports.
>>
>> Wouldn't it be better to use the device name (iow, ttySx) rather than
>> "serialx" ?
>>
>> Maybe a helper function in serial_core.c to format the device name into
>> a supplied string, which can be re-used elsewhere, eg, uart_report_port()
>> and uart_suspend_port(). IOW:
>>
>> const char *uart_port_name(char *buf, size_t n, struct uart_driver *drv,
>> struct uart_port *port)
>> {
>> snprintf(buf, n, "%s%d", drv->dev_name,
>> drv->tty_driver->name_base + port->line);
>>
>> return buf;
>> }
>>
>> which means you can do this:
>>
>> char name[16];
>>
>> request_irq(..., uart_port_name(name, sizeof(name), driver, port), ...)
>>
>> which also avoids the allocation.
>
> ...and makes 'cat /proc/interrupts' particularly fun later:
>
> 8: 0 GICv2 72 Level ? ?h ????V!
>
> Unless a suitably long-lived string already exists somewhere else in the
> serial core, the allocation is unavoidable, although kasprintf() (or its
> devm_ variant) might make matters a little simpler.
What prevents us to create a field in uart_port (uart8250_port?) where
we put the uart_port_name() for future use as long as uart_port is
alive?
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH] serial: 8250: 8250_core: Fix irq name for 8250 serial irq
2017-03-16 12:26 ` Vignesh R
(?)
@ 2017-03-16 21:46 ` Arnd Bergmann
-1 siblings, 0 replies; 24+ messages in thread
From: Arnd Bergmann @ 2017-03-16 21:46 UTC (permalink / raw)
To: linux-arm-kernel
Cc: Vignesh R, Greg Kroah-Hartman, Jisheng Zhang, linux-kernel,
Andy Shevchenko, linux-serial, Jiri Slaby
On Thursday, March 16, 2017 5:56:53 PM CET Vignesh R wrote:
> Using dev_name() as irq name during request_irq() might be misleading in
> case of serial over PCI. Therefore use a better alternative name for
> identifying serial port irqs as "serial" appended with serial_index of
> the port. This ensures that "serial" string is always present in irq
> name while port index will help in distinguishing b/w different ports.
>
> Signed-off-by: Vignesh R <vigneshr@ti.com>
> ---
>
> Based on top of tty-next.
>
> drivers/tty/serial/8250/8250_core.c | 10 +++++++++-
> 1 file changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/tty/serial/8250/8250_core.c b/drivers/tty/serial/8250/8250_core.c
> index f83b69f30987..78bf621d6827 100644
> --- a/drivers/tty/serial/8250/8250_core.c
> +++ b/drivers/tty/serial/8250/8250_core.c
> @@ -213,12 +213,20 @@ static int serial_link_irq_chain(struct uart_8250_port *up)
>
> ret = 0;
> } else {
> + char *irqname = kmalloc(20, GFP_KERNEL);
> + if (!irqname) {
> + spin_unlock_irq(&i->lock);
> + return -ENOMEM;
> + }
> + snprintf(irqname, 20,
> + "serial%d", serial_index(&up->port));
kasprintf()?
Also, you need to free the memory after free_irq().
Arnd
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH] serial: 8250: 8250_core: Fix irq name for 8250 serial irq
@ 2017-03-16 21:46 ` Arnd Bergmann
0 siblings, 0 replies; 24+ messages in thread
From: Arnd Bergmann @ 2017-03-16 21:46 UTC (permalink / raw)
To: linux-arm-kernel
Cc: Jisheng Zhang, Vignesh R, Greg Kroah-Hartman, linux-kernel,
Andy Shevchenko, linux-serial, Jiri Slaby
On Thursday, March 16, 2017 5:56:53 PM CET Vignesh R wrote:
> Using dev_name() as irq name during request_irq() might be misleading in
> case of serial over PCI. Therefore use a better alternative name for
> identifying serial port irqs as "serial" appended with serial_index of
> the port. This ensures that "serial" string is always present in irq
> name while port index will help in distinguishing b/w different ports.
>
> Signed-off-by: Vignesh R <vigneshr@ti.com>
> ---
>
> Based on top of tty-next.
>
> drivers/tty/serial/8250/8250_core.c | 10 +++++++++-
> 1 file changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/tty/serial/8250/8250_core.c b/drivers/tty/serial/8250/8250_core.c
> index f83b69f30987..78bf621d6827 100644
> --- a/drivers/tty/serial/8250/8250_core.c
> +++ b/drivers/tty/serial/8250/8250_core.c
> @@ -213,12 +213,20 @@ static int serial_link_irq_chain(struct uart_8250_port *up)
>
> ret = 0;
> } else {
> + char *irqname = kmalloc(20, GFP_KERNEL);
> + if (!irqname) {
> + spin_unlock_irq(&i->lock);
> + return -ENOMEM;
> + }
> + snprintf(irqname, 20,
> + "serial%d", serial_index(&up->port));
kasprintf()?
Also, you need to free the memory after free_irq().
Arnd
^ permalink raw reply [flat|nested] 24+ messages in thread
* [PATCH] serial: 8250: 8250_core: Fix irq name for 8250 serial irq
@ 2017-03-16 21:46 ` Arnd Bergmann
0 siblings, 0 replies; 24+ messages in thread
From: Arnd Bergmann @ 2017-03-16 21:46 UTC (permalink / raw)
To: linux-arm-kernel
On Thursday, March 16, 2017 5:56:53 PM CET Vignesh R wrote:
> Using dev_name() as irq name during request_irq() might be misleading in
> case of serial over PCI. Therefore use a better alternative name for
> identifying serial port irqs as "serial" appended with serial_index of
> the port. This ensures that "serial" string is always present in irq
> name while port index will help in distinguishing b/w different ports.
>
> Signed-off-by: Vignesh R <vigneshr@ti.com>
> ---
>
> Based on top of tty-next.
>
> drivers/tty/serial/8250/8250_core.c | 10 +++++++++-
> 1 file changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/tty/serial/8250/8250_core.c b/drivers/tty/serial/8250/8250_core.c
> index f83b69f30987..78bf621d6827 100644
> --- a/drivers/tty/serial/8250/8250_core.c
> +++ b/drivers/tty/serial/8250/8250_core.c
> @@ -213,12 +213,20 @@ static int serial_link_irq_chain(struct uart_8250_port *up)
>
> ret = 0;
> } else {
> + char *irqname = kmalloc(20, GFP_KERNEL);
> + if (!irqname) {
> + spin_unlock_irq(&i->lock);
> + return -ENOMEM;
> + }
> + snprintf(irqname, 20,
> + "serial%d", serial_index(&up->port));
kasprintf()?
Also, you need to free the memory after free_irq().
Arnd
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH] serial: 8250: 8250_core: Fix irq name for 8250 serial irq
2017-03-16 20:58 ` Andy Shevchenko
(?)
@ 2017-03-20 12:24 ` Vignesh R
-1 siblings, 0 replies; 24+ messages in thread
From: Vignesh R @ 2017-03-20 12:24 UTC (permalink / raw)
To: Andy Shevchenko, Russell King - ARM Linux
Cc: Robin Murphy, Jisheng Zhang, Greg Kroah-Hartman, linux-kernel,
linux-serial, Jiri Slaby, linux-arm Mailing List
On Friday 17 March 2017 02:28 AM, Andy Shevchenko wrote:
> On Thu, Mar 16, 2017 at 4:55 PM, Robin Murphy <robin.murphy@arm.com> wrote:
>> On 16/03/17 13:36, Russell King - ARM Linux wrote:
>>> On Thu, Mar 16, 2017 at 05:56:53PM +0530, Vignesh R wrote:
>>>> Using dev_name() as irq name during request_irq() might be misleading in
>>>> case of serial over PCI. Therefore use a better alternative name for
>>>> identifying serial port irqs as "serial" appended with serial_index of
>>>> the port. This ensures that "serial" string is always present in irq
>>>> name while port index will help in distinguishing b/w different ports.
>>>
>>> Wouldn't it be better to use the device name (iow, ttySx) rather than
>>> "serialx" ?
>>>
>>> Maybe a helper function in serial_core.c to format the device name into
>>> a supplied string, which can be re-used elsewhere, eg, uart_report_port()
>>> and uart_suspend_port(). IOW:
>>>
>>> const char *uart_port_name(char *buf, size_t n, struct uart_driver *drv,
>>> struct uart_port *port)
>>> {
>>> snprintf(buf, n, "%s%d", drv->dev_name,
>>> drv->tty_driver->name_base + port->line);
>>>
>>> return buf;
>>> }
>>>
>>> which means you can do this:
>>>
>>> char name[16];
>>>
>>> request_irq(..., uart_port_name(name, sizeof(name), driver, port), ...)
>>>
>>> which also avoids the allocation.
>>
>> ...and makes 'cat /proc/interrupts' particularly fun later:
>>
>> 8: 0 GICv2 72 Level � �h ����V!
>>
>> Unless a suitably long-lived string already exists somewhere else in the
>> serial core, the allocation is unavoidable, although kasprintf() (or its
>> devm_ variant) might make matters a little simpler.
>
> What prevents us to create a field in uart_port (uart8250_port?) where
> we put the uart_port_name() for future use as long as uart_port is
> alive?
>
Thanks for the suggestions. I will explore adding a field to uart_port
struct and provide a corresponding helper function uart_port_name() and
come up with a patch.
--
Regards
Vignesh
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH] serial: 8250: 8250_core: Fix irq name for 8250 serial irq
@ 2017-03-20 12:24 ` Vignesh R
0 siblings, 0 replies; 24+ messages in thread
From: Vignesh R @ 2017-03-20 12:24 UTC (permalink / raw)
To: Andy Shevchenko, Russell King - ARM Linux
Cc: Jisheng Zhang, Greg Kroah-Hartman, linux-kernel, linux-serial,
Jiri Slaby, Robin Murphy, linux-arm Mailing List
On Friday 17 March 2017 02:28 AM, Andy Shevchenko wrote:
> On Thu, Mar 16, 2017 at 4:55 PM, Robin Murphy <robin.murphy@arm.com> wrote:
>> On 16/03/17 13:36, Russell King - ARM Linux wrote:
>>> On Thu, Mar 16, 2017 at 05:56:53PM +0530, Vignesh R wrote:
>>>> Using dev_name() as irq name during request_irq() might be misleading in
>>>> case of serial over PCI. Therefore use a better alternative name for
>>>> identifying serial port irqs as "serial" appended with serial_index of
>>>> the port. This ensures that "serial" string is always present in irq
>>>> name while port index will help in distinguishing b/w different ports.
>>>
>>> Wouldn't it be better to use the device name (iow, ttySx) rather than
>>> "serialx" ?
>>>
>>> Maybe a helper function in serial_core.c to format the device name into
>>> a supplied string, which can be re-used elsewhere, eg, uart_report_port()
>>> and uart_suspend_port(). IOW:
>>>
>>> const char *uart_port_name(char *buf, size_t n, struct uart_driver *drv,
>>> struct uart_port *port)
>>> {
>>> snprintf(buf, n, "%s%d", drv->dev_name,
>>> drv->tty_driver->name_base + port->line);
>>>
>>> return buf;
>>> }
>>>
>>> which means you can do this:
>>>
>>> char name[16];
>>>
>>> request_irq(..., uart_port_name(name, sizeof(name), driver, port), ...)
>>>
>>> which also avoids the allocation.
>>
>> ...and makes 'cat /proc/interrupts' particularly fun later:
>>
>> 8: 0 GICv2 72 Level � �h ����V!
>>
>> Unless a suitably long-lived string already exists somewhere else in the
>> serial core, the allocation is unavoidable, although kasprintf() (or its
>> devm_ variant) might make matters a little simpler.
>
> What prevents us to create a field in uart_port (uart8250_port?) where
> we put the uart_port_name() for future use as long as uart_port is
> alive?
>
Thanks for the suggestions. I will explore adding a field to uart_port
struct and provide a corresponding helper function uart_port_name() and
come up with a patch.
--
Regards
Vignesh
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 24+ messages in thread
* [PATCH] serial: 8250: 8250_core: Fix irq name for 8250 serial irq
@ 2017-03-20 12:24 ` Vignesh R
0 siblings, 0 replies; 24+ messages in thread
From: Vignesh R @ 2017-03-20 12:24 UTC (permalink / raw)
To: linux-arm-kernel
On Friday 17 March 2017 02:28 AM, Andy Shevchenko wrote:
> On Thu, Mar 16, 2017 at 4:55 PM, Robin Murphy <robin.murphy@arm.com> wrote:
>> On 16/03/17 13:36, Russell King - ARM Linux wrote:
>>> On Thu, Mar 16, 2017 at 05:56:53PM +0530, Vignesh R wrote:
>>>> Using dev_name() as irq name during request_irq() might be misleading in
>>>> case of serial over PCI. Therefore use a better alternative name for
>>>> identifying serial port irqs as "serial" appended with serial_index of
>>>> the port. This ensures that "serial" string is always present in irq
>>>> name while port index will help in distinguishing b/w different ports.
>>>
>>> Wouldn't it be better to use the device name (iow, ttySx) rather than
>>> "serialx" ?
>>>
>>> Maybe a helper function in serial_core.c to format the device name into
>>> a supplied string, which can be re-used elsewhere, eg, uart_report_port()
>>> and uart_suspend_port(). IOW:
>>>
>>> const char *uart_port_name(char *buf, size_t n, struct uart_driver *drv,
>>> struct uart_port *port)
>>> {
>>> snprintf(buf, n, "%s%d", drv->dev_name,
>>> drv->tty_driver->name_base + port->line);
>>>
>>> return buf;
>>> }
>>>
>>> which means you can do this:
>>>
>>> char name[16];
>>>
>>> request_irq(..., uart_port_name(name, sizeof(name), driver, port), ...)
>>>
>>> which also avoids the allocation.
>>
>> ...and makes 'cat /proc/interrupts' particularly fun later:
>>
>> 8: 0 GICv2 72 Level ? ?h ????V!
>>
>> Unless a suitably long-lived string already exists somewhere else in the
>> serial core, the allocation is unavoidable, although kasprintf() (or its
>> devm_ variant) might make matters a little simpler.
>
> What prevents us to create a field in uart_port (uart8250_port?) where
> we put the uart_port_name() for future use as long as uart_port is
> alive?
>
Thanks for the suggestions. I will explore adding a field to uart_port
struct and provide a corresponding helper function uart_port_name() and
come up with a patch.
--
Regards
Vignesh
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH] serial: 8250: 8250_core: Fix irq name for 8250 serial irq
2017-03-16 20:58 ` Andy Shevchenko
(?)
@ 2017-03-20 12:32 ` Russell King - ARM Linux
-1 siblings, 0 replies; 24+ messages in thread
From: Russell King - ARM Linux @ 2017-03-20 12:32 UTC (permalink / raw)
To: Andy Shevchenko
Cc: Robin Murphy, Jisheng Zhang, Vignesh R, Greg Kroah-Hartman,
linux-kernel, linux-serial, Jiri Slaby, linux-arm Mailing List
On Thu, Mar 16, 2017 at 10:58:54PM +0200, Andy Shevchenko wrote:
> On Thu, Mar 16, 2017 at 4:55 PM, Robin Murphy <robin.murphy@arm.com> wrote:
> > On 16/03/17 13:36, Russell King - ARM Linux wrote:
> >> On Thu, Mar 16, 2017 at 05:56:53PM +0530, Vignesh R wrote:
> >>> Using dev_name() as irq name during request_irq() might be misleading in
> >>> case of serial over PCI. Therefore use a better alternative name for
> >>> identifying serial port irqs as "serial" appended with serial_index of
> >>> the port. This ensures that "serial" string is always present in irq
> >>> name while port index will help in distinguishing b/w different ports.
> >>
> >> Wouldn't it be better to use the device name (iow, ttySx) rather than
> >> "serialx" ?
> >>
> >> Maybe a helper function in serial_core.c to format the device name into
> >> a supplied string, which can be re-used elsewhere, eg, uart_report_port()
> >> and uart_suspend_port(). IOW:
> >>
> >> const char *uart_port_name(char *buf, size_t n, struct uart_driver *drv,
> >> struct uart_port *port)
> >> {
> >> snprintf(buf, n, "%s%d", drv->dev_name,
> >> drv->tty_driver->name_base + port->line);
> >>
> >> return buf;
> >> }
> >>
> >> which means you can do this:
> >>
> >> char name[16];
> >>
> >> request_irq(..., uart_port_name(name, sizeof(name), driver, port), ...)
> >>
> >> which also avoids the allocation.
> >
> > ...and makes 'cat /proc/interrupts' particularly fun later:
> >
> > 8: 0 GICv2 72 Level � �h ����V!
> >
> > Unless a suitably long-lived string already exists somewhere else in the
> > serial core, the allocation is unavoidable, although kasprintf() (or its
> > devm_ variant) might make matters a little simpler.
>
> What prevents us to create a field in uart_port (uart8250_port?) where
> we put the uart_port_name() for future use as long as uart_port is
> alive?
Probably a good idea - I didn't check whether request_irq() just uses
the pointer to the string or takes a copy of the string (I should've
done before making the suggestion...)
--
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up
according to speedtest.net.
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH] serial: 8250: 8250_core: Fix irq name for 8250 serial irq
@ 2017-03-20 12:32 ` Russell King - ARM Linux
0 siblings, 0 replies; 24+ messages in thread
From: Russell King - ARM Linux @ 2017-03-20 12:32 UTC (permalink / raw)
To: Andy Shevchenko
Cc: Jisheng Zhang, Vignesh R, Greg Kroah-Hartman, linux-kernel,
linux-serial, Jiri Slaby, Robin Murphy, linux-arm Mailing List
On Thu, Mar 16, 2017 at 10:58:54PM +0200, Andy Shevchenko wrote:
> On Thu, Mar 16, 2017 at 4:55 PM, Robin Murphy <robin.murphy@arm.com> wrote:
> > On 16/03/17 13:36, Russell King - ARM Linux wrote:
> >> On Thu, Mar 16, 2017 at 05:56:53PM +0530, Vignesh R wrote:
> >>> Using dev_name() as irq name during request_irq() might be misleading in
> >>> case of serial over PCI. Therefore use a better alternative name for
> >>> identifying serial port irqs as "serial" appended with serial_index of
> >>> the port. This ensures that "serial" string is always present in irq
> >>> name while port index will help in distinguishing b/w different ports.
> >>
> >> Wouldn't it be better to use the device name (iow, ttySx) rather than
> >> "serialx" ?
> >>
> >> Maybe a helper function in serial_core.c to format the device name into
> >> a supplied string, which can be re-used elsewhere, eg, uart_report_port()
> >> and uart_suspend_port(). IOW:
> >>
> >> const char *uart_port_name(char *buf, size_t n, struct uart_driver *drv,
> >> struct uart_port *port)
> >> {
> >> snprintf(buf, n, "%s%d", drv->dev_name,
> >> drv->tty_driver->name_base + port->line);
> >>
> >> return buf;
> >> }
> >>
> >> which means you can do this:
> >>
> >> char name[16];
> >>
> >> request_irq(..., uart_port_name(name, sizeof(name), driver, port), ...)
> >>
> >> which also avoids the allocation.
> >
> > ...and makes 'cat /proc/interrupts' particularly fun later:
> >
> > 8: 0 GICv2 72 Level � �h ����V!
> >
> > Unless a suitably long-lived string already exists somewhere else in the
> > serial core, the allocation is unavoidable, although kasprintf() (or its
> > devm_ variant) might make matters a little simpler.
>
> What prevents us to create a field in uart_port (uart8250_port?) where
> we put the uart_port_name() for future use as long as uart_port is
> alive?
Probably a good idea - I didn't check whether request_irq() just uses
the pointer to the string or takes a copy of the string (I should've
done before making the suggestion...)
--
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up
according to speedtest.net.
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 24+ messages in thread
* [PATCH] serial: 8250: 8250_core: Fix irq name for 8250 serial irq
@ 2017-03-20 12:32 ` Russell King - ARM Linux
0 siblings, 0 replies; 24+ messages in thread
From: Russell King - ARM Linux @ 2017-03-20 12:32 UTC (permalink / raw)
To: linux-arm-kernel
On Thu, Mar 16, 2017 at 10:58:54PM +0200, Andy Shevchenko wrote:
> On Thu, Mar 16, 2017 at 4:55 PM, Robin Murphy <robin.murphy@arm.com> wrote:
> > On 16/03/17 13:36, Russell King - ARM Linux wrote:
> >> On Thu, Mar 16, 2017 at 05:56:53PM +0530, Vignesh R wrote:
> >>> Using dev_name() as irq name during request_irq() might be misleading in
> >>> case of serial over PCI. Therefore use a better alternative name for
> >>> identifying serial port irqs as "serial" appended with serial_index of
> >>> the port. This ensures that "serial" string is always present in irq
> >>> name while port index will help in distinguishing b/w different ports.
> >>
> >> Wouldn't it be better to use the device name (iow, ttySx) rather than
> >> "serialx" ?
> >>
> >> Maybe a helper function in serial_core.c to format the device name into
> >> a supplied string, which can be re-used elsewhere, eg, uart_report_port()
> >> and uart_suspend_port(). IOW:
> >>
> >> const char *uart_port_name(char *buf, size_t n, struct uart_driver *drv,
> >> struct uart_port *port)
> >> {
> >> snprintf(buf, n, "%s%d", drv->dev_name,
> >> drv->tty_driver->name_base + port->line);
> >>
> >> return buf;
> >> }
> >>
> >> which means you can do this:
> >>
> >> char name[16];
> >>
> >> request_irq(..., uart_port_name(name, sizeof(name), driver, port), ...)
> >>
> >> which also avoids the allocation.
> >
> > ...and makes 'cat /proc/interrupts' particularly fun later:
> >
> > 8: 0 GICv2 72 Level ? ?h ????V!
> >
> > Unless a suitably long-lived string already exists somewhere else in the
> > serial core, the allocation is unavoidable, although kasprintf() (or its
> > devm_ variant) might make matters a little simpler.
>
> What prevents us to create a field in uart_port (uart8250_port?) where
> we put the uart_port_name() for future use as long as uart_port is
> alive?
Probably a good idea - I didn't check whether request_irq() just uses
the pointer to the string or takes a copy of the string (I should've
done before making the suggestion...)
--
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up
according to speedtest.net.
^ permalink raw reply [flat|nested] 24+ messages in thread
end of thread, other threads:[~2017-03-20 12:40 UTC | newest]
Thread overview: 24+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-03-16 12:26 [PATCH] serial: 8250: 8250_core: Fix irq name for 8250 serial irq Vignesh R
2017-03-16 12:26 ` Vignesh R
2017-03-16 12:26 ` Vignesh R
2017-03-16 12:46 ` Jiri Slaby
2017-03-16 12:46 ` Jiri Slaby
2017-03-16 12:54 ` Jiri Slaby
2017-03-16 12:54 ` Jiri Slaby
2017-03-16 13:36 ` Russell King - ARM Linux
2017-03-16 13:36 ` Russell King - ARM Linux
2017-03-16 14:55 ` Robin Murphy
2017-03-16 14:55 ` Robin Murphy
2017-03-16 14:55 ` Robin Murphy
2017-03-16 20:58 ` Andy Shevchenko
2017-03-16 20:58 ` Andy Shevchenko
2017-03-16 20:58 ` Andy Shevchenko
2017-03-20 12:24 ` Vignesh R
2017-03-20 12:24 ` Vignesh R
2017-03-20 12:24 ` Vignesh R
2017-03-20 12:32 ` Russell King - ARM Linux
2017-03-20 12:32 ` Russell King - ARM Linux
2017-03-20 12:32 ` Russell King - ARM Linux
2017-03-16 21:46 ` Arnd Bergmann
2017-03-16 21:46 ` Arnd Bergmann
2017-03-16 21:46 ` Arnd Bergmann
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.