WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

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

To: armbru@xxxxxxxxxx
Subject: Re: [Xen-devel] [PATCH]Fix a restored domain cannot use mouse and keyboard
From: SUZUKI Kazuhiro <kaz@xxxxxxxxxxxxxx>
Date: Tue, 12 Feb 2008 10:24:58 +0900 (JST)
Cc: xen-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Mon, 11 Feb 2008 17:25:43 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
In-reply-to: <87ir0zsck2.fsf@xxxxxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <20080208.174244.33934644.kaz@xxxxxxxxxxxxxxxxxx> <87ir0zsck2.fsf@xxxxxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
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