[PATCH 2/2] hyperv: Support hv-xmm-input enlightenment

Tim Wiederhake posted 2 patches 3 months, 1 week ago
[PATCH 2/2] hyperv: Support hv-xmm-input enlightenment
Posted by Tim Wiederhake 3 months, 1 week ago
qemu supports this enlightenment since version 7.10.

From the qemu commit:
    Hyper-V specification allows to pass parameters for certain hypercalls
    using XMM registers ("XMM Fast Hypercall Input"). When the feature is
    in use, it allows for faster hypercalls processing as KVM can avoid
    reading guest's memory.

Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
---
 docs/formatdomain.rst                              | 2 ++
 src/conf/domain_conf.c                             | 4 ++++
 src/conf/domain_conf.h                             | 1 +
 src/conf/schemas/domaincommon.rng                  | 5 +++++
 src/cpu/cpu_x86.c                                  | 4 +++-
 src/cpu/cpu_x86_data.h                             | 1 +
 src/qemu/qemu_command.c                            | 5 +++++
 src/qemu/qemu_process.c                            | 1 +
 tests/domaincapsdata/qemu_8.0.0-q35.x86_64.xml     | 1 +
 tests/domaincapsdata/qemu_8.0.0-tcg.x86_64.xml     | 1 +
 tests/domaincapsdata/qemu_8.0.0.x86_64.xml         | 1 +
 tests/domaincapsdata/qemu_8.1.0-q35.x86_64.xml     | 1 +
 tests/domaincapsdata/qemu_8.1.0-tcg.x86_64.xml     | 1 +
 tests/domaincapsdata/qemu_8.1.0.x86_64.xml         | 1 +
 tests/domaincapsdata/qemu_8.2.0-q35.x86_64.xml     | 1 +
 tests/domaincapsdata/qemu_8.2.0-tcg.x86_64.xml     | 1 +
 tests/domaincapsdata/qemu_8.2.0.x86_64.xml         | 1 +
 tests/domaincapsdata/qemu_9.0.0-q35.x86_64.xml     | 1 +
 tests/domaincapsdata/qemu_9.0.0-tcg.x86_64.xml     | 1 +
 tests/domaincapsdata/qemu_9.0.0.x86_64.xml         | 1 +
 tests/domaincapsdata/qemu_9.1.0-q35.x86_64.xml     | 1 +
 tests/domaincapsdata/qemu_9.1.0-tcg.x86_64.xml     | 1 +
 tests/domaincapsdata/qemu_9.1.0.x86_64.xml         | 1 +
 tests/qemucapabilitiesdata/caps_8.0.0_x86_64.xml   | 1 +
 tests/qemucapabilitiesdata/caps_8.1.0_x86_64.xml   | 1 +
 tests/qemucapabilitiesdata/caps_8.2.0_x86_64.xml   | 1 +
 tests/qemucapabilitiesdata/caps_9.0.0_x86_64.xml   | 1 +
 tests/qemucapabilitiesdata/caps_9.1.0_x86_64.xml   | 1 +
 tests/qemuxmlconfdata/hyperv-off.x86_64-latest.xml | 1 +
 tests/qemuxmlconfdata/hyperv-off.xml               | 1 +
 tests/qemuxmlconfdata/hyperv.x86_64-latest.args    | 2 +-
 tests/qemuxmlconfdata/hyperv.x86_64-latest.xml     | 1 +
 tests/qemuxmlconfdata/hyperv.xml                   | 1 +
 33 files changed, 47 insertions(+), 2 deletions(-)

diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst
index 0cf3dc9deb..e38ff9ec4d 100644
--- a/docs/formatdomain.rst
+++ b/docs/formatdomain.rst
@@ -1990,6 +1990,7 @@ Hypervisors may allow certain CPU / machine features to be toggled on/off.
        <ipi state='on'/>
        <evmcs state='on'/>
        <emsr_bitmap state='on'/>
