diff options
| author | David S. Miller <davem@sunset.davemloft.net> | 2007-07-16 20:05:11 -0400 |
|---|---|---|
| committer | David S. Miller <davem@sunset.davemloft.net> | 2007-07-16 20:12:00 -0400 |
| commit | f798634d806615bee27d1b83479034087a02aa0f (patch) | |
| tree | 74af3b0a5469886f69dbd13b0a70cc0ca4318227 | |
| parent | 778feeb4757daef5d7118feab2319142367910dd (diff) | |
[SERIAL] SUNHV: Fix jerky console on LDOM guests.
Mixing putchar() and write() hvcalls does not work %100
correctly. But we should be using write() all the time
if we can, even from ->start_tx(), anyways.
Signed-off-by: David S. Miller <davem@davemloft.net>
| -rw-r--r-- | drivers/serial/sunhv.c | 12 |
1 files changed, 1 insertions, 11 deletions
diff --git a/drivers/serial/sunhv.c b/drivers/serial/sunhv.c index 17bcca53d6a1..d82be42ff29a 100644 --- a/drivers/serial/sunhv.c +++ b/drivers/serial/sunhv.c | |||
| @@ -258,17 +258,7 @@ static void sunhv_stop_tx(struct uart_port *port) | |||
| 258 | /* port->lock held by caller. */ | 258 | /* port->lock held by caller. */ |
| 259 | static void sunhv_start_tx(struct uart_port *port) | 259 | static void sunhv_start_tx(struct uart_port *port) |
| 260 | { | 260 | { |
| 261 | struct circ_buf *xmit = &port->info->xmit; | 261 | transmit_chars(port); |
| 262 | |||
| 263 | while (!uart_circ_empty(xmit)) { | ||
| 264 | long status = sun4v_con_putchar(xmit->buf[xmit->tail]); | ||
| 265 | |||
| 266 | if (status != HV_EOK) | ||
| 267 | break; | ||
| 268 | |||
| 269 | xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE - 1); | ||
| 270 | port->icount.tx++; | ||
| 271 | } | ||
| 272 | } | 262 | } |
| 273 | 263 | ||
| 274 | /* port->lock is not held. */ | 264 | /* port->lock is not held. */ |
