diff --git a/lib/openbmc_ffdc.py b/lib/openbmc_ffdc.py
index 80a5c96..36c011c 100644
--- a/lib/openbmc_ffdc.py
+++ b/lib/openbmc_ffdc.py
@@ -8,13 +8,15 @@
 
 import gen_robot_print as grp
 import gen_valid as gv
+import gen_robot_keyword as grk
 
 from robot.libraries.BuiltIn import BuiltIn
 
 
 ###############################################################################
 def ffdc(ffdc_dir_path=None,
-         ffdc_prefix=None):
+         ffdc_prefix=None,
+         ffdc_function_list=""):
 
     r"""
     Gather First Failure Data Capture (FFDC).
@@ -26,21 +28,26 @@
     - Call BMC methods to write/collect FFDC data.
 
     Description of arguments:
-    ffdc_dir_path  The dir path where FFDC data should be put.
-    ffdc_prefix    The prefix to be given to each FFDC file name generated.
+    ffdc_dir_path       The dir path where FFDC data should be put.
+    ffdc_prefix         The prefix to be given to each FFDC file name
+                        generated.
+    ffdc_function_list  A colon-delimited list of all the types of FFDC data
+                        you wish to have collected.  A blank value means that
+                        all possible kinds of FFDC are to be collected.  See
+                        FFDC_METHOD_CALL object in lib/openbmc_ffdc_list.py
+                        for possible choices.
     """
 
     # Check if Ping and SSH connection is alive
     OPENBMC_HOST = BuiltIn().get_variable_value("${OPENBMC_HOST}")
-    cmd_buf = ["Ping Host", OPENBMC_HOST]
-    grp.rpissuing_keyword(cmd_buf)
-    status_ping = BuiltIn().run_keyword_and_return_status(*cmd_buf)
+    status, status_ping = grk.run_key("Ping Host  " + OPENBMC_HOST)
     grp.rprint_var(status_ping)
-    if status_ping == True:
+    if status_ping:
         status_ssh = \
-          BuiltIn().run_keyword_and_return_status("Open Connection And Log In")
+            BuiltIn().run_keyword_and_return_status("Open Connection And" +
+                                                    " Log In")
         grp.rprint_var(status_ssh)
-        if status_ssh != True:
+        if not status_ssh:
             grp.rprint_error("BMC is not communicating. \
                               Aborting FFDC collection.\n")
             BuiltIn().run_keyword_and_return_status("Close All Connections")
@@ -77,13 +84,10 @@
     FFDC_FILE_PATH = ffdc_dir_path + ffdc_prefix + "BMC_general.txt"
     BuiltIn().set_global_variable("${FFDC_FILE_PATH}", FFDC_FILE_PATH)
 
-    cmd_buf = ["Header Message"]
-    grp.rpissuing_keyword(cmd_buf)
-    BuiltIn().run_keyword(*cmd_buf)
+    grk.run_key("Header Message")
 
-    cmd_buf = ["Call FFDC Methods"]
-    grp.rpissuing_keyword(cmd_buf)
-    BuiltIn().run_keyword(*cmd_buf)
+    grk.run_key_u("Call FFDC Methods  ffdc_function_list=" +
+                  ffdc_function_list)
 
     grp.rprint_timen("Finished collecting FFDC.")
 
diff --git a/lib/openbmc_ffdc_list.py b/lib/openbmc_ffdc_list.py
index 62072eb..01e6d48 100755
--- a/lib/openbmc_ffdc_list.py
+++ b/lib/openbmc_ffdc_list.py
@@ -211,6 +211,16 @@
         """
         return FFDC_METHOD_CALL.keys()
 
+    def get_ffdc_method_desc(self,
+                             index):
+        r"""
+        ########################################################################
+        #   @brief   This method returns the just the keys from the dictionary.
+        #   @return  List of ffdc descriptions.
+        ########################################################################
+        """
+        return FFDC_METHOD_CALL[index].keys()
+
     def get_ffdc_method_call(self, i_type):
         r"""
         ########################################################################
diff --git a/lib/openbmc_ffdc_methods.robot b/lib/openbmc_ffdc_methods.robot
index 2cd8207..4911469 100755
--- a/lib/openbmc_ffdc_methods.robot
+++ b/lib/openbmc_ffdc_methods.robot
@@ -8,6 +8,8 @@
 Library            SSHLibrary
 Library            OperatingSystem
 Library            Collections
+Library            String
+Library            gen_robot_keyword.py
 
 *** Keywords ***
 
@@ -19,31 +21,71 @@
 ################################################################
 
 Call FFDC Methods
-    [Documentation]   Calls into FFDC Keyword index list
+    [Documentation]   Call into FFDC Keyword index list.
+    [Arguments]  ${ffdc_function_list}=${EMPTY}
 
-    @{entries}=     Get ffdc method index
-    :FOR  ${index}  IN   @{entries}
-    \     Method Call Keyword List   ${index}
+    # Description of argument(s):
+    # ffdc_function_list  A colon-delimited list naming the kinds of FFDC that
+    #                     is to be collected
+    #                     (e.g. "FFDC Generic Report:BMC Specific Files").
+    #                     Acceptable values can be found in the description
+    #                     field of FFDC_METHOD_CALL in
+    #                     lib/openbmc_ffdc_list.py.  Those values can be
+    #                     obtained via a call to 'Get FFDC Method Desc' (also
+    #                     from lib/openbmc_ffdc_list.py).
+
+    @{entries}=  Get FFDC Method Index
+    :FOR  ${index}  IN  @{entries}
+    \    Method Call Keyword List  ${index}  ${ffdc_function_list}
     SSHLibrary.Close All Connections
 
-
 Method Call Keyword List
-    [Documentation]   Iterate the list through keyword index
-    [Arguments]       ${index}
+    [Documentation]  Iterate the list through keyword index.
+    [Arguments]  ${index}  ${ffdc_function_list}=${EMPTY}
 
-    @{method_list}=      Get ffdc method call   ${index}
+    # Description of argument(s):
+    # index               The index into the FFDC_METHOD_CALL dictionary (e.g.
+    #                     'BMC LOGS').
+    # ffdc_function_list  See ffdc_function_list description in
+    #                     "Call FFDC Methods" (above).
+
+    @{method_list}=  Get ffdc method call  ${index}
+
+    # If function list is empty assign default (i.e. a list of all allowable
+    # values).  In either case, convert ffdc_function_list from a string to
+    # a list.
+    @{ffdc_function_list}=
+    ...  Run Keyword If  '${ffdc_function_list}' == '${EMPTY}'
+    ...    Get FFDC Method Desc  ${index}
+    ...  ELSE
+    ...    Split String  ${ffdc_function_list}  separator=:
+
     :FOR  ${method}  IN  @{method_list}
-    \    Execute Keyword Method   ${method[1]}
-
+    \    Execute Keyword Method  ${method[0]}  ${method[1]}
+    ...      @{ffdc_function_list}
 
 Execute Keyword Method
-    [Documentation]   Calls into BMC method keywords. Don't let one
-    ...               failure skips the remaining. Get whatever data
-    ...               it could gather at worse case scenario.
-    [Arguments]   ${keyword_name}
+    [Documentation]  Call into BMC method keywords. Don't let one
+    ...              failure skip the remaining. Get whatever data
+    ...              it could gather at worse case scenario.
+    [Arguments]  ${description}  ${keyword_name}  @{ffdc_function_list}
 
-    Run Keyword And Continue On Failure   ${keyword_name}
+    # Description of argument(s):
+    # description         The description of the FFDC to be collected.  This
+    #                     would be any value returned by
+    #                     'Get FFDC Method Desc' (e.g. "FFDC Generic Report").
+    # keyword_name        The name of the keyword to call to collect the FFDC
+    #                     data (again, see FFDC_METHOD_CALL).
+    # ffdc_function_list  See ffdc_function_list description in
+    #                     "Call FFDC Methods" (above).  The only difference is
+    #                     in this case, it should be a list rather than a
+    #                     colon-delimited value.
 
+    ${status}  ${ret_values}=  Run Keyword And Ignore Error
+    ...  List Should Contain Value  ${ffdc_function_list}  ${description}
+    Run Keyword If  '${status}' != 'PASS'  Return from Keyword
+
+    Run Key  ${keyword_name}  ignore=1
 
 ################################################################
 # Method : BMC FFDC Manifest                                   #
