From: Rob Herring <hidden> Date: 2013-09-23 20:32:20
From: Rob Herring <redacted>
Enabling the ARM DCC console and using without a JTAG connection will
simply hang the system. Since distros like to turn on all options, this
is a reoccurring problem to debug. We can do better by checking if
anything is attached and handling characters. There is no way to probe
this, so send a newline and check that it is handled.
Cc: Paolo Pisati <redacted>
Cc: Tim Gardner <redacted>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Jiri Slaby <redacted>
Signed-off-by: Rob Herring <redacted>
---
drivers/tty/hvc/hvc_dcc.c | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
@@ -86,6 +86,21 @@ static int hvc_dcc_get_chars(uint32_t vt, char *buf, int count)returni;}+staticboolhvc_dcc_check(void)+{+unsignedlongtime=jiffies;++/* Write a test character to check if it is handled */+__dcc_putchar('\n');++while(jiffies<time+(HZ/10)){+if(!(__dcc_getstatus()&DCC_STATUS_TX))+returntrue;+}++returnfalse;+}+staticconststructhv_opshvc_dcc_get_put_ops={.get_chars=hvc_dcc_get_chars,.put_chars=hvc_dcc_put_chars,
From: Tim Gardner <hidden> Date: 2013-09-23 21:10:30
On 09/23/2013 01:30 PM, Rob Herring wrote:
quoted hunk
From: Rob Herring <redacted>
Enabling the ARM DCC console and using without a JTAG connection will
simply hang the system. Since distros like to turn on all options, this
is a reoccurring problem to debug. We can do better by checking if
anything is attached and handling characters. There is no way to probe
this, so send a newline and check that it is handled.
Cc: Paolo Pisati <redacted>
Cc: Tim Gardner <redacted>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Jiri Slaby <redacted>
Signed-off-by: Rob Herring <redacted>
---
drivers/tty/hvc/hvc_dcc.c | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
@@ -86,6 +86,21 @@ static int hvc_dcc_get_chars(uint32_t vt, char *buf, int count)returni;}+staticboolhvc_dcc_check(void)+{+unsignedlongtime=jiffies;++/* Write a test character to check if it is handled */+__dcc_putchar('\n');++while(jiffies<time+(HZ/10)){+if(!(__dcc_getstatus()&DCC_STATUS_TX))+returntrue;+}
I think you should use one of the jiffies time comparison functions, e.g.,
time = jiffies + (HZ / 10);
while (time_before(jiffies,time) {
...
}
What is the possibility that __dcc_getstatus() will return garbage if no
JTAG is connected ? In that event you're likely to get a false positive
on DCC_STATUS_TX.
rtg
--
Tim Gardner tim.gardner at canonical.com
From: Rob Herring <hidden> Date: 2013-09-23 21:35:56
On 09/23/2013 04:10 PM, Tim Gardner wrote:
On 09/23/2013 01:30 PM, Rob Herring wrote:
quoted
From: Rob Herring <redacted>
Enabling the ARM DCC console and using without a JTAG connection will
simply hang the system. Since distros like to turn on all options, this
is a reoccurring problem to debug. We can do better by checking if
anything is attached and handling characters. There is no way to probe
this, so send a newline and check that it is handled.
Cc: Paolo Pisati <redacted>
Cc: Tim Gardner <redacted>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Jiri Slaby <redacted>
Signed-off-by: Rob Herring <redacted>
---
drivers/tty/hvc/hvc_dcc.c | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
@@ -86,6 +86,21 @@ static int hvc_dcc_get_chars(uint32_t vt, char *buf, int count)returni;}+staticboolhvc_dcc_check(void)+{+unsignedlongtime=jiffies;++/* Write a test character to check if it is handled */+__dcc_putchar('\n');++while(jiffies<time+(HZ/10)){+if(!(__dcc_getstatus()&DCC_STATUS_TX))+returntrue;+}
I think you should use one of the jiffies time comparison functions, e.g.,
time = jiffies + (HZ / 10);
while (time_before(jiffies,time) {
...
}
Yes.
What is the possibility that __dcc_getstatus() will return garbage if no
JTAG is connected ? In that event you're likely to get a false positive
on DCC_STATUS_TX.
That probably would not be architecturally compliant. The status bits
are cleared by JTAG reading the read side of the register. If the bit
stays set, we'll return false. If the bit is always clear, then we
wouldn't hang in the first place and should be fine. If you get random
values, then I'm sorry and good luck. You are still no worse off than
before this patch.
Rob
From: Rob Herring <hidden> Date: 2013-09-25 02:06:08
From: Rob Herring <redacted>
Enabling the ARM DCC console and using without a JTAG connection will
simply hang the system. Since distros like to turn on all options, this
is a reoccurring problem to debug. We can do better by checking if
anything is attached and handling characters. There is no way to probe
this, so send a newline and check that it is handled.
Cc: Paolo Pisati <redacted>
Cc: Tim Gardner <redacted>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Jiri Slaby <redacted>
Signed-off-by: Rob Herring <redacted>
---
v2: use time_is_after_jiffies
drivers/tty/hvc/hvc_dcc.c | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
@@ -86,6 +86,21 @@ static int hvc_dcc_get_chars(uint32_t vt, char *buf, int count)returni;}+staticboolhvc_dcc_check(void)+{+unsignedlongtime=jiffies+(HZ/10);++/* Write a test character to check if it is handled */+__dcc_putchar('\n');++while(time_is_after_jiffies(time)){+if(!(__dcc_getstatus()&DCC_STATUS_TX))+returntrue;+}++returnfalse;+}+staticconststructhv_opshvc_dcc_get_put_ops={.get_chars=hvc_dcc_get_chars,.put_chars=hvc_dcc_put_chars,
From: Rob Herring <hidden> Date: 2013-10-17 19:16:40
On Tue, Sep 24, 2013 at 9:05 PM, Rob Herring [off-list ref] wrote:
From: Rob Herring <redacted>
Enabling the ARM DCC console and using without a JTAG connection will
simply hang the system. Since distros like to turn on all options, this
is a reoccurring problem to debug. We can do better by checking if
anything is attached and handling characters. There is no way to probe
this, so send a newline and check that it is handled.
Cc: Paolo Pisati <redacted>
Cc: Tim Gardner <redacted>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Jiri Slaby <redacted>
Signed-off-by: Rob Herring <redacted>
---
v2: use time_is_after_jiffies
drivers/tty/hvc/hvc_dcc.c | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
@@ -86,6 +86,21 @@ static int hvc_dcc_get_chars(uint32_t vt, char *buf, int count)returni;}+staticboolhvc_dcc_check(void)+{+unsignedlongtime=jiffies+(HZ/10);++/* Write a test character to check if it is handled */+__dcc_putchar('\n');++while(time_is_after_jiffies(time)){+if(!(__dcc_getstatus()&DCC_STATUS_TX))+returntrue;+}++returnfalse;+}+staticconststructhv_opshvc_dcc_get_put_ops={.get_chars=hvc_dcc_get_chars,.put_chars=hvc_dcc_put_chars,
On Thu, Oct 17, 2013 at 02:16:37PM -0500, Rob Herring wrote:
On Tue, Sep 24, 2013 at 9:05 PM, Rob Herring [off-list ref] wrote:
quoted
From: Rob Herring <redacted>
Enabling the ARM DCC console and using without a JTAG connection will
simply hang the system. Since distros like to turn on all options, this
is a reoccurring problem to debug. We can do better by checking if
anything is attached and handling characters. There is no way to probe
this, so send a newline and check that it is handled.
Cc: Paolo Pisati <redacted>
Cc: Tim Gardner <redacted>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Jiri Slaby <redacted>
Signed-off-by: Rob Herring <redacted>
---
v2: use time_is_after_jiffies
drivers/tty/hvc/hvc_dcc.c | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
Greg, Jiri,
Can you please apply.
I already did, didn't you get an email saying it was applied to my tree?
From: Rob Herring <hidden> Date: 2013-10-17 20:31:50
On 10/17/2013 03:20 PM, Greg Kroah-Hartman wrote:
On Thu, Oct 17, 2013 at 02:16:37PM -0500, Rob Herring wrote:
quoted
On Tue, Sep 24, 2013 at 9:05 PM, Rob Herring [off-list ref] wrote:
quoted
From: Rob Herring <redacted>
Enabling the ARM DCC console and using without a JTAG connection will
simply hang the system. Since distros like to turn on all options, this
is a reoccurring problem to debug. We can do better by checking if
anything is attached and handling characters. There is no way to probe
this, so send a newline and check that it is handled.
Cc: Paolo Pisati <redacted>
Cc: Tim Gardner <redacted>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Jiri Slaby <redacted>
Signed-off-by: Rob Herring <redacted>
---
v2: use time_is_after_jiffies
drivers/tty/hvc/hvc_dcc.c | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
Greg, Jiri,
Can you please apply.
I already did, didn't you get an email saying it was applied to my tree?
Ah, yes. Found it buried in my work email. Sorry about that.
Rob