Support Profile Large in TF-M CI

TF-M adds Profile Large as a new feature in V1.3 Release.
It needs to be supported in TF-M CI.

Signed-off-by: Xinyu Zhang <xinyu.zhang@arm.com>
Change-Id: I53caeee59c8de9ee09531697521f5e050bd9d517
diff --git a/build_helper/build_helper_configs.py b/build_helper/build_helper_configs.py
index ea6e16e..923a50f 100755
--- a/build_helper/build_helper_configs.py
+++ b/build_helper/build_helper_configs.py
@@ -186,6 +186,7 @@
     ("musca_b1/secure_enclave", "*", "*", "*", "*", "*", "*", "*", "*", True, "*", "*"),
     # PARTITION_PS could be OFF only for Profile S and M
     ("*", "*", "*", "*", "*", "*", "*", "*", "*", "*", "", "OFF"),
+    ("*", "*", "*", "*", "*", "*", "*", "*", "*", "*", "profile_large", "OFF"),
     # PARTITION_PS should be OFF for Profile S
     ("*", "*", "*", "*", "*", "*", "*", "*", "*", "*", "profile_small", "ON"),
     # Proile M only support for PSA_API
@@ -193,6 +194,9 @@
     # Profile M only support for Isolation Level 2
     ("*", "*", "*", "1", "*", "*", "*",  "*", "*", "*", "profile_medium", "*"),
     ("*", "*", "*", "3", "*", "*", "*",  "*", "*", "*", "profile_medium", "*"),
+    # Profile L only support for Isolation Level 3
+    ("*", "*", "*", "1", "*", "*", "*",  "*", "*", "*", "profile_large", "*"),
+    ("*", "*", "*", "2", "*", "*", "*",  "*", "*", "*", "profile_large", "*"),
     # Profile S does not support PSA_API
     ("*", "*", True, "*", "*", "*", "*",  "*", "*", "*", "profile_small", "*"),
     # Profile S only supports Isolation Level 2
@@ -479,13 +483,18 @@
                 "with_otp":         ["off"],
                 "with_bl2":         [True],
                 "with_ns":          [True],
-                "profile":          ["profile_small", "profile_medium"],
+                "profile":          ["profile_small", "profile_medium", "profile_large"],
                 "partition_ps":     ["ON", "OFF"],
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + [
                     ("mps2/an519", "toolchain_GNUARM.cmake", "*",
                      "*", "*", "*", "Minsizerel", "*", "*", "*", "*", "*"),
+                    # Profile Large is only supported by AN521
+                    ("mps2/an519", "*", "*",
+                     "*", "*", "*", "*", "*", "*", "*", "profile_large", "*"),
+                    ("musca_b1/sse_200", "*", "*",
+                     "*", "*", "*", "*", "*", "*", "*", "profile_large", "*"),
                 ]
                 }
 
@@ -713,13 +722,18 @@
                 "with_otp":         ["off"],
                 "with_bl2":         [True],
                 "with_ns":          [True],
-                "profile":          ["profile_small", "profile_medium"],
+                "profile":          ["profile_small", "profile_medium", "profile_large"],
                 "partition_ps":     ["ON", "OFF"],
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + [
                     ("mps2/an519", "toolchain_GNUARM.cmake", "*",
                      "*", "*", "*", "Minsizerel", "*", "*", "*", "*", "*"),
+                    # Profile Large is only supported by AN521
+                    ("mps2/an519", "*", "*",
+                     "*", "*", "*", "*", "*", "*", "*", "profile_large", "*"),
+                    ("musca_b1/sse_200", "*", "*",
+                     "*", "*", "*", "*", "*", "*", "*", "profile_large", "*"),
                 ]
                 }
 
diff --git a/jenkins/ci.jpl b/jenkins/ci.jpl
index 40711a3..e67eeae 100644
--- a/jenkins/ci.jpl
+++ b/jenkins/ci.jpl
@@ -42,12 +42,14 @@
   ["True", "True", "True",  "3", "False", "OFF",                      "N.A",            "CoreIPCTfmLevel3"],
   ["True", "True", "False", "1", "False", "OFF",                      "profile_small",  "DefaultProfileS"],
   ["True", "True", "True",  "2", "False", "OFF",                      "profile_medium", "DefaultProfileM"],
+  ["True", "True", "True",  "3", "False", "OFF",                      "profile_large",  "DefaultProfileL"],
   ["True", "True", "False", "1", "True",  "OFF",                      "N.A",            "Regression"],
   ["True", "True", "True",  "1", "True",  "OFF",                      "N.A",            "RegressionIPC"],
   ["True", "True", "True",  "2", "True",  "OFF",                      "N.A",            "RegressionIPCTfmLevel2"],
   ["True", "True", "True",  "3", "True",  "OFF",                      "N.A",            "RegressionIPCTfmLevel3"],
   ["True", "True", "False", "1", "True",  "OFF",                      "profile_small",  "RegressionProfileS"],
   ["True", "True", "True",  "2", "True",  "OFF",                      "profile_medium", "RegressionProfileM"],
+  ["True", "True", "True",  "3", "True",  "OFF",                      "profile_large",  "RegressionProfileL"],
   ["True", "True", "False", "1", "False", "INTERNAL_TRUSTED_STORAGE", "N.A",            "PsaApiTest (ITS)"],
   ["True", "True", "False", "1", "False", "PROTECTED_STORAGE",        "N.A",            "PsaApiTest (PS)"],
   ["True", "True", "False", "1", "False", "CRYPTO",                   "N.A",            "PsaApiTest (Crypto)"],
@@ -75,6 +77,7 @@
         "RegressionIPCTfmLevel2", "RegressionIPCTfmLevel3",
         "DefaultProfileS", "RegressionProfileS",
         "DefaultProfileM", "RegressionProfileM", "RegressionProfileM PSOFF",
+        "DefaultProfileL", "RegressionProfileL",
         "PsaApiTest (Attest)", "PsaApiTestIPC (Attest)",
         "PsaApiTestIPCTfmLevel2 (Attest)",
         "PsaApiTest (Crypto)", "PsaApiTestIPC (Crypto)",
diff --git a/lava_helper/lava_helper_configs.py b/lava_helper/lava_helper_configs.py
index e41ef96..8826abe 100644
--- a/lava_helper/lava_helper_configs.py
+++ b/lava_helper/lava_helper_configs.py
@@ -112,6 +112,22 @@
                 } # Monitors
             ]
         },  # DefaultProfileM
+        'DefaultProfileL': {
+            "binaries": {
+                "firmware": "tfm_s_ns_signed.bin",
+                "bootloader": "bl2.bin"
+            },
+            "monitors": [
+                {
+                    'name': 'Secure_Test_Suites_Summary',
+                    'start': 'Non-Secure system',
+                    'end': r'starting\\.{3}',
+                    'pattern': r'Non-Secure system starting\\.{3}',
+                    'fixup': {"pass": "!", "fail": ""},
+                    'required': ["secure_image_initializing"]
+                } # Monitors
+            ]
+        },  # DefaultProfileL
 
         'Regression': {
             "binaries": {
@@ -273,6 +289,59 @@
                 }
             ]  # Monitors
         },  # RegressionProfileS
+        'RegressionProfileL': {
+            "binaries": {
+                "firmware": "tfm_s_ns_signed.bin",
+                "bootloader": "bl2.bin"
+            },
+            "monitors": [
+                {
+                    'name': 'Secure_Test_Suites_Summary',
+                    'start': 'Secure test suites summary',
+                    'end': 'End of Secure test suites',
+                    'pattern': r"Test suite '(?P<"
+                               r"test_case_id>[^\n]+)' has (.*) "
+                               r"(?P<result>PASSED|FAILED)",
+                    'fixup': {"pass": "PASSED", "fail": "FAILED"},
+                    'required': [
+                        ("psa_protected_storage_"
+                           "s_interface_tests_tfm_sst_test_2xxx_"),
+                        "sst_reliability_tests_tfm_sst_test_3xxx_",
+                        "sst_rollback_protection_tests_tfm_sst_test_4xxx_",
+                        ("psa_internal_trusted_storage_"
+                           "s_interface_tests_tfm_its_test_2xxx_"),
+                        "its_reliability_tests_tfm_its_test_3xxx_",
+                        ("audit_"
+                         "logging_secure_interface_test_tfm_audit_test_1xxx_"),
+                        "crypto_secure_interface_tests_tfm_crypto_test_5xxx_",
+                        ("initial_attestation_service_"
+                         "secure_interface_tests_tfm_attest_test_1xxx_"),
+                    ]
+                },
+                {
+                    'name': 'Non_Secure_Test_Suites_Summary',
+                    'start': 'Non-secure test suites summary',
+                    'end': r'End of Non-secure test suites',
+                    'pattern': r"Test suite '(?P<"
+                               r"test_case_id>[^\n]+)' has (.*) "
+                               r"(?P<result>PASSED|FAILED)",
+                    'fixup': {"pass": "PASSED", "fail": "FAILED"},
+                    'required': [
+                        ("psa_protected_storage"
+                         "_ns_interface_tests_tfm_sst_test_1xxx_"),
+                        ("psa_internal_trusted_storage"
+                         "_ns_interface_tests_tfm_its_test_1xxx_"),
+                        ("auditlog_"
+                         "non_secure_interface_test_tfm_audit_test_1xxx_"),
+                        ("crypto_"
+                         "non_secure_interface_test_tfm_crypto_test_6xxx_"),
+                        ("initial_attestation_service_"
+                         "non_secure_interface_tests_tfm_attest_test_2xxx_"),
+                        "core_non_secure_positive_tests_tfm_core_test_1xxx_"
+                    ]
+                }
+            ]  # Monitors
+        },  # RegressionProfileL
 
         'RegressionIPC': {
             "binaries": {
@@ -550,6 +619,22 @@
                 } # Monitors
             ]
         },  # DefaultProfileM
