From: Marcelo Tosatti <mtosatti@redhat.com>
To: kvm@vger.kernel.org, qemu-devel@nongnu.org
Cc: Luiz Capitulino <lcapitulino@redhat.com>,
Rik van Riel <riel@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Marcelo Tosatti <mtosatti@redhat.com>
Subject: [QEMU patch 2/2] kvm: allow configuration of tsc deadline timer advancement
Date: Wed, 10 Dec 2014 14:23:19 -0200 [thread overview]
Message-ID: <20141210162420.218207164@amt.cnet> (raw)
In-Reply-To: 20141210162317.370733848@amt.cnet
[-- Attachment #1: set-lapic-tscdeadline --]
[-- Type: text/plain, Size: 9929 bytes --]
Add machine option and QMP commands to configure TSC deadline
timer advancement.
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
---
monitor.c | 15 ++++++++++
qapi-schema.json | 29 +++++++++++++++++++
qmp-commands.hx | 48 ++++++++++++++++++++++++++++++++
target-i386/kvm.c | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
vl.c | 4 ++
5 files changed, 176 insertions(+)
Index: qemu.tscdeadline/qapi-schema.json
===================================================================
--- qemu.tscdeadline.orig/qapi-schema.json
+++ qemu.tscdeadline/qapi-schema.json
@@ -3515,3 +3515,32 @@
# Since: 2.1
##
{ 'command': 'rtc-reset-reinjection' }
+
+##
+# @set-lapic-tscdeadline-advance
+#
+# This command sets the TSC deadline timer advancement.
+# This value will be subtracted from the expiration time
+# of the high resolution timer which emulates
+# TSC deadline timer.
+#
+# Useful to achieve low timer latencies.
+#
+# Only supported by KVM acceleration.
+#
+# Since: 2.3
+##
+{ 'command': 'set-lapic-tscdeadline-advance',
+ 'data': { 'advance':'int' }
+}
+
+##
+# @get-lapic-tscdeadline-advance
+#
+# This command gets the TSC deadline timer advancement.
+#
+# Only supported by KVM acceleration.
+#
+# Since: 2.3
+##
+{ 'command': 'get-lapic-tscdeadline-advance', 'returns': 'int' }
Index: qemu.tscdeadline/qmp-commands.hx
===================================================================
--- qemu.tscdeadline.orig/qmp-commands.hx
+++ qemu.tscdeadline/qmp-commands.hx
@@ -3854,3 +3854,51 @@ Move mouse pointer to absolute coordinat
<- { "return": {} }
EQMP
+
+ {
+ .name = "set-lapic-tscdeadline-advance",
+ .args_type = "advance:i",
+ .mhandler.cmd_new = qmp_marshal_input_set_lapic_tscdeadline_advance,
+ },
+
+SQMP
+set-lapic-tscdeadline-advance
+-----------------------------
+
+Set LAPIC tscdeadline timer advancement, in nanoseconds.
+
+Arguments:
+
+- "advance": LAPIC tscdeadline timer advancement (json-int)
+
+Example:
+
+-> { "execute": "set-lapic-tscdeadline-advance 1000" }
+<- { "return": {} }
+
+EQMP
+
+ {
+ .name = "get-lapic-tscdeadline-advance",
+ .args_type = "",
+ .mhandler.cmd_new = qmp_marshal_input_get_lapic_tscdeadline_advance,
+ },
+
+SQMP
+get-lapic-tscdeadline-advance
+-----------------------------
+
+Get LAPIC tscdeadline timer advancement, in nanoseconds.
+
+Arguments: None.
+
+returns a json-object with the following information:
+- "value" : json-int
+
+Example:
+
+-> { "execute": "get-lapic-tscdeadline-advance" }
+<- { "return": {1000} }
+
+EQMP
+
Index: qemu.tscdeadline/vl.c
===================================================================
--- qemu.tscdeadline.orig/vl.c
+++ qemu.tscdeadline/vl.c
@@ -387,6 +387,10 @@ static QemuOptsList qemu_machine_opts =
.name = "iommu",
.type = QEMU_OPT_BOOL,
.help = "Set on/off to enable/disable Intel IOMMU (VT-d)",
+ },{
+ .name = "lapic-tscdeadline-advance",
+ .type = QEMU_OPT_NUMBER,
+ .help = "Set lapic tscdeadline timer advance",
},
{ /* End of list */ }
},
Index: qemu.tscdeadline/target-i386/kvm.c
===================================================================
--- qemu.tscdeadline.orig/target-i386/kvm.c
+++ qemu.tscdeadline/target-i386/kvm.c
@@ -37,6 +37,7 @@
#include "hw/pci/pci.h"
#include "migration/migration.h"
#include "qapi/qmp/qerror.h"
+#include "qmp-commands.h"
//#define DEBUG_KVM
@@ -84,6 +85,10 @@ static bool has_msr_mtrr;
static bool has_msr_architectural_pmu;
static uint32_t num_architectural_pmu_counters;
+static struct lapic_tscdeadline_advance {
+ unsigned int advance_ns;
+} lapic_tscdeadline_advance;
+
bool kvm_allows_irq0_override(void)
{
return !kvm_irqchip_in_kernel() || kvm_has_gsi_routing();
@@ -835,12 +840,32 @@ static int kvm_get_supported_msrs(KVMSta
return ret;
}
+static int kvm_set_lapic_tscdeadline(KVMState *s, uint32_t advance)
+{
+ struct kvm_tscdeadline_advance adv;
+ int ret = 0;
+
+ memset(&adv, 0, sizeof(adv));
+
+ adv.timer_advance = advance;
+
+ ret = kvm_vm_ioctl(s, KVM_SET_TSCDEADLINE_ADVANCE, &adv);
+ if (ret < 0) {
+ return ret;
+ }
+
+ lapic_tscdeadline_advance.advance_ns = advance;
+
+ return ret;
+}
+
int kvm_arch_init(KVMState *s)
{
uint64_t identity_base = 0xfffbc000;
uint64_t shadow_mem;
int ret;
struct utsname utsname;
+ uint32_t lapic_advance_ns;
ret = kvm_get_supported_msrs(s);
if (ret < 0) {
@@ -894,9 +919,40 @@ int kvm_arch_init(KVMState *s)
return ret;
}
}
+
+ lapic_advance_ns = qemu_opt_get_number(qemu_get_machine_opts(),
+ "lapic-tscdeadline-advance",
+ 0);
+ if (lapic_advance_ns) {
+ ret = kvm_set_lapic_tscdeadline(s, lapic_advance_ns);
+ if (ret) {
+ fprintf(stderr, "Set tscdeadline advance failed: %s\n",
+ strerror(-ret));
+ return ret;
+ }
+ }
+
+
return 0;
}
+int64_t qmp_get_lapic_tscdeadline_advance(Error **errp)
+{
+ return lapic_tscdeadline_advance.advance_ns;
+}
+
+void qmp_set_lapic_tscdeadline_advance(int64_t advance, Error **errp)
+{
+ KVMState *s = kvm_state;
+ int ret;
+
+ ret = kvm_set_lapic_tscdeadline(s, advance);
+ if (ret) {
+ error_setg_errno(errp, ret, "set lapic tscdeadline failed");
+ return;
+ }
+}
+
static void set_v8086_seg(struct kvm_segment *lhs, const SegmentCache *rhs)
{
lhs->selector = rhs->selector;
Index: qemu.tscdeadline/monitor.c
===================================================================
--- qemu.tscdeadline.orig/monitor.c
+++ qemu.tscdeadline/monitor.c
@@ -5447,3 +5447,18 @@ void qmp_rtc_reset_reinjection(Error **e
error_set(errp, QERR_FEATURE_DISABLED, "rtc-reset-reinjection");
}
#endif
+
+#if !defined (TARGET_I386) || !defined (CONFIG_KVM)
+int64_t qmp_get_lapic_tscdeadline_advance(Error **errp)
+{
+ error_set(errp, QERR_FEATURE_DISABLED, "get-lapic-tscdeadline-advance");
+
+ return 0;
+}
+
+void qmp_set_lapic_tscdeadline_advance(int64_t advance, Error **errp)
+{
+ error_set(errp, QERR_FEATURE_DISABLED, "set-lapic-tscdeadline-advance");
+}
+#endif
+
Index: qemu.tscdeadline/include/hw/boards.h
===================================================================
--- qemu.tscdeadline.orig/include/hw/boards.h
+++ qemu.tscdeadline/include/hw/boards.h
@@ -133,6 +133,7 @@ struct MachineState {
bool usb;
char *firmware;
bool iommu;
+ int lapi_tscdeadline_advance;
ram_addr_t ram_size;
ram_addr_t maxram_size;
Index: qemu.tscdeadline/qemu-options.hx
===================================================================
--- qemu.tscdeadline.orig/qemu-options.hx
+++ qemu.tscdeadline/qemu-options.hx
@@ -37,7 +37,8 @@ DEF("machine", HAS_ARG, QEMU_OPTION_mach
" kvm_shadow_mem=size of KVM shadow MMU\n"
" dump-guest-core=on|off include guest memory in a core dump (default=on)\n"
" mem-merge=on|off controls memory merge support (default: on)\n"
- " iommu=on|off controls emulated Intel IOMMU (VT-d) support (default=off)\n",
+ " iommu=on|off controls emulated Intel IOMMU (VT-d) support (default=off)\n"
+ " lapic-tscdeadline-advance=value controls LAPIC tscdeadline timer advancement (default=0)\n",
QEMU_ARCH_ALL)
STEXI
@item -machine [type=]@var{name}[,prop=@var{value}[,...]]
@@ -66,6 +67,8 @@ the host, de-duplicates identical memory
(enabled by default).
@item iommu=on|off
Enables or disables emulated Intel IOMMU (VT-d) support. The default is off.
+@item lapic-tscdeadline-advance=value
+Defines the advancement of LAPIC TSC deadline timer, in nanoseconds.
@end table
ETEXI
Index: qemu.tscdeadline/hw/core/machine.c
===================================================================
--- qemu.tscdeadline.orig/hw/core/machine.c
+++ qemu.tscdeadline/hw/core/machine.c
@@ -72,6 +72,35 @@ static void machine_set_kvm_shadow_mem(O
ms->kvm_shadow_mem = value;
}
+static void machine_get_lapic_tscdeadline_advance(Object *obj, Visitor *v,
+ void *opaque,
+ const char *name,
+ Error **errp)
+{
+ MachineState *ms = MACHINE(obj);
+ int64_t value = ms->kvm_shadow_mem;
+
+ visit_type_int(v, &value, name, errp);
+}
+
+static void machine_set_lapic_tscdeadline_advance(Object *obj, Visitor *v,
+ void *opaque,
+ const char *name,
+ Error **errp)
+{
+ MachineState *ms = MACHINE(obj);
+ Error *error = NULL;
+ int64_t value;
+
+ visit_type_int(v, &value, name, &error);
+ if (error) {
+ error_propagate(errp, error);
+ return;
+ }
+
+ ms->lapi_tscdeadline_advance = value;
+}
+
static char *machine_get_kernel(Object *obj, Error **errp)
{
MachineState *ms = MACHINE(obj);
@@ -299,6 +328,10 @@ static void machine_initfn(Object *obj)
machine_get_kvm_shadow_mem,
machine_set_kvm_shadow_mem,
NULL, NULL, NULL);
+ object_property_add(obj, "lapic-tscdeadline-advance", "int",
+ machine_get_lapic_tscdeadline_advance,
+ machine_set_lapic_tscdeadline_advance,
+ NULL, NULL, NULL);
object_property_add_str(obj, "kernel",
machine_get_kernel, machine_set_kernel, NULL);
object_property_add_str(obj, "initrd",
WARNING: multiple messages have this Message-ID (diff)
From: Marcelo Tosatti <mtosatti@redhat.com>
To: kvm@vger.kernel.org, qemu-devel@nongnu.org
Cc: Paolo Bonzini <pbonzini@redhat.com>,
Marcelo Tosatti <mtosatti@redhat.com>,
Luiz Capitulino <lcapitulino@redhat.com>
Subject: [Qemu-devel] [QEMU patch 2/2] kvm: allow configuration of tsc deadline timer advancement
Date: Wed, 10 Dec 2014 14:23:19 -0200 [thread overview]
Message-ID: <20141210162420.218207164@amt.cnet> (raw)
In-Reply-To: 20141210162317.370733848@amt.cnet
[-- Attachment #1: set-lapic-tscdeadline --]
[-- Type: text/plain, Size: 9927 bytes --]
Add machine option and QMP commands to configure TSC deadline
timer advancement.
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
---
monitor.c | 15 ++++++++++
qapi-schema.json | 29 +++++++++++++++++++
qmp-commands.hx | 48 ++++++++++++++++++++++++++++++++
target-i386/kvm.c | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
vl.c | 4 ++
5 files changed, 176 insertions(+)
Index: qemu.tscdeadline/qapi-schema.json
===================================================================
--- qemu.tscdeadline.orig/qapi-schema.json
+++ qemu.tscdeadline/qapi-schema.json
@@ -3515,3 +3515,32 @@
# Since: 2.1
##
{ 'command': 'rtc-reset-reinjection' }
+
+##
+# @set-lapic-tscdeadline-advance
+#
+# This command sets the TSC deadline timer advancement.
+# This value will be subtracted from the expiration time
+# of the high resolution timer which emulates
+# TSC deadline timer.
+#
+# Useful to achieve low timer latencies.
+#
+# Only supported by KVM acceleration.
+#
+# Since: 2.3
+##
+{ 'command': 'set-lapic-tscdeadline-advance',
+ 'data': { 'advance':'int' }
+}
+
+##
+# @get-lapic-tscdeadline-advance
+#
+# This command gets the TSC deadline timer advancement.
+#
+# Only supported by KVM acceleration.
+#
+# Since: 2.3
+##
+{ 'command': 'get-lapic-tscdeadline-advance', 'returns': 'int' }
Index: qemu.tscdeadline/qmp-commands.hx
===================================================================
--- qemu.tscdeadline.orig/qmp-commands.hx
+++ qemu.tscdeadline/qmp-commands.hx
@@ -3854,3 +3854,51 @@ Move mouse pointer to absolute coordinat
<- { "return": {} }
EQMP
+
+ {
+ .name = "set-lapic-tscdeadline-advance",
+ .args_type = "advance:i",
+ .mhandler.cmd_new = qmp_marshal_input_set_lapic_tscdeadline_advance,
+ },
+
+SQMP
+set-lapic-tscdeadline-advance
+-----------------------------
+
+Set LAPIC tscdeadline timer advancement, in nanoseconds.
+
+Arguments:
+
+- "advance": LAPIC tscdeadline timer advancement (json-int)
+
+Example:
+
+-> { "execute": "set-lapic-tscdeadline-advance 1000" }
+<- { "return": {} }
+
+EQMP
+
+ {
+ .name = "get-lapic-tscdeadline-advance",
+ .args_type = "",
+ .mhandler.cmd_new = qmp_marshal_input_get_lapic_tscdeadline_advance,
+ },
+
+SQMP
+get-lapic-tscdeadline-advance
+-----------------------------
+
+Get LAPIC tscdeadline timer advancement, in nanoseconds.
+
+Arguments: None.
+
+returns a json-object with the following information:
+- "value" : json-int
+
+Example:
+
+-> { "execute": "get-lapic-tscdeadline-advance" }
+<- { "return": {1000} }
+
+EQMP
+
Index: qemu.tscdeadline/vl.c
===================================================================
--- qemu.tscdeadline.orig/vl.c
+++ qemu.tscdeadline/vl.c
@@ -387,6 +387,10 @@ static QemuOptsList qemu_machine_opts =
.name = "iommu",
.type = QEMU_OPT_BOOL,
.help = "Set on/off to enable/disable Intel IOMMU (VT-d)",
+ },{
+ .name = "lapic-tscdeadline-advance",
+ .type = QEMU_OPT_NUMBER,
+ .help = "Set lapic tscdeadline timer advance",
},
{ /* End of list */ }
},
Index: qemu.tscdeadline/target-i386/kvm.c
===================================================================
--- qemu.tscdeadline.orig/target-i386/kvm.c
+++ qemu.tscdeadline/target-i386/kvm.c
@@ -37,6 +37,7 @@
#include "hw/pci/pci.h"
#include "migration/migration.h"
#include "qapi/qmp/qerror.h"
+#include "qmp-commands.h"
//#define DEBUG_KVM
@@ -84,6 +85,10 @@ static bool has_msr_mtrr;
static bool has_msr_architectural_pmu;
static uint32_t num_architectural_pmu_counters;
+static struct lapic_tscdeadline_advance {
+ unsigned int advance_ns;
+} lapic_tscdeadline_advance;
+
bool kvm_allows_irq0_override(void)
{
return !kvm_irqchip_in_kernel() || kvm_has_gsi_routing();
@@ -835,12 +840,32 @@ static int kvm_get_supported_msrs(KVMSta
return ret;
}
+static int kvm_set_lapic_tscdeadline(KVMState *s, uint32_t advance)
+{
+ struct kvm_tscdeadline_advance adv;
+ int ret = 0;
+
+ memset(&adv, 0, sizeof(adv));
+
+ adv.timer_advance = advance;
+
+ ret = kvm_vm_ioctl(s, KVM_SET_TSCDEADLINE_ADVANCE, &adv);
+ if (ret < 0) {
+ return ret;
+ }
+
+ lapic_tscdeadline_advance.advance_ns = advance;
+
+ return ret;
+}
+
int kvm_arch_init(KVMState *s)
{
uint64_t identity_base = 0xfffbc000;
uint64_t shadow_mem;
int ret;
struct utsname utsname;
+ uint32_t lapic_advance_ns;
ret = kvm_get_supported_msrs(s);
if (ret < 0) {
@@ -894,9 +919,40 @@ int kvm_arch_init(KVMState *s)
return ret;
}
}
+
+ lapic_advance_ns = qemu_opt_get_number(qemu_get_machine_opts(),
+ "lapic-tscdeadline-advance",
+ 0);
+ if (lapic_advance_ns) {
+ ret = kvm_set_lapic_tscdeadline(s, lapic_advance_ns);
+ if (ret) {
+ fprintf(stderr, "Set tscdeadline advance failed: %s\n",
+ strerror(-ret));
+ return ret;
+ }
+ }
+
+
return 0;
}
+int64_t qmp_get_lapic_tscdeadline_advance(Error **errp)
+{
+ return lapic_tscdeadline_advance.advance_ns;
+}
+
+void qmp_set_lapic_tscdeadline_advance(int64_t advance, Error **errp)
+{
+ KVMState *s = kvm_state;
+ int ret;
+
+ ret = kvm_set_lapic_tscdeadline(s, advance);
+ if (ret) {
+ error_setg_errno(errp, ret, "set lapic tscdeadline failed");
+ return;
+ }
+}
+
static void set_v8086_seg(struct kvm_segment *lhs, const SegmentCache *rhs)
{
lhs->selector = rhs->selector;
Index: qemu.tscdeadline/monitor.c
===================================================================
--- qemu.tscdeadline.orig/monitor.c
+++ qemu.tscdeadline/monitor.c
@@ -5447,3 +5447,18 @@ void qmp_rtc_reset_reinjection(Error **e
error_set(errp, QERR_FEATURE_DISABLED, "rtc-reset-reinjection");
}
#endif
+
+#if !defined (TARGET_I386) || !defined (CONFIG_KVM)
+int64_t qmp_get_lapic_tscdeadline_advance(Error **errp)
+{
+ error_set(errp, QERR_FEATURE_DISABLED, "get-lapic-tscdeadline-advance");
+
+ return 0;
+}
+
+void qmp_set_lapic_tscdeadline_advance(int64_t advance, Error **errp)
+{
+ error_set(errp, QERR_FEATURE_DISABLED, "set-lapic-tscdeadline-advance");
+}
+#endif
+
Index: qemu.tscdeadline/include/hw/boards.h
===================================================================
--- qemu.tscdeadline.orig/include/hw/boards.h
+++ qemu.tscdeadline/include/hw/boards.h
@@ -133,6 +133,7 @@ struct MachineState {
bool usb;
char *firmware;
bool iommu;
+ int lapi_tscdeadline_advance;
ram_addr_t ram_size;
ram_addr_t maxram_size;
Index: qemu.tscdeadline/qemu-options.hx
===================================================================
--- qemu.tscdeadline.orig/qemu-options.hx
+++ qemu.tscdeadline/qemu-options.hx
@@ -37,7 +37,8 @@ DEF("machine", HAS_ARG, QEMU_OPTION_mach
" kvm_shadow_mem=size of KVM shadow MMU\n"
" dump-guest-core=on|off include guest memory in a core dump (default=on)\n"
" mem-merge=on|off controls memory merge support (default: on)\n"
- " iommu=on|off controls emulated Intel IOMMU (VT-d) support (default=off)\n",
+ " iommu=on|off controls emulated Intel IOMMU (VT-d) support (default=off)\n"
+ " lapic-tscdeadline-advance=value controls LAPIC tscdeadline timer advancement (default=0)\n",
QEMU_ARCH_ALL)
STEXI
@item -machine [type=]@var{name}[,prop=@var{value}[,...]]
@@ -66,6 +67,8 @@ the host, de-duplicates identical memory
(enabled by default).
@item iommu=on|off
Enables or disables emulated Intel IOMMU (VT-d) support. The default is off.
+@item lapic-tscdeadline-advance=value
+Defines the advancement of LAPIC TSC deadline timer, in nanoseconds.
@end table
ETEXI
Index: qemu.tscdeadline/hw/core/machine.c
===================================================================
--- qemu.tscdeadline.orig/hw/core/machine.c
+++ qemu.tscdeadline/hw/core/machine.c
@@ -72,6 +72,35 @@ static void machine_set_kvm_shadow_mem(O
ms->kvm_shadow_mem = value;
}
+static void machine_get_lapic_tscdeadline_advance(Object *obj, Visitor *v,
+ void *opaque,
+ const char *name,
+ Error **errp)
+{
+ MachineState *ms = MACHINE(obj);
+ int64_t value = ms->kvm_shadow_mem;
+
+ visit_type_int(v, &value, name, errp);
+}
+
+static void machine_set_lapic_tscdeadline_advance(Object *obj, Visitor *v,
+ void *opaque,
+ const char *name,
+ Error **errp)
+{
+ MachineState *ms = MACHINE(obj);
+ Error *error = NULL;
+ int64_t value;
+
+ visit_type_int(v, &value, name, &error);
+ if (error) {
+ error_propagate(errp, error);
+ return;
+ }
+
+ ms->lapi_tscdeadline_advance = value;
+}
+
static char *machine_get_kernel(Object *obj, Error **errp)
{
MachineState *ms = MACHINE(obj);
@@ -299,6 +328,10 @@ static void machine_initfn(Object *obj)
machine_get_kvm_shadow_mem,
machine_set_kvm_shadow_mem,
NULL, NULL, NULL);
+ object_property_add(obj, "lapic-tscdeadline-advance", "int",
+ machine_get_lapic_tscdeadline_advance,
+ machine_set_lapic_tscdeadline_advance,
+ NULL, NULL, NULL);
object_property_add_str(obj, "kernel",
machine_get_kernel, machine_set_kernel, NULL);
object_property_add_str(obj, "initrd",
next prev parent reply other threads:[~2014-12-10 16:59 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-10 16:23 [QEMU patch 0/2] QEMU lapic tsc deadline advancement Marcelo Tosatti
2014-12-10 16:23 ` [Qemu-devel] " Marcelo Tosatti
2014-12-10 16:23 ` [QEMU patch 1/2] kvm: sync kernel headers Marcelo Tosatti
2014-12-10 16:23 ` [Qemu-devel] " Marcelo Tosatti
2014-12-10 16:23 ` Marcelo Tosatti [this message]
2014-12-10 16:23 ` [Qemu-devel] [QEMU patch 2/2] kvm: allow configuration of tsc deadline timer advancement Marcelo Tosatti
2014-12-10 17:01 ` Paolo Bonzini
2014-12-10 17:01 ` [Qemu-devel] " Paolo Bonzini
2014-12-10 17:04 ` Marcelo Tosatti
2014-12-10 17:04 ` [Qemu-devel] " Marcelo Tosatti
2014-12-10 17:09 ` Paolo Bonzini
2014-12-10 17:09 ` [Qemu-devel] " Paolo Bonzini
2014-12-10 17:27 ` Marcelo Tosatti
2014-12-10 17:27 ` [Qemu-devel] " Marcelo Tosatti
2014-12-10 17:29 ` Paolo Bonzini
2014-12-10 17:29 ` [Qemu-devel] " Paolo Bonzini
2014-12-10 17:35 ` Marcelo Tosatti
2014-12-10 17:35 ` [Qemu-devel] " Marcelo Tosatti
2014-12-10 17:55 ` Paolo Bonzini
2014-12-10 17:55 ` [Qemu-devel] " Paolo Bonzini
2014-12-10 18:39 ` Radim Krčmář
2014-12-10 18:39 ` [Qemu-devel] " Radim Krčmář
2014-12-10 18:59 ` Paolo Bonzini
2014-12-10 18:59 ` [Qemu-devel] " Paolo Bonzini
2014-12-10 17:06 ` Eric Blake
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=20141210162420.218207164@amt.cnet \
--to=mtosatti@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=lcapitulino@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=riel@redhat.com \
/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.