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
 |