diff --git a/src/cyclictest/cyclictest.c b/src/cyclictest/cyclictest.c
index 7b0f80fe5a1e..4a7108ea2c8f 100644
--- a/src/cyclictest/cyclictest.c
+++ b/src/cyclictest/cyclictest.c
@@ -1950,10 +1950,8 @@ int main(int argc, char **argv)
 		for (k=0; k < times; k++)
 			clock_gettime(clock, &time[k]);
 
-		if (ct_debug) {
-			info("For %d consecutive calls to clock_gettime():\n", times);
-			info("time, delta time (nsec)\n");
-		}
+		info(ct_debug, "For %d consecutive calls to clock_gettime():\n", times);
+		info(ct_debug, "time, delta time (nsec)\n");
 
 		prev = time[0];
 		for (k=1; k < times; k++) {
@@ -1964,10 +1962,9 @@ int main(int argc, char **argv)
 			if (diff && (diff < min_non_zero_diff))
 				min_non_zero_diff = diff;
 
-			if (ct_debug)
-				info("%ld.%06ld  %5llu\n",
-				     time[k].tv_sec, time[k].tv_nsec,
-				     (unsigned long long)diff);
+			info(ct_debug, "%ld.%06ld  %5llu\n",
+					time[k].tv_sec, time[k].tv_nsec,
+					(unsigned long long)diff);
 		}
 
 		free(time);
diff --git a/src/include/rt-error.h b/src/include/rt-error.h
index d205e49ff041..7c4a9db55a52 100644
--- a/src/include/rt-error.h
+++ b/src/include/rt-error.h
@@ -11,8 +11,8 @@ void err_exit(int err, char *fmt, ...) __attribute__((noreturn));
 void err_msg(char *fmt, ...);
 void err_msg_n(int err, char *fmt, ...);
 void err_quit(char *fmt, ...) __attribute__((noreturn));
-void debug(char *fmt, ...);
-void info(char *fmt, ...);
+void debug(int enable, char *fmt, ...);
+void info(int enable, char *fmt, ...);
 void warn(char *fmt, ...);
 void fatal(char *fmt, ...) __attribute__((noreturn));
 void err_doit(int err, const char *fmt, va_list ap);
diff --git a/src/lib/rt-error.c b/src/lib/rt-error.c
index 616f70b044e0..9f0827530ccb 100644
--- a/src/lib/rt-error.c
+++ b/src/lib/rt-error.c
@@ -47,24 +47,28 @@ void err_quit(char *fmt, ...)
 	exit(1);
 }
 
-void debug(char *fmt, ...)
+void debug(int enable, char *fmt, ...)
 {
-	va_list ap;
+	if (enable) {
+		va_list ap;
 
-	va_start(ap, fmt);
-	fputs("DEBUG: ", stderr);
-	err_doit(0, fmt, ap);
-	va_end(ap);
+		va_start(ap, fmt);
+		fputs("DEBUG: ", stderr);
+		err_doit(0, fmt, ap);
+		va_end(ap);
+	}
 }
 
-void info(char *fmt, ...)
+void info(int enable, char *fmt, ...)
 {
-	va_list ap;
+	if (enable) {
+		va_list ap;
 
-	va_start(ap, fmt);
-	fputs("INFO: ", stderr);
-	err_doit(0, fmt, ap);
-	va_end(ap);
+		va_start(ap, fmt);
+		fputs("INFO: ", stderr);
+		err_doit(0, fmt, ap);
+		va_end(ap);
+	}
 }
 
 void warn(char *fmt, ...)
diff --git a/src/lib/rt-utils.c b/src/lib/rt-utils.c
index 6c0235d0d2e0..14dac5608037 100644
--- a/src/lib/rt-utils.c
+++ b/src/lib/rt-utils.c
@@ -109,7 +109,7 @@ int mount_debugfs(char *path)
 	/* if it's already mounted just return */
 	prefix = get_debugfileprefix();
 	if (strlen(prefix) != 0) {
-		info("debugfs mountpoint: %s\n", prefix);
+		info(1, "debugfs mountpoint: %s\n", prefix);
 		return 0;
 	}
 	if (!mountpoint)
diff --git a/src/pi_tests/pi_stress.c b/src/pi_tests/pi_stress.c
index cba1ad92ac2d..9ce7d66751da 100644
--- a/src/pi_tests/pi_stress.c
+++ b/src/pi_tests/pi_stress.c
@@ -71,9 +71,9 @@
 #define DOWN_ONE "\033[1B"
 
 #define pi_info(fmt, arg...) \
