From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:49022) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RB9AZ-0003EF-Df for qemu-devel@nongnu.org; Tue, 04 Oct 2011 13:52:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RB9AY-0001pM-Ci for qemu-devel@nongnu.org; Tue, 04 Oct 2011 13:52:43 -0400 Received: from smtp.eu.citrix.com ([62.200.22.115]:33258) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RB9AY-0001oR-6o for qemu-devel@nongnu.org; Tue, 04 Oct 2011 13:52:42 -0400 Date: Tue, 4 Oct 2011 18:52:33 +0100 From: Stefano Stabellini In-Reply-To: <4E8B4203.8040207@web.de> Message-ID: References: <1317739882-4809-1-git-send-email-anthony.perard@citrix.com> <1317739882-4809-3-git-send-email-anthony.perard@citrix.com> <4E8B4203.8040207@web.de> MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Subject: Re: [Qemu-devel] [PATCH RFC V1 02/11] qemu-timer: Introduce qemu_run_one_timer List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Jan Kiszka Cc: Anthony Perard , Alex Williamson , Xen Devel , QEMU-devel , Stefano Stabellini On Tue, 4 Oct 2011, Jan Kiszka wrote: > On 2011-10-04 16:51, Anthony PERARD wrote: > > Used by the Xen PCI Passthrough code to run the timer about the power > > state transition. > > > > Signed-off-by: Anthony PERARD > > --- > > qemu-timer.c | 15 +++++++++++++++ > > qemu-timer.h | 3 +++ > > 2 files changed, 18 insertions(+), 0 deletions(-) > > > > diff --git a/qemu-timer.c b/qemu-timer.c > > index 46dd483..15e659b 100644 > > --- a/qemu-timer.c > > +++ b/qemu-timer.c > > @@ -1163,3 +1163,18 @@ int qemu_calculate_timeout(void) > > return 1000; > > } > > > > +/* run the specified timer */ > > +void qemu_run_one_timer(QEMUTimer *ts) > > +{ > > + uint64_t current_time; > > + > > + /* remove timer from the list before calling the callback */ > > + qemu_del_timer(ts); > > + > > + while ((current_time = qemu_get_clock_ms(rt_clock)) < ts->expire_time) > > + /* sleep until the expire time */ > > + usleep((ts->expire_time - current_time) * 1000); > > + > > + /* run the callback */ > > + ts->cb(ts->opaque); > > +} > > This looks funny. I can't imagine that this could ever fit into the > standard (asynchronous) QEMU execution model for I/O. Keep it private to > Xen? I haven't finished reading the series yet, but this caught my eye because it is particularly ugly; we should get rid of it. Considering that on a real device if you try to write to the PCI config space before a power transition is completed the write just fails, maybe we should do the same here and remove the timer. From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: Re: [PATCH RFC V1 02/11] qemu-timer: Introduce qemu_run_one_timer Date: Tue, 4 Oct 2011 18:52:33 +0100 Message-ID: References: <1317739882-4809-1-git-send-email-anthony.perard@citrix.com> <1317739882-4809-3-git-send-email-anthony.perard@citrix.com> <4E8B4203.8040207@web.de> Mime-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Return-path: In-Reply-To: <4E8B4203.8040207@web.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+gceq-qemu-devel=gmane.org@nongnu.org Sender: qemu-devel-bounces+gceq-qemu-devel=gmane.org@nongnu.org To: Jan Kiszka Cc: Anthony Perard , Alex Williamson , Xen Devel , QEMU-devel , Stefano Stabellini List-Id: xen-devel@lists.xenproject.org On Tue, 4 Oct 2011, Jan Kiszka wrote: > On 2011-10-04 16:51, Anthony PERARD wrote: > > Used by the Xen PCI Passthrough code to run the timer about the power > > state transition. > > > > Signed-off-by: Anthony PERARD > > --- > > qemu-timer.c | 15 +++++++++++++++ > > qemu-timer.h | 3 +++ > > 2 files changed, 18 insertions(+), 0 deletions(-) > > > > diff --git a/qemu-timer.c b/qemu-timer.c > > index 46dd483..15e659b 100644 > > --- a/qemu-timer.c > > +++ b/qemu-timer.c > > @@ -1163,3 +1163,18 @@ int qemu_calculate_timeout(void) > > return 1000; > > } > > > > +/* run the specified timer */ > > +void qemu_run_one_timer(QEMUTimer *ts) > > +{ > > + uint64_t current_time; > > + > > + /* remove timer from the list before calling the callback */ > > + qemu_del_timer(ts); > > + > > + while ((current_time = qemu_get_clock_ms(rt_clock)) < ts->expire_time) > > + /* sleep until the expire time */ > > + usleep((ts->expire_time - current_time) * 1000); > > + > > + /* run the callback */ > > + ts->cb(ts->opaque); > > +} > > This looks funny. I can't imagine that this could ever fit into the > standard (asynchronous) QEMU execution model for I/O. Keep it private to > Xen? I haven't finished reading the series yet, but this caught my eye because it is particularly ugly; we should get rid of it. Considering that on a real device if you try to write to the PCI config space before a power transition is completed the write just fails, maybe we should do the same here and remove the timer.