summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJerry Jelinek <jerry.jelinek@joyent.com>2017-01-10 12:45:14 +0000
committerJerry Jelinek <jerry.jelinek@joyent.com>2017-01-10 12:45:14 +0000
commit336b23b441711d0f88086f5fac48d4232903728d (patch)
tree8eca20e15cd8bab3353357c9df9186044d917595
parentef863daaba22cc716ed3cfc450359044c2e6dde6 (diff)
parentcb214887258e20b89cd275946a280fee9c4b47fa (diff)
downloadillumos-joyent-336b23b441711d0f88086f5fac48d4232903728d.tar.gz
[illumos-gate merge]
commit cb214887258e20b89cd275946a280fee9c4b47fa 7724 apix may lose interrupts occuring while softint is running at same IPL commit 9d08e1f8c231016dcfeb854acff457e0e54f179d 7723 disable MSI-X in nvme on VMware commit 81293f932bdae6cf8a937185914925a57ec4ad7b 7733 Need SHA Instruction dis support Conflicts: usr/src/test/util-tests/tests/dis/Makefile
-rw-r--r--usr/src/pkg/manifests/system-test-utiltest.mf4
-rw-r--r--usr/src/uts/common/io/nvme/nvme.c8
-rw-r--r--usr/src/uts/i86pc/io/apix/apix_intr.c9
3 files changed, 19 insertions, 2 deletions
diff --git a/usr/src/pkg/manifests/system-test-utiltest.mf b/usr/src/pkg/manifests/system-test-utiltest.mf
index 46e691f849..bd977ecd6f 100644
--- a/usr/src/pkg/manifests/system-test-utiltest.mf
+++ b/usr/src/pkg/manifests/system-test-utiltest.mf
@@ -54,6 +54,8 @@ file path=opt/util-tests/tests/dis/i386/32.lzcnt.out mode=0555
file path=opt/util-tests/tests/dis/i386/32.lzcnt.s mode=0555
file path=opt/util-tests/tests/dis/i386/32.popcnt.out mode=0555
file path=opt/util-tests/tests/dis/i386/32.popcnt.s mode=0555
+file path=opt/util-tests/tests/dis/i386/32.sha.out mode=0555
+file path=opt/util-tests/tests/dis/i386/32.sha.s mode=0555
file path=opt/util-tests/tests/dis/i386/32.sse-4.2.out mode=0555
file path=opt/util-tests/tests/dis/i386/32.sse-4.2.s mode=0555
file path=opt/util-tests/tests/dis/i386/32.ssse3.out mode=0555
@@ -84,6 +86,8 @@ file path=opt/util-tests/tests/dis/i386/64.popcnt.out mode=0555
file path=opt/util-tests/tests/dis/i386/64.popcnt.s mode=0555
file path=opt/util-tests/tests/dis/i386/64.random.out mode=0555
file path=opt/util-tests/tests/dis/i386/64.random.s mode=0555
+file path=opt/util-tests/tests/dis/i386/64.sha.out mode=0555
+file path=opt/util-tests/tests/dis/i386/64.sha.s mode=0555
file path=opt/util-tests/tests/dis/i386/64.sse-4.2.out mode=0555
file path=opt/util-tests/tests/dis/i386/64.sse-4.2.s mode=0555
file path=opt/util-tests/tests/dis/i386/64.ssse3.out mode=0555
diff --git a/usr/src/uts/common/io/nvme/nvme.c b/usr/src/uts/common/io/nvme/nvme.c
index 3fad056534..8258d7964b 100644
--- a/usr/src/uts/common/io/nvme/nvme.c
+++ b/usr/src/uts/common/io/nvme/nvme.c
@@ -197,6 +197,10 @@
#include <sys/archsystm.h>
#include <sys/sata/sata_hba.h>
+#ifdef __x86
+#include <sys/x86_archext.h>
+#endif
+
#include "nvme_reg.h"
#include "nvme_var.h"
@@ -2409,6 +2413,10 @@ nvme_setup_interrupts(nvme_t *nvme, int intr_type, int nqpairs)
__func__);
return (ret);
}
+#ifdef __x86
+ if (get_hwenv() == HW_VMWARE)
+ nvme->n_intr_types &= ~DDI_INTR_TYPE_MSIX;
+#endif
}
if ((nvme->n_intr_types & intr_type) == 0)
diff --git a/usr/src/uts/i86pc/io/apix/apix_intr.c b/usr/src/uts/i86pc/io/apix/apix_intr.c
index d870a4d365..752a4045da 100644
--- a/usr/src/uts/i86pc/io/apix/apix_intr.c
+++ b/usr/src/uts/i86pc/io/apix/apix_intr.c
@@ -901,9 +901,13 @@ apix_do_interrupt(struct regs *rp, trap_trace_rec_t *ttp)
(void) apix_do_softint(rp);
ASSERT(!interrupts_enabled());
#ifdef TRAPTRACE
- ttp->ttr_vector = T_SOFTINT;
+ ttp->ttr_vector = T_SOFTINT;
#endif
- return;
+ /*
+ * We need to check again for pending interrupts that may have
+ * arrived while the softint was running.
+ */
+ goto do_pending;
}
/*
@@ -957,6 +961,7 @@ apix_do_interrupt(struct regs *rp, trap_trace_rec_t *ttp)
return;
}
+do_pending:
if (apix_do_pending_hilevel(cpu, rp) < 0)
return;