diff --git a/build/chromeos/test_runner.py b/build/chromeos/test_runner.py
index 01c2c8b2ff0b3..c3d18a306a9c8 100755
--- a/build/chromeos/test_runner.py
+++ b/build/chromeos/test_runner.py
@@ -9,7 +9,6 @@ import collections
 import json
 import logging
 import os
-import pipes
 import re
 import shutil
 import signal
@@ -132,20 +131,6 @@ class RemoteTest:
       if args.public_image:
         self._test_cmd += ['--public-image']
 
-    # This environment variable is set for tests that have been instrumented
-    # for code coverage. Its incoming value is expected to be a location
-    # inside a subdirectory of result_dir above. This is converted to an
-    # absolute path that the vm is able to write to, and passed in the
-    # --results-src flag to cros_run_vm_test for copying out of the vm before
-    # its termination.
-    self._llvm_profile_var = None
-    if os.environ.get('LLVM_PROFILE_FILE'):
-      _, llvm_profile_file = os.path.split(os.environ['LLVM_PROFILE_FILE'])
-      self._llvm_profile_var = '/tmp/profraw/%s' % llvm_profile_file
-
-      # This should make the vm test runner exfil the profiling data.
-      self._test_cmd += ['--results-src', '/tmp/profraw']
-
     self._test_env = setup_env()
 
   @property
@@ -281,7 +266,7 @@ class TastTest(RemoteTest):
           'lacros-chrome deployment uses --nostrip by default, so it cannot '
           'be specificed with --deploy-lacros.')
 
-    if not self._llvm_profile_var and not self._logs_dir:
+    if not self._logs_dir:
       # The host-side Tast bin returns 0 when tests fail, so we need to capture
       # and parse its json results to reliably determine if tests fail.
       raise TestFormatError(
@@ -323,86 +308,49 @@ class TastTest(RemoteTest):
         os.path.relpath(self._path_to_outdir, CHROMIUM_SRC_PATH)
     ] + self._additional_args
 
-    # Coverage tests require some special pre-test setup, so use an
-    # on_device_script in that case. For all other tests, use cros_run_test's
-    # built-in '--tast' option. This gives us much better results reporting.
-    if self._llvm_profile_var:
-      # Build the shell script that will be used on the device to invoke the
-      # test.
-      device_test_script_contents = self.BASIC_SHELL_SCRIPT[:]
-      device_test_script_contents += [
-          'echo "LLVM_PROFILE_FILE=%s" >> /etc/chrome_dev.conf' %
-          (self._llvm_profile_var)
-      ]
-
-      local_test_runner_cmd = ['local_test_runner', '-waituntilready']
-      if self._use_vm:
-        # If we're running tests in VMs, tell the test runner to skip tests that
-        # aren't compatible.
-        local_test_runner_cmd.append('-extrauseflags=tast_vm')
-      if self._attr_expr:
-        local_test_runner_cmd.append(pipes.quote(self._attr_expr))
-      else:
-        local_test_runner_cmd.extend(self._tests)
-      device_test_script_contents.append(' '.join(local_test_runner_cmd))
-
-      self._on_device_script = self.write_test_script_to_disk(
-          device_test_script_contents)
-
+    # Capture tast's results in the logs dir as well.
+    if self._logs_dir:
       self._test_cmd += [
-          '--files',
-          os.path.relpath(self._on_device_script), '--',
-          './' + os.path.relpath(self._on_device_script, self._path_to_outdir)
+          '--results-dir',
+          self._logs_dir,
       ]
+    self._test_cmd += [
+        '--tast-total-shards=%d' % self._test_launcher_total_shards,
+        '--tast-shard-index=%d' % self._test_launcher_shard_index,
+    ]
+    # If we're using a test filter, replace the contents of the Tast
+    # conditional with a long list of "name:test" expressions, one for each
+    # test in the filter.
+    if self._gtest_style_filter:
+      if self._attr_expr or self._tests:
+        logging.warning(
+            'Presence of --gtest_filter will cause the specified Tast expr'
+            ' or test list to be ignored.')
+      names = []
+      for test in self._gtest_style_filter.split(':'):
+        names.append('"name:%s"' % test)
+      self._attr_expr = '(' + ' || '.join(names) + ')'
+
+    if self._attr_expr:
+      # Don't use pipes.quote() here. Something funky happens with the arg
+      # as it gets passed down from cros_run_test to tast. (Tast picks up the
+      # escaping single quotes and complains that the attribute expression
+      # "must be within parentheses".)
+      self._test_cmd.append('--tast=%s' % self._attr_expr)
     else:
-      # Capture tast's results in the logs dir as well.
-      if self._logs_dir:
-        self._test_cmd += [
-            '--results-dir',
-            self._logs_dir,
-        ]
-      self._test_cmd += [
-          '--tast-total-shards=%d' % self._test_launcher_total_shards,
-          '--tast-shard-index=%d' % self._test_launcher_shard_index,
-      ]
-      # If we're using a test filter, replace the contents of the Tast
-      # conditional with a long list of "name:test" expressions, one for each
-      # test in the filter.
-      if self._gtest_style_filter:
-        if self._attr_expr or self._tests:
-          logging.warning(
-              'Presence of --gtest_filter will cause the specified Tast expr'
-              ' or test list to be ignored.')
-        names = []
-        for test in self._gtest_style_filter.split(':'):
-          names.append('"name:%s"' % test)
-        self._attr_expr = '(' + ' || '.join(names) + ')'
+      self._test_cmd.append('--tast')
+      self._test_cmd.extend(self._tests)
 
-      if self._attr_expr:
-        # Don't use pipes.quote() here. Something funky happens with the arg
-        # as it gets passed down from cros_run_test to tast. (Tast picks up the
-        # escaping single quotes and complains that the attribute expression
-        # "must be within parentheses".)
-        self._test_cmd.append('--tast=%s' % self._attr_expr)
-      else:
-        self._test_cmd.append('--tast')
-        self._test_cmd.extend(self._tests)
+    for v in self._tast_vars or []:
+      self._test_cmd.extend(['--tast-var', v])
 
-      for v in self._tast_vars or []:
-        self._test_cmd.extend(['--tast-var', v])
-
-      # Mounting ash-chrome gives it enough disk space to not need stripping,
-      # but only for one not instrumented with code coverage.
-      # Lacros uses --nostrip by default, so there is no need to specify.
-      if not self._deploy_lacros and not self._should_strip:
-        self._test_cmd.append('--nostrip')
+    # Mounting ash-chrome gives it enough disk space to not need stripping,
+    # but only for one not instrumented with code coverage.
+    # Lacros uses --nostrip by default, so there is no need to specify.
+    if not self._deploy_lacros and not self._should_strip:
+      self._test_cmd.append('--nostrip')
 
   def post_run(self, return_code):
-    # If we don't need to parse the host-side Tast tool's results, fall back to
-    # the parent method's default behavior.
-    if self._llvm_profile_var:
-      return super().post_run(return_code)
-
     tast_results_path = os.path.join(self._logs_dir, 'streamed_results.jsonl')
     if not os.path.exists(tast_results_path):
       logging.error(
@@ -592,11 +540,6 @@ class GTestTest(RemoteTest):
     # Build the shell script that will be used on the device to invoke the test.
     # Stored here as a list of lines.
     device_test_script_contents = self.BASIC_SHELL_SCRIPT[:]
-    if self._llvm_profile_var:
-      device_test_script_contents += [
-          'export LLVM_PROFILE_FILE=%s' % self._llvm_profile_var,
-      ]
-
     for var_name, var_val in self._env_vars:
       device_test_script_contents += ['export %s=%s' % (var_name, var_val)]