Hendrik Brueckner 3feebbb549 hvc_console: Fix loop if put_char() returns 0
If put_char() routine of a hvc console backend returns 0, then the
hvc console starts looping in the following scenarios:

1. hvc_console_print()
	If put_char() returns 0 then the while loop may loop forever.
	I have added the missing check for 0 to throw away console messages.

2. khvcd may loop:
	The thread calls hvc_poll() --> hvc_push()... if there are still
	buffered data then the HVC_POLL_WRITE bit is set and causes the
	khvcd thread to loop (if yield() returns immediately).

	However, instead of looping, the khvcd thread could sleep for
	MIN_TIMEOUT (doing the same as for get_chars()).
	The MIN_TIMEOUT is set if hvc_push() was not able to write
	data to the backend. If data has been written, the timeout is
	set to 0 to immediately re-schedule hvc_poll().

Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
Tested-by: Christian Borntraeger <borntraeger@de.ibm.com> (virtio_console)
Signed-off-by: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2008-10-22 10:59:55 +11:00
..
2008-07-25 10:53:43 -07:00
2008-10-20 08:50:24 -07:00
2008-10-13 09:51:44 -07:00
2008-06-20 14:05:55 -06:00
2008-10-13 09:51:38 -07:00
2008-10-20 08:52:41 -07:00
2008-10-20 08:52:41 -07:00
2008-10-20 09:41:06 -07:00
2008-07-20 17:12:36 -07:00
2008-07-22 13:03:28 -07:00
2008-06-20 14:05:57 -06:00
2008-10-16 16:52:05 +02:00
2008-10-20 08:52:41 -07:00
2008-10-13 09:51:41 -07:00
2008-10-13 09:51:40 -07:00
2008-06-20 14:05:48 -06:00
2008-02-07 08:42:25 -08:00
2008-10-16 11:21:47 -07:00
2008-04-30 08:29:43 -07:00
2008-07-24 10:47:14 -07:00
2008-10-13 09:51:44 -07:00
2008-10-13 09:51:44 -07:00
2008-10-13 09:51:39 -07:00
2007-02-12 09:48:30 -08:00
2007-07-21 17:49:16 -07:00
2008-10-13 09:51:44 -07:00
2008-07-20 17:12:38 -07:00
2008-07-20 17:12:38 -07:00
2008-07-22 13:03:28 -07:00
2008-07-20 17:12:38 -07:00
2008-10-20 08:52:41 -07:00
2008-07-20 17:12:34 -07:00
2008-07-26 20:29:03 -07:00
2008-07-02 15:06:25 -06:00
2008-07-20 17:12:38 -07:00
2008-10-20 08:52:36 -07:00
2008-10-20 08:52:34 -07:00
2008-06-20 14:05:51 -06:00
2008-04-30 23:15:34 +02:00
2008-10-13 09:51:41 -07:00
2008-07-26 20:29:03 -07:00
2008-10-16 16:52:05 +02:00
2008-10-16 11:21:32 -07:00