Author: kmacy
Date: Mon May 11 23:03:15 2009
New Revision: 192004
URL: http://svn.freebsd.org/changeset/base/192004

Log:
  don't acquire tty lock with console lock held

Modified:
  head/sys/dev/xen/console/console.c
  head/sys/dev/xen/console/xencons_ring.c

Modified: head/sys/dev/xen/console/console.c
==============================================================================
--- head/sys/dev/xen/console/console.c  Mon May 11 22:55:49 2009        
(r192003)
+++ head/sys/dev/xen/console/console.c  Mon May 11 23:03:15 2009        
(r192004)
@@ -287,8 +287,10 @@ xencons_rx(char *buf, unsigned len)
                ttydisc_rint_done(tp);
                tty_unlock(tp);
        } else {
+               CN_LOCK(cn_mtx);
                for (i = 0; i < len; i++)
                        rbuf[RBUF_MASK(rp++)] = buf[i];
+               CN_UNLOCK(cn_mtx);
        }
 }
 

Modified: head/sys/dev/xen/console/xencons_ring.c
==============================================================================
--- head/sys/dev/xen/console/xencons_ring.c     Mon May 11 22:55:49 2009        
(r192003)
+++ head/sys/dev/xen/console/xencons_ring.c     Mon May 11 23:03:15 2009        
(r192004)
@@ -94,7 +94,8 @@ xencons_handle_input(void *unused)
 
        cons = intf->in_cons;
        prod = intf->in_prod;
-
+       CN_UNLOCK(cn_mtx);
+       
        /* XXX needs locking */
        while (cons != prod) {
                xencons_rx(intf->in + MASK_XENCONS_IDX(cons, intf->in), 1);
@@ -104,6 +105,7 @@ xencons_handle_input(void *unused)
        mb();
        intf->in_cons = cons;
 
+       CN_LOCK(cn_mtx);
        notify_remote_via_evtchn(xen_start_info->console_evtchn);
 
        xencons_tx();
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to