+        'DefaultProfileL': {
+            "binaries": {
+                "firmware": "bl2.axf",
+                "bootloader": "tfm_s_ns_signed.bin"
+            },
+            "monitors": [
+                {
+                    'name': 'Secure_Test_Suites_Summary',
+                    'start': 'Non-Secure system',
+                    'end': r'starting\\.{3}',
+                    'pattern': r'Non-Secure system starting\\.{3}',
+                    'fixup': {"pass": "!", "fail": ""},
+                    'required': ["secure_image_initializing"]
+                } # Monitors
+            ]
+        },  # DefaultProfileL
 
         'Regression': {
             "binaries": {
@@ -711,6 +796,59 @@
                 }
             ]  # Monitors
         },  # RegressionProfileS
+        'RegressionProfileL': {
+            "binaries": {
+                "firmware": "bl2.axf",
+                "bootloader": "tfm_s_ns_signed.bin"
+            },
+            "monitors": [
+                {
+                    'name': 'Secure_Test_Suites_Summary',
+                    'start': 'Secure test suites summary',
+                    'end': 'End of Secure test suites',
+                    'pattern': r"Test suite '(?P<"
+                               r"test_case_id>[^\n]+)' has (.*) "
+                               r"(?P<result>PASSED|FAILED)",
+                    'fixup': {"pass": "PASSED", "fail": "FAILED"},
+                    'required': [
+                        ("psa_protected_storage_"
+                           "s_interface_tests_tfm_sst_test_2xxx_"),
+                        "sst_reliability_tests_tfm_sst_test_3xxx_",
+                        "sst_rollback_protection_tests_tfm_sst_test_4xxx_",
+                        ("psa_internal_trusted_storage_"
+                           "s_interface_tests_tfm_its_test_2xxx_"),
+                        "its_reliability_tests_tfm_its_test_3xxx_",
+                        ("audit_"
+                         "logging_secure_interface_test_tfm_audit_test_1xxx_"),
+                        "crypto_secure_interface_tests_tfm_crypto_test_5xxx_",
+                        ("initial_attestation_service_"
+                         "secure_interface_tests_tfm_attest_test_1xxx_"),
+                    ]
+                },
+                {
+                    'name': 'Non_Secure_Test_Suites_Summary',
+                    'start': 'Non-secure test suites summary',
+                    'end': r'End of Non-secure test suites',
+                    'pattern': r"Test suite '(?P<"
+                               r"test_case_id>[^\n]+)' has (.*) "
+                               r"(?P<result>PASSED|FAILED)",
+                    'fixup': {"pass": "PASSED", "fail": "FAILED"},
+                    'required': [
+                        ("psa_protected_storage"
+                         "_ns_interface_tests_tfm_sst_test_1xxx_"),
+                        ("psa_internal_trusted_storage"
+                         "_ns_interface_tests_tfm_its_test_1xxx_"),
+                        ("auditlog_"
+                         "non_secure_interface_test_tfm_audit_test_1xxx_"),
+                        ("crypto_"
+                         "non_secure_interface_test_tfm_crypto_test_6xxx_"),
+                        ("initial_attestation_service_"
+                         "non_secure_interface_tests_tfm_attest_test_2xxx_"),
+                        "core_non_secure_positive_tests_tfm_core_test_1xxx_"
+                    ]
+                }
+            ]  # Monitors
+        },  # RegressionProfileL
 
         'RegressionIPC': {
             "binaries": {
@@ -989,6 +1127,22 @@
                 } # Monitors
             ]
         },  # DefaultProfileM
