diff options
author | Jerry Jelinek <jerry.jelinek@joyent.com> | 2017-01-10 12:45:14 +0000 |
---|---|---|
committer | Jerry Jelinek <jerry.jelinek@joyent.com> | 2017-01-10 12:45:14 +0000 |
commit | 336b23b441711d0f88086f5fac48d4232903728d (patch) | |
tree | 8eca20e15cd8bab3353357c9df9186044d917595 | |
parent | ef863daaba22cc716ed3cfc450359044c2e6dde6 (diff) | |
parent | cb214887258e20b89cd275946a280fee9c4b47fa (diff) | |
download | illumos-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.mf | 4 | ||||
-rw-r--r-- | usr/src/uts/common/io/nvme/nvme.c | 8 | ||||
-rw-r--r-- | usr/src/uts/i86pc/io/apix/apix_intr.c | 9 |
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; |