2015-04-13 14:35:34

by Michal Simek

[permalink] [raw]
Subject: [PATCH] serial: of-serial: Remove device_type = "serial" registration

Do not probe all serial drivers by of_serial.c which are using
device_type = "serial"; property. Only drivers which have valid
compatible strings listed in the driver should be probed.

When PORT_UNKNOWN probe will fail anyway.

Signed-off-by: Michal Simek <[email protected]>
CC: <[email protected]>
---

drivers/tty/serial/of_serial.c | 1 -
1 file changed, 1 deletion(-)

diff --git a/drivers/tty/serial/of_serial.c b/drivers/tty/serial/of_serial.c
index 33fb94f78967..0a52c8b55a5f 100644
--- a/drivers/tty/serial/of_serial.c
+++ b/drivers/tty/serial/of_serial.c
@@ -344,7 +344,6 @@ static struct of_device_id of_platform_serial_table[] = {
{ .compatible = "ibm,qpace-nwp-serial",
.data = (void *)PORT_NWPSERIAL, },
#endif
- { .type = "serial", .data = (void *)PORT_UNKNOWN, },
{ /* end of list */ },
};

--
2.3.5


2015-04-13 15:50:25

by Peter Hurley

[permalink] [raw]
Subject: Re: [PATCH] serial: of-serial: Remove device_type = "serial" registration

[ + Arnd ]

Hi Michal,

On 04/13/2015 10:35 AM, Michal Simek wrote:
> Do not probe all serial drivers by of_serial.c which are using
> device_type = "serial"; property. Only drivers which have valid
> compatible strings listed in the driver should be probed.

What does this fix?
Is there some kind of probe problem you're trying to address?
Are you trying to silence the error message?

> When PORT_UNKNOWN probe will fail anyway.

Ok, but doesn't device_attach() just continue to try to match other
drivers on the platform bus?

Regards,
Peter Hurley

> Signed-off-by: Michal Simek <[email protected]>
> CC: <[email protected]>
> ---
>
> drivers/tty/serial/of_serial.c | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/drivers/tty/serial/of_serial.c b/drivers/tty/serial/of_serial.c
> index 33fb94f78967..0a52c8b55a5f 100644
> --- a/drivers/tty/serial/of_serial.c
> +++ b/drivers/tty/serial/of_serial.c
> @@ -344,7 +344,6 @@ static struct of_device_id of_platform_serial_table[] = {
> { .compatible = "ibm,qpace-nwp-serial",
> .data = (void *)PORT_NWPSERIAL, },
> #endif
> - { .type = "serial", .data = (void *)PORT_UNKNOWN, },
> { /* end of list */ },
> };
>
>

2015-04-13 17:00:52

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH] serial: of-serial: Remove device_type = "serial" registration

On Mon, Apr 13, 2015 at 04:35:27PM +0200, Michal Simek wrote:
> Do not probe all serial drivers by of_serial.c which are using
> device_type = "serial"; property. Only drivers which have valid
> compatible strings listed in the driver should be probed.

Why? This was added for some reason, what has changed since then?

greg k-h

2015-04-14 05:10:32

by Michal Simek

[permalink] [raw]
Subject: Re: [PATCH] serial: of-serial: Remove device_type = "serial" registration

Hi Greg,

On 04/13/2015 07:00 PM, Greg Kroah-Hartman wrote:
> On Mon, Apr 13, 2015 at 04:35:27PM +0200, Michal Simek wrote:
>> Do not probe all serial drivers by of_serial.c which are using
>> device_type = "serial"; property. Only drivers which have valid
>> compatible strings listed in the driver should be probed.
>
> Why? This was added for some reason, what has changed since then?

I was discussing this patch with Arnd over IRC.

This is what Arnd was saying yesterday.
"when I wrote that driver initially, the idea was that it would get used
as a stub to hook up all other serial drivers
but after that, the common code learned to create platform devices from DT"

and resolution from our discussion was to remove this line because make
no sense to probe all drivers which has device_type = "serial".
It was causing the problem on one system with xilinx_uartps and 16550a
IP where of_serial failed to register for xilinx_uartps and because of
irq_dispose_mapping removed irq_desc. Then when xilinx_uartps was asking
for irq with request_irq() it was returning EINVAL.

The first problem was that of_serial tried to bind driver because of
device_type = "serial"; and the second problem was in xilinx_uartps
driver by incorrectly using platform_get_resources() which doesn't
create irq mapping which is fixed by the second patch.

Thanks,
Michal

--
Michal Simek, Ing. (M.Eng), OpenPGP -> KeyID: FE3D1F91
w: http://www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel - Microblaze cpu - http://www.monstr.eu/fdt/
Maintainer of Linux kernel - Xilinx Zynq ARM architecture
Microblaze U-BOOT custodian and responsible for u-boot arm zynq platform



Attachments:
signature.asc (198.00 B)
OpenPGP digital signature

2015-04-14 05:12:24

by Michal Simek

[permalink] [raw]
Subject: Re: [PATCH] serial: of-serial: Remove device_type = "serial" registration

On 04/13/2015 05:50 PM, Peter Hurley wrote:
> [ + Arnd ]
>
> Hi Michal,
>
> On 04/13/2015 10:35 AM, Michal Simek wrote:
>> Do not probe all serial drivers by of_serial.c which are using
>> device_type = "serial"; property. Only drivers which have valid
>> compatible strings listed in the driver should be probed.
>
> What does this fix?
> Is there some kind of probe problem you're trying to address?
> Are you trying to silence the error message?
>
>> When PORT_UNKNOWN probe will fail anyway.
>
> Ok, but doesn't device_attach() just continue to try to match other
> drivers on the platform bus?


Please look at my response to Greg reply. Hope that explain it.

Thanks,
Michal








Attachments:
signature.asc (198.00 B)
OpenPGP digital signature

2015-04-14 07:38:56

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH] serial: of-serial: Remove device_type = "serial" registration

On Tue, Apr 14, 2015 at 07:10:07AM +0200, Michal Simek wrote:
> Hi Greg,
>
> On 04/13/2015 07:00 PM, Greg Kroah-Hartman wrote:
> > On Mon, Apr 13, 2015 at 04:35:27PM +0200, Michal Simek wrote:
> >> Do not probe all serial drivers by of_serial.c which are using
> >> device_type = "serial"; property. Only drivers which have valid
> >> compatible strings listed in the driver should be probed.
> >
> > Why? This was added for some reason, what has changed since then?
>
> I was discussing this patch with Arnd over IRC.
>
> This is what Arnd was saying yesterday.
> "when I wrote that driver initially, the idea was that it would get used
> as a stub to hook up all other serial drivers
> but after that, the common code learned to create platform devices from DT"
>
> and resolution from our discussion was to remove this line because make
> no sense to probe all drivers which has device_type = "serial".
> It was causing the problem on one system with xilinx_uartps and 16550a
> IP where of_serial failed to register for xilinx_uartps and because of
> irq_dispose_mapping removed irq_desc. Then when xilinx_uartps was asking
> for irq with request_irq() it was returning EINVAL.
>
> The first problem was that of_serial tried to bind driver because of
> device_type = "serial"; and the second problem was in xilinx_uartps
> driver by incorrectly using platform_get_resources() which doesn't
> create irq mapping which is fixed by the second patch.

All of this should have been in the patch description, as we have no
idea what your irc conversation was.

Please fix up and resend.

thanks,

greg k-h

2015-04-14 10:04:33

by Michal Simek

[permalink] [raw]
Subject: Re: [PATCH] serial: of-serial: Remove device_type = "serial" registration

On 04/14/2015 09:38 AM, Greg Kroah-Hartman wrote:
> On Tue, Apr 14, 2015 at 07:10:07AM +0200, Michal Simek wrote:
>> Hi Greg,
>>
>> On 04/13/2015 07:00 PM, Greg Kroah-Hartman wrote:
>>> On Mon, Apr 13, 2015 at 04:35:27PM +0200, Michal Simek wrote:
>>>> Do not probe all serial drivers by of_serial.c which are using
>>>> device_type = "serial"; property. Only drivers which have valid
>>>> compatible strings listed in the driver should be probed.
>>>
>>> Why? This was added for some reason, what has changed since then?
>>
>> I was discussing this patch with Arnd over IRC.
>>
>> This is what Arnd was saying yesterday.
>> "when I wrote that driver initially, the idea was that it would get used
>> as a stub to hook up all other serial drivers
>> but after that, the common code learned to create platform devices from DT"
>>
>> and resolution from our discussion was to remove this line because make
>> no sense to probe all drivers which has device_type = "serial".
>> It was causing the problem on one system with xilinx_uartps and 16550a
>> IP where of_serial failed to register for xilinx_uartps and because of
>> irq_dispose_mapping removed irq_desc. Then when xilinx_uartps was asking
>> for irq with request_irq() it was returning EINVAL.
>>
>> The first problem was that of_serial tried to bind driver because of
>> device_type = "serial"; and the second problem was in xilinx_uartps
>> driver by incorrectly using platform_get_resources() which doesn't
>> create irq mapping which is fixed by the second patch.
>
> All of this should have been in the patch description, as we have no
> idea what your irc conversation was.
>
> Please fix up and resend.

I have extend patch description and sent v2.

Thanks,
Michal