From: Luca Tettamanti <kronos.it-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: qemu-devel-qX2TKyscuCcdnm+yROfE0A@public.gmane.org
Cc: kvm-devel-TtF/mJH4Jtrk1uMJSBkQmQ@public.gmane.org,
Luca Tettamanti
<kronos.it-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Subject: [PATCH 4/4] Add support for dynamic ticks.
Date: Sat, 18 Aug 2007 01:11:53 +0200 [thread overview]
Message-ID: <20070817231406.717137712@gmail.com> (raw)
In-Reply-To: 20070817231149.544849769@gmail.com
[-- Attachment #1: clock-dyn --]
[-- Type: text/plain, Size: 7933 bytes --]
If DYNAMIC_TICKS is defined qemu does not attepmt to generate SIGALRM at a
constant rate. Rather, the system timer is set to generate SIGALRM only
when it is needed. DYNAMIC_TICKS reduces the number of SIGALRMs sent to
idle dynamic-ticked guests.
Original patch from Dan Kenigsberg <dank-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
Signed-off-by: Luca Tettamanti <kronos.it-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
---
configure | 5 ++
vl.c | 149 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
2 files changed, 148 insertions(+), 6 deletions(-)
Index: qemu/vl.c
===================================================================
--- qemu.orig/vl.c 2007-08-17 17:45:00.000000000 +0200
+++ qemu/vl.c 2007-08-18 00:38:03.000000000 +0200
@@ -784,12 +784,42 @@
struct qemu_alarm_timer {
char const *name;
+ unsigned int flags;
int (*start)(struct qemu_alarm_timer *t);
void (*stop)(struct qemu_alarm_timer *t);
+ void (*rearm)(struct qemu_alarm_timer *t);
void *priv;
};
+#define ALARM_FLAG_DYNTICKS 0x1
+
+#ifdef DYNAMIC_TICKS
+
+static inline int alarm_has_dynticks(struct qemu_alarm_timer *t)
+{
+ return t->flags & ALARM_FLAG_DYNTICKS;
+}
+
+static void qemu_rearm_alarm_timer(struct qemu_alarm_timer *t) {
+ if (!alarm_has_dynticks(t))
+ return;
+
+ t->rearm(t);
+}
+
+#else /* DYNAMIC_TICKS */
+
+static inline int alarm_has_dynticks(struct qemu_alarm_timer *t)
+{
+ return 0;
+}
+
+static void qemu_rearm_alarm_timer(void) {
+}
+
+#endif /* DYNAMIC_TICKS */
+
static struct qemu_alarm_timer *alarm_timer;
#ifdef _WIN32
@@ -808,6 +838,14 @@
static int unix_start_timer(struct qemu_alarm_timer *t);
static void unix_stop_timer(struct qemu_alarm_timer *t);
+#ifdef DYNAMIC_TICKS
+
+static int dynticks_start_timer(struct qemu_alarm_timer *t);
+static void dynticks_stop_timer(struct qemu_alarm_timer *t);
+static void dynticks_rearm_timer(struct qemu_alarm_timer *t);
+
+#endif
+
#ifdef __linux__
static int hpet_start_timer(struct qemu_alarm_timer *t);
@@ -821,16 +859,19 @@
#endif /* _WIN32 */
static struct qemu_alarm_timer alarm_timers[] = {
+#ifndef _WIN32
+#ifdef DYNAMIC_TICKS
+ {"dynticks", ALARM_FLAG_DYNTICKS, dynticks_start_timer, dynticks_stop_timer, dynticks_rearm_timer, NULL},
+#endif
#ifdef __linux__
/* HPET - if available - is preferred */
- {"hpet", hpet_start_timer, hpet_stop_timer, NULL},
+ {"hpet", 0, hpet_start_timer, hpet_stop_timer, NULL, NULL},
/* ...otherwise try RTC */
- {"rtc", rtc_start_timer, rtc_stop_timer, NULL},
+ {"rtc", 0, rtc_start_timer, rtc_stop_timer, NULL, NULL},
#endif
-#ifndef _WIN32
- {"unix", unix_start_timer, unix_stop_timer, NULL},
+ {"unix", 0, unix_start_timer, unix_stop_timer, NULL, NULL},
#else
- {"win32", win32_start_timer, win32_stop_timer, &alarm_win32_data},
+ {"win32", 0, win32_start_timer, win32_stop_timer, NULL, &alarm_win32_data},
#endif
{NULL, }
};
@@ -949,6 +990,8 @@
}
pt = &t->next;
}
+
+ qemu_rearm_alarm_timer(alarm_timer);
}
/* modify the current timer so that it will be fired when current_time
@@ -1008,6 +1051,7 @@
/* run the callback (the timer list can be modified) */
ts->cb(ts->opaque);
}
+ qemu_rearm_alarm_timer(alarm_timer);
}
int64_t qemu_get_clock(QEMUClock *clock)
@@ -1115,7 +1159,8 @@
last_clock = ti;
}
#endif
- if (qemu_timer_expired(active_timers[QEMU_TIMER_VIRTUAL],
+ if (alarm_has_dynticks(alarm_timer) ||
+ qemu_timer_expired(active_timers[QEMU_TIMER_VIRTUAL],
qemu_get_clock(vm_clock)) ||
qemu_timer_expired(active_timers[QEMU_TIMER_REALTIME],
qemu_get_clock(rt_clock))) {
@@ -1243,6 +1288,97 @@
#endif /* !defined(__linux__) */
+#ifdef DYNAMIC_TICKS
+static int dynticks_start_timer(struct qemu_alarm_timer *t)
+{
+ struct sigevent ev;
+ timer_t host_timer;
+ struct sigaction act;
+
+ sigfillset(&act.sa_mask);
+ act.sa_flags = 0;
+#if defined(TARGET_I386) && defined(USE_CODE_COPY)
+ act.sa_flags |= SA_ONSTACK;
+#endif
+ act.sa_handler = host_alarm_handler;
+
+ sigaction(SIGALRM, &act, NULL);
+
+ ev.sigev_value.sival_int = 0;
+ ev.sigev_notify = SIGEV_SIGNAL;
+ ev.sigev_signo = SIGALRM;
+
+ if (timer_create(CLOCK_REALTIME, &ev, &host_timer)) {
+ perror("timer_create");
+
+ /* disable dynticks */
+ fprintf(stderr, "Dynamic Ticks disabled\n");
+
+ return -1;
+ }
+
+ t->priv = (void *)host_timer;
+
+ return 0;
+}
+
+static void dynticks_stop_timer(struct qemu_alarm_timer *t)
+{
+ timer_t host_timer = (timer_t)t->priv;
+
+ timer_delete(host_timer);
+}
+
+static void dynticks_rearm_timer(struct qemu_alarm_timer *t)
+{
+ timer_t host_timer = (timer_t)t->priv;
+ struct itimerspec timeout;
+ int64_t nearest_delta_us = INT64_MAX;
+
+ if (active_timers[QEMU_TIMER_REALTIME] ||
+ active_timers[QEMU_TIMER_VIRTUAL]) {
+ int64_t vmdelta_us, current_us;
+
+ if (active_timers[QEMU_TIMER_REALTIME])
+ nearest_delta_us = (active_timers[QEMU_TIMER_REALTIME]->expire_time - qemu_get_clock(rt_clock))*1000;
+
+ if (active_timers[QEMU_TIMER_VIRTUAL]) {
+ /* round up */
+ vmdelta_us = (active_timers[QEMU_TIMER_VIRTUAL]->expire_time - qemu_get_clock(vm_clock)+999)/1000;
+ if (vmdelta_us < nearest_delta_us)
+ nearest_delta_us = vmdelta_us;
+ }
+
+ /* Avoid arming the timer to negative, zero, or too low values */
+ /* TODO: MIN_TIMER_REARM_US should be optimized */
+ #define MIN_TIMER_REARM_US 250
+ if (nearest_delta_us <= MIN_TIMER_REARM_US)
+ nearest_delta_us = MIN_TIMER_REARM_US;
+
+ /* check whether a timer is already running */
+ if (timer_gettime(host_timer, &timeout)) {
+ perror("gettime");
+ fprintf(stderr, "Internal timer error: aborting\n");
+ exit(1);
+ }
+ current_us = timeout.it_value.tv_sec * 1000000 + timeout.it_value.tv_nsec/1000;
+ if (current_us && current_us <= nearest_delta_us)
+ return;
+
+ timeout.it_interval.tv_sec = 0;
+ timeout.it_interval.tv_nsec = 0; /* 0 for one-shot timer */
+ timeout.it_value.tv_sec = nearest_delta_us / 1000000;
+ timeout.it_value.tv_nsec = (nearest_delta_us % 1000000) * 1000;
+ if (timer_settime(host_timer, 0 /* RELATIVE */, &timeout, NULL)) {
+ perror("settime");
+ fprintf(stderr, "Internal timer error: aborting\n");
+ exit(1);
+ }
+ }
+}
+
+#endif /* DYNAMIC_TICKS */
+
static int unix_start_timer(struct qemu_alarm_timer *t)
{
struct sigaction act;
@@ -6490,6 +6626,7 @@
cpu_enable_ticks();
vm_running = 1;
vm_state_notify(1);
+ qemu_rearm_alarm_timer(alarm_timer);
}
}
Index: qemu/configure
===================================================================
--- qemu.orig/configure 2007-08-17 17:45:17.000000000 +0200
+++ qemu/configure 2007-08-17 17:45:31.000000000 +0200
@@ -294,6 +294,8 @@
*) echo "undefined SPARC architecture. Exiting";exit 1;;
esac
;;
+ --disable-dynamic-ticks) dynamic_ticks="no"
+ ;;
esac
done
@@ -859,6 +861,9 @@
if [ "$build_docs" = "yes" ] ; then
echo "BUILD_DOCS=yes" >> $config_mak
fi
+if test "$dynamic_ticks" != "no" ; then
+ echo "#define DYNAMIC_TICKS 1" >> $config_h
+fi
# XXX: suppress that
if [ "$bsd" = "yes" ] ; then
--
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
WARNING: multiple messages have this Message-ID (diff)
From: Luca Tettamanti <kronos.it@gmail.com>
To: qemu-devel@nongnu.org
Cc: kvm-devel@lists.sf.net, Luca Tettamanti <kronos.it@gmail.com>
Subject: [Qemu-devel] [PATCH 4/4] Add support for dynamic ticks.
Date: Sat, 18 Aug 2007 01:11:53 +0200 [thread overview]
Message-ID: <20070817231406.717137712@gmail.com> (raw)
In-Reply-To: 20070817231149.544849769@gmail.com
[-- Attachment #1: clock-dyn --]
[-- Type: text/plain, Size: 7559 bytes --]
If DYNAMIC_TICKS is defined qemu does not attepmt to generate SIGALRM at a
constant rate. Rather, the system timer is set to generate SIGALRM only
when it is needed. DYNAMIC_TICKS reduces the number of SIGALRMs sent to
idle dynamic-ticked guests.
Original patch from Dan Kenigsberg <dank@qumranet.com>
Signed-off-by: Luca Tettamanti <kronos.it@gmail.com>
---
configure | 5 ++
vl.c | 149 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
2 files changed, 148 insertions(+), 6 deletions(-)
Index: qemu/vl.c
===================================================================
--- qemu.orig/vl.c 2007-08-17 17:45:00.000000000 +0200
+++ qemu/vl.c 2007-08-18 00:38:03.000000000 +0200
@@ -784,12 +784,42 @@
struct qemu_alarm_timer {
char const *name;
+ unsigned int flags;
int (*start)(struct qemu_alarm_timer *t);
void (*stop)(struct qemu_alarm_timer *t);
+ void (*rearm)(struct qemu_alarm_timer *t);
void *priv;
};
+#define ALARM_FLAG_DYNTICKS 0x1
+
+#ifdef DYNAMIC_TICKS
+
+static inline int alarm_has_dynticks(struct qemu_alarm_timer *t)
+{
+ return t->flags & ALARM_FLAG_DYNTICKS;
+}
+
+static void qemu_rearm_alarm_timer(struct qemu_alarm_timer *t) {
+ if (!alarm_has_dynticks(t))
+ return;
+
+ t->rearm(t);
+}
+
+#else /* DYNAMIC_TICKS */
+
+static inline int alarm_has_dynticks(struct qemu_alarm_timer *t)
+{
+ return 0;
+}
+
+static void qemu_rearm_alarm_timer(void) {
+}
+
+#endif /* DYNAMIC_TICKS */
+
static struct qemu_alarm_timer *alarm_timer;
#ifdef _WIN32
@@ -808,6 +838,14 @@
static int unix_start_timer(struct qemu_alarm_timer *t);
static void unix_stop_timer(struct qemu_alarm_timer *t);
+#ifdef DYNAMIC_TICKS
+
+static int dynticks_start_timer(struct qemu_alarm_timer *t);
+static void dynticks_stop_timer(struct qemu_alarm_timer *t);
+static void dynticks_rearm_timer(struct qemu_alarm_timer *t);
+
+#endif
+
#ifdef __linux__
static int hpet_start_timer(struct qemu_alarm_timer *t);
@@ -821,16 +859,19 @@
#endif /* _WIN32 */
static struct qemu_alarm_timer alarm_timers[] = {
+#ifndef _WIN32
+#ifdef DYNAMIC_TICKS
+ {"dynticks", ALARM_FLAG_DYNTICKS, dynticks_start_timer, dynticks_stop_timer, dynticks_rearm_timer, NULL},
+#endif
#ifdef __linux__
/* HPET - if available - is preferred */
- {"hpet", hpet_start_timer, hpet_stop_timer, NULL},
+ {"hpet", 0, hpet_start_timer, hpet_stop_timer, NULL, NULL},
/* ...otherwise try RTC */
- {"rtc", rtc_start_timer, rtc_stop_timer, NULL},
+ {"rtc", 0, rtc_start_timer, rtc_stop_timer, NULL, NULL},
#endif
-#ifndef _WIN32
- {"unix", unix_start_timer, unix_stop_timer, NULL},
+ {"unix", 0, unix_start_timer, unix_stop_timer, NULL, NULL},
#else
- {"win32", win32_start_timer, win32_stop_timer, &alarm_win32_data},
+ {"win32", 0, win32_start_timer, win32_stop_timer, NULL, &alarm_win32_data},
#endif
{NULL, }
};
@@ -949,6 +990,8 @@
}
pt = &t->next;
}
+
+ qemu_rearm_alarm_timer(alarm_timer);
}
/* modify the current timer so that it will be fired when current_time
@@ -1008,6 +1051,7 @@
/* run the callback (the timer list can be modified) */
ts->cb(ts->opaque);
}
+ qemu_rearm_alarm_timer(alarm_timer);
}
int64_t qemu_get_clock(QEMUClock *clock)
@@ -1115,7 +1159,8 @@
last_clock = ti;
}
#endif
- if (qemu_timer_expired(active_timers[QEMU_TIMER_VIRTUAL],
+ if (alarm_has_dynticks(alarm_timer) ||
+ qemu_timer_expired(active_timers[QEMU_TIMER_VIRTUAL],
qemu_get_clock(vm_clock)) ||
qemu_timer_expired(active_timers[QEMU_TIMER_REALTIME],
qemu_get_clock(rt_clock))) {
@@ -1243,6 +1288,97 @@
#endif /* !defined(__linux__) */
+#ifdef DYNAMIC_TICKS
+static int dynticks_start_timer(struct qemu_alarm_timer *t)
+{
+ struct sigevent ev;
+ timer_t host_timer;
+ struct sigaction act;
+
+ sigfillset(&act.sa_mask);
+ act.sa_flags = 0;
+#if defined(TARGET_I386) && defined(USE_CODE_COPY)
+ act.sa_flags |= SA_ONSTACK;
+#endif
+ act.sa_handler = host_alarm_handler;
+
+ sigaction(SIGALRM, &act, NULL);
+
+ ev.sigev_value.sival_int = 0;
+ ev.sigev_notify = SIGEV_SIGNAL;
+ ev.sigev_signo = SIGALRM;
+
+ if (timer_create(CLOCK_REALTIME, &ev, &host_timer)) {
+ perror("timer_create");
+
+ /* disable dynticks */
+ fprintf(stderr, "Dynamic Ticks disabled\n");
+
+ return -1;
+ }
+
+ t->priv = (void *)host_timer;
+
+ return 0;
+}
+
+static void dynticks_stop_timer(struct qemu_alarm_timer *t)
+{
+ timer_t host_timer = (timer_t)t->priv;
+
+ timer_delete(host_timer);
+}
+
+static void dynticks_rearm_timer(struct qemu_alarm_timer *t)
+{
+ timer_t host_timer = (timer_t)t->priv;
+ struct itimerspec timeout;
+ int64_t nearest_delta_us = INT64_MAX;
+
+ if (active_timers[QEMU_TIMER_REALTIME] ||
+ active_timers[QEMU_TIMER_VIRTUAL]) {
+ int64_t vmdelta_us, current_us;
+
+ if (active_timers[QEMU_TIMER_REALTIME])
+ nearest_delta_us = (active_timers[QEMU_TIMER_REALTIME]->expire_time - qemu_get_clock(rt_clock))*1000;
+
+ if (active_timers[QEMU_TIMER_VIRTUAL]) {
+ /* round up */
+ vmdelta_us = (active_timers[QEMU_TIMER_VIRTUAL]->expire_time - qemu_get_clock(vm_clock)+999)/1000;
+ if (vmdelta_us < nearest_delta_us)
+ nearest_delta_us = vmdelta_us;
+ }
+
+ /* Avoid arming the timer to negative, zero, or too low values */
+ /* TODO: MIN_TIMER_REARM_US should be optimized */
+ #define MIN_TIMER_REARM_US 250
+ if (nearest_delta_us <= MIN_TIMER_REARM_US)
+ nearest_delta_us = MIN_TIMER_REARM_US;
+
+ /* check whether a timer is already running */
+ if (timer_gettime(host_timer, &timeout)) {
+ perror("gettime");
+ fprintf(stderr, "Internal timer error: aborting\n");
+ exit(1);
+ }
+ current_us = timeout.it_value.tv_sec * 1000000 + timeout.it_value.tv_nsec/1000;
+ if (current_us && current_us <= nearest_delta_us)
+ return;
+
+ timeout.it_interval.tv_sec = 0;
+ timeout.it_interval.tv_nsec = 0; /* 0 for one-shot timer */
+ timeout.it_value.tv_sec = nearest_delta_us / 1000000;
+ timeout.it_value.tv_nsec = (nearest_delta_us % 1000000) * 1000;
+ if (timer_settime(host_timer, 0 /* RELATIVE */, &timeout, NULL)) {
+ perror("settime");
+ fprintf(stderr, "Internal timer error: aborting\n");
+ exit(1);
+ }
+ }
+}
+
+#endif /* DYNAMIC_TICKS */
+
static int unix_start_timer(struct qemu_alarm_timer *t)
{
struct sigaction act;
@@ -6490,6 +6626,7 @@
cpu_enable_ticks();
vm_running = 1;
vm_state_notify(1);
+ qemu_rearm_alarm_timer(alarm_timer);
}
}
Index: qemu/configure
===================================================================
--- qemu.orig/configure 2007-08-17 17:45:17.000000000 +0200
+++ qemu/configure 2007-08-17 17:45:31.000000000 +0200
@@ -294,6 +294,8 @@
*) echo "undefined SPARC architecture. Exiting";exit 1;;
esac
;;
+ --disable-dynamic-ticks) dynamic_ticks="no"
+ ;;
esac
done
@@ -859,6 +861,9 @@
if [ "$build_docs" = "yes" ] ; then
echo "BUILD_DOCS=yes" >> $config_mak
fi
+if test "$dynamic_ticks" != "no" ; then
+ echo "#define DYNAMIC_TICKS 1" >> $config_h
+fi
# XXX: suppress that
if [ "$bsd" = "yes" ] ; then
--
next prev parent reply other threads:[~2007-08-17 23:11 UTC|newest]
Thread overview: 104+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-08-17 23:11 [PATCH 0/4] Rework alarm timer infrastrucure - take 2 Luca Tettamanti
2007-08-17 23:11 ` [Qemu-devel] " Luca Tettamanti
2007-08-17 23:11 ` [PATCH 1/4] Rework alarm timer infrastrucure Luca Tettamanti
2007-08-17 23:11 ` [Qemu-devel] " Luca Tettamanti
2007-08-17 23:11 ` [PATCH 2/4] Add -clock option Luca Tettamanti
2007-08-17 23:11 ` [Qemu-devel] " Luca Tettamanti
2007-08-17 23:11 ` [PATCH 3/4] Add support for HPET periodic timer Luca Tettamanti
2007-08-17 23:11 ` [Qemu-devel] " Luca Tettamanti
[not found] ` <20070817231406.493008599-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2007-08-21 19:24 ` Matthew Kent
2007-08-21 19:24 ` Matthew Kent
2007-08-21 19:40 ` Luca
2007-08-21 19:40 ` Luca
[not found] ` <68676e00708211240k7237bf21k131257dd28063d26-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-08-21 20:15 ` Matthew Kent
2007-08-21 20:15 ` Matthew Kent
2007-08-22 6:48 ` Dan Kenigsberg
2007-08-22 6:48 ` [kvm-devel] " Dan Kenigsberg
[not found] ` <20070822064851.GA16295-RO/WWmT55CHJJbofclyLPCHBx9XpghdU@public.gmane.org>
2007-08-22 7:03 ` Avi Kivity
2007-08-22 7:03 ` [kvm-devel] " Avi Kivity
[not found] ` <46CBDFC4.5060207-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-08-22 12:34 ` Andi Kleen
2007-08-22 12:34 ` [kvm-devel] " Andi Kleen
[not found] ` <20070822123424.GK2642-KvMlXPVkKihbpigZmTR7Iw@public.gmane.org>
2007-08-22 21:11 ` Dan Kenigsberg
2007-08-22 21:11 ` [kvm-devel] " Dan Kenigsberg
[not found] ` <20070822211150.GA22093-RO/WWmT55CHJJbofclyLPCHBx9XpghdU@public.gmane.org>
2007-08-22 22:09 ` Andi Kleen
2007-08-22 22:09 ` [kvm-devel] " Andi Kleen
[not found] ` <20070822220947.GK8058-KvMlXPVkKihbpigZmTR7Iw@public.gmane.org>
2007-08-23 7:02 ` Dan Kenigsberg
2007-08-23 7:02 ` [kvm-devel] " Dan Kenigsberg
[not found] ` <20070823070230.GA24942-RO/WWmT55CHJJbofclyLPCHBx9XpghdU@public.gmane.org>
2007-08-24 20:18 ` Luca
2007-08-24 20:18 ` [kvm-devel] " Luca
2007-08-25 8:24 ` Dan Kenigsberg
2007-09-03 8:40 ` GUERRAZ Francois
2007-08-17 23:11 ` Luca Tettamanti [this message]
2007-08-17 23:11 ` [Qemu-devel] [PATCH 4/4] Add support for dynamic ticks Luca Tettamanti
[not found] ` <20070817231149.544849769-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2007-08-17 23:48 ` [Qemu-devel] [PATCH 0/4] Rework alarm timer infrastrucure - take 2 Christian MICHON
2007-08-17 23:48 ` Christian MICHON
[not found] ` <46d6db660708171648m3a798685q6514261bc097bc62-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-08-18 0:10 ` Luca
2007-08-18 0:10 ` [kvm-devel] " Luca
2007-08-18 15:17 ` Anthony Liguori
2007-08-18 15:17 ` [Qemu-devel] Re: [kvm-devel] " Anthony Liguori
2007-08-18 16:53 ` [Qemu-devel] RE: [kvm-devel] [PATCH 0/4] Rework alarm timer infrastrucure - take2 Dor Laor
[not found] ` <64F9B87B6B770947A9F8391472E032160D4645F0-yEcIvxbTEBqsx+V+t5oei8rau4O3wl8o3fe8/T/H7NteoWH0uzbU5w@public.gmane.org>
2007-08-18 22:02 ` Luca Tettamanti
2007-08-18 22:02 ` [Qemu-devel] Re: [kvm-devel] " Luca Tettamanti
[not found] ` <20070818220252.GA19526-sTXFmx6KbOnUXq0IF5SVAZ4oGUkBHcCu@public.gmane.org>
2007-08-18 23:58 ` Anthony Liguori
2007-08-18 23:58 ` [Qemu-devel] Re: [kvm-devel] " Anthony Liguori
2007-08-19 7:36 ` [PATCH 0/4] Rework alarm timer infrastrucure -take2 Dor Laor
2007-08-19 7:36 ` [Qemu-devel] RE: [kvm-devel] " Dor Laor
2007-08-19 8:24 ` [PATCH 0/4] Rework alarm timer infrastrucure - take2 Avi Kivity
2007-08-19 8:24 ` [Qemu-devel] Re: [kvm-devel] " Avi Kivity
[not found] ` <46C7FE32.4050309-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-08-19 13:10 ` [Qemu-devel] " Jamie Lokier
2007-08-19 13:10 ` [Qemu-devel] Re: [kvm-devel] " Jamie Lokier
[not found] ` <20070819131042.GA22798-tp2ajI7sM85Y6zH9YvfY1x2eb7JE58TQ@public.gmane.org>
2007-08-19 13:48 ` [Qemu-devel] " Avi Kivity
2007-08-19 13:48 ` [kvm-devel] " Avi Kivity
[not found] ` <46C84A16.7040305-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-08-19 13:57 ` Paul Brook
2007-08-19 13:57 ` [kvm-devel] " Paul Brook
[not found] ` <200708191457.21237.paul-qD8j1LwMmJjtCj0u4l0SBw@public.gmane.org>
2007-08-19 14:07 ` Avi Kivity
2007-08-19 14:07 ` [kvm-devel] " Avi Kivity
[not found] ` <46C84E95.7070802-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-08-19 14:27 ` Dor Laor
2007-08-19 14:27 ` [kvm-devel] " Dor Laor
2007-08-20 9:25 ` Avi Kivity
2007-08-20 9:25 ` [kvm-devel] " Avi Kivity
2007-08-19 17:15 ` Jamie Lokier
2007-08-19 17:15 ` [kvm-devel] " Jamie Lokier
[not found] ` <20070819171545.GB16928-tp2ajI7sM85Y6zH9YvfY1x2eb7JE58TQ@public.gmane.org>
2007-08-19 19:29 ` [Qemu-devel] Re: [PATCH 0/4] Rework alarmtimer " Dor Laor
2007-08-19 19:29 ` [kvm-devel] " Dor Laor
2007-08-19 19:30 ` [Qemu-devel] Re: [PATCH 0/4] Rework alarm timer " Avi Kivity
2007-08-19 19:30 ` [kvm-devel] " Avi Kivity
2007-08-19 16:52 ` Luca
2007-08-19 16:52 ` [Qemu-devel] Re: [kvm-devel] " Luca
[not found] ` <68676e00708190952g7d4751c2g87a6ff71dd278f71-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-08-19 19:31 ` Avi Kivity
2007-08-19 19:31 ` [Qemu-devel] Re: [kvm-devel] " Avi Kivity
[not found] ` <46C89A8E.7040609-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-08-20 21:20 ` Luca Tettamanti
2007-08-20 21:20 ` [Qemu-devel] Re: [kvm-devel] " Luca Tettamanti
[not found] ` <20070820212058.GA6713-sTXFmx6KbOnUXq0IF5SVAZ4oGUkBHcCu@public.gmane.org>
2007-08-20 21:55 ` [Qemu-devel] " malc
2007-08-20 21:55 ` [Qemu-devel] Re: [kvm-devel] " malc
[not found] ` <Pine.LNX.4.64.0708210140540.16421-KsBd/I2zj1m2ZGm1qqSgDg@public.gmane.org>
2007-08-20 22:49 ` [Qemu-devel] " Luca
2007-08-20 22:49 ` [kvm-devel] " Luca
2007-08-21 12:09 ` Avi Kivity
2007-08-21 12:09 ` [Qemu-devel] Re: [kvm-devel] " Avi Kivity
[not found] ` <46CAD607.2080504-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-08-21 19:38 ` Luca Tettamanti
2007-08-21 19:38 ` [Qemu-devel] Re: [kvm-devel] " Luca Tettamanti
[not found] ` <20070821193834.GB13544-sTXFmx6KbOnUXq0IF5SVAZ4oGUkBHcCu@public.gmane.org>
2007-08-21 19:44 ` malc
2007-08-21 19:44 ` [Qemu-devel] Re: [kvm-devel] " malc
2007-08-22 5:02 ` Avi Kivity
2007-08-22 5:02 ` [Qemu-devel] Re: [kvm-devel] " Avi Kivity
[not found] ` <46CBC34F.6060601-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-08-22 16:12 ` Luca Tettamanti
2007-08-22 16:12 ` [Qemu-devel] Re: [kvm-devel] " Luca Tettamanti
[not found] ` <20070822161211.GA30147-sTXFmx6KbOnUXq0IF5SVAZ4oGUkBHcCu@public.gmane.org>
2007-08-22 16:21 ` Avi Kivity
2007-08-22 16:21 ` [Qemu-devel] Re: [kvm-devel] " Avi Kivity
[not found] ` <46CC6285.3090904-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-08-22 16:38 ` Luca
2007-08-22 16:38 ` [Qemu-devel] Re: [kvm-devel] " Luca
[not found] ` <68676e00708220938y57c07edas705fc8360aefcb78-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-08-22 16:45 ` Avi Kivity
2007-08-22 16:45 ` [Qemu-devel] Re: [kvm-devel] " Avi Kivity
[not found] ` <46CC680C.1030307-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-08-22 17:23 ` Luca
2007-08-22 17:23 ` [Qemu-devel] Re: [kvm-devel] " Luca
[not found] ` <68676e00708221023m352c2de3y3b19188dbb9ef49e-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-08-22 17:39 ` Luca
2007-08-22 17:39 ` [Qemu-devel] Re: [kvm-devel] " Luca
2007-08-22 19:21 ` Luca
2007-08-22 19:21 ` [Qemu-devel] Re: [kvm-devel] " Luca
[not found] ` <68676e00708221221n6f8fcd67m9d15f7fea663ec71-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-08-22 21:35 ` Dor Laor
2007-08-22 21:35 ` [Qemu-devel] RE: [kvm-devel] " Dor Laor
[not found] ` <64F9B87B6B770947A9F8391472E032160D5042F3-yEcIvxbTEBqsx+V+t5oei8rau4O3wl8o3fe8/T/H7NteoWH0uzbU5w@public.gmane.org>
2007-08-22 22:07 ` Luca
2007-08-22 22:07 ` [Qemu-devel] Re: [kvm-devel] " Luca
2007-08-22 20:42 ` Dan Kenigsberg
2007-08-22 20:42 ` [Qemu-devel] Re: [kvm-devel] " Dan Kenigsberg
2007-08-18 16:53 ` Dor Laor
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20070817231406.717137712@gmail.com \
--to=kronos.it-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
--cc=kvm-devel-TtF/mJH4Jtrk1uMJSBkQmQ@public.gmane.org \
--cc=qemu-devel-qX2TKyscuCcdnm+yROfE0A@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.