-	do { if (verbose) info(fmt, ## arg); } while (0)
+	do { info(verbose, fmt, ## arg); } while (0)
 #define pi_debug(fmt, arg...) \
-	do { if (debugging) debug(fmt, ## arg); } while (0)
+	do { debug(debugging, fmt, ## arg); } while (0)
 #define pi_error(fmt, arg...) \
 	do { err_msg(fmt, ## arg); have_errors = 1; } while (0)
 
diff --git a/src/sched_deadline/cyclicdeadline.c b/src/sched_deadline/cyclicdeadline.c
index 39de1b799458..ef00a0d6b2dd 100644
--- a/src/sched_deadline/cyclicdeadline.c
+++ b/src/sched_deadline/cyclicdeadline.c
@@ -80,6 +80,8 @@ struct sched_data {
 };
 
 static int shutdown;
+static int info_enable;
+static int debug_enable;
 static int tracelimit;
 static int trace_marker;
 static pthread_mutex_t break_thread_id_lock = PTHREAD_MUTEX_INITIALIZER;
@@ -698,6 +700,8 @@ static void usage(int error)
 	       "-q       --quiet           print a summary only on exit\n"
 	       "-b USEC  --breaktrace=USEC send break trace command when latency > USEC\n"
 	       "         --tracemark       write a trace mark when -b latency is exceeded\n"
+		   "		 --debug		   Print debugging info for cyclicdeadline\n"
+		   "		 --verbose		   Print useful information about the test\n"
 	       );
 	exit(error);
 }
@@ -794,8 +798,8 @@ void *run_deadline(void *data)
 	u64 period;
 	int ret;
 
-	printf("deadline thread %ld\n", tid);
-
+	debug(debug_enable, "deadline thread %ld\n", tid);
+	// set up for each measurment thread
 	stat->tid = tid;
 
 	ret = sched_getattr(0, &attr, sizeof(attr), 0);
@@ -811,7 +815,7 @@ void *run_deadline(void *data)
 	attr.sched_runtime = sd->runtime_us * 1000;
 	attr.sched_deadline = sd->deadline_us * 1000;
 
-	printf("thread[%d] runtime=%lldus deadline=%lldus\n",
+	debug(debug_enable, "thread[%d] runtime=%lldus deadline=%lldus\n",
 	      gettid(), sd->runtime_us, sd->deadline_us);
 
 	ret = sched_setattr(0, &attr, 0);
@@ -1083,7 +1087,7 @@ static void write_stats(FILE *f, void *data)
 enum options_values {
 	OPT_AFFINITY=1, OPT_DURATION, OPT_HELP, OPT_INTERVAL,
 	OPT_JSON, OPT_STEP, OPT_THREADS, OPT_QUIET,
-	OPT_BREAKTRACE, OPT_TRACEMARK,
+	OPT_BREAKTRACE, OPT_TRACEMARK, OPT_INFO, OPT_DEBUG,
 };
 
 int main(int argc, char **argv)
@@ -1124,6 +1128,8 @@ int main(int argc, char **argv)
 			{ "quiet",	no_argument,		NULL,	OPT_QUIET },
 			{ "breaktrace",       required_argument, NULL, OPT_BREAKTRACE },
 			{ "tracemark",	     no_argument,	NULL, OPT_TRACEMARK },
+			{ "verbose",	no_argument,	NULL,	OPT_INFO},
+			{ "debug",	no_argument, 	NULL, 	OPT_DEBUG},
 			{ NULL,		0,			NULL,	0   },
 		};
 		c = getopt_long(argc, argv, "a::c:D:hi:s:t:b:q", options, NULL);
@@ -1176,6 +1182,12 @@ int main(int argc, char **argv)
 		case OPT_TRACEMARK:
 			trace_marker = 1;
 			break;
+		case OPT_INFO:
+			info_enable = 1;
+			break;
+		case OPT_DEBUG:
+			debug_enable = 1;
+			break;
 		default:
 			usage(1);
 		}
@@ -1250,7 +1262,7 @@ int main(int argc, char **argv)
 		sd->runtime_us = runtime;
 		sd->deadline_us = interval;
 
-		printf("interval: %lld:%lld\n", sd->runtime_us, sd->deadline_us);
+		info(info_enable, "interval: %lld:%lld\n", sd->runtime_us, sd->deadline_us);
 
 		/* Make sure that we can make our deadlines */
 		start_period = get_time_us();
@@ -1260,7 +1272,7 @@ int main(int argc, char **argv)
 			fatal("Failed to perform task within runtime: Missed by %lld us\n",
 			      end_period - start_period - sd->runtime_us);
 
-		printf("  Tested at %lldus of %lldus\n",
+		info(info_enable, "  Tested at %lldus of %lldus\n",
 		       end_period - start_period, sd->runtime_us);
 
 		interval += step;
@@ -1303,7 +1315,7 @@ int main(int argc, char **argv)
 		system("cat /sys/fs/cgroup/cpuset/my_cpuset/tasks");
 	}
 
-	printf("main thread %d\n", gettid());
+	debug(debug_enable, "main thread %d\n", gettid());
 
 	if (shutdown)
 		fatal("failed to setup child threads at step 2");
