diff --git a/src/slurmd/slurmd/slurmd.c b/src/slurmd/slurmd/slurmd.c
index c334e884b6438e73cc059d3bd4964ecef15ecd2c..efff0cdda941e807dafcb16100450c0ab76608dd 100644
--- a/src/slurmd/slurmd/slurmd.c
+++ b/src/slurmd/slurmd/slurmd.c
@@ -171,7 +171,8 @@ static void      _hup_handler(int);
 static void      _increment_thd_count(void);
 static void      _init_conf(void);
 static void      _install_fork_handlers(void);
-static void 	 _kill_old_slurmd(void);
+static bool      _is_core_spec_cray(void);
+static void      _kill_old_slurmd(void);
 static int       _memory_spec_init(void);
 static void      _msg_engine(void);
 static void      _print_conf(void);
@@ -1966,6 +1967,17 @@ static int _resource_spec_init(void)
 	return SLURM_SUCCESS;
 }
 
+/* Return TRUE if CoreSpecPlugin=core_spec/cray */
+static bool _is_core_spec_cray(void)
+{
+	bool use_core_spec_cray = false;
+	char *core_spec_plugin = slurm_get_core_spec_plugin();
+	if (core_spec_plugin && strstr(core_spec_plugin, "cray"))
+		use_core_spec_cray = true;
+	xfree(core_spec_plugin);
+	return use_core_spec_cray;
+}
+
 /*
  * If configured, initialize core specialization
  */
@@ -1977,6 +1989,10 @@ static int _core_spec_init(void)
 		info("No specialized cores configured by default on this node");
 		return SLURM_SUCCESS;
 	}
+	if (_is_core_spec_cray()) {	/* No need to use cgroups */
+		debug("Using core_spec/cray to manage specialized cores");
+		return SLURM_SUCCESS;
+	}
 	if (!check_cgroup_job_confinement()) {
 		error("Resource spec: cgroup job confinement not configured");
 		return SLURM_ERROR;