# HG changeset patch
# User Jimi Xenidis <[EMAIL PROTECTED]>
# Node ID 7680b29c03a6dbc15a1394ebe1467c46bdab9a39
# Parent  17aa29a18b080bd96286b29e7b5918701a330eff
[POWERPC] udbg support for DomUs Complete

Signed-off-by: Jimi Xenidis <[EMAIL PROTECTED]>
---
 arch/powerpc/platforms/xen/udbg_xen.c |   15 ++++++++++-----
 1 files changed, 10 insertions(+), 5 deletions(-)

diff -r 17aa29a18b08 -r 7680b29c03a6 arch/powerpc/platforms/xen/udbg_xen.c
--- a/arch/powerpc/platforms/xen/udbg_xen.c     Thu Jul 27 18:57:20 2006 -0400
+++ b/arch/powerpc/platforms/xen/udbg_xen.c     Sat Aug 05 11:33:24 2006 -0400
@@ -75,13 +75,14 @@ static void udbg_putc_domu_xen(char c)
        prod = intf->out_prod;
        mb();
 
-       while ((prod - cons) >= sizeof(intf->out))
-               continue /* relax */;
-
-       intf->out[MASK_XENCONS_IDX(prod++, intf->out)] = c;
+       if ((prod - cons) < sizeof(intf->out))
+               intf->out[MASK_XENCONS_IDX(prod++, intf->out)] = c;
 
        wmb();
        intf->out_prod = prod;
+
+       if (xen_start_info)
+               notify_remote_via_evtchn(xen_start_info->console_evtchn);
 }
 
 static int udbg_getc_poll_domu_xen(void)
@@ -89,9 +90,9 @@ static int udbg_getc_poll_domu_xen(void)
        XENCONS_RING_IDX cons, prod;
        int c;
 
+       mb();
        cons = intf->in_cons;
        prod = intf->in_prod;
-       mb();
        BUG_ON((prod - cons) > sizeof(intf->in));
 
        if (cons == prod)
@@ -100,6 +101,10 @@ static int udbg_getc_poll_domu_xen(void)
        c = intf->in[MASK_XENCONS_IDX(cons++, intf->in)];
        wmb();
        intf->in_cons = cons;
+
+       if (xen_start_info)
+               notify_remote_via_evtchn(xen_start_info->console_evtchn);
+
        return c;
 }
 

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

Reply via email to