26369-libxl-devid.patch - fate##313584: pass bios information to XEN HVM guest 26554-hvm-firmware-passthrough.patch 26555-hvm-firmware-passthrough.patch 26556-hvm-firmware-passthrough.patch - Upstream patches from Jan 26516-ACPI-parse-table-retval.patch (Replaces CVE-2013-0153-xsa36.patch) 26517-AMD-IOMMU-clear-irtes.patch (Replaces CVE-2013-0153-xsa36.patch) 26518-AMD-IOMMU-disable-if-SATA-combined-mode.patch (Replaces CVE-2013-0153-xsa36.patch) 26519-AMD-IOMMU-perdev-intremap-default.patch (Replaces CVE-2013-0153-xsa36.patch) 26526-pvdrv-no-devinit.patch 26529-gcc48-build-fix.patch 26531-AMD-IOMMU-IVHD-special-missing.patch (Replaces CVE-2013-0153-xsa36.patch) 26532-AMD-IOMMU-phantom-MSI.patch 26536-xenoprof-div-by-0.patch 26576-x86-APICV-migration.patch 26577-x86-APICV-x2APIC.patch 26578-AMD-IOMMU-replace-BUG_ON.patch - bnc#797014 - no way to control live migrations 26547-tools-xc_fix_logic_error_in_stdiostream_progress.patch 26548-tools-xc_handle_tty_output_differently_in_stdiostream_progress.patch 26549-tools-xc_turn_XCFLAGS_*_into_shifts.patch 26550-tools-xc_restore_logging_in_xc_save.patch 26551-tools-xc_log_pid_in_xc_save-xc_restore_output.patch - PVonHVM: __devinit was removed in linux-3.8 OBS-URL: https://build.opensuse.org/package/show/Virtualization/xen?expand=0&rev=229
73 lines
2.8 KiB
Diff
73 lines
2.8 KiB
Diff
# HG changeset patch
|
|
# User Jan Beulich <jbeulich@suse.com>
|
|
# Date 1358843590 -3600
|
|
# Node ID 5af4f2ab06f33ce441fa550333a9049c09a9ef28
|
|
# Parent 4b476378fc35e776196c29dc0e24b71529393a4c
|
|
x86: restore (optional) forwarding of PCI SERR induced NMI to Dom0
|
|
|
|
c/s 22949:54fe1011f86b removed the forwarding of NMIs to Dom0 when they
|
|
were caused by PCI SERR. NMI buttons as well as BMCs (like HP's iLO)
|
|
may however want such events to be seen in Dom0 (e.g. to trigger a
|
|
dump).
|
|
|
|
Therefore restore most of the functionality which named c/s removed
|
|
(adjusted for subsequent changes, and adjusting the public interface to
|
|
use the modern term, retaining the old one for backwards
|
|
compatibility).
|
|
|
|
Signed-off-by: Jan Beulich <jbeulich@suse.com>
|
|
Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
|
|
Acked-by: Keir Fraser <keir@xen.org>
|
|
|
|
--- a/xen/arch/x86/traps.c
|
|
+++ b/xen/arch/x86/traps.c
|
|
@@ -3201,6 +3201,7 @@ static void nmi_mce_softirq(void)
|
|
static void pci_serr_softirq(void)
|
|
{
|
|
printk("\n\nNMI - PCI system error (SERR)\n");
|
|
+ outb(inb(0x61) & 0x0b, 0x61); /* re-enable the PCI SERR error line. */
|
|
}
|
|
|
|
void async_exception_cleanup(struct vcpu *curr)
|
|
@@ -3291,9 +3292,20 @@ static void pci_serr_error(struct cpu_us
|
|
{
|
|
outb((inb(0x61) & 0x0f) | 0x04, 0x61); /* clear-and-disable the PCI SERR error line. */
|
|
|
|
- /* Would like to print a diagnostic here but can't call printk()
|
|
- from NMI context -- raise a softirq instead. */
|
|
- raise_softirq(PCI_SERR_SOFTIRQ);
|
|
+ switch ( opt_nmi[0] )
|
|
+ {
|
|
+ case 'd': /* 'dom0' */
|
|
+ nmi_dom0_report(_XEN_NMIREASON_pci_serr);
|
|
+ case 'i': /* 'ignore' */
|
|
+ /* Would like to print a diagnostic here but can't call printk()
|
|
+ from NMI context -- raise a softirq instead. */
|
|
+ raise_softirq(PCI_SERR_SOFTIRQ);
|
|
+ break;
|
|
+ default: /* 'fatal' */
|
|
+ console_force_unlock();
|
|
+ printk("\n\nNMI - PCI system error (SERR)\n");
|
|
+ fatal_trap(TRAP_nmi, regs);
|
|
+ }
|
|
}
|
|
|
|
static void io_check_error(struct cpu_user_regs *regs)
|
|
--- a/xen/include/public/nmi.h
|
|
+++ b/xen/include/public/nmi.h
|
|
@@ -36,9 +36,14 @@
|
|
/* I/O-check error reported via ISA port 0x61, bit 6. */
|
|
#define _XEN_NMIREASON_io_error 0
|
|
#define XEN_NMIREASON_io_error (1UL << _XEN_NMIREASON_io_error)
|
|
+ /* PCI SERR reported via ISA port 0x61, bit 7. */
|
|
+#define _XEN_NMIREASON_pci_serr 1
|
|
+#define XEN_NMIREASON_pci_serr (1UL << _XEN_NMIREASON_pci_serr)
|
|
+#if __XEN_INTERFACE_VERSION__ < 0x00040300 /* legacy alias of the above */
|
|
/* Parity error reported via ISA port 0x61, bit 7. */
|
|
#define _XEN_NMIREASON_parity_error 1
|
|
#define XEN_NMIREASON_parity_error (1UL << _XEN_NMIREASON_parity_error)
|
|
+#endif
|
|
/* Unknown hardware-generated NMI. */
|
|
#define _XEN_NMIREASON_unknown 2
|
|
#define XEN_NMIREASON_unknown (1UL << _XEN_NMIREASON_unknown)
|