diff --git a/bin/plug_ins/Stop/cp_stop_check b/bin/plug_ins/Stop/cp_stop_check
index 3bbc299..ba46eb7 100755
--- a/bin/plug_ins/Stop/cp_stop_check
+++ b/bin/plug_ins/Stop/cp_stop_check
@@ -7,6 +7,7 @@
 import sys
 import subprocess
 import os
+import re
 
 from gen_print import *
 from gen_valid import *
@@ -136,6 +137,58 @@
         stop_check()
 
 
+def pel_stop_check():
+    r"""
+    Determine whether any PEL entries found warrant stopping the test
+    run.
+    """
+
+    if STOP_PEL_STOP_FILE_PATH == "":
+        return
+
+    pel_txt_file_path = os.environ.get("AUTOBOOT_FFDC_DIR_PATH", "") + \
+     os.environ.get("AUTOBOOT_FFDC_PREFIX", "") + "PEL_logs_list.json"
+
+    if not os.path.isfile(pel_txt_file_path):
+        qprint_timen("The following file was not present so no further" +
+                     " action will be taken.")
+        qprint_var(pel_txt_file_path)
+        return
+
+    default_stop_dir_path = "/afs/rchland.ibm.com/projects/esw/dvt/"
+
+    # If pel_stop_file_path is unqualified and cannot be found, pre-pend
+    # default_stop_dir_path for the user.
+    pel_stop_file_path = os.environ.get("STOP_PEL_STOP_FILE_PATH", "")
+    if not os.path.isfile(pel_stop_file_path) and \
+       os.path.isfile(default_stop_dir_path + pel_stop_file_path):
+        pel_stop_file_path = default_stop_dir_path + pel_stop_file_path
+        qprint_timen("Using default stop file path.")
+        qprint_var(pel_stop_file_path)
+
+    # First, read the file in and convert it to a list.
+    pel_stop_list = file_to_list(pel_stop_file_path, newlines=0, comments=0)
+
+    if len(pel_stop_list) == 0:
+        print_timen("There are no records to process in " +
+                    pel_stop_file_path + ".")
+        return
+
+    pel_all_list = file_to_list(pel_txt_file_path, newlines=0, comments=0)
+
+    if len(pel_all_list) == 0:
+        print_timen("There are no records to process in " +
+                    pel_txt_file_path + ".")
+        return
+
+    for stop_pel in pel_stop_list:
+        for pel_all in pel_all_list:
+            pel_match = re.search(".*SRC.*" + stop_pel + ".*", pel_all)
+            if pel_match:
+                print_timen("The caller wishes to stop test execution based on the presence of certain PEL entries.")
+                stop_check()
+
+
 def main():
 
     gen_setup()
@@ -159,6 +212,8 @@
 
     esel_stop_check()
 
+    pel_stop_check()
+
     if STOP_VERIFY_HARDWARE_FAIL:
         hardware_error_found = restore_plug_in_value(0, 'Verify_hardware')
         if hardware_error_found:
diff --git a/bin/plug_ins/Stop/parm_def b/bin/plug_ins/Stop/parm_def
index b2574bb..f4f89f2 100755
--- a/bin/plug_ins/Stop/parm_def
+++ b/bin/plug_ins/Stop/parm_def
@@ -1,11 +1,10 @@
-# "command" may contain a bash command string to be run to determine whether
-# the test program should be stopped.  If the command returns non-zero, the
-# test program should be stopped.
+# "command" may contain a bash command string to be run to determine whether the test program should be stopped.  If the command returns non-zero, the test program should be stopped.
 command=string
-# "rest_fail" indicates that the Stop plug-in should fail if REST commands to
-# the BMC are failing.
+# "rest_fail" indicates that the Stop plug-in should fail if REST commands to the BMC are failing.
 rest_fail=boolean
-# "esel_stop_file_path" may contain the path to a file with specifications
-# for which eSELs warrant stopping the test run.  See esel_stop_check help
-# text for details.
+# "esel_stop_file_path" may contain the path to a file with specifications for which eSELs warrant stopping the test run.  See esel_stop_check help text for details.
 esel_stop_file_path=string
+# "pel_stop_file_path" may contain the path to a file with specifications for which PELs warrant stopping the test run.
+pel_stop_file_path=string
+# Indicates that the test should be stopped when the Verify_hardware plug-in fails its analysis.
+verify_hardware_fail=boolean
