[libvirt] [PATCH v5 0/2] Add new HyperV features

v1: https://www.redhat.com/archives/libvir-list/2013-May/msg00173.html v2: https://www.redhat.com/archives/libvir-list/2013-May/msg00184.html uses virStringSplit instead of strsep added a missing break to virDomainDefParseXML v3: https://www.redhat.com/archives/libvir-list/2013-June/msg00228.html rebased to use VIR_STRDUP fixed a crash on parsing '-cpu qemu32,hv_' v4: https://www.redhat.com/archives/libvir-list/2013-June/msg00717.html Added state attribute to spinlocks. CPU command line parsing refactoring is already pushed. Changed version in docs from 1.0.6 to 1.0.7. Use 'value' instead of 'hv_tokens[1]' for readability. v5: Use 'retries' attribute for spinlocks instead of using the element body Prefer decimal numbers for readability Split XML parsing and QEMU implementation into separate patches Changed version to 1.1.0 since the ACL patches are ACKed now. Ján Tomko (2): conf: add vapic and spinlocks to hyperv features qemu: add hv_vapic and hv_spinlocks support docs/formatdomain.html.in | 17 ++++++- docs/schemas/domaincommon.rng | 13 +++++ src/conf/domain_conf.c | 64 ++++++++++++++++++++++++- src/conf/domain_conf.h | 3 ++ src/qemu/qemu_command.c | 48 ++++++++++++++++++- tests/qemuxml2argvdata/qemuxml2argv-hyperv.args | 2 +- tests/qemuxml2argvdata/qemuxml2argv-hyperv.xml | 2 + 7 files changed, 144 insertions(+), 5 deletions(-) -- 1.8.1.5

Add new CPU features for HyperV: vapic for virtual APIC support spinlocks for setting spinlock support <features> <hyperv> <vapic state='on'/> <spinlocks state='on' retries='4096'/> </hyperv> </features> https://bugzilla.redhat.com/show_bug.cgi?id=784836 --- docs/formatdomain.html.in | 17 +++++++++++- docs/schemas/domaincommon.rng | 13 +++++++++ src/conf/domain_conf.c | 64 +++++++++++++++++++++++++++++++++++++++++-- src/conf/domain_conf.h | 3 ++ src/qemu/qemu_command.c | 10 +++++++ 5 files changed, 104 insertions(+), 3 deletions(-) diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in index 755d084..77126a5 100644 --- a/docs/formatdomain.html.in +++ b/docs/formatdomain.html.in @@ -1147,6 +1147,8 @@ <privnet/> <hyperv> <relaxed state='on'/> + <vapic state='on'/> + <spinlocks state='on' retries='4096'</spinlocks> </hyperv> </features> @@ -1197,14 +1199,27 @@ <th>Feature</th> <th>Description</th> <th>Value</th> + <th>Since</th> </tr> <tr> <td>relaxed</td> <td>Relax contstraints on timers</td> <td> on, off</td> + <td><span class="since">1.0.0 (QEMU only)</span></td> + </tr> + <tr> + <td>vapic</td> + <td>Enable virtual APIC</td> + <td>on, off</td> + <td><span class="since">1.1.0 (QEMU only)</span></td> + </tr> + <tr> + <td>spinlocks</td> + <td>Enable spinlock support</td> + <td>on, off; retries - at least 4095</td> + <td><span class="since">1.1.0 (QEMU only)</span></td> </tr> </table> - <span class="since">Since 1.0.0 (QEMU only)</span> </dd> </dl> diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng index 1eb2f68..cf82878 100644 --- a/docs/schemas/domaincommon.rng +++ b/docs/schemas/domaincommon.rng @@ -4015,6 +4015,19 @@ <ref name="hypervtristate"/> </element> </optional> + <optional> + <element name="vapic"> + <ref name="hypervtristate"/> + </element> + </optional> + <optional> + <element name="spinlocks"> + <ref name="hypervtristate"/> + <attribute name="retries"> + <data type="integer"/> + </attribute> + </element> + </optional> </interleave> </element> </define> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 9297937..e41dfa2 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -149,7 +149,9 @@ VIR_ENUM_IMPL(virDomainFeatureState, VIR_DOMAIN_FEATURE_STATE_LAST, "off") VIR_ENUM_IMPL(virDomainHyperv, VIR_DOMAIN_HYPERV_LAST, - "relaxed") + "relaxed", + "vapic", + "spinlocks") VIR_ENUM_IMPL(virDomainLifecycle, VIR_DOMAIN_LIFECYCLE_LAST, "destroy", @@ -11084,6 +11086,7 @@ virDomainDefParseXML(xmlDocPtr xml, switch ((enum virDomainHyperv) feature) { case VIR_DOMAIN_HYPERV_RELAXED: + case VIR_DOMAIN_HYPERV_VAPIC: if (!(tmp = virXPathString("string(./@state)", ctxt))) { virReportError(VIR_ERR_XML_ERROR, _("missing 'state' attribute for " @@ -11104,6 +11107,48 @@ virDomainDefParseXML(xmlDocPtr xml, def->hyperv_features[feature] = value; break; + case VIR_DOMAIN_HYPERV_SPINLOCKS: + if (!(tmp = virXPathString("string(./@state)", ctxt))) { + virReportError(VIR_ERR_XML_ERROR, + _("missing 'state' attribute for " + "HyperV Enlightenment feature '%s'"), + nodes[i]->name); + goto error; + } + + if ((value = virDomainFeatureStateTypeFromString(tmp)) < 0) { + virReportError(VIR_ERR_XML_ERROR, + _("invalid value of state argument " + "for HyperV Enlightenment feature '%s'"), + nodes[i]->name); + goto error; + } + + VIR_FREE(tmp); + if (!(tmp = virXPathString("string(./@retries)", ctxt))) { + virReportError(VIR_ERR_XML_ERROR, "%s", + _("missing HyperV spinlock retry count")); + goto error; + } + + if (virStrToLong_ui(tmp, NULL, 0, + &def->hyperv_spinlocks) < 0) { + virReportError(VIR_ERR_XML_ERROR, "%s", + _("Cannot parse HyperV spinlock retry " + "count")); + goto error; + } + + if (def->hyperv_spinlocks < 0xFFF) { + virReportError(VIR_ERR_XML_ERROR, "%s", + _("HyperV spinlock retry count must be " + "at least 4095")); + goto error; + } + VIR_FREE(tmp); + def->hyperv_features[feature] = value; + break; + case VIR_DOMAIN_HYPERV_LAST: break; } @@ -16224,10 +16269,25 @@ virDomainDefFormatInternal(virDomainDefPtr def, for (i = 0; i < VIR_DOMAIN_HYPERV_LAST; i++) { switch ((enum virDomainHyperv) i) { case VIR_DOMAIN_HYPERV_RELAXED: + case VIR_DOMAIN_HYPERV_VAPIC: if (def->hyperv_features[i]) virBufferAsprintf(buf, " <%s state='%s'/>\n", virDomainHypervTypeToString(i), - virDomainFeatureStateTypeToString(def->hyperv_features[i])); + virDomainFeatureStateTypeToString( + def->hyperv_features[i])); + break; + + case VIR_DOMAIN_HYPERV_SPINLOCKS: + if (def->hyperv_features[i] == 0) + break; + + virBufferAsprintf(buf, " <spinlocks state='%s'", + virDomainFeatureStateTypeToString( + def->hyperv_features[i])); + if (def->hyperv_features[i] == VIR_DOMAIN_FEATURE_STATE_ON) + virBufferAsprintf(buf, " retries='%d'", + def->hyperv_spinlocks); + virBufferAddLit(buf, "/>\n"); break; case VIR_DOMAIN_HYPERV_LAST: diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 5b159ac..3817e37 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -1584,6 +1584,8 @@ enum virDomainFeatureState { enum virDomainHyperv { VIR_DOMAIN_HYPERV_RELAXED = 0, + VIR_DOMAIN_HYPERV_VAPIC, + VIR_DOMAIN_HYPERV_SPINLOCKS, VIR_DOMAIN_HYPERV_LAST }; @@ -1926,6 +1928,7 @@ struct _virDomainDef { int apic_eoi; /* These options are of type virDomainFeatureState */ int hyperv_features[VIR_DOMAIN_HYPERV_LAST]; + unsigned int hyperv_spinlocks; virDomainClockDef clock; diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 486682e..52a698e 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -5791,6 +5791,11 @@ qemuBuildCpuArgStr(const virQEMUDriverPtr driver, virDomainHypervTypeToString(i)); break; + case VIR_DOMAIN_HYPERV_VAPIC: + case VIR_DOMAIN_HYPERV_SPINLOCKS: + /* implemented in the next commit */ + break; + case VIR_DOMAIN_HYPERV_LAST: break; } @@ -9726,6 +9731,11 @@ qemuParseCommandLineCPU(virDomainDefPtr dom, dom->hyperv_features[f] = VIR_DOMAIN_FEATURE_STATE_ON; break; + case VIR_DOMAIN_HYPERV_VAPIC: + case VIR_DOMAIN_HYPERV_SPINLOCKS: + /* implemented in the next commit */ + break; + case VIR_DOMAIN_HYPERV_LAST: break; } -- 1.8.1.5

On Fri, Jun 21, 2013 at 12:41:53 +0200, Jano Tomko wrote:
Add new CPU features for HyperV: vapic for virtual APIC support spinlocks for setting spinlock support
<features> <hyperv> <vapic state='on'/> <spinlocks state='on' retries='4096'/> </hyperv> </features>
https://bugzilla.redhat.com/show_bug.cgi?id=784836 --- docs/formatdomain.html.in | 17 +++++++++++- docs/schemas/domaincommon.rng | 13 +++++++++ src/conf/domain_conf.c | 64 +++++++++++++++++++++++++++++++++++++++++-- src/conf/domain_conf.h | 3 ++ src/qemu/qemu_command.c | 10 +++++++ 5 files changed, 104 insertions(+), 3 deletions(-)
...
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 486682e..52a698e 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -5791,6 +5791,11 @@ qemuBuildCpuArgStr(const virQEMUDriverPtr driver, virDomainHypervTypeToString(i)); break;
+ case VIR_DOMAIN_HYPERV_VAPIC: + case VIR_DOMAIN_HYPERV_SPINLOCKS: + /* implemented in the next commit */ + break; +
Now I see why you did that in one patch originally :-) ACK Jirka

XML: <features> <hyperv> <vapic state='on'/> <spinlocks state='on' retries='4096'/> </hyperv> </features> results in the following QEMU command line: qemu -cpu <cpu_model>,hv_vapic,hv_spinlocks=0xffff https://bugzilla.redhat.com/show_bug.cgi?id=784836 --- src/qemu/qemu_command.c | 46 ++++++++++++++++++++++--- tests/qemuxml2argvdata/qemuxml2argv-hyperv.args | 2 +- tests/qemuxml2argvdata/qemuxml2argv-hyperv.xml | 2 ++ 3 files changed, 44 insertions(+), 6 deletions(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 52a698e..4d70004 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -5786,14 +5786,16 @@ qemuBuildCpuArgStr(const virQEMUDriverPtr driver, for (i = 0; i < VIR_DOMAIN_HYPERV_LAST; i++) { switch ((enum virDomainHyperv) i) { case VIR_DOMAIN_HYPERV_RELAXED: + case VIR_DOMAIN_HYPERV_VAPIC: if (def->hyperv_features[i] == VIR_DOMAIN_FEATURE_STATE_ON) virBufferAsprintf(&buf, ",hv_%s", virDomainHypervTypeToString(i)); break; - case VIR_DOMAIN_HYPERV_VAPIC: case VIR_DOMAIN_HYPERV_SPINLOCKS: - /* implemented in the next commit */ + if (def->hyperv_features[i] == VIR_DOMAIN_FEATURE_STATE_ON) + virBufferAsprintf(&buf, ",hv_spinlocks=0x%x", + def->hyperv_spinlocks); break; case VIR_DOMAIN_HYPERV_LAST: @@ -9632,6 +9634,7 @@ qemuParseCommandLineCPU(virDomainDefPtr dom, { virCPUDefPtr cpu = NULL; char **tokens; + char **hv_tokens = NULL; char *model = NULL; int ret = -1; int i; @@ -9711,9 +9714,19 @@ qemuParseCommandLineCPU(virDomainDefPtr dom, goto cleanup; } } else if (STRPREFIX(tokens[i], "hv_")) { - const char *feature = tokens[i] + 3; /* "hv_" */ + const char *token = tokens[i] + 3; /* "hv_" */ + const char *feature, *value; int f; + if (*token == '\0') + goto syntax; + + if (!(hv_tokens = virStringSplit(token, "=", 2))) + goto cleanup; + + feature = hv_tokens[0]; + value = hv_tokens[1]; + if (*feature == '\0') goto syntax; @@ -9728,17 +9741,39 @@ qemuParseCommandLineCPU(virDomainDefPtr dom, switch ((enum virDomainHyperv) f) { case VIR_DOMAIN_HYPERV_RELAXED: + case VIR_DOMAIN_HYPERV_VAPIC: + if (value) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("HyperV feature '%s' should not " + "have a value"), feature); + goto cleanup; + } dom->hyperv_features[f] = VIR_DOMAIN_FEATURE_STATE_ON; break; - case VIR_DOMAIN_HYPERV_VAPIC: case VIR_DOMAIN_HYPERV_SPINLOCKS: - /* implemented in the next commit */ + dom->hyperv_features[f] = VIR_DOMAIN_FEATURE_STATE_ON; + if (!value) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("missing HyperV spinlock retry count")); + goto cleanup; + } + + if (virStrToLong_ui(value, NULL, 0, &dom->hyperv_spinlocks) < 0) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("cannot parse HyperV spinlock retry count")); + goto cleanup; + } + + if (dom->hyperv_spinlocks < 0xFFF) + dom->hyperv_spinlocks = 0xFFF; break; case VIR_DOMAIN_HYPERV_LAST: break; } + virStringFreeList(hv_tokens); + hv_tokens = NULL; } } @@ -9766,6 +9801,7 @@ qemuParseCommandLineCPU(virDomainDefPtr dom, cleanup: VIR_FREE(model); virStringFreeList(tokens); + virStringFreeList(hv_tokens); return ret; syntax: diff --git a/tests/qemuxml2argvdata/qemuxml2argv-hyperv.args b/tests/qemuxml2argvdata/qemuxml2argv-hyperv.args index fac4d5f..df6b207 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-hyperv.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-hyperv.args @@ -1,4 +1,4 @@ LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu -S -M pc \ --cpu qemu32,hv_relaxed -m 214 -smp 6 -nographic -monitor \ +-cpu qemu32,hv_relaxed,hv_vapic,hv_spinlocks=0x2fff -m 214 -smp 6 -nographic -monitor \ unix:/tmp/test-monitor,server,nowait -boot n -usb -net none -serial none \ -parallel none diff --git a/tests/qemuxml2argvdata/qemuxml2argv-hyperv.xml b/tests/qemuxml2argvdata/qemuxml2argv-hyperv.xml index 0d5d0c7..bb36fc0 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-hyperv.xml +++ b/tests/qemuxml2argvdata/qemuxml2argv-hyperv.xml @@ -12,6 +12,8 @@ <acpi/> <hyperv> <relaxed state='on'/> + <vapic state='on'/> + <spinlocks state='on' retries='12287'/> </hyperv> </features> <clock offset='utc'/> -- 1.8.1.5