+        'DefaultProfileL': {
+            "binaries": {
+                "firmware": "tfm_s.axf",
+                "bootloader": "tfm_ns.bin"
+            },
+            "monitors": [
+                {
+                    'name': 'Secure_Test_Suites_Summary',
+                    'start': 'Non-Secure system',
+                    'end': r'starting\\.{3}',
+                    'pattern': r'Non-Secure system starting\\.{3}',
+                    'fixup': {"pass": "!", "fail": ""},
+                    'required': ["secure_image_initializing"]
+                } # Monitors
+            ]
+        },  # DefaultProfileL
 
         'Regression': {
             "binaries": {
@@ -1149,6 +1303,59 @@
                 }
             ]  # Monitors
         },  # RegressionProfileS
+        'RegressionProfileL': {
+            "binaries": {
+                "firmware": "tfm_s.axf",
+                "bootloader": "tfm_ns.bin"
+            },
+            "monitors": [
+                {
+                    'name': 'Secure_Test_Suites_Summary',
+                    'start': 'Secure test suites summary',
+                    'end': 'End of Secure test suites',
+                    'pattern': r"Test suite '(?P<"
+                               r"test_case_id>[^\n]+)' has (.*) "
+                               r"(?P<result>PASSED|FAILED)",
+                    'fixup': {"pass": "PASSED", "fail": "FAILED"},
+                    'required': [
+                        ("psa_protected_storage_"
+                           "s_interface_tests_tfm_sst_test_2xxx_"),
+                        "sst_reliability_tests_tfm_sst_test_3xxx_",
+                        "sst_rollback_protection_tests_tfm_sst_test_4xxx_",
+                        ("psa_internal_trusted_storage_"
+                           "s_interface_tests_tfm_its_test_2xxx_"),
+                        "its_reliability_tests_tfm_its_test_3xxx_",
+                        ("audit_"
+                         "logging_secure_interface_test_tfm_audit_test_1xxx_"),
+                        "crypto_secure_interface_tests_tfm_crypto_test_5xxx_",
+                        ("initial_attestation_service_"
+                         "secure_interface_tests_tfm_attest_test_1xxx_"),
+                    ]
+                },
+                {
+                    'name': 'Non_Secure_Test_Suites_Summary',
+                    'start': 'Non-secure test suites summary',
+                    'end': r'End of Non-secure test suites',
+                    'pattern': r"Test suite '(?P<"
+                               r"test_case_id>[^\n]+)' has (.*) "
+                               r"(?P<result>PASSED|FAILED)",
+                    'fixup': {"pass": "PASSED", "fail": "FAILED"},
+                    'required': [
+                        ("psa_protected_storage"
+                         "_ns_interface_tests_tfm_sst_test_1xxx_"),
+                        ("psa_internal_trusted_storage"
+                         "_ns_interface_tests_tfm_its_test_1xxx_"),
+                        ("auditlog_"
+                         "non_secure_interface_test_tfm_audit_test_1xxx_"),
+                        ("crypto_"
+                         "non_secure_interface_test_tfm_crypto_test_6xxx_"),
+                        ("initial_attestation_service_"
+                         "non_secure_interface_tests_tfm_attest_test_2xxx_"),
+                        "core_non_secure_positive_tests_tfm_core_test_1xxx_"
+                    ]
+                }
+            ]  # Monitors
+        },  # RegressionProfileL
 
         'RegressionIPC': {
             "binaries": {
diff --git a/lava_helper/lava_wait_jobs.py b/lava_helper/lava_wait_jobs.py
index e0fb12c..b1937e6 100755
--- a/lava_helper/lava_wait_jobs.py
+++ b/lava_helper/lava_wait_jobs.py
@@ -41,6 +41,7 @@
         "RegressionIPCTfmLevel2", "RegressionIPCTfmLevel3",
         "DefaultProfileS", "RegressionProfileS",
         "DefaultProfileM", "RegressionProfileM", "RegressionProfileM PSOFF",
+        "DefaultProfileL", "RegressionProfileL",
         "PsaApiTest (Attest)", "PsaApiTestIPC (Attest)",
         "PsaApiTestIPCTfmLevel2 (Attest)",
         "PsaApiTest (Crypto)", "PsaApiTestIPC (Crypto)",
diff --git a/tfm_ci_pylib/tfm_build_manager.py b/tfm_ci_pylib/tfm_build_manager.py
index ecc7881..a1c7c45 100644
--- a/tfm_ci_pylib/tfm_build_manager.py
+++ b/tfm_ci_pylib/tfm_build_manager.py
@@ -52,7 +52,8 @@
                  "INTERNAL_TRUSTED_STORAGE": "ITS"}
 
 mapProfile = {"profile_small":  "SMALL",
-              "profile_medium": "MEDIUM"}
+              "profile_medium": "MEDIUM",
+              "profile_large":  "LARGE"}
 
 
 class TFM_Build_Manager(structuredTask):