diff --git a/var/spack/repos/builtin/packages/mvapich2/package.py b/var/spack/repos/builtin/packages/mvapich2/package.py
index f4997bdfa1924f59afda0980b643e86da7304893..e871d0cd2b8fcfabbd0862babc41aa3f843bd45e 100644
--- a/var/spack/repos/builtin/packages/mvapich2/package.py
+++ b/var/spack/repos/builtin/packages/mvapich2/package.py
@@ -124,10 +124,19 @@ def set_process_manager(self, spec, configure_args):
             raise RuntimeError(" %s : 'slurm' cannot be activated together with other process managers" % self.name)
 
         process_manager_options = []
+        # See: http://slurm.schedmd.com/mpi_guide.html#mvapich2
         if self.enabled(Mvapich2.SLURM) in spec:
-            process_manager_options = [
-                "--with-pm=slurm"
-            ]
+            if self.version > Version('2.0'):
+                process_manager_options = [
+                    "--with-pmi=pmi2",
+                    "--with-pm=slurm"
+                ]
+            else:
+                process_manager_options = [
+                    "--with-pmi=slurm",
+                    "--with-pm=no"
+                ]
+
         elif has_slurm_incompatible_variants:
             pms = []
             # The variant name is equal to the process manager name in the configuration options
@@ -164,6 +173,11 @@ def set_network_type(self, spec, configure_args):
 
         configure_args.extend(network_options)
 
+    def setup_environment(self, spack_env, run_env):
+        if self.enabled(Mvapich2.SLURM) in self.spec and \
+           self.version > Version('2.0'):
+            run_env.set('SLURM_MPI_TYPE', 'pmi2')
+        
     def setup_dependent_environment(self, spack_env, run_env, extension_spec):
         spack_env.set('MPICH_CC', spack_cc)
         spack_env.set('MPICH_CXX', spack_cxx)
@@ -176,7 +190,7 @@ def setup_dependent_package(self, module, dep_spec):
         self.spec.mpicxx = join_path(self.prefix.bin, 'mpicxx')
         self.spec.mpifc  = join_path(self.prefix.bin, 'mpif90')
         self.spec.mpif77 = join_path(self.prefix.bin, 'mpif77')
-
+    
     def install(self, spec, prefix):
         # we'll set different configure flags depending on our environment
         configure_args = [