<span class="since">Since 1.2.1, QEMU and KVM only</span>
</p>
<p>
- For pSeries guests, this feature is always enabled since it's
- implemented by the guest firmware, thus libvirt automatically
- adds the <code>panic</code> element to the domain XML.
+ This feature is always enabled for:
+ </p>
+ <ul>
+ <li>pSeries guests, since it's implemented by the guest firmware</li>
+ <li>S390 guests, since it's an integral part of the S390 architecture</li>
+ </ul>
+ <p>
+ For the guest types listed above, libvirt automatically adds a
+ <code>panic</code> element to the domain XML.
</p>
<p>
Example: usage of panic configuration
<li>'pseries' — default and valid only for pSeries guests.</li>
<li>'hyperv' — for Hyper-V crash CPU feature.
<span class="since">Since 1.3.0, QEMU and KVM only</span></li>
+ <li>'s390' — default for S390 guests.
+ <span class="since">Since 1.3.5</span></li>
</ul>
</dd>
<dt><code>address</code></dt>
<p>
address of panic. The default ioport is 0x505. Most users
don't need to specify an address, and doing so is forbidden
- altogether for pseries and hyperv models.
+ altogether for s390, pseries and hyperv models.
</p>
</dd>
</dl>
<value>isa</value>
<value>pseries</value>
<value>hyperv</value>
+ <value>s390</value>
</choice>
</attribute>
</optional>
"default",
"isa",
"pseries",
- "hyperv")
+ "hyperv",
+ "s390")
VIR_ENUM_IMPL(virDomainVideo, VIR_DOMAIN_VIDEO_TYPE_LAST,
"vga",
VIR_DOMAIN_PANIC_MODEL_ISA,
VIR_DOMAIN_PANIC_MODEL_PSERIES,
VIR_DOMAIN_PANIC_MODEL_HYPERV,
+ VIR_DOMAIN_PANIC_MODEL_S390,
VIR_DOMAIN_PANIC_MODEL_LAST
} virDomainPanicModel;
for (i = 0; i < def->npanics; i++) {
switch ((virDomainPanicModel) def->panics[i]->model) {
+ case VIR_DOMAIN_PANIC_MODEL_S390:
+ /* For s390 guests, the hardware provides the same
+ * functionality as the pvpanic device. The address
+ * cannot be configured by the user */
+ if (!ARCH_IS_S390(def->os.arch)) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+ _("only S390 guests support "
+ "panic device of model 's390'"));
+ return -1;
+ }
+ if (def->panics[i]->info.type !=
+ VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+ _("setting the panic device address is not "
+ "supported for model 's390'"));
+ return -1;
+ }
+ break;
+
case VIR_DOMAIN_PANIC_MODEL_HYPERV:
/* Panic with model 'hyperv' is not a device, it should
* be configured in cpu commandline. The address
if (ARCH_IS_PPC64(def->os.arch) &&
STRPREFIX(def->os.machine, "pseries"))
dev->data.panic->model = VIR_DOMAIN_PANIC_MODEL_PSERIES;
+ else if (ARCH_IS_S390(def->os.arch))
+ dev->data.panic->model = VIR_DOMAIN_PANIC_MODEL_S390;
else
dev->data.panic->model = VIR_DOMAIN_PANIC_MODEL_ISA;
}