``backendType``
Options for the ``type`` attribute of the ``<backend/>`` element
+Panic device
+^^^^^^^^^^^^
+
+Interface device corresponds to `panic device
+<formatdomain.html#panic-device>`__ (``<panic/>``) in domain XML.
+
+::
+
+ <domainCapabilities>
+ ...
+ <devices>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ </enum>
+ </panic>
+ ...
+ </devices>
+ </domainCapabilities>
+
+``model``
+ Options for the ``model`` attribute of the ``<panic/>`` element
+
Features
~~~~~~~~
}
+static void
+virDomainCapsDevicePanicFormat(virBuffer *buf,
+ const virDomainCapsDevicePanic *panic)
+{
+ FORMAT_PROLOGUE(panic);
+
+ ENUM_PROCESS(panic, model, virDomainPanicModelTypeToString);
+
+ FORMAT_EPILOGUE(panic);
+}
+
+
/**
* virDomainCapsFeatureGICFormat:
* @buf: target buffer
virDomainCapsDeviceChannelFormat(&buf, &caps->channel);
virDomainCapsDeviceCryptoFormat(&buf, &caps->crypto);
virDomainCapsDeviceNetFormat(&buf, &caps->net);
+ virDomainCapsDevicePanicFormat(&buf, &caps->panic);
virBufferAdjustIndent(&buf, -2);
virBufferAddLit(&buf, "</devices>\n");
virDomainCapsEnum backendType; /* virDomainNetBackendType */
};
+STATIC_ASSERT_ENUM(VIR_DOMAIN_PANIC_MODEL_LAST);
+typedef struct _virDomainCapsDevicePanic virDomainCapsDevicePanic;
+struct _virDomainCapsDevicePanic {
+ virTristateBool supported;
+ virDomainCapsEnum model; /* virDomainPanicModel */
+};
+
typedef enum {
VIR_DOMAIN_CAPS_FEATURE_IOTHREADS = 0,
VIR_DOMAIN_CAPS_FEATURE_VMCOREINFO,
virDomainCapsDeviceChannel channel;
virDomainCapsDeviceCrypto crypto;
virDomainCapsDeviceNet net;
+ virDomainCapsDevicePanic panic;
/* add new domain devices here */
virDomainCapsFeatureGIC gic;
}
+void
+virQEMUCapsFillDomainDevicePanicCaps(virQEMUCaps *qemuCaps,
+ const char *machine,
+ virDomainCapsDevicePanic *panic)
+{
+ panic->model.report = true;
+
+ if (ARCH_IS_S390(qemuCaps->arch))
+ VIR_DOMAIN_CAPS_ENUM_SET(panic->model, VIR_DOMAIN_PANIC_MODEL_S390);
+
+ if (ARCH_IS_X86(qemuCaps->arch))
+ VIR_DOMAIN_CAPS_ENUM_SET(panic->model, VIR_DOMAIN_PANIC_MODEL_HYPERV);
+
+ if (qemuDomainMachineIsPSeries(machine, qemuCaps->arch))
+ VIR_DOMAIN_CAPS_ENUM_SET(panic->model, VIR_DOMAIN_PANIC_MODEL_PSERIES);
+
+ if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_PANIC))
+ VIR_DOMAIN_CAPS_ENUM_SET(panic->model, VIR_DOMAIN_PANIC_MODEL_ISA);
+
+ if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_PANIC_PCI))
+ VIR_DOMAIN_CAPS_ENUM_SET(panic->model, VIR_DOMAIN_PANIC_MODEL_PVPANIC);
+
+ if (panic->model.values)
+ panic->supported = VIR_TRISTATE_BOOL_YES;
+ else
+ panic->supported = VIR_TRISTATE_BOOL_NO;
+}
+
+
/**
* virQEMUCapsSupportsGICVersion:
* @qemuCaps: QEMU capabilities
virDomainCapsDeviceCrypto *crypto = &domCaps->crypto;
virDomainCapsLaunchSecurity *launchSecurity = &domCaps->launchSecurity;
virDomainCapsDeviceNet *net = &domCaps->net;
+ virDomainCapsDevicePanic *panic = &domCaps->panic;
virQEMUCapsFillDomainFeaturesFromQEMUCaps(qemuCaps, domCaps);
virQEMUCapsFillDomainDeviceCryptoCaps(qemuCaps, crypto);
virQEMUCapsFillDomainLaunchSecurity(qemuCaps, launchSecurity);
virQEMUCapsFillDomainDeviceNetCaps(qemuCaps, net);
+ virQEMUCapsFillDomainDevicePanicCaps(qemuCaps, domCaps->machine, panic);
return 0;
}
void virQEMUCapsFillDomainDeviceNetCaps(virQEMUCaps *qemuCaps,
virDomainCapsDeviceNet *net);
+void virQEMUCapsFillDomainDevicePanicCaps(virQEMUCaps *qemuCaps,
+ const char *machine,
+ virDomainCapsDevicePanic *panic);
+
bool virQEMUCapsGuestIsNative(virArch host,
virArch guest);
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>default</value>
</enum>
</interface>
+ <panic supported='no'/>
</devices>
<features>
<gic supported='no'/>
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>default</value>
</enum>
</interface>
+ <panic supported='no'/>
</devices>
<features>
<gic supported='yes'>
<value>default</value>
</enum>
</interface>
+ <panic supported='no'/>
</devices>
<features>
<gic supported='no'/>
<value>default</value>
</enum>
</interface>
+ <panic supported='no'/>
</devices>
<features>
<gic supported='yes'>
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>pseries</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>s390</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='yes'>
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='yes'>
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>s390</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='yes'>
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='yes'>
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>pseries</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='yes'>
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='yes'>
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>pseries</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>pseries</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>default</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>s390</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='yes'>
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='yes'>
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>s390</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>passt</value>
</enum>
</interface>
+ <panic supported='no'/>
</devices>
<features>
<gic supported='no'/>
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>s390</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>
<value>passt</value>
</enum>
</interface>
+ <panic supported='yes'>
+ <enum name='model'>
+ <value>isa</value>
+ <value>hyperv</value>
+ <value>pvpanic</value>
+ </enum>
+ </panic>
</devices>
<features>
<gic supported='no'/>