+       <xmm_input state='on'/>
      </hyperv>
      <kvm>
        <hidden state='on'/>
@@ -2078,6 +2079,7 @@ are:
    evmcs           Enable Enlightened VMCS                                                on, off                                      :since:`4.10.0 (QEMU 3.1)`
    avic            Enable use Hyper-V SynIC with hardware APICv/AVIC                      on, off                                      :since:`8.10.0 (QEMU 6.2)`
    emsr_bitmap     Avoid unnecessary updates to L2 MSR Bitmap upon vmexits.               on, off                                      :since:`10.7.0 (QEMU 7.1)`
+   xmm_input       Enable XMM Fast Hypercall Input                                        on, off                                      :since:`10.7.0 (QEMU 7.1)`
    =============== ====================================================================== ============================================ =======================================================
 
    :since:`Since 8.0.0`, the hypervisor can be configured further by setting
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index c88e885d07..9647b89391 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -212,6 +212,7 @@ VIR_ENUM_IMPL(virDomainHyperv,
               "evmcs",
               "avic",
               "emsr_bitmap",
+              "xmm_input",
 );
 
 VIR_ENUM_IMPL(virDomainKVM,
@@ -16576,6 +16577,7 @@ virDomainFeaturesHyperVDefParse(virDomainDef *def,
         case VIR_DOMAIN_HYPERV_EVMCS:
         case VIR_DOMAIN_HYPERV_AVIC:
         case VIR_DOMAIN_HYPERV_EMSR_BITMAP:
+        case VIR_DOMAIN_HYPERV_XMM_INPUT:
             break;
 
         case VIR_DOMAIN_HYPERV_STIMER:
@@ -21023,6 +21025,7 @@ virDomainDefFeaturesCheckABIStability(virDomainDef *src,
             case VIR_DOMAIN_HYPERV_EVMCS:
             case VIR_DOMAIN_HYPERV_AVIC:
             case VIR_DOMAIN_HYPERV_EMSR_BITMAP:
+            case VIR_DOMAIN_HYPERV_XMM_INPUT:
                 if (src->hyperv_features[i] != dst->hyperv_features[i]) {
                     virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
                                    _("State of HyperV enlightenment feature '%1$s' differs: source: '%2$s', destination: '%3$s'"),
@@ -27765,6 +27768,7 @@ virDomainDefFormatFeatures(virBuffer *buf,
                 case VIR_DOMAIN_HYPERV_EVMCS:
                 case VIR_DOMAIN_HYPERV_AVIC:
                 case VIR_DOMAIN_HYPERV_EMSR_BITMAP:
+                case VIR_DOMAIN_HYPERV_XMM_INPUT:
                     virBufferAddLit(&childBuf, "/>\n");
                     break;
 
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index 332bcd0cf9..631edaf217 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -2204,6 +2204,7 @@ typedef enum {
     VIR_DOMAIN_HYPERV_EVMCS,
     VIR_DOMAIN_HYPERV_AVIC,
     VIR_DOMAIN_HYPERV_EMSR_BITMAP,
+    VIR_DOMAIN_HYPERV_XMM_INPUT,
 
     VIR_DOMAIN_HYPERV_LAST
 } virDomainHyperv;
diff --git a/src/conf/schemas/domaincommon.rng b/src/conf/schemas/domaincommon.rng
index 6f81fc94c2..e207c112be 100644
--- a/src/conf/schemas/domaincommon.rng
+++ b/src/conf/schemas/domaincommon.rng
@@ -7967,6 +7967,11 @@
                 <ref name="featurestate"/>
               </element>
             </optional>
+            <optional>
+              <element name="xmm_input">
+                <ref name="featurestate"/>
+              </element>
+            </optional>
           </interleave>
         </group>
       </choice>
diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c
index 139ac48234..7cf158e25b 100644
--- a/src/cpu/cpu_x86.c
+++ b/src/cpu/cpu_x86.c
@@ -82,6 +82,8 @@ KVM_FEATURE_DEF(VIR_CPU_x86_HV_SYNIC,
                 0x40000003, 0x00000004, 0x0);
 KVM_FEATURE_DEF(VIR_CPU_x86_HV_STIMER,
                 0x40000003, 0x00000008, 0x0);
+KVM_FEATURE_DEF(VIR_CPU_x86_HV_XMM_INPUT,
+                0x40000003, 0x00000010, 0x0);
 KVM_FEATURE_DEF(VIR_CPU_x86_HV_RELAXED,
                 0x40000003, 0x00000020, 0x0);
 KVM_FEATURE_DEF(VIR_CPU_x86_HV_VAPIC,
@@ -109,13 +111,13 @@ KVM_FEATURE_DEF(VIR_CPU_x86_HV_EVMCS,
 
 KVM_FEATURE_DEF(VIR_CPU_x86_HV_EMSR_BITMAP,
                 0x4000000A, 0x00080000, 0x0);
-
 static virCPUx86Feature x86_kvm_features[] =
 {
     KVM_FEATURE(VIR_CPU_x86_KVM_PV_UNHALT),
     KVM_FEATURE(VIR_CPU_x86_HV_RUNTIME),
     KVM_FEATURE(VIR_CPU_x86_HV_SYNIC),
     KVM_FEATURE(VIR_CPU_x86_HV_STIMER),
+    KVM_FEATURE(VIR_CPU_x86_HV_XMM_INPUT),
     KVM_FEATURE(VIR_CPU_x86_HV_RELAXED),
     KVM_FEATURE(VIR_CPU_x86_HV_VAPIC),
     KVM_FEATURE(VIR_CPU_x86_HV_VPINDEX),
diff --git a/src/cpu/cpu_x86_data.h b/src/cpu/cpu_x86_data.h
index 414643fe8d..43ad2faeb1 100644
--- a/src/cpu/cpu_x86_data.h
+++ b/src/cpu/cpu_x86_data.h
@@ -51,6 +51,7 @@ struct _virCPUx86MSR {
 #define VIR_CPU_x86_HV_RUNTIME   "hv-runtime"
 #define VIR_CPU_x86_HV_SYNIC     "hv-synic"
 #define VIR_CPU_x86_HV_STIMER    "hv-stimer"
+#define VIR_CPU_x86_HV_XMM_INPUT "hv-xmm_input"
 #define VIR_CPU_x86_HV_RELAXED   "hv-relaxed"
 #define VIR_CPU_x86_HV_SPINLOCKS "hv-spinlocks"
 #define VIR_CPU_x86_HV_VAPIC     "hv-vapic"
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index cac6fc57a5..a0f2c0a946 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -6528,6 +6528,11 @@ qemuBuildCpuCommandLine(virCommand *cmd,
                     virBufferAsprintf(&buf, ",%s=on", "hv-emsr-bitmap");
                 break;
 
+            case VIR_DOMAIN_HYPERV_XMM_INPUT:
+                if (def->hyperv_features[i] == VIR_TRISTATE_SWITCH_ON)
+                    virBufferAsprintf(&buf, ",%s=on", "hv-xmm-input");
+                break;
+
             case VIR_DOMAIN_HYPERV_LAST:
                 break;
             }
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index 4a2e3b11fd..3de9ad6984 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -4305,6 +4305,7 @@ qemuProcessVerifyHypervFeatures(virDomainDef *def,
         case VIR_DOMAIN_HYPERV_EVMCS:
         case VIR_DOMAIN_HYPERV_AVIC:
         case VIR_DOMAIN_HYPERV_EMSR_BITMAP:
+        case VIR_DOMAIN_HYPERV_XMM_INPUT:
             virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
                            _("host doesn't support hyperv '%1$s' feature"),
                            virDomainHypervTypeToString(i));
diff --git a/tests/domaincapsdata/qemu_8.0.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_8.0.0-q35.x86_64.xml
index 1dfbf98248..aa7f0c877c 100644
--- a/tests/domaincapsdata/qemu_8.0.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_8.0.0-q35.x86_64.xml
@@ -286,6 +286,7 @@
         <value>ipi</value>
         <value>avic</value>
         <value>emsr_bitmap</value>
+        <value>xmm_input</value>
       </enum>
     </hyperv>
     <launchSecurity supported='no'/>
diff --git a/tests/domaincapsdata/qemu_8.0.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_8.0.0-tcg.x86_64.xml
index 516eade95b..9892e2d657 100644
--- a/tests/domaincapsdata/qemu_8.0.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_8.0.0-tcg.x86_64.xml
@@ -288,6 +288,7 @@
         <value>ipi</value>
         <value>avic</value>
         <value>emsr_bitmap</value>
+        <value>xmm_input</value>
       </enum>
     </hyperv>
     <launchSecurity supported='no'/>
diff --git a/tests/domaincapsdata/qemu_8.0.0.x86_64.xml b/tests/domaincapsdata/qemu_8.0.0.x86_64.xml
index 96cfc5776e..9c9e8682e3 100644
--- a/tests/domaincapsdata/qemu_8.0.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_8.0.0.x86_64.xml
@@ -286,6 +286,7 @@
         <value>ipi</value>
         <value>avic</value>
         <value>emsr_bitmap</value>
+        <value>xmm_input</value>
       </enum>
     </hyperv>
     <launchSecurity supported='no'/>
diff --git a/tests/domaincapsdata/qemu_8.1.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_8.1.0-q35.x86_64.xml
index 5bb1299fb1..57f20132fa 100644
--- a/tests/domaincapsdata/qemu_8.1.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_8.1.0-q35.x86_64.xml
@@ -289,6 +289,7 @@
         <value>ipi</value>
         <value>avic</value>
         <value>emsr_bitmap</value>
+        <value>xmm_input</value>
       </enum>
     </hyperv>
     <launchSecurity supported='no'/>
diff --git a/tests/domaincapsdata/qemu_8.1.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_8.1.0-tcg.x86_64.xml
index 743a6e728b..5dbe6e0b81 100644
--- a/tests/domaincapsdata/qemu_8.1.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_8.1.0-tcg.x86_64.xml
@@ -290,6 +290,7 @@
         <value>ipi</value>
         <value>avic</value>
         <value>emsr_bitmap</value>
+        <value>xmm_input</value>
       </enum>
     </hyperv>
     <launchSecurity supported='no'/>
diff --git a/tests/domaincapsdata/qemu_8.1.0.x86_64.xml b/tests/domaincapsdata/qemu_8.1.0.x86_64.xml
index fa635fd12b..4156a476cd 100644
--- a/tests/domaincapsdata/qemu_8.1.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_8.1.0.x86_64.xml
@@ -289,6 +289,7 @@
         <value>ipi</value>
         <value>avic</value>
         <value>emsr_bitmap</value>
+        <value>xmm_input</value>
       </enum>
     </hyperv>
     <launchSecurity supported='no'/>
diff --git a/tests/domaincapsdata/qemu_8.2.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_8.2.0-q35.x86_64.xml
index 6c394ba3c4..65987be79b 100644
--- a/tests/domaincapsdata/qemu_8.2.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_8.2.0-q35.x86_64.xml
@@ -291,6 +291,7 @@
         <value>ipi</value>
         <value>avic</value>
         <value>emsr_bitmap</value>
+        <value>xmm_input</value>
       </enum>
     </hyperv>
     <launchSecurity supported='no'/>
diff --git a/tests/domaincapsdata/qemu_8.2.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_8.2.0-tcg.x86_64.xml
index 7ebd3ced3a..9ba857f660 100644
--- a/tests/domaincapsdata/qemu_8.2.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_8.2.0-tcg.x86_64.xml
@@ -290,6 +290,7 @@
         <value>ipi</value>
         <value>avic</value>
         <value>emsr_bitmap</value>
+        <value>xmm_input</value>
       </enum>
     </hyperv>
     <launchSecurity supported='no'/>
diff --git a/tests/domaincapsdata/qemu_8.2.0.x86_64.xml b/tests/domaincapsdata/qemu_8.2.0.x86_64.xml
index 1db706ef7e..01729e231e 100644
--- a/tests/domaincapsdata/qemu_8.2.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_8.2.0.x86_64.xml
@@ -291,6 +291,7 @@
         <value>ipi</value>
         <value>avic</value>
         <value>emsr_bitmap</value>
+        <value>xmm_input</value>
       </enum>
     </hyperv>
     <launchSecurity supported='no'/>
diff --git a/tests/domaincapsdata/qemu_9.0.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_9.0.0-q35.x86_64.xml
index 4fb0ebc45f..78b0e91171 100644
--- a/tests/domaincapsdata/qemu_9.0.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_9.0.0-q35.x86_64.xml
@@ -291,6 +291,7 @@
         <value>ipi</value>
         <value>avic</value>
         <value>emsr_bitmap</value>
+        <value>xmm_input</value>
       </enum>
     </hyperv>
     <launchSecurity supported='no'/>
diff --git a/tests/domaincapsdata/qemu_9.0.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_9.0.0-tcg.x86_64.xml
index 43ff5c3d9f..88e2788cef 100644
--- a/tests/domaincapsdata/qemu_9.0.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_9.0.0-tcg.x86_64.xml
@@ -292,6 +292,7 @@
         <value>ipi</value>
         <value>avic</value>
         <value>emsr_bitmap</value>
+        <value>xmm_input</value>
       </enum>
     </hyperv>
     <launchSecurity supported='no'/>
diff --git a/tests/domaincapsdata/qemu_9.0.0.x86_64.xml b/tests/domaincapsdata/qemu_9.0.0.x86_64.xml
index 86edbec0dd..37b12be0b7 100644
--- a/tests/domaincapsdata/qemu_9.0.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_9.0.0.x86_64.xml
@@ -291,6 +291,7 @@
         <value>ipi</value>
         <value>avic</value>
         <value>emsr_bitmap</value>
+        <value>xmm_input</value>
       </enum>
     </hyperv>
     <launchSecurity supported='no'/>
diff --git a/tests/domaincapsdata/qemu_9.1.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_9.1.0-q35.x86_64.xml
index c9bf0139b5..08e4311c22 100644
--- a/tests/domaincapsdata/qemu_9.1.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_9.1.0-q35.x86_64.xml
@@ -295,6 +295,7 @@
         <value>ipi</value>
         <value>avic</value>
         <value>emsr_bitmap</value>
+        <value>xmm_input</value>
       </enum>
     </hyperv>
     <launchSecurity supported='no'/>
diff --git a/tests/domaincapsdata/qemu_9.1.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_9.1.0-tcg.x86_64.xml
index 288047b38b..72bd641b6e 100644
--- a/tests/domaincapsdata/qemu_9.1.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_9.1.0-tcg.x86_64.xml
@@ -291,6 +291,7 @@
         <value>ipi</value>
         <value>avic</value>
         <value>emsr_bitmap</value>
+        <value>xmm_input</value>
       </enum>
     </hyperv>
     <launchSecurity supported='no'/>
diff --git a/tests/domaincapsdata/qemu_9.1.0.x86_64.xml b/tests/domaincapsdata/qemu_9.1.0.x86_64.xml
index 4cae2f73cc..d074a260b6 100644
--- a/tests/domaincapsdata/qemu_9.1.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_9.1.0.x86_64.xml
@@ -295,6 +295,7 @@
         <value>ipi</value>
         <value>avic</value>
         <value>emsr_bitmap</value>
+        <value>xmm_input</value>
       </enum>
     </hyperv>
     <launchSecurity supported='no'/>
diff --git a/tests/qemucapabilitiesdata/caps_8.0.0_x86_64.xml b/tests/qemucapabilitiesdata/caps_8.0.0_x86_64.xml
index 2c9c2ebbbb..a59e18d5c8 100644
--- a/tests/qemucapabilitiesdata/caps_8.0.0_x86_64.xml
+++ b/tests/qemucapabilitiesdata/caps_8.0.0_x86_64.xml
@@ -3456,5 +3456,6 @@
     <cap name='ipi'/>
     <cap name='avic'/>
     <cap name='emsr_bitmap'/>
+    <cap name='xmm_input'/>
   </hypervCapabilities>
 </qemuCaps>
diff --git a/tests/qemucapabilitiesdata/caps_8.1.0_x86_64.xml b/tests/qemucapabilitiesdata/caps_8.1.0_x86_64.xml
index 6a87c1d9cc..d4d0751a96 100644
--- a/tests/qemucapabilitiesdata/caps_8.1.0_x86_64.xml
+++ b/tests/qemucapabilitiesdata/caps_8.1.0_x86_64.xml
@@ -3785,5 +3785,6 @@
     <cap name='ipi'/>
     <cap name='avic'/>
     <cap name='emsr_bitmap'/>
+    <cap name='xmm_input'/>
   </hypervCapabilities>
 </qemuCaps>
diff --git a/tests/qemucapabilitiesdata/caps_8.2.0_x86_64.xml b/tests/qemucapabilitiesdata/caps_8.2.0_x86_64.xml
index 6713905b2f..490270b8ca 100644
--- a/tests/qemucapabilitiesdata/caps_8.2.0_x86_64.xml
+++ b/tests/qemucapabilitiesdata/caps_8.2.0_x86_64.xml
@@ -3759,5 +3759,6 @@
     <cap name='ipi'/>
     <cap name='avic'/>
     <cap name='emsr_bitmap'/>
+    <cap name='xmm_input'/>
   </hypervCapabilities>
 </qemuCaps>
diff --git a/tests/qemucapabilitiesdata/caps_9.0.0_x86_64.xml b/tests/qemucapabilitiesdata/caps_9.0.0_x86_64.xml
index 520a2f95ee..52782de1b8 100644
--- a/tests/qemucapabilitiesdata/caps_9.0.0_x86_64.xml
+++ b/tests/qemucapabilitiesdata/caps_9.0.0_x86_64.xml
@@ -3694,5 +3694,6 @@
     <cap name='ipi'/>
     <cap name='avic'/>
     <cap name='emsr_bitmap'/>
+    <cap name='xmm_input'/>
   </hypervCapabilities>
 </qemuCaps>
diff --git a/tests/qemucapabilitiesdata/caps_9.1.0_x86_64.xml b/tests/qemucapabilitiesdata/caps_9.1.0_x86_64.xml
index f5db55dc86..d0454924cf 100644
--- a/tests/qemucapabilitiesdata/caps_9.1.0_x86_64.xml
+++ b/tests/qemucapabilitiesdata/caps_9.1.0_x86_64.xml
@@ -3950,5 +3950,6 @@
     <cap name='ipi'/>
     <cap name='avic'/>
     <cap name='emsr_bitmap'/>
+    <cap name='xmm_input'/>
   </hypervCapabilities>
 </qemuCaps>
diff --git a/tests/qemuxmlconfdata/hyperv-off.x86_64-latest.xml b/tests/qemuxmlconfdata/hyperv-off.x86_64-latest.xml
index 2b5f3537a8..29f2da03f1 100644
--- a/tests/qemuxmlconfdata/hyperv-off.x86_64-latest.xml
+++ b/tests/qemuxmlconfdata/hyperv-off.x86_64-latest.xml
@@ -26,6 +26,7 @@
       <ipi state='off'/>
       <evmcs state='off'/>
       <emsr_bitmap state='off'/>
+      <xmm_input state='off'/>
     </hyperv>
   </features>
   <cpu mode='custom' match='exact' check='none'>
diff --git a/tests/qemuxmlconfdata/hyperv-off.xml b/tests/qemuxmlconfdata/hyperv-off.xml
index f760a9676b..bec8780eea 100644
--- a/tests/qemuxmlconfdata/hyperv-off.xml
+++ b/tests/qemuxmlconfdata/hyperv-off.xml
@@ -26,6 +26,7 @@
       <ipi state='off'/>
       <evmcs state='off'/>
       <emsr_bitmap state='off'/>
+      <xmm_input state='off'/>
     </hyperv>
   </features>
   <clock offset='utc'/>
diff --git a/tests/qemuxmlconfdata/hyperv.x86_64-latest.args b/tests/qemuxmlconfdata/hyperv.x86_64-latest.args
index 5046ec6ea0..2aafafb340 100644
--- a/tests/qemuxmlconfdata/hyperv.x86_64-latest.args
+++ b/tests/qemuxmlconfdata/hyperv.x86_64-latest.args
@@ -12,7 +12,7 @@ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.config \
 -object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-QEMUGuest1/master-key.aes"}' \
 -machine pc,usb=off,dump-guest-core=off,memory-backend=pc.ram,acpi=on \
 -accel tcg \
--cpu 'qemu64,hv-relaxed=on,hv-vapic=on,hv-spinlocks=0x2fff,hv-vpindex=on,hv-runtime=on,hv-synic=on,hv-stimer=on,hv-reset=on,hv-vendor-id=KVM Hv,hv-frequencies=on,hv-reenlightenment=on,hv-tlbflush=on,hv-ipi=on,hv-evmcs=on,hv-avic=on,hv-emsr-bitmap=on' \
+-cpu 'qemu64,hv-relaxed=on,hv-vapic=on,hv-spinlocks=0x2fff,hv-vpindex=on,hv-runtime=on,hv-synic=on,hv-stimer=on,hv-reset=on,hv-vendor-id=KVM Hv,hv-frequencies=on,hv-reenlightenment=on,hv-tlbflush=on,hv-ipi=on,hv-evmcs=on,hv-avic=on,hv-emsr-bitmap=on,hv-xmm-input=on' \
 -m size=219136k \
 -object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":224395264}' \
 -overcommit mem-lock=off \
diff --git a/tests/qemuxmlconfdata/hyperv.x86_64-latest.xml b/tests/qemuxmlconfdata/hyperv.x86_64-latest.xml
index d5cb27bf1d..36d9161fa8 100644
--- a/tests/qemuxmlconfdata/hyperv.x86_64-latest.xml
+++ b/tests/qemuxmlconfdata/hyperv.x86_64-latest.xml
@@ -27,6 +27,7 @@
       <evmcs state='on'/>
       <avic state='on'/>
       <emsr_bitmap state='on'/>
+      <xmm_input state='on'/>
     </hyperv>
   </features>
   <cpu mode='custom' match='exact' check='none'>
diff --git a/tests/qemuxmlconfdata/hyperv.xml b/tests/qemuxmlconfdata/hyperv.xml
index db520e2074..a1e3cbbdf8 100644
--- a/tests/qemuxmlconfdata/hyperv.xml
+++ b/tests/qemuxmlconfdata/hyperv.xml
@@ -27,6 +27,7 @@
       <evmcs state='on'/>
       <avic state='on'/>
       <emsr_bitmap state='on'/>
+      <xmm_input state='on'/>
     </hyperv>
   </features>
   <clock offset='utc'/>
-- 
2.43.0