On Fri, Jun 21, 2013 at 12:41:54 +0200, Jano Tomko wrote:
XML: <features> <hyperv> <vapic state='on'/> <spinlocks state='on' retries='4096'/> </hyperv> </features>
results in the following QEMU command line: qemu -cpu <cpu_model>,hv_vapic,hv_spinlocks=0xffff
I believe the above XML will actually result in hv_spinlocks=0x1000 :-P ACK Jirka

On 06/21/2013 01:18 PM, Jiri Denemark wrote:
On Fri, Jun 21, 2013 at 12:41:54 +0200, Jano Tomko wrote:
XML: <features> <hyperv> <vapic state='on'/> <spinlocks state='on' retries='4096'/> </hyperv> </features>
results in the following QEMU command line: qemu -cpu <cpu_model>,hv_vapic,hv_spinlocks=0xffff
I believe the above XML will actually result in hv_spinlocks=0x1000 :-P
:) I fixed that and pushed both patches. Thank you! Jan

Il 21/06/2013 12:41, Ján Tomko ha scritto:
v1: https://www.redhat.com/archives/libvir-list/2013-May/msg00173.html
v2: https://www.redhat.com/archives/libvir-list/2013-May/msg00184.html uses virStringSplit instead of strsep added a missing break to virDomainDefParseXML
v3: https://www.redhat.com/archives/libvir-list/2013-June/msg00228.html rebased to use VIR_STRDUP fixed a crash on parsing '-cpu qemu32,hv_'
v4: https://www.redhat.com/archives/libvir-list/2013-June/msg00717.html Added state attribute to spinlocks. CPU command line parsing refactoring is already pushed. Changed version in docs from 1.0.6 to 1.0.7. Use 'value' instead of 'hv_tokens[1]' for readability.
v5: Use 'retries' attribute for spinlocks instead of using the element body Prefer decimal numbers for readability Split XML parsing and QEMU implementation into separate patches Changed version to 1.1.0 since the ACL patches are ACKed now.
Ján Tomko (2): conf: add vapic and spinlocks to hyperv features qemu: add hv_vapic and hv_spinlocks support
docs/formatdomain.html.in | 17 ++++++- docs/schemas/domaincommon.rng | 13 +++++ src/conf/domain_conf.c | 64 ++++++++++++++++++++++++- src/conf/domain_conf.h | 3 ++ src/qemu/qemu_command.c | 48 ++++++++++++++++++- tests/qemuxml2argvdata/qemuxml2argv-hyperv.args | 2 +- tests/qemuxml2argvdata/qemuxml2argv-hyperv.xml | 2 + 7 files changed, 144 insertions(+), 5 deletions(-)
hv_spinlocks is not upstream yet. Paolo

On Fri, Jun 21, 2013 at 03:51:37PM +0200, Paolo Bonzini wrote:
Il 21/06/2013 12:41, Ján Tomko ha scritto:
v1: https://www.redhat.com/archives/libvir-list/2013-May/msg00173.html
v2: https://www.redhat.com/archives/libvir-list/2013-May/msg00184.html uses virStringSplit instead of strsep added a missing break to virDomainDefParseXML
v3: https://www.redhat.com/archives/libvir-list/2013-June/msg00228.html rebased to use VIR_STRDUP fixed a crash on parsing '-cpu qemu32,hv_'
v4: https://www.redhat.com/archives/libvir-list/2013-June/msg00717.html Added state attribute to spinlocks. CPU command line parsing refactoring is already pushed. Changed version in docs from 1.0.6 to 1.0.7. Use 'value' instead of 'hv_tokens[1]' for readability.
v5: Use 'retries' attribute for spinlocks instead of using the element body Prefer decimal numbers for readability Split XML parsing and QEMU implementation into separate patches Changed version to 1.1.0 since the ACL patches are ACKed now.
Ján Tomko (2): conf: add vapic and spinlocks to hyperv features qemu: add hv_vapic and hv_spinlocks support
docs/formatdomain.html.in | 17 ++++++- docs/schemas/domaincommon.rng | 13 +++++ src/conf/domain_conf.c | 64 ++++++++++++++++++++++++- src/conf/domain_conf.h | 3 ++ src/qemu/qemu_command.c | 48 ++++++++++++++++++- tests/qemuxml2argvdata/qemuxml2argv-hyperv.args | 2 +- tests/qemuxml2argvdata/qemuxml2argv-hyperv.xml | 2 + 7 files changed, 144 insertions(+), 5 deletions(-)
hv_spinlocks is not upstream yet.
Do you have any feeling for whether it is likely to be accepted, and if so a possible timeframe ? NACK to this series until it is merged in QEMU/KVM Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|

Il 21/06/2013 15:56, Daniel P. Berrange ha scritto:
On Fri, Jun 21, 2013 at 03:51:37PM +0200, Paolo Bonzini wrote:
Il 21/06/2013 12:41, Ján Tomko ha scritto:
v1: https://www.redhat.com/archives/libvir-list/2013-May/msg00173.html
v2: https://www.redhat.com/archives/libvir-list/2013-May/msg00184.html uses virStringSplit instead of strsep added a missing break to virDomainDefParseXML
v3: https://www.redhat.com/archives/libvir-list/2013-June/msg00228.html rebased to use VIR_STRDUP fixed a crash on parsing '-cpu qemu32,hv_'
v4: https://www.redhat.com/archives/libvir-list/2013-June/msg00717.html Added state attribute to spinlocks. CPU command line parsing refactoring is already pushed. Changed version in docs from 1.0.6 to 1.0.7. Use 'value' instead of 'hv_tokens[1]' for readability.
v5: Use 'retries' attribute for spinlocks instead of using the element body Prefer decimal numbers for readability Split XML parsing and QEMU implementation into separate patches Changed version to 1.1.0 since the ACL patches are ACKed now.
Ján Tomko (2): conf: add vapic and spinlocks to hyperv features qemu: add hv_vapic and hv_spinlocks support
docs/formatdomain.html.in | 17 ++++++- docs/schemas/domaincommon.rng | 13 +++++ src/conf/domain_conf.c | 64 ++++++++++++++++++++++++- src/conf/domain_conf.h | 3 ++ src/qemu/qemu_command.c | 48 ++++++++++++++++++- tests/qemuxml2argvdata/qemuxml2argv-hyperv.args | 2 +- tests/qemuxml2argvdata/qemuxml2argv-hyperv.xml | 2 + 7 files changed, 144 insertions(+), 5 deletions(-)
hv_spinlocks is not upstream yet.
Do you have any feeling for whether it is likely to be accepted, and if so a possible timeframe ?
No idea, knowing that Hyper-V state in QEMU is somewhat messy I just grepped the three options. Paolo

On 06/21/2013 04:03 PM, Paolo Bonzini wrote:
Il 21/06/2013 15:56, Daniel P. Berrange ha scritto:
On Fri, Jun 21, 2013 at 03:51:37PM +0200, Paolo Bonzini wrote:
Il 21/06/2013 12:41, Ján Tomko ha scritto:
Ján Tomko (2): conf: add vapic and spinlocks to hyperv features qemu: add hv_vapic and hv_spinlocks support
docs/formatdomain.html.in | 17 ++++++- docs/schemas/domaincommon.rng | 13 +++++ src/conf/domain_conf.c | 64 ++++++++++++++++++++++++- src/conf/domain_conf.h | 3 ++ src/qemu/qemu_command.c | 48 ++++++++++++++++++- tests/qemuxml2argvdata/qemuxml2argv-hyperv.args | 2 +- tests/qemuxml2argvdata/qemuxml2argv-hyperv.xml | 2 + 7 files changed, 144 insertions(+), 5 deletions(-)
hv_spinlocks is not upstream yet.
All three options were added some time ago: commit 28f52cc04d341045e810bd487a478fa9ec5f40be [1] Author: Vadim Rozenfeld <vrozenfe@redhat.com> AuthorDate: 2011-12-18 22:48:13 +0200 Commit: Marcelo Tosatti <mtosatti@redhat.com> CommitDate: 2012-01-19 08:32:12 -0200 hyper-v: introduce Hyper-V support infrastructure. [Jan: fix build with CONFIG_USER_ONLY] Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com> git describe: v1.0-675-g28f52cc
Do you have any feeling for whether it is likely to be accepted, and if so a possible timeframe ?
No idea, knowing that Hyper-V state in QEMU is somewhat messy I just grepped the three options.
It accepts both hv_spinlocks and hv-spinlocks (with only the latter spelling being greppable) since commit 72ac2e876ddc6158f5b6d5f758d4e38c436010ed [2] Author: Igor Mammedov <imammedo@redhat.com> AuthorDate: 2013-04-26 18:04:32 +0200 Commit: Andreas Färber <afaerber@suse.de> CommitDate: 2013-05-01 13:04:18 +0200 target-i386: Introduce feat2prop() for CPU properties This helper replaces '_' with '-' in a uniform way. As a side effect, even custom mappings must use '-' now. Signed-off-by: Igor Mammedov <imammedo@redhat.com> [AF: Split off; operate on NUL-terminated string rather than '=' delimiter] Signed-off-by: Andreas Färber <afaerber@suse.de> git describe: v1.4.0-1744-g72ac2e8 Jan [1] http://git.qemu.org/?p=qemu.git;a=commitdiff;h=28f52cc [2] http://git.qemu.org/?p=qemu.git;a=commitdiff;h=72ac2e8

Il 21/06/2013 16:26, Ján Tomko ha scritto:
It accepts both hv_spinlocks and hv-spinlocks (with only the latter spelling being greppable) since commit 72ac2e876ddc6158f5b6d5f758d4e38c436010ed [2] Author: Igor Mammedov <imammedo@redhat.com> AuthorDate: 2013-04-26 18:04:32 +0200 Commit: Andreas Färber <afaerber@suse.de> CommitDate: 2013-05-01 13:04:18 +0200
target-i386: Introduce feat2prop() for CPU properties
This helper replaces '_' with '-' in a uniform way. As a side effect, even custom mappings must use '-' now.
Signed-off-by: Igor Mammedov <imammedo@redhat.com> [AF: Split off; operate on NUL-terminated string rather than '=' delimiter] Signed-off-by: Andreas Färber <afaerber@suse.de>
git describe: v1.4.0-1744-g72ac2e8
Oh, cool. :) Sorry for the false alarm. Paolo
participants (4)
-
Daniel P. Berrange
-
Jiri Denemark
-
Ján Tomko
-
Paolo Bonzini