diff --git a/tools/testing/kunit/kunit.py b/tools/testing/kunit/kunit.py
index 5ba3a2a..dc4d14d 100755
--- a/tools/testing/kunit/kunit.py
+++ b/tools/testing/kunit/kunit.py
@@ -15,7 +15,7 @@
 
 from collections import namedtuple
 
-KunitRequest = namedtuple('KunitRequest', ['raw_output','timeout'])
+KunitRequest = namedtuple('KunitRequest', ['raw_output','timeout', 'jobs'])
 
 KunitResult = namedtuple('KunitResult', ['status','result'])
 
@@ -36,7 +36,7 @@
 	print(kunit_parser.timestamp('Building KUnit Kernel ...'))
 
 	build_start = time.time()
-	build_result = linux.build_um_kernel()
+	build_result = linux.build_um_kernel(request.jobs)
 	build_end = time.time()
 	if build_result.status != kunit_kernel.BuildStatus.SUCCESS:
 		return KunitResult(KunitStatus.BUILD_FAILURE, build_result)
@@ -92,6 +92,11 @@
 				default=300,
 				metavar='timeout')
 
+	run_parser.add_argument('--jobs',
+				help='As in the make command, "Specifies  the number of '
+				'jobs (commands) to run simultaneously."',
+				type=int, default=8, metavar='jobs')
+
 	new_parser = subparser.add_parser(
 			'new',
 			help='Prints out boilerplate for writing new tests.')
@@ -112,9 +117,11 @@
 	if cli_args.subcommand == 'new':
 		print_test_skeletons(cli_args)
 	elif cli_args.subcommand == 'run':
-		request = KunitRequest(cli_args.raw_output, cli_args.timeout)
+		request = KunitRequest(cli_args.raw_output,
+				       cli_args.timeout,
+				       cli_args.jobs)
 		result = run_tests(linux, request)
-		if result.status == KunitStatus.TEST_FAILURE:
+		if result.status != KunitStatus.SUCCESS:
 			sys.exit(1)
 	else:
 		parser.print_help()
diff --git a/tools/testing/kunit/kunit_kernel.py b/tools/testing/kunit/kunit_kernel.py
index bd81c82..1cbb2ee 100644
--- a/tools/testing/kunit/kunit_kernel.py
+++ b/tools/testing/kunit/kunit_kernel.py
@@ -50,9 +50,9 @@
 		except subprocess.CalledProcessError as e:
 			raise ConfigError(e.output)
 
-	def make(self):
+	def make(self, jobs):
 		try:
-			subprocess.check_output(['make', 'ARCH=um'])
+			subprocess.check_output(['make', 'ARCH=um', '--jobs=' + str(jobs)])
 		except OSError as e:
 			raise BuildError('Could not call execute make: ' + e)
 		except subprocess.CalledProcessError as e:
@@ -137,13 +137,13 @@
 			print('Generating .config ...')
 			return self.build_config()
 
-	def build_um_kernel(self):
+	def build_um_kernel(self, jobs):
 		try:
 			self._ops.make_olddefconfig()
-			self._ops.make()
+			self._ops.make(jobs)
 		except (ConfigError, BuildError) as e:
 			logging.error(e)
-			return BuildResult(BuildStatus.FAILURE, e.message)
+			return BuildResult(BuildStatus.FAILURE, str(e))
 		used_kconfig = kunit_config.Kconfig()
 		used_kconfig.read_from_file(KCONFIG_PATH)
 		try:
