Merge 5.0-rc4 into tty-next
We need the tty and serial fixes in here as well. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
@@ -1272,6 +1272,7 @@ static int vc_do_resize(struct tty_struct *tty, struct vc_data *vc,
|
||||
if (con_is_visible(vc))
|
||||
update_screen(vc);
|
||||
vt_event_post(VT_EVENT_RESIZE, vc->vc_num, vc->vc_num);
|
||||
notify_update(vc);
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -2791,8 +2792,8 @@ rescan_last_byte:
|
||||
con_flush(vc, draw_from, draw_to, &draw_x);
|
||||
vc_uniscr_debug_check(vc);
|
||||
console_conditional_schedule();
|
||||
console_unlock();
|
||||
notify_update(vc);
|
||||
console_unlock();
|
||||
return n;
|
||||
}
|
||||
|
||||
@@ -2911,8 +2912,7 @@ static void vt_console_print(struct console *co, const char *b, unsigned count)
|
||||
unsigned char c;
|
||||
static DEFINE_SPINLOCK(printing_lock);
|
||||
const ushort *start;
|
||||
ushort cnt = 0;
|
||||
ushort myx;
|
||||
ushort start_x, cnt;
|
||||
int kmsg_console;
|
||||
|
||||
/* console busy or not yet initialized */
|
||||
@@ -2925,10 +2925,6 @@ static void vt_console_print(struct console *co, const char *b, unsigned count)
|
||||
if (kmsg_console && vc_cons_allocated(kmsg_console - 1))
|
||||
vc = vc_cons[kmsg_console - 1].d;
|
||||
|
||||
/* read `x' only after setting currcons properly (otherwise
|
||||
the `x' macro will read the x of the foreground console). */
|
||||
myx = vc->vc_x;
|
||||
|
||||
if (!vc_cons_allocated(fg_console)) {
|
||||
/* impossible */
|
||||
/* printk("vt_console_print: tty %d not allocated ??\n", currcons+1); */
|
||||
@@ -2943,53 +2939,41 @@ static void vt_console_print(struct console *co, const char *b, unsigned count)
|
||||
hide_cursor(vc);
|
||||
|
||||
start = (ushort *)vc->vc_pos;
|
||||
|
||||
/* Contrived structure to try to emulate original need_wrap behaviour
|
||||
* Problems caused when we have need_wrap set on '\n' character */
|
||||
start_x = vc->vc_x;
|
||||
cnt = 0;
|
||||
while (count--) {
|
||||
c = *b++;
|
||||
if (c == 10 || c == 13 || c == 8 || vc->vc_need_wrap) {
|
||||
if (cnt > 0) {
|
||||
if (con_is_visible(vc))
|
||||
vc->vc_sw->con_putcs(vc, start, cnt, vc->vc_y, vc->vc_x);
|
||||
vc->vc_x += cnt;
|
||||
if (vc->vc_need_wrap)
|
||||
vc->vc_x--;
|
||||
cnt = 0;
|
||||
}
|
||||
if (cnt && con_is_visible(vc))
|
||||
vc->vc_sw->con_putcs(vc, start, cnt, vc->vc_y, start_x);
|
||||
cnt = 0;
|
||||
if (c == 8) { /* backspace */
|
||||
bs(vc);
|
||||
start = (ushort *)vc->vc_pos;
|
||||
myx = vc->vc_x;
|
||||
start_x = vc->vc_x;
|
||||
continue;
|
||||
}
|
||||
if (c != 13)
|
||||
lf(vc);
|
||||
cr(vc);
|
||||
start = (ushort *)vc->vc_pos;
|
||||
myx = vc->vc_x;
|
||||
start_x = vc->vc_x;
|
||||
if (c == 10 || c == 13)
|
||||
continue;
|
||||
}
|
||||
vc_uniscr_putc(vc, c);
|
||||
scr_writew((vc->vc_attr << 8) + c, (unsigned short *)vc->vc_pos);
|
||||
notify_write(vc, c);
|
||||
cnt++;
|
||||
if (myx == vc->vc_cols - 1) {
|
||||
vc->vc_need_wrap = 1;
|
||||
continue;
|
||||
}
|
||||
vc->vc_pos += 2;
|
||||
myx++;
|
||||
}
|
||||
if (cnt > 0) {
|
||||
if (con_is_visible(vc))
|
||||
vc->vc_sw->con_putcs(vc, start, cnt, vc->vc_y, vc->vc_x);
|
||||
vc->vc_x += cnt;
|
||||
if (vc->vc_x == vc->vc_cols) {
|
||||
vc->vc_x--;
|
||||
if (vc->vc_x == vc->vc_cols - 1) {
|
||||
vc->vc_need_wrap = 1;
|
||||
} else {
|
||||
vc->vc_pos += 2;
|
||||
vc->vc_x++;
|
||||
}
|
||||
}
|
||||
if (cnt && con_is_visible(vc))
|
||||
vc->vc_sw->con_putcs(vc, start, cnt, vc->vc_y, start_x);
|
||||
set_cursor(vc);
|
||||
notify_update(vc);
|
||||
|
||||
|
Viittaa uudesa ongelmassa
Block a user