Commit d9b68e5e88248bb24fd4e455588bea1d56108fd6

Authored by Kyle McMartin
Committed by Linus Torvalds
1 parent f46e9913fa

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: Kyle McMartin <kyle@parisc-linux.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Showing 1 changed file with 2 additions and 10 deletions Side-by-side Diff

arch/parisc/kernel/firmware.c
... ... @@ -1123,7 +1123,6 @@
1123 1123 */
1124 1124 int pdc_iodc_print(const unsigned char *str, unsigned count)
1125 1125 {
1126   - static int posx; /* for simple TAB-Simulation... */
1127 1126 unsigned int i;
1128 1127 unsigned long flags;
1129 1128  
1130 1129  
1131 1130  
1132 1131  
... ... @@ -1133,19 +1132,12 @@
1133 1132 iodc_dbuf[i+0] = '\r';
1134 1133 iodc_dbuf[i+1] = '\n';
1135 1134 i += 2;
1136   - posx = 0;
1137 1135 goto print;
1138   - case '\t':
1139   - while (posx & 7) {
1140   - iodc_dbuf[i] = ' ';
1141   - i++, posx++;
1142   - }
1143   - break;
1144 1136 case '\b': /* BS */
1145   - posx -= 2;
  1137 + i--; /* overwrite last */
1146 1138 default:
1147 1139 iodc_dbuf[i] = str[i];
1148   - i++, posx++;
  1140 + i++;
1149 1141 break;
1150 1142 }
1151 1143 }