* [PATCH 1/2] serial: omap: enable PM runtime only when its fully configured
@ 2013-07-12 11:55 ` Grygorii Strashko
0 siblings, 0 replies; 7+ messages in thread
From: Grygorii Strashko @ 2013-07-12 11:55 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: linux-serial, linux-omap, linux-kernel, Grygorii Strashko,
Tony Lindgren, Rajendra Nayak, Felipe Balbi, Kevin Hilman
If earlyprintk is enabled and current UART is console port the platform
code can mark it as RPM_ACTIVE to sync real IP state with PM Runtime and
avoid resuming of already active device, but now, driver initialization
will be performed in the wrong way:
pm_runtime_enable(&pdev->dev);
<-- PM runtime alowed (device state RPM_ACTIVE)
if (omap_up_info->autosuspend_timeout == 0)
omap_up_info->autosuspend_timeout = -1;
device_init_wakeup(up->dev, true);
pm_runtime_use_autosuspend(&pdev->dev);
<-- update_autosuspend() will be called and it will disable device
(device state RPM_SUSPENDED)
pm_runtime_set_autosuspend_delay(&pdev->dev,
omap_up_info->autosuspend_timeout);
<-- update_autosuspend() will be called which will re-enable device
(device state RPM_ACTIVE), because autosuspend_timeout < 0
pm_runtime_irq_safe(&pdev->dev);
pm_runtime_get_sync(&pdev->dev);
<-- will do nothing
Such behavior isn't expected by OMAP serial drivers and causes
unpredictable calls of serial_omap_runtime_suspend() and
serial_omap_runtime_resume().
Hence, fix it by allowing PM runtime only after all its parameters are
configured.
CC: Tony Lindgren <tony@atomide.com>
CC: Rajendra Nayak <rnayak@ti.com>
CC: Felipe Balbi <balbi@ti.com>
CC: Kevin Hilman <khilman@linaro.org>
Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
---
tested on OMAP4 SDP with and without earlyprintk enabled.
drivers/tty/serial/omap-serial.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/tty/serial/omap-serial.c b/drivers/tty/serial/omap-serial.c
index b6d1728..f39bf0c 100644
--- a/drivers/tty/serial/omap-serial.c
+++ b/drivers/tty/serial/omap-serial.c
@@ -1501,7 +1501,6 @@ static int serial_omap_probe(struct platform_device *pdev)
INIT_WORK(&up->qos_work, serial_omap_uart_qos_work);
platform_set_drvdata(pdev, up);
- pm_runtime_enable(&pdev->dev);
if (omap_up_info->autosuspend_timeout == 0)
omap_up_info->autosuspend_timeout = -1;
device_init_wakeup(up->dev, true);
@@ -1510,6 +1509,8 @@ static int serial_omap_probe(struct platform_device *pdev)
omap_up_info->autosuspend_timeout);
pm_runtime_irq_safe(&pdev->dev);
+ pm_runtime_enable(&pdev->dev);
+
pm_runtime_get_sync(&pdev->dev);
omap_serial_fill_features_erratas(up);
--
1.7.9.5
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 1/2] serial: omap: enable PM runtime only when its fully configured
@ 2013-07-12 11:55 ` Grygorii Strashko
0 siblings, 0 replies; 7+ messages in thread
From: Grygorii Strashko @ 2013-07-12 11:55 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: linux-serial, linux-omap, linux-kernel, Grygorii Strashko,
Tony Lindgren, Rajendra Nayak, Felipe Balbi, Kevin Hilman
If earlyprintk is enabled and current UART is console port the platform
code can mark it as RPM_ACTIVE to sync real IP state with PM Runtime and
avoid resuming of already active device, but now, driver initialization
will be performed in the wrong way:
pm_runtime_enable(&pdev->dev);
<-- PM runtime alowed (device state RPM_ACTIVE)
if (omap_up_info->autosuspend_timeout == 0)
omap_up_info->autosuspend_timeout = -1;
device_init_wakeup(up->dev, true);
pm_runtime_use_autosuspend(&pdev->dev);
<-- update_autosuspend() will be called and it will disable device
(device state RPM_SUSPENDED)
pm_runtime_set_autosuspend_delay(&pdev->dev,
omap_up_info->autosuspend_timeout);
<-- update_autosuspend() will be called which will re-enable device
(device state RPM_ACTIVE), because autosuspend_timeout < 0
pm_runtime_irq_safe(&pdev->dev);
pm_runtime_get_sync(&pdev->dev);
<-- will do nothing
Such behavior isn't expected by OMAP serial drivers and causes
unpredictable calls of serial_omap_runtime_suspend() and
serial_omap_runtime_resume().
Hence, fix it by allowing PM runtime only after all its parameters are
configured.
CC: Tony Lindgren <tony@atomide.com>
CC: Rajendra Nayak <rnayak@ti.com>
CC: Felipe Balbi <balbi@ti.com>
CC: Kevin Hilman <khilman@linaro.org>
Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
---
tested on OMAP4 SDP with and without earlyprintk enabled.
drivers/tty/serial/omap-serial.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/tty/serial/omap-serial.c b/drivers/tty/serial/omap-serial.c
index b6d1728..f39bf0c 100644
--- a/drivers/tty/serial/omap-serial.c
+++ b/drivers/tty/serial/omap-serial.c
@@ -1501,7 +1501,6 @@ static int serial_omap_probe(struct platform_device *pdev)
INIT_WORK(&up->qos_work, serial_omap_uart_qos_work);
platform_set_drvdata(pdev, up);
- pm_runtime_enable(&pdev->dev);
if (omap_up_info->autosuspend_timeout == 0)
omap_up_info->autosuspend_timeout = -1;
device_init_wakeup(up->dev, true);
@@ -1510,6 +1509,8 @@ static int serial_omap_probe(struct platform_device *pdev)
omap_up_info->autosuspend_timeout);
pm_runtime_irq_safe(&pdev->dev);
+ pm_runtime_enable(&pdev->dev);
+
pm_runtime_get_sync(&pdev->dev);
omap_serial_fill_features_erratas(up);
--
1.7.9.5
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/2] serial: omap: fix wrong context restoration on init
2013-07-12 11:55 ` Grygorii Strashko
@ 2013-07-12 11:55 ` Grygorii Strashko
-1 siblings, 0 replies; 7+ messages in thread
From: Grygorii Strashko @ 2013-07-12 11:55 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: linux-serial, linux-omap, linux-kernel, Grygorii Strashko,
Tony Lindgren, Rajendra Nayak, Felipe Balbi, Kevin Hilman
Since commit a630fbf "serial: omap: Fix device tree based PM runtime"
the OMAP serial driver will always try to restore its context in
serial_omap_runtime_resume(). But the problem is that during driver
initialization the UART context is not ready yet and, as result, first
call to pm_runtime_get*() will cause UART register overwriting by all
zeros. This causes Kernel boot hang in case if "earlyprintk" feature is
enabled at least [1].
Unfortunately, there is no exact place in driver now where we can
determine that UART context is ready - most of registers configured in
serial_omap_set_termios(), but some of them in other places.
More over, even if PM runtime will be disabled (blocked) during OMAP
serial driver probe() execution [2],[3] it will fix only console UART,
but context of other UARTs will be overwriting by all zeros during first
access to the corresponding UART.
To fix this issue:
- introduce additional "initialized" flag and update PM runtime callback
to do nothing if its not set. Set "initialized" at the end of probe().
- read current UART registers configuration in probe and use it by
default.
[1] http://www.spinics.net/lists/arm-kernel/msg256828.html
[2] http://www.spinics.net/lists/arm-kernel/msg258062.html
[3] http://www.spinics.net/lists/arm-kernel/msg258040.html
CC: Tony Lindgren <tony@atomide.com>
CC: Rajendra Nayak <rnayak@ti.com>
CC: Felipe Balbi <balbi@ti.com>
CC: Kevin Hilman <khilman@linaro.org>
Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
---
tested on OMAP4 SDP with and without earlyprintk enabled.
drivers/tty/serial/omap-serial.c | 27 ++++++++++++++++++++++++++-
1 file changed, 26 insertions(+), 1 deletion(-)
diff --git a/drivers/tty/serial/omap-serial.c b/drivers/tty/serial/omap-serial.c
index f39bf0c..e1e9667 100644
--- a/drivers/tty/serial/omap-serial.c
+++ b/drivers/tty/serial/omap-serial.c
@@ -162,6 +162,7 @@ struct uart_omap_port {
struct work_struct qos_work;
struct pinctrl *pins;
bool is_suspending;
+ bool initialized;
};
#define to_uart_omap_port(p) ((container_of((p), struct uart_omap_port, port)))
@@ -1395,6 +1396,19 @@ static struct omap_uart_port_info *of_get_uart_port_info(struct device *dev)
return omap_up_info;
}
+static void serial_omap_save_context_def(struct uart_omap_port *up)
+{
+ up->dll = serial_in(up, UART_DLL);
+ up->dlh = serial_in(up, UART_DLM);
+ up->ier = serial_in(up, UART_IER);
+ up->fcr = serial_in(up, UART_FCR);
+ up->mcr = serial_in(up, UART_MCR);
+ up->scr = serial_in(up, UART_OMAP_SCR);
+ up->efr = serial_in(up, UART_EFR);
+ up->lcr = serial_in(up, UART_LCR);
+ up->mdr1 = serial_in(up, UART_OMAP_MDR1);
+}
+
static int serial_omap_probe(struct platform_device *pdev)
{
struct uart_omap_port *up;
@@ -1518,10 +1532,14 @@ static int serial_omap_probe(struct platform_device *pdev)
ui[up->port.line] = up;
serial_omap_add_console_port(up);
+ serial_omap_save_context_def(up);
+
ret = uart_add_one_port(&serial_omap_reg, &up->port);
if (ret != 0)
goto err_add_port;
+ up->initialized = true;
+
pm_runtime_mark_last_busy(up->dev);
pm_runtime_put_autosuspend(up->dev);
return 0;
@@ -1619,6 +1637,9 @@ static int serial_omap_runtime_suspend(struct device *dev)
if (!up)
return -EINVAL;
+ if (!up->initialized)
+ return 0;
+
/*
* When using 'no_console_suspend', the console UART must not be
* suspended. Since driver suspend is managed by runtime suspend,
@@ -1652,8 +1673,12 @@ static int serial_omap_runtime_suspend(struct device *dev)
static int serial_omap_runtime_resume(struct device *dev)
{
struct uart_omap_port *up = dev_get_drvdata(dev);
+ int loss_cnt;
+
+ if (!up->initialized)
+ return 0;
- int loss_cnt = serial_omap_get_context_loss_count(up);
+ loss_cnt = serial_omap_get_context_loss_count(up);
if (loss_cnt < 0) {
dev_dbg(dev, "serial_omap_get_context_loss_count failed : %d\n",
--
1.7.9.5
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/2] serial: omap: fix wrong context restoration on init
@ 2013-07-12 11:55 ` Grygorii Strashko
0 siblings, 0 replies; 7+ messages in thread
From: Grygorii Strashko @ 2013-07-12 11:55 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: linux-serial, linux-omap, linux-kernel, Grygorii Strashko,
Tony Lindgren, Rajendra Nayak, Felipe Balbi, Kevin Hilman
Since commit a630fbf "serial: omap: Fix device tree based PM runtime"
the OMAP serial driver will always try to restore its context in
serial_omap_runtime_resume(). But the problem is that during driver
initialization the UART context is not ready yet and, as result, first
call to pm_runtime_get*() will cause UART register overwriting by all
zeros. This causes Kernel boot hang in case if "earlyprintk" feature is
enabled at least [1].
Unfortunately, there is no exact place in driver now where we can
determine that UART context is ready - most of registers configured in
serial_omap_set_termios(), but some of them in other places.
More over, even if PM runtime will be disabled (blocked) during OMAP
serial driver probe() execution [2],[3] it will fix only console UART,
but context of other UARTs will be overwriting by all zeros during first
access to the corresponding UART.
To fix this issue:
- introduce additional "initialized" flag and update PM runtime callback
to do nothing if its not set. Set "initialized" at the end of probe().
- read current UART registers configuration in probe and use it by
default.
[1] http://www.spinics.net/lists/arm-kernel/msg256828.html
[2] http://www.spinics.net/lists/arm-kernel/msg258062.html
[3] http://www.spinics.net/lists/arm-kernel/msg258040.html
CC: Tony Lindgren <tony@atomide.com>
CC: Rajendra Nayak <rnayak@ti.com>
CC: Felipe Balbi <balbi@ti.com>
CC: Kevin Hilman <khilman@linaro.org>
Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
---
tested on OMAP4 SDP with and without earlyprintk enabled.
drivers/tty/serial/omap-serial.c | 27 ++++++++++++++++++++++++++-
1 file changed, 26 insertions(+), 1 deletion(-)
diff --git a/drivers/tty/serial/omap-serial.c b/drivers/tty/serial/omap-serial.c
index f39bf0c..e1e9667 100644
--- a/drivers/tty/serial/omap-serial.c
+++ b/drivers/tty/serial/omap-serial.c
@@ -162,6 +162,7 @@ struct uart_omap_port {
struct work_struct qos_work;
struct pinctrl *pins;
bool is_suspending;
+ bool initialized;
};
#define to_uart_omap_port(p) ((container_of((p), struct uart_omap_port, port)))
@@ -1395,6 +1396,19 @@ static struct omap_uart_port_info *of_get_uart_port_info(struct device *dev)
return omap_up_info;
}
+static void serial_omap_save_context_def(struct uart_omap_port *up)
+{
+ up->dll = serial_in(up, UART_DLL);
+ up->dlh = serial_in(up, UART_DLM);
+ up->ier = serial_in(up, UART_IER);
+ up->fcr = serial_in(up, UART_FCR);
+ up->mcr = serial_in(up, UART_MCR);
+ up->scr = serial_in(up, UART_OMAP_SCR);
+ up->efr = serial_in(up, UART_EFR);
+ up->lcr = serial_in(up, UART_LCR);
+ up->mdr1 = serial_in(up, UART_OMAP_MDR1);
+}
+
static int serial_omap_probe(struct platform_device *pdev)
{
struct uart_omap_port *up;
@@ -1518,10 +1532,14 @@ static int serial_omap_probe(struct platform_device *pdev)
ui[up->port.line] = up;
serial_omap_add_console_port(up);
+ serial_omap_save_context_def(up);
+
ret = uart_add_one_port(&serial_omap_reg, &up->port);
if (ret != 0)
goto err_add_port;
+ up->initialized = true;
+
pm_runtime_mark_last_busy(up->dev);
pm_runtime_put_autosuspend(up->dev);
return 0;
@@ -1619,6 +1637,9 @@ static int serial_omap_runtime_suspend(struct device *dev)
if (!up)
return -EINVAL;
+ if (!up->initialized)
+ return 0;
+
/*
* When using 'no_console_suspend', the console UART must not be
* suspended. Since driver suspend is managed by runtime suspend,
@@ -1652,8 +1673,12 @@ static int serial_omap_runtime_suspend(struct device *dev)
static int serial_omap_runtime_resume(struct device *dev)
{
struct uart_omap_port *up = dev_get_drvdata(dev);
+ int loss_cnt;
+
+ if (!up->initialized)
+ return 0;
- int loss_cnt = serial_omap_get_context_loss_count(up);
+ loss_cnt = serial_omap_get_context_loss_count(up);
if (loss_cnt < 0) {
dev_dbg(dev, "serial_omap_get_context_loss_count failed : %d\n",
--
1.7.9.5
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] serial: omap: fix wrong context restoration on init
2013-07-12 11:55 ` Grygorii Strashko
@ 2013-07-12 12:11 ` Felipe Balbi
-1 siblings, 0 replies; 7+ messages in thread
From: Felipe Balbi @ 2013-07-12 12:11 UTC (permalink / raw)
To: Grygorii Strashko
Cc: Greg Kroah-Hartman, linux-serial, linux-omap, linux-kernel,
Tony Lindgren, Rajendra Nayak, Felipe Balbi, Kevin Hilman
[-- Attachment #1: Type: text/plain, Size: 2418 bytes --]
hi,
On Fri, Jul 12, 2013 at 02:55:42PM +0300, Grygorii Strashko wrote:
> Since commit a630fbf "serial: omap: Fix device tree based PM runtime"
> the OMAP serial driver will always try to restore its context in
> serial_omap_runtime_resume(). But the problem is that during driver
> initialization the UART context is not ready yet and, as result, first
> call to pm_runtime_get*() will cause UART register overwriting by all
> zeros. This causes Kernel boot hang in case if "earlyprintk" feature is
> enabled at least [1].
>
> Unfortunately, there is no exact place in driver now where we can
> determine that UART context is ready - most of registers configured in
> serial_omap_set_termios(), but some of them in other places.
> More over, even if PM runtime will be disabled (blocked) during OMAP
> serial driver probe() execution [2],[3] it will fix only console UART,
> but context of other UARTs will be overwriting by all zeros during first
> access to the corresponding UART.
>
> To fix this issue:
> - introduce additional "initialized" flag and update PM runtime callback
> to do nothing if its not set. Set "initialized" at the end of probe().
> - read current UART registers configuration in probe and use it by
> default.
>
> [1] http://www.spinics.net/lists/arm-kernel/msg256828.html
> [2] http://www.spinics.net/lists/arm-kernel/msg258062.html
> [3] http://www.spinics.net/lists/arm-kernel/msg258040.html
>
> CC: Tony Lindgren <tony@atomide.com>
> CC: Rajendra Nayak <rnayak@ti.com>
> CC: Felipe Balbi <balbi@ti.com>
> CC: Kevin Hilman <khilman@linaro.org>
>
> Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
> ---
> tested on OMAP4 SDP with and without earlyprintk enabled.
> drivers/tty/serial/omap-serial.c | 27 ++++++++++++++++++++++++++-
> 1 file changed, 26 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/tty/serial/omap-serial.c b/drivers/tty/serial/omap-serial.c
> index f39bf0c..e1e9667 100644
> --- a/drivers/tty/serial/omap-serial.c
> +++ b/drivers/tty/serial/omap-serial.c
> @@ -162,6 +162,7 @@ struct uart_omap_port {
> struct work_struct qos_work;
> struct pinctrl *pins;
> bool is_suspending;
> + bool initialized;
you really think adding this sort of bool flag is the best thing we can
do ? Something which will, quite likely, spread through every single
driver ?
oh well...
--
balbi
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] serial: omap: fix wrong context restoration on init
@ 2013-07-12 12:11 ` Felipe Balbi
0 siblings, 0 replies; 7+ messages in thread
From: Felipe Balbi @ 2013-07-12 12:11 UTC (permalink / raw)
To: Grygorii Strashko
Cc: Greg Kroah-Hartman, linux-serial, linux-omap, linux-kernel,
Tony Lindgren, Rajendra Nayak, Felipe Balbi, Kevin Hilman
[-- Attachment #1: Type: text/plain, Size: 2418 bytes --]
hi,
On Fri, Jul 12, 2013 at 02:55:42PM +0300, Grygorii Strashko wrote:
> Since commit a630fbf "serial: omap: Fix device tree based PM runtime"
> the OMAP serial driver will always try to restore its context in
> serial_omap_runtime_resume(). But the problem is that during driver
> initialization the UART context is not ready yet and, as result, first
> call to pm_runtime_get*() will cause UART register overwriting by all
> zeros. This causes Kernel boot hang in case if "earlyprintk" feature is
> enabled at least [1].
>
> Unfortunately, there is no exact place in driver now where we can
> determine that UART context is ready - most of registers configured in
> serial_omap_set_termios(), but some of them in other places.
> More over, even if PM runtime will be disabled (blocked) during OMAP
> serial driver probe() execution [2],[3] it will fix only console UART,
> but context of other UARTs will be overwriting by all zeros during first
> access to the corresponding UART.
>
> To fix this issue:
> - introduce additional "initialized" flag and update PM runtime callback
> to do nothing if its not set. Set "initialized" at the end of probe().
> - read current UART registers configuration in probe and use it by
> default.
>
> [1] http://www.spinics.net/lists/arm-kernel/msg256828.html
> [2] http://www.spinics.net/lists/arm-kernel/msg258062.html
> [3] http://www.spinics.net/lists/arm-kernel/msg258040.html
>
> CC: Tony Lindgren <tony@atomide.com>
> CC: Rajendra Nayak <rnayak@ti.com>
> CC: Felipe Balbi <balbi@ti.com>
> CC: Kevin Hilman <khilman@linaro.org>
>
> Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
> ---
> tested on OMAP4 SDP with and without earlyprintk enabled.
> drivers/tty/serial/omap-serial.c | 27 ++++++++++++++++++++++++++-
> 1 file changed, 26 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/tty/serial/omap-serial.c b/drivers/tty/serial/omap-serial.c
> index f39bf0c..e1e9667 100644
> --- a/drivers/tty/serial/omap-serial.c
> +++ b/drivers/tty/serial/omap-serial.c
> @@ -162,6 +162,7 @@ struct uart_omap_port {
> struct work_struct qos_work;
> struct pinctrl *pins;
> bool is_suspending;
> + bool initialized;
you really think adding this sort of bool flag is the best thing we can
do ? Something which will, quite likely, spread through every single
driver ?
oh well...
--
balbi
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] serial: omap: fix wrong context restoration on init
2013-07-12 12:11 ` Felipe Balbi
(?)
@ 2013-07-26 23:00 ` Greg Kroah-Hartman
-1 siblings, 0 replies; 7+ messages in thread
From: Greg Kroah-Hartman @ 2013-07-26 23:00 UTC (permalink / raw)
To: Felipe Balbi
Cc: Grygorii Strashko, linux-serial, linux-omap, linux-kernel,
Tony Lindgren, Rajendra Nayak, Kevin Hilman
On Fri, Jul 12, 2013 at 03:11:46PM +0300, Felipe Balbi wrote:
> hi,
>
> On Fri, Jul 12, 2013 at 02:55:42PM +0300, Grygorii Strashko wrote:
> > Since commit a630fbf "serial: omap: Fix device tree based PM runtime"
> > the OMAP serial driver will always try to restore its context in
> > serial_omap_runtime_resume(). But the problem is that during driver
> > initialization the UART context is not ready yet and, as result, first
> > call to pm_runtime_get*() will cause UART register overwriting by all
> > zeros. This causes Kernel boot hang in case if "earlyprintk" feature is
> > enabled at least [1].
> >
> > Unfortunately, there is no exact place in driver now where we can
> > determine that UART context is ready - most of registers configured in
> > serial_omap_set_termios(), but some of them in other places.
> > More over, even if PM runtime will be disabled (blocked) during OMAP
> > serial driver probe() execution [2],[3] it will fix only console UART,
> > but context of other UARTs will be overwriting by all zeros during first
> > access to the corresponding UART.
> >
> > To fix this issue:
> > - introduce additional "initialized" flag and update PM runtime callback
> > to do nothing if its not set. Set "initialized" at the end of probe().
> > - read current UART registers configuration in probe and use it by
> > default.
> >
> > [1] http://www.spinics.net/lists/arm-kernel/msg256828.html
> > [2] http://www.spinics.net/lists/arm-kernel/msg258062.html
> > [3] http://www.spinics.net/lists/arm-kernel/msg258040.html
> >
> > CC: Tony Lindgren <tony@atomide.com>
> > CC: Rajendra Nayak <rnayak@ti.com>
> > CC: Felipe Balbi <balbi@ti.com>
> > CC: Kevin Hilman <khilman@linaro.org>
> >
> > Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
> > ---
> > tested on OMAP4 SDP with and without earlyprintk enabled.
> > drivers/tty/serial/omap-serial.c | 27 ++++++++++++++++++++++++++-
> > 1 file changed, 26 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/tty/serial/omap-serial.c b/drivers/tty/serial/omap-serial.c
> > index f39bf0c..e1e9667 100644
> > --- a/drivers/tty/serial/omap-serial.c
> > +++ b/drivers/tty/serial/omap-serial.c
> > @@ -162,6 +162,7 @@ struct uart_omap_port {
> > struct work_struct qos_work;
> > struct pinctrl *pins;
> > bool is_suspending;
> > + bool initialized;
>
> you really think adding this sort of bool flag is the best thing we can
> do ? Something which will, quite likely, spread through every single
> driver ?
I agree, that's not ok, please fix this up "properly" somehow.
thanks,
greg k-h
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2013-07-26 23:00 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-07-12 11:55 [PATCH 1/2] serial: omap: enable PM runtime only when its fully configured Grygorii Strashko
2013-07-12 11:55 ` Grygorii Strashko
2013-07-12 11:55 ` [PATCH 2/2] serial: omap: fix wrong context restoration on init Grygorii Strashko
2013-07-12 11:55 ` Grygorii Strashko
2013-07-12 12:11 ` Felipe Balbi
2013-07-12 12:11 ` Felipe Balbi
2013-07-26 23:00 ` Greg Kroah-Hartman
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.