[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH]Fix a restored domain cannot use mouse and keyboard



Hi,

Sorry for my late reply.

Qemu generates(produces) events to the event channel but no event on
it are processed during save.

When a domain is restored, pending events and selectors are cleared
as follows in tools/libxc/xc_domain_restore.c.

  1125      /* clear any pending events and the selector */
  1126      MEMSET_ARRAY_FIELD(new_shared_info, evtchn_pending, 0);
  1127      for ( i = 0; i < MAX_VIRT_CPUS; i++ )
  1128              SET_FIELD(new_shared_info, vcpu_info[i].evtchn_pending_sel, 
0);

So it processes(consumes) no pending event on the event channel and
page->in_cons doesn't increase.

Qemu has the following code in tools/ioemu/hw/xenfb.c.

   568          prod = page->in_prod;
   569          if (prod - page->in_cons == XENKBD_IN_RING_LEN) {
   570                  errno = EAGAIN;
   571                  return -1;
   572          }

If the ring buffer fills up to (prod - page->in_cons ==
XENKBD_IN_RING_LEN), then no event notifications go to the event
channel.

Thanks.
KAZ


From: Markus Armbruster <armbru@xxxxxxxxxx>
Subject: Re: [Xen-devel] [PATCH]Fix a restored domain cannot use mouse and 
keyboard
Date: Fri, 08 Feb 2008 16:17:01 +0100

> SUZUKI Kazuhiro <kaz@xxxxxxxxxxxxxx> writes:
> 
> > Hi all,
> >
> > I found a bug that a restored domain could not use mouse and
> > keyboard, when the mouse is moved while saving the domain.
> >
> > The following patch fixes it.
> >
> > Thanks.
> > KAZ
> 
> You didn't tell us what exactly went wrong, so I can only guess.  I
> guess that when the ring buffer fills up completely during save, then
> xenkbd_resume() finds it full, and as long as it remains full, no
> further events go in, and no notifications go to the event channel.
> As long as the (new) backend doesn't get a notification on its event
> channel, it doesn't take out anything, so the ring buffer remains
> full.  Deadlock.
> 
> Is that correct?
> 
> The fix loses the contents of the ring buffer.  I guess that's
> tolerable.
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel

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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.