]> xenbits.xensource.com Git - libvirt.git/commitdiff
conf: parse and format machine virt ras feature
authorKristina Hanicova <khanicov@redhat.com>
Tue, 30 Apr 2024 14:32:37 +0000 (16:32 +0200)
committerJán Tomko <jtomko@redhat.com>
Thu, 2 May 2024 11:17:16 +0000 (13:17 +0200)
Signed-off-by: Kristina Hanicova <khanicov@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
docs/formatdomain.rst
src/conf/domain_conf.c
src/conf/domain_conf.h
src/conf/schemas/domaincommon.rng
src/qemu/qemu_validate.c

index 0211abaa1ac43285dd663ba97069c9467aa4a87b..89e634e16a91167c612f9b4cc4c4a35c6f3f8f54 100644 (file)
@@ -2021,6 +2021,7 @@ Hypervisors may allow certain CPU / machine features to be toggled on/off.
        <tb-cache unit='MiB'>128</tb-cache>
      </tcg>
      <async-teardown enabled='yes'/>
+     <ras state='on'/>
    </features>
    ...
 
@@ -2256,6 +2257,11 @@ are:
    Depending on the ``enabled`` attribute (values ``yes``, ``no``) enable or
    disable QEMU asynchronous teardown to improve memory reclaiming on a guest.
    :since:`Since 9.6.0` (QEMU only)
+``ras``
+   Report host memory errors to a guest using ACPI and guest external abort
+   exceptions when enabled (``on``). If the attribute is not defined, the
+   hypervisor default will be used.
+   :since:`Since 10.4.0` (QEMU/KVM and ARM virt guests only)
 
 Time keeping
 ------------
index 9df2b76efbbe1a024a361f93ee9d987212902744..9eaec76b079ea44aecc813d67297e39a9193fc9f 100644 (file)
@@ -184,6 +184,7 @@ VIR_ENUM_IMPL(virDomainFeature,
               "ibs",
               "tcg",
               "async-teardown",
+              "ras",
 );
 
 VIR_ENUM_IMPL(virDomainCapabilitiesPolicy,
@@ -16842,7 +16843,8 @@ virDomainFeaturesDefParse(virDomainDef *def,
 
         case VIR_DOMAIN_FEATURE_HTM:
         case VIR_DOMAIN_FEATURE_NESTED_HV:
-        case VIR_DOMAIN_FEATURE_CCF_ASSIST: {
+        case VIR_DOMAIN_FEATURE_CCF_ASSIST:
+        case VIR_DOMAIN_FEATURE_RAS: {
             virTristateSwitch state;
 
             if (virXMLPropTristateSwitch(nodes[i], "state",
@@ -20689,6 +20691,7 @@ virDomainDefFeaturesCheckABIStability(virDomainDef *src,
         case VIR_DOMAIN_FEATURE_HTM:
         case VIR_DOMAIN_FEATURE_NESTED_HV:
         case VIR_DOMAIN_FEATURE_CCF_ASSIST:
+        case VIR_DOMAIN_FEATURE_RAS:
             if (src->features[i] != dst->features[i]) {
                 virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
                                _("State of feature '%1$s' differs: source: '%2$s', destination: '%3$s'"),
@@ -27392,6 +27395,7 @@ virDomainDefFormatFeatures(virBuffer *buf,
         case VIR_DOMAIN_FEATURE_HTM:
         case VIR_DOMAIN_FEATURE_NESTED_HV:
         case VIR_DOMAIN_FEATURE_CCF_ASSIST:
+        case VIR_DOMAIN_FEATURE_RAS:
             switch ((virTristateSwitch) def->features[i]) {
             case VIR_TRISTATE_SWITCH_LAST:
             case VIR_TRISTATE_SWITCH_ABSENT:
index 356c25405b2abc329045b42da81654d668660e9a..c2abdb9f524ed46d0c66c5973e35a960686990ce 100644 (file)
@@ -2171,6 +2171,7 @@ typedef enum {
     VIR_DOMAIN_FEATURE_IBS,
     VIR_DOMAIN_FEATURE_TCG,
     VIR_DOMAIN_FEATURE_ASYNC_TEARDOWN,
+    VIR_DOMAIN_FEATURE_RAS,
 
     VIR_DOMAIN_FEATURE_LAST
 } virDomainFeature;
index d84e030255d151ae47dad0cdabf66a6ecab804c6..86d9e391d81bde0397be538b71f8308d635605e2 100644 (file)
               </optional>
             </element>
           </optional>
+          <optional>
+            <element name="ras">
+              <ref name="featurestate"/>
+            </element>
+          </optional>
         </interleave>
       </element>
     </optional>
index b02da95c1e9de5f056c8c5fb391970d8b3c2e9e2..b33618b494c0af5af3aa0145a61392fc90480719 100644 (file)
@@ -226,6 +226,7 @@ qemuValidateDomainDefFeatures(const virDomainDef *def,
             }
             break;
 
+        case VIR_DOMAIN_FEATURE_RAS:
         case VIR_DOMAIN_FEATURE_SMM:
         case VIR_DOMAIN_FEATURE_KVM:
         case VIR_DOMAIN_FEATURE_XEN: