summaryrefslogtreecommitdiffstats
path: root/sys/i386/include/intr_machdep.h
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2016-08-05 17:13:25 +0000
committerjhb <jhb@FreeBSD.org>2016-08-05 17:13:25 +0000
commitfbbd0c62985bc602513e5c2134eae7516ab972a2 (patch)
treeaff2efb738c3b9c5b2d324c7472c4f12c77ee494 /sys/i386/include/intr_machdep.h
parent60a7e914b7a7ce14c22f7ba6905a1bb18d998346 (diff)
downloadFreeBSD-src-fbbd0c62985bc602513e5c2134eae7516ab972a2.zip
FreeBSD-src-fbbd0c62985bc602513e5c2134eae7516ab972a2.tar.gz
MFC 302181,302635: Disable MSI-X migration on older Xen hypervisors.
302181: Add a tunable to disable migration of MSI-X interrupts. The new 'machdep.disable_msix_migration' tunable can be set to 1 to disable migration of MSI-X interrupts. Xen versions prior to 4.6.0 do not properly handle updates to MSI-X table entries after the initial write. In particular, the operation to unmask a table entry after updating it during migration is not propagated to the "real" table for passthrough devices causing the interrupt to remain masked. At least some systems in EC2 are affected by this bug when using SRIOV. The tunable can be set in loader.conf as a workaround. 302635: xen: automatically disable MSI-X interrupt migration If the hypervisor version is smaller than 4.6.0. Xen commits 74fd00 and 70a3cb are required on the hypervisor side for this to be fixed, and those are only included in 4.6.0, so stay on the safe side and disable MSI-X interrupt migration on anything older than 4.6.0. It should not cause major performance degradation unless a lot of MSI-X interrupts are allocated.
Diffstat (limited to 'sys/i386/include/intr_machdep.h')
-rw-r--r--sys/i386/include/intr_machdep.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/i386/include/intr_machdep.h b/sys/i386/include/intr_machdep.h
index 8fb61a5..b71bbb6 100644
--- a/sys/i386/include/intr_machdep.h
+++ b/sys/i386/include/intr_machdep.h
@@ -141,6 +141,8 @@ struct trapframe;
extern struct mtx icu_lock;
extern int elcr_found;
+extern int msix_disable_migration;
+
#ifndef DEV_ATPIC
void atpic_reset(void);
#endif
OpenPOWER on IntegriCloud