* [PATCH] serial: mxs-auart: put the device when exit or error
2012-09-07 2:43 ` Shawn Guo
@ 2012-09-07 2:33 ` Huang Shijie
2012-09-07 3:14 ` Shawn Guo
2012-09-10 23:00 ` Greg KH
2012-09-07 2:48 ` [PATCH 2/2] serial: mxs-auart: put the device in mxs_auart_probe() Huang Shijie
1 sibling, 2 replies; 9+ messages in thread
From: Huang Shijie @ 2012-09-07 2:33 UTC (permalink / raw)
To: gregkh
Cc: alan, linux-serial, linux-arm-kernel, linux-kernel, shawn.guo,
Huang Shijie
We call the get_device() in the mxs_auart_probe().
For the balance of the reference count, we should put the
device in the mxs_auart_remove() or in the error path of
probe.
Signed-off-by: Huang Shijie <b32955@freescale.com>
---
drivers/tty/serial/mxs-auart.c | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/drivers/tty/serial/mxs-auart.c b/drivers/tty/serial/mxs-auart.c
index 3a667ee..203e512 100644
--- a/drivers/tty/serial/mxs-auart.c
+++ b/drivers/tty/serial/mxs-auart.c
@@ -781,6 +781,7 @@ out_free_irq:
auart_port[pdev->id] = NULL;
free_irq(s->irq, s);
out_free_clk:
+ put_device(s->dev);
clk_put(s->clk);
out_free:
kfree(s);
@@ -796,6 +797,7 @@ static int __devexit mxs_auart_remove(struct platform_device *pdev)
auart_port[pdev->id] = NULL;
+ put_device(s->dev);
clk_put(s->clk);
free_irq(s->irq, s);
kfree(s);
--
1.7.0.4
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 1/2] serial: mxs-auart: fix the wrong setting order
@ 2012-09-07 2:38 Huang Shijie
2012-09-07 2:38 ` [PATCH 2/2] serial: mxs-auart: put the device in mxs_auart_probe() Huang Shijie
2012-09-07 2:38 ` [PATCH 1/2] serial: mxs-auart: fix the wrong setting order Shawn Guo
0 siblings, 2 replies; 9+ messages in thread
From: Huang Shijie @ 2012-09-07 2:38 UTC (permalink / raw)
To: gregkh
Cc: alan, linux-serial, linux-kernel, shawn.guo, linux-arm-kernel,
Huang Shijie
After set the AUART_CTRL0_CLKGATE, the UART will gate all the clocks off.
So the following line will not take effect.
................................................................
writel(AUART_INTR_RXIEN | AUART_INTR_RTIEN | AUART_INTR_CTSMIEN,
u->membase + AUART_INTR_CLR);
................................................................
To fix this issue, the patch moves this gate-off line to
the end of setting registers.
Signed-off-by: Huang Shijie <shijie8@gmail.com>
---
drivers/tty/serial/mxs-auart.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/tty/serial/mxs-auart.c b/drivers/tty/serial/mxs-auart.c
index dafeef2..ea5f888 100644
--- a/drivers/tty/serial/mxs-auart.c
+++ b/drivers/tty/serial/mxs-auart.c
@@ -457,11 +457,11 @@ static void mxs_auart_shutdown(struct uart_port *u)
writel(AUART_CTRL2_UARTEN, u->membase + AUART_CTRL2_CLR);
- writel(AUART_CTRL0_CLKGATE, u->membase + AUART_CTRL0_SET);
-
writel(AUART_INTR_RXIEN | AUART_INTR_RTIEN | AUART_INTR_CTSMIEN,
u->membase + AUART_INTR_CLR);
+ writel(AUART_CTRL0_CLKGATE, u->membase + AUART_CTRL0_SET);
+
clk_disable_unprepare(s->clk);
}
--
1.7.4.4
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 2/2] serial: mxs-auart: put the device in mxs_auart_probe()
2012-09-07 2:38 [PATCH 1/2] serial: mxs-auart: fix the wrong setting order Huang Shijie
@ 2012-09-07 2:38 ` Huang Shijie
2012-09-07 2:43 ` Shawn Guo
2012-09-07 2:38 ` [PATCH 1/2] serial: mxs-auart: fix the wrong setting order Shawn Guo
1 sibling, 1 reply; 9+ messages in thread
From: Huang Shijie @ 2012-09-07 2:38 UTC (permalink / raw)
To: gregkh
Cc: alan, linux-serial, linux-kernel, shawn.guo, linux-arm-kernel,
Huang Shijie
We call the get_device() in the mxs_auart_probe().
For the balance of the reference count, we should put the
device in the mxs_auart_remove().
Signed-off-by: Huang Shijie <shijie8@gmail.com>
---
drivers/tty/serial/mxs-auart.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/drivers/tty/serial/mxs-auart.c b/drivers/tty/serial/mxs-auart.c
index ea5f888..6898413 100644
--- a/drivers/tty/serial/mxs-auart.c
+++ b/drivers/tty/serial/mxs-auart.c
@@ -796,6 +796,7 @@ static int __devexit mxs_auart_remove(struct platform_device *pdev)
auart_port[pdev->id] = NULL;
+ put_device(s->dev);
clk_put(s->clk);
free_irq(s->irq, s);
kfree(s);
--
1.7.4.4
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 1/2] serial: mxs-auart: fix the wrong setting order
2012-09-07 2:38 [PATCH 1/2] serial: mxs-auart: fix the wrong setting order Huang Shijie
2012-09-07 2:38 ` [PATCH 2/2] serial: mxs-auart: put the device in mxs_auart_probe() Huang Shijie
@ 2012-09-07 2:38 ` Shawn Guo
2012-09-07 2:43 ` Huang Shijie
1 sibling, 1 reply; 9+ messages in thread
From: Shawn Guo @ 2012-09-07 2:38 UTC (permalink / raw)
To: Huang Shijie; +Cc: gregkh, alan, linux-serial, linux-kernel, linux-arm-kernel
On Thu, Sep 06, 2012 at 10:38:40PM -0400, Huang Shijie wrote:
> After set the AUART_CTRL0_CLKGATE, the UART will gate all the clocks off.
> So the following line will not take effect.
> ................................................................
> writel(AUART_INTR_RXIEN | AUART_INTR_RTIEN | AUART_INTR_CTSMIEN,
> u->membase + AUART_INTR_CLR);
> ................................................................
>
> To fix this issue, the patch moves this gate-off line to
> the end of setting registers.
>
> Signed-off-by: Huang Shijie <shijie8@gmail.com>
Acked-by: Shawn Guo <shawn.guo@linaro.org>
Are you experiencing any user visible problem with this bug?
Regards,
Shawn
> ---
> drivers/tty/serial/mxs-auart.c | 4 ++--
> 1 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/tty/serial/mxs-auart.c b/drivers/tty/serial/mxs-auart.c
> index dafeef2..ea5f888 100644
> --- a/drivers/tty/serial/mxs-auart.c
> +++ b/drivers/tty/serial/mxs-auart.c
> @@ -457,11 +457,11 @@ static void mxs_auart_shutdown(struct uart_port *u)
>
> writel(AUART_CTRL2_UARTEN, u->membase + AUART_CTRL2_CLR);
>
> - writel(AUART_CTRL0_CLKGATE, u->membase + AUART_CTRL0_SET);
> -
> writel(AUART_INTR_RXIEN | AUART_INTR_RTIEN | AUART_INTR_CTSMIEN,
> u->membase + AUART_INTR_CLR);
>
> + writel(AUART_CTRL0_CLKGATE, u->membase + AUART_CTRL0_SET);
> +
> clk_disable_unprepare(s->clk);
> }
>
> --
> 1.7.4.4
>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/2] serial: mxs-auart: put the device in mxs_auart_probe()
2012-09-07 2:38 ` [PATCH 2/2] serial: mxs-auart: put the device in mxs_auart_probe() Huang Shijie
@ 2012-09-07 2:43 ` Shawn Guo
2012-09-07 2:33 ` [PATCH] serial: mxs-auart: put the device when exit or error Huang Shijie
2012-09-07 2:48 ` [PATCH 2/2] serial: mxs-auart: put the device in mxs_auart_probe() Huang Shijie
0 siblings, 2 replies; 9+ messages in thread
From: Shawn Guo @ 2012-09-07 2:43 UTC (permalink / raw)
To: Huang Shijie; +Cc: gregkh, alan, linux-serial, linux-kernel, linux-arm-kernel
On Thu, Sep 06, 2012 at 10:38:41PM -0400, Huang Shijie wrote:
> We call the get_device() in the mxs_auart_probe().
> For the balance of the reference count, we should put the
> device in the mxs_auart_remove().
>
> Signed-off-by: Huang Shijie <shijie8@gmail.com>
> ---
> drivers/tty/serial/mxs-auart.c | 1 +
> 1 files changed, 1 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/tty/serial/mxs-auart.c b/drivers/tty/serial/mxs-auart.c
> index ea5f888..6898413 100644
> --- a/drivers/tty/serial/mxs-auart.c
> +++ b/drivers/tty/serial/mxs-auart.c
> @@ -796,6 +796,7 @@ static int __devexit mxs_auart_remove(struct platform_device *pdev)
>
> auart_port[pdev->id] = NULL;
>
> + put_device(s->dev);
> clk_put(s->clk);
> free_irq(s->irq, s);
> kfree(s);
So the error path of probe needs function fixing too, right?
--
Regards,
Shawn
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/2] serial: mxs-auart: fix the wrong setting order
2012-09-07 2:38 ` [PATCH 1/2] serial: mxs-auart: fix the wrong setting order Shawn Guo
@ 2012-09-07 2:43 ` Huang Shijie
0 siblings, 0 replies; 9+ messages in thread
From: Huang Shijie @ 2012-09-07 2:43 UTC (permalink / raw)
To: Shawn Guo
Cc: Huang Shijie, gregkh, alan, linux-serial, linux-kernel, linux-arm-kernel
于 2012年09月07日 10:38, Shawn Guo 写道:
> On Thu, Sep 06, 2012 at 10:38:40PM -0400, Huang Shijie wrote:
>> After set the AUART_CTRL0_CLKGATE, the UART will gate all the clocks off.
>> So the following line will not take effect.
>> ................................................................
>> writel(AUART_INTR_RXIEN | AUART_INTR_RTIEN | AUART_INTR_CTSMIEN,
>> u->membase + AUART_INTR_CLR);
>> ................................................................
>>
>> To fix this issue, the patch moves this gate-off line to
>> the end of setting registers.
>>
>> Signed-off-by: Huang Shijie<shijie8@gmail.com>
> Acked-by: Shawn Guo<shawn.guo@linaro.org>
>
> Are you experiencing any user visible problem with this bug?
>
I do not experience any user problem.
I found this bug when i tried to add DMA support for MXS-AUART.
Best Regards
Huang Shijie
> Regards,
> Shawn
>
>> ---
>> drivers/tty/serial/mxs-auart.c | 4 ++--
>> 1 files changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/tty/serial/mxs-auart.c b/drivers/tty/serial/mxs-auart.c
>> index dafeef2..ea5f888 100644
>> --- a/drivers/tty/serial/mxs-auart.c
>> +++ b/drivers/tty/serial/mxs-auart.c
>> @@ -457,11 +457,11 @@ static void mxs_auart_shutdown(struct uart_port *u)
>>
>> writel(AUART_CTRL2_UARTEN, u->membase + AUART_CTRL2_CLR);
>>
>> - writel(AUART_CTRL0_CLKGATE, u->membase + AUART_CTRL0_SET);
>> -
>> writel(AUART_INTR_RXIEN | AUART_INTR_RTIEN | AUART_INTR_CTSMIEN,
>> u->membase + AUART_INTR_CLR);
>>
>> + writel(AUART_CTRL0_CLKGATE, u->membase + AUART_CTRL0_SET);
>> +
>> clk_disable_unprepare(s->clk);
>> }
>>
>> --
>> 1.7.4.4
>>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-serial" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/2] serial: mxs-auart: put the device in mxs_auart_probe()
2012-09-07 2:43 ` Shawn Guo
2012-09-07 2:33 ` [PATCH] serial: mxs-auart: put the device when exit or error Huang Shijie
@ 2012-09-07 2:48 ` Huang Shijie
1 sibling, 0 replies; 9+ messages in thread
From: Huang Shijie @ 2012-09-07 2:48 UTC (permalink / raw)
To: Shawn Guo
Cc: Huang Shijie, gregkh, alan, linux-serial, linux-kernel, linux-arm-kernel
于 2012年09月07日 10:43, Shawn Guo 写道:
> On Thu, Sep 06, 2012 at 10:38:41PM -0400, Huang Shijie wrote:
>> We call the get_device() in the mxs_auart_probe().
>> For the balance of the reference count, we should put the
>> device in the mxs_auart_remove().
>>
>> Signed-off-by: Huang Shijie<shijie8@gmail.com>
>> ---
>> drivers/tty/serial/mxs-auart.c | 1 +
>> 1 files changed, 1 insertions(+), 0 deletions(-)
>>
>> diff --git a/drivers/tty/serial/mxs-auart.c b/drivers/tty/serial/mxs-auart.c
>> index ea5f888..6898413 100644
>> --- a/drivers/tty/serial/mxs-auart.c
>> +++ b/drivers/tty/serial/mxs-auart.c
>> @@ -796,6 +796,7 @@ static int __devexit mxs_auart_remove(struct platform_device *pdev)
>>
>> auart_port[pdev->id] = NULL;
>>
>> + put_device(s->dev);
>> clk_put(s->clk);
>> free_irq(s->irq, s);
>> kfree(s);
> So the error path of probe needs function fixing too, right?
>
OK.
Send out the new version right now.
Huang Shijie
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] serial: mxs-auart: put the device when exit or error
2012-09-07 2:33 ` [PATCH] serial: mxs-auart: put the device when exit or error Huang Shijie
@ 2012-09-07 3:14 ` Shawn Guo
2012-09-10 23:00 ` Greg KH
1 sibling, 0 replies; 9+ messages in thread
From: Shawn Guo @ 2012-09-07 3:14 UTC (permalink / raw)
To: Huang Shijie; +Cc: gregkh, alan, linux-serial, linux-arm-kernel, linux-kernel
On Fri, Sep 07, 2012 at 10:33:07AM +0800, Huang Shijie wrote:
> We call the get_device() in the mxs_auart_probe().
> For the balance of the reference count, we should put the
> device in the mxs_auart_remove() or in the error path of
> probe.
>
> Signed-off-by: Huang Shijie <b32955@freescale.com>
Acked-by: Shawn Guo <shawn.guo@linaro.org>
> ---
> drivers/tty/serial/mxs-auart.c | 2 ++
> 1 files changed, 2 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/tty/serial/mxs-auart.c b/drivers/tty/serial/mxs-auart.c
> index 3a667ee..203e512 100644
> --- a/drivers/tty/serial/mxs-auart.c
> +++ b/drivers/tty/serial/mxs-auart.c
> @@ -781,6 +781,7 @@ out_free_irq:
> auart_port[pdev->id] = NULL;
> free_irq(s->irq, s);
> out_free_clk:
> + put_device(s->dev);
> clk_put(s->clk);
> out_free:
> kfree(s);
> @@ -796,6 +797,7 @@ static int __devexit mxs_auart_remove(struct platform_device *pdev)
>
> auart_port[pdev->id] = NULL;
>
> + put_device(s->dev);
> clk_put(s->clk);
> free_irq(s->irq, s);
> kfree(s);
> --
> 1.7.0.4
>
>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] serial: mxs-auart: put the device when exit or error
2012-09-07 2:33 ` [PATCH] serial: mxs-auart: put the device when exit or error Huang Shijie
2012-09-07 3:14 ` Shawn Guo
@ 2012-09-10 23:00 ` Greg KH
1 sibling, 0 replies; 9+ messages in thread
From: Greg KH @ 2012-09-10 23:00 UTC (permalink / raw)
To: Huang Shijie
Cc: alan, linux-serial, linux-arm-kernel, linux-kernel, shawn.guo
On Fri, Sep 07, 2012 at 10:33:07AM +0800, Huang Shijie wrote:
> We call the get_device() in the mxs_auart_probe().
> For the balance of the reference count, we should put the
> device in the mxs_auart_remove() or in the error path of
> probe.
>
> Signed-off-by: Huang Shijie <b32955@freescale.com>
> ---
> drivers/tty/serial/mxs-auart.c | 2 ++
> 1 files changed, 2 insertions(+), 0 deletions(-)
I already applied the previous version, so can you make up a patch
against the tty-next tree that fixes it up properly based on this patch?
thanks,
greg k-h
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2012-09-10 23:02 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-09-07 2:38 [PATCH 1/2] serial: mxs-auart: fix the wrong setting order Huang Shijie
2012-09-07 2:38 ` [PATCH 2/2] serial: mxs-auart: put the device in mxs_auart_probe() Huang Shijie
2012-09-07 2:43 ` Shawn Guo
2012-09-07 2:33 ` [PATCH] serial: mxs-auart: put the device when exit or error Huang Shijie
2012-09-07 3:14 ` Shawn Guo
2012-09-10 23:00 ` Greg KH
2012-09-07 2:48 ` [PATCH 2/2] serial: mxs-auart: put the device in mxs_auart_probe() Huang Shijie
2012-09-07 2:38 ` [PATCH 1/2] serial: mxs-auart: fix the wrong setting order Shawn Guo
2012-09-07 2:43 ` Huang Shijie
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).