Mailing List Archive

Ensure that domain0 console receiver does not get stuck if serial
ChangeSet 1.1871, 2005/05/18 17:59:25+01:00, kaf24@firebug.cl.cam.ac.uk

Ensure that domain0 console receiver does not get stuck if serial
input is received early during boot. Fixes bugzilla bug #41.
Signed-off-by: Keir Fraser <keir@xensource.com>



console.c | 16 +++++++---------
1 files changed, 7 insertions(+), 9 deletions(-)


diff -Nru a/xen/drivers/char/console.c b/xen/drivers/char/console.c
--- a/xen/drivers/char/console.c 2005-05-18 13:06:15 -04:00
+++ b/xen/drivers/char/console.c 2005-05-18 13:06:15 -04:00
@@ -260,15 +260,13 @@
static void __serial_rx(unsigned char c, struct xen_regs *regs)
{
if ( xen_rx )
- {
- handle_keypress(c, regs);
- }
- else if ( (serial_rx_prod-serial_rx_cons) != SERIAL_RX_SIZE )
- {
- serial_rx_ring[SERIAL_RX_MASK(serial_rx_prod)] = c;
- if ( serial_rx_prod++ == serial_rx_cons )
- send_guest_virq(dom0, VIRQ_CONSOLE);
- }
+ return handle_keypress(c, regs);
+
+ /* Deliver input to guest buffer, unless it is already full. */
+ if ( (serial_rx_prod-serial_rx_cons) != SERIAL_RX_SIZE )
+ serial_rx_ring[SERIAL_RX_MASK(serial_rx_prod++)] = c;
+ /* Always notify the guest: prevents receive path from getting stuck. */
+ send_guest_virq(dom0, VIRQ_CONSOLE);
}

static void serial_rx(unsigned char c, struct xen_regs *regs)

_______________________________________________
Xen-changelog mailing list
Xen-changelog@lists.xensource.com
http://lists.xensource.com/xen-changelog
Ensure that domain0 console receiver does not get stuck if serial [ In reply to ]
ChangeSet 1.1159.258.137, 2005/05/18 17:59:25+01:00, kaf24@firebug.cl.cam.ac.uk

Ensure that domain0 console receiver does not get stuck if serial
input is received early during boot. Fixes bugzilla bug #41.
Signed-off-by: Keir Fraser <keir@xensource.com>



console.c | 16 +++++++---------
1 files changed, 7 insertions(+), 9 deletions(-)


diff -Nru a/xen/drivers/char/console.c b/xen/drivers/char/console.c
--- a/xen/drivers/char/console.c 2005-05-18 14:02:44 -04:00
+++ b/xen/drivers/char/console.c 2005-05-18 14:02:44 -04:00
@@ -260,15 +260,13 @@
static void __serial_rx(unsigned char c, struct xen_regs *regs)
{
if ( xen_rx )
- {
- handle_keypress(c, regs);
- }
- else if ( (serial_rx_prod-serial_rx_cons) != SERIAL_RX_SIZE )
- {
- serial_rx_ring[SERIAL_RX_MASK(serial_rx_prod)] = c;
- if ( serial_rx_prod++ == serial_rx_cons )
- send_guest_virq(dom0, VIRQ_CONSOLE);
- }
+ return handle_keypress(c, regs);
+
+ /* Deliver input to guest buffer, unless it is already full. */
+ if ( (serial_rx_prod-serial_rx_cons) != SERIAL_RX_SIZE )
+ serial_rx_ring[SERIAL_RX_MASK(serial_rx_prod++)] = c;
+ /* Always notify the guest: prevents receive path from getting stuck. */
+ send_guest_virq(dom0, VIRQ_CONSOLE);
}

static void serial_rx(unsigned char c, struct xen_regs *regs)

_______________________________________________
Xen-changelog mailing list
Xen-changelog@lists.xensource.com
http://lists.xensource.com/xen-changelog