Commit d9b68e5e authored by Kyle McMartin's avatar Kyle McMartin Committed by Linus Torvalds

parisc: pass through '\t' to early (iodc) console

The firmware handles '\t' internally, so stop trying to emulate it
(which, incidentally, had a bug in it.)

Fixes a really weird hang at bootup in rcu_bootup_announce, which,
as far as I can tell, is the first printk in the core kernel to use
a tab as the first character.

Cc: stable@kernel.org
Signed-off-by: default avatarKyle McMartin <kyle@parisc-linux.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent f46e9913
...@@ -1123,7 +1123,6 @@ static char __attribute__((aligned(64))) iodc_dbuf[4096]; ...@@ -1123,7 +1123,6 @@ static char __attribute__((aligned(64))) iodc_dbuf[4096];
*/ */
int pdc_iodc_print(const unsigned char *str, unsigned count) int pdc_iodc_print(const unsigned char *str, unsigned count)
{ {
static int posx; /* for simple TAB-Simulation... */
unsigned int i; unsigned int i;
unsigned long flags; unsigned long flags;
...@@ -1133,19 +1132,12 @@ int pdc_iodc_print(const unsigned char *str, unsigned count) ...@@ -1133,19 +1132,12 @@ int pdc_iodc_print(const unsigned char *str, unsigned count)
iodc_dbuf[i+0] = '\r'; iodc_dbuf[i+0] = '\r';
iodc_dbuf[i+1] = '\n'; iodc_dbuf[i+1] = '\n';
i += 2; i += 2;
posx = 0;
goto print; goto print;
case '\t':
while (posx & 7) {
iodc_dbuf[i] = ' ';
i++, posx++;
}
break;
case '\b': /* BS */ case '\b': /* BS */
posx -= 2; i--; /* overwrite last */
default: default:
iodc_dbuf[i] = str[i]; iodc_dbuf[i] = str[i];
i++, posx++; i++;
break; break;
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment