psa arch test v1.4 release
diff --git a/api-tests/dev_apis/README.md b/api-tests/dev_apis/README.md
index 24a5820..30d7b3d 100644
--- a/api-tests/dev_apis/README.md
+++ b/api-tests/dev_apis/README.md
@@ -14,12 +14,12 @@
 For more information on the architecture test suite framework and methodology to run the tests, refer to the [Validation Methodology](../docs/Arm_PSA_APIs_Arch_Test_Validation_Methodology.pdf) document.
 
 ## This release
- - Code Quality : REL v1.3
+ - Code Quality : REL v1.4
  - This release contains following PSA Functional APIs tests: <br />
 
 | Test Category            | Specification Version                |
 |--------------------------|--------------------------------------|
-| Crypto                   | [PSA Crypto API 1.0.0](../../api-specs/crypto/v1.0.0/doc/)     |
+| Crypto                   | [PSA Crypto API 1.0.1](../../api-specs/crypto/v1.0.1/doc/)     |
 | Storage (PS and ITS)     | [PSA Storage API 1.0.0](../../api-specs/storage/v1.0/doc/) |
 | Attestation              | [PSA Attestation API 1.0.2](../../api-specs/attestation/v1.0.2/doc/)  |
 
@@ -30,6 +30,7 @@
 
 | Release version | Release tag  | PSA Crypto API | PSA Storage API | PSA Attestation API |
 |-----------------|---------------|----------------|-----------------|---------------------|
+| REL v1.4 | [v22.01_API1.4_ADAC_BETA](https://github.com/ARM-software/psa-arch-tests/tree/v22.01_API1.4_ADAC_BETA/api-tests/dev_apis) | 1.0.1  | 1.0.0 | 1.0.2 |
 | REL v1.3 | [v21.10_API1.3_ADAC_ALPHA-1](https://github.com/ARM-software/psa-arch-tests/tree/v21.10_API1.3_ADAC_ALPHA-1/api-tests/dev_apis) | 1.0.0  | 1.0.0 | 1.0.2 |
 | REL v1.2 | [v21.07_API1.2_ADAC_ALPHA](https://github.com/ARM-software/psa-arch-tests/tree/v21.07_API1.2_ADAC_ALPHA/api-tests/dev_apis) | 1.0.0  | 1.0.0 | 1.0.2 |
 | REL v1.1 | [v20.11_API1.1](https://github.com/ARM-software/psa-arch-tests/tree/v20.11_API1.1/api-tests/dev_apis) | 1.0-Beta3  | 1.0.0 | 1.0.0 |
@@ -131,4 +132,4 @@
 
 --------------
 
-*Copyright (c) 2018-2021, Arm Limited and Contributors. All rights reserved.*
+*Copyright (c) 2018-2022, Arm Limited and Contributors. All rights reserved.*
diff --git a/api-tests/dev_apis/crypto/test_c016/test_data.h b/api-tests/dev_apis/crypto/test_c016/test_data.h
index e6c24e0..b4044f9 100644
--- a/api-tests/dev_apis/crypto/test_c016/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c016/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -150,7 +150,7 @@
     .expected_range  = {1, BITS_TO_BYTES(MIN(PSA_EXPORT_KEY_OUTPUT_SIZE(\
 	                    PSA_KEY_TYPE_RSA_PUBLIC_KEY, 2048), \
                         PSA_EXPORT_PUBLIC_KEY_MAX_SIZE))},
-    .expected_status = PSA_ERROR_NOT_SUPPORTED
+    .expected_status = PSA_ERROR_INVALID_ARGUMENT
 },
 #endif
 #endif
diff --git a/api-tests/dev_apis/crypto/testsuite.db b/api-tests/dev_apis/crypto/testsuite.db
index 21a20aa..691f44a 100644
--- a/api-tests/dev_apis/crypto/testsuite.db
+++ b/api-tests/dev_apis/crypto/testsuite.db
@@ -1,5 +1,5 @@
 #/** @file
-# * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+# * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
 # * Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,7 +21,7 @@
 (START)
 
 test_c001
-test_c002, failing_test
+test_c002
 test_c003
 test_c004
 test_c005
@@ -35,7 +35,7 @@
 test_c013
 test_c014
 test_c015
-test_c016
+test_c016, failing_test
 test_c017
 test_c018
 test_c019
diff --git a/api-tests/docs/Arm_PSA-M_Functional_API_Test_Suite_Validation_Methodology.pdf b/api-tests/docs/Arm_PSA-M_Functional_API_Test_Suite_Validation_Methodology.pdf
index 76bdf24..6b45bfa 100644
--- a/api-tests/docs/Arm_PSA-M_Functional_API_Test_Suite_Validation_Methodology.pdf
+++ b/api-tests/docs/Arm_PSA-M_Functional_API_Test_Suite_Validation_Methodology.pdf
Binary files differ
diff --git a/api-tests/docs/sw_requirements.md b/api-tests/docs/sw_requirements.md
index 2809434..ab9db8c 100644
--- a/api-tests/docs/sw_requirements.md
+++ b/api-tests/docs/sw_requirements.md
@@ -26,7 +26,7 @@
 
 ## Download source
 
-To download the master branch of the repository, type the following command: <br />
+To download the main branch of the repository, type the following command: <br />
 ~~~
 git clone https://github.com/ARM-software/psa-arch-tests.git
 ~~~
@@ -45,4 +45,4 @@
 
 --------------
 
-*Copyright (c) 2018-2021, Arm Limited and Contributors. All rights reserved.*
+*Copyright (c) 2018-2022, Arm Limited and Contributors. All rights reserved.*
diff --git a/api-tests/docs/test_failure_analysis.md b/api-tests/docs/test_failure_analysis.md
index 8018152..02d310e 100644
--- a/api-tests/docs/test_failure_analysis.md
+++ b/api-tests/docs/test_failure_analysis.md
@@ -3,14 +3,14 @@
 
 This file contains list of failures identified when testing the release
 on tgt_dev_apis_tfm_an521 and  tgt_dev_apis_tfm_musca_b1
-targets with TFM commit Hash - dd1fe44448db0f1750794cd9cf5596033f90f6f9 (tag: TF-Mv1.4.1).
+targets with TFM commit Hash - 6fb14a14140f94150f959c88e3b880f48372da06 (tag: TF-Mv1.5.0).
 The reason for each failing test is listed here in this file.
 
 ## Known Failures
 
 | Test | Fail description                                                                | Github issue |
 |------|---------------------------------------------------------------------------------| ------------ |
-|test_c002 | reference platform implementation issue | NA |
+|test_c016 | This test will pass with the mbed TLS 3.1.0, TF-M 1.5.0 is not using mbed TLS 3.1.0. So the test is failing. | https://jira.arm.com/browse/PJ03206-534 |
 |test_c026 | psa_sign_message not supported | https://jira.arm.com/browse/IOTPSW-4275 |
 |test_c027 | psa_mac_update not supported | https://jira.arm.com/browse/IOTPSW-4275 |
 |test_c028 | PSA_KEY_USAGE_SIGN_MESSAGE not found | https://jira.arm.com/browse/IOTPSW-4275 |
@@ -35,4 +35,4 @@
 
 --------------
 
-*Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.*
+*Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.*
diff --git a/api-tests/ff/README.md b/api-tests/ff/README.md
index c09cde6..53788e9 100644
--- a/api-tests/ff/README.md
+++ b/api-tests/ff/README.md
@@ -23,13 +23,14 @@
 For more information on architecture test suite specification, refer to the [Validation Methodology](../docs/Arm_PSA_APIs_Arch_Test_Validation_Methodology.pdf) document.
 
 ## This release
- - Code Quality : REL v1.3
+ - Code Quality : REL v1.4
  - This release contains the PSA-FF tests that are written for the PSA FF 1.1 Extensions specification.
 
 ##  Release Tags
 
 | Release version | Release tag  | PSA FF specification version |
 |-----------------|---------------|----------------|
+| REL v1.4 | [v22.01_API1.4_ADAC_BETA](https://github.com/ARM-software/psa-arch-tests/tree/v22.01_API1.4_ADAC_BETA/api-tests/ff) | 1.1-Alpha0 |
 | REL v1.3 | [v21.10_API1.3_ADAC_ALPHA-1](https://github.com/ARM-software/psa-arch-tests/tree/v21.10_API1.3_ADAC_ALPHA-1/api-tests/ff) | 1.1-Alpha0 |
 | REL v1.2 | [v21.07_API1.2_ADAC_ALPHA](https://github.com/ARM-software/psa-arch-tests/tree/v21.07_API1.2_ADAC_ALPHA/api-tests/ff) | 1.1-Alpha0 |
 | REL v1.1 | [v20.11_API1.1](https://github.com/ARM-software/psa-arch-tests/tree/v20.11_API1.1/api-tests/ff) | 1.0 |
@@ -162,4 +163,4 @@
 
 --------------
 
-*Copyright (c) 2018-2021, Arm Limited and Contributors. All rights reserved.*
+*Copyright (c) 2018-2022, Arm Limited and Contributors. All rights reserved.*
diff --git a/api-tests/ff/ipc/test_i058/test_i058.c b/api-tests/ff/ipc/test_i058/test_i058.c
index 4277a1e..012d8fb 100644
--- a/api-tests/ff/ipc/test_i058/test_i058.c
+++ b/api-tests/ff/ipc/test_i058/test_i058.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -42,6 +42,7 @@
 
    val->print(PRINT_TEST,
             "[Check 1] Test PSA_DOORBELL signal\n", 0);
+   psa->call(SERVER_UNSPECIFED_VERSION_HANDLE, PSA_IPC_CALL, NULL, 0, NULL, 0);
 
 #ifndef NONSECURE_TEST_BUILD
    /* Wait for doorball notification */
@@ -79,6 +80,7 @@
    }
 #endif
 
+   psa->call(SERVER_UNSPECIFED_VERSION_HANDLE, PSA_IPC_CALL, NULL, 0, NULL, 0);
    return status;
 }
 
diff --git a/api-tests/ff/ipc/test_i058/test_supp_i058.c b/api-tests/ff/ipc/test_i058/test_supp_i058.c
index f84497d..c81c95d 100644
--- a/api-tests/ff/ipc/test_i058/test_supp_i058.c
+++ b/api-tests/ff/ipc/test_i058/test_supp_i058.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -38,6 +38,10 @@
     int32_t                 status = VAL_STATUS_SUCCESS;
     psa_msg_t               msg = {0};
 
+    status = val->process_call_request(SERVER_UNSPECIFED_VERSION_SIGNAL, &msg);
+    val->err_check_set(TEST_CHECKPOINT_NUM(201), status);
+    psa_reply(msg.handle, PSA_SUCCESS);
+
     if (msg.client_id > 0)
     {
         /* Doorbell signal to client partititon */
@@ -49,7 +53,9 @@
         val->print(PRINT_ERROR, "Caller is from non-secure\n", 0);
     }
 
+    status = val->process_call_request(SERVER_UNSPECIFED_VERSION_SIGNAL, &msg);
     val->err_check_set(TEST_CHECKPOINT_NUM(202), status);
+    psa_reply(msg.handle, PSA_SUCCESS);
     return status;
 }
 
diff --git a/api-tests/ff/ipc/test_i063/test_i063.c b/api-tests/ff/ipc/test_i063/test_i063.c
index 4a03410..f51d015 100644
--- a/api-tests/ff/ipc/test_i063/test_i063.c
+++ b/api-tests/ff/ipc/test_i063/test_i063.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -35,10 +35,12 @@
 
 int32_t client_test_psa_wait_signal_mask(caller_security_t caller __UNUSED)
 {
-
-
    val->print(PRINT_TEST, "[Check 1] Test psa_wait signal mask\n", 0);
 
+   psa->call(SERVER_UNSPECIFED_VERSION_HANDLE, PSA_IPC_CALL, NULL, 0, NULL, 0);
+
+   psa->call(SERVER_RELAX_VERSION_HANDLE, PSA_IPC_CALL, NULL, 0, NULL, 0);
+
    return VAL_STATUS_SUCCESS;
 }
 
diff --git a/api-tests/ff/ipc/test_i072/test_i072.c b/api-tests/ff/ipc/test_i072/test_i072.c
index 9f09884..96ebece 100644
--- a/api-tests/ff/ipc/test_i072/test_i072.c
+++ b/api-tests/ff/ipc/test_i072/test_i072.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -98,7 +98,7 @@
        return VAL_STATUS_ERROR;
 
    /* Setting boot.state before test check */
-   if (val->set_boot_flag(BOOT_EXPECTED_NS))
+   if (val->set_boot_flag(BOOT_EXPECTED_ON_SECOND_CHECK))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
        return VAL_STATUS_ERROR;
@@ -196,7 +196,7 @@
        return VAL_STATUS_ERROR;
 
    /* Setting boot.state before test check */
-   if (val->set_boot_flag(BOOT_EXPECTED_NS))
+   if (val->set_boot_flag(BOOT_EXPECTED_ON_SECOND_CHECK))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
        return VAL_STATUS_ERROR;
diff --git a/api-tests/ff/ipc/test_i073/test_i073.c b/api-tests/ff/ipc/test_i073/test_i073.c
index b3891b5..886a52c 100644
--- a/api-tests/ff/ipc/test_i073/test_i073.c
+++ b/api-tests/ff/ipc/test_i073/test_i073.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -98,7 +98,7 @@
        return VAL_STATUS_ERROR;
 
    /* Setting boot.state before test check */
-   if (val->set_boot_flag(BOOT_EXPECTED_NS))
+   if (val->set_boot_flag(BOOT_EXPECTED_ON_SECOND_CHECK))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
        return VAL_STATUS_ERROR;
@@ -196,7 +196,7 @@
        return VAL_STATUS_ERROR;
 
    /* Setting boot.state before test check */
-   if (val->set_boot_flag(BOOT_EXPECTED_NS))
+   if (val->set_boot_flag(BOOT_EXPECTED_ON_SECOND_CHECK))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
        return VAL_STATUS_ERROR;
diff --git a/api-tests/ff/ipc/test_i074/test_i074.c b/api-tests/ff/ipc/test_i074/test_i074.c
index 6042bb6..66d52a2 100644
--- a/api-tests/ff/ipc/test_i074/test_i074.c
+++ b/api-tests/ff/ipc/test_i074/test_i074.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -104,7 +104,7 @@
        return VAL_STATUS_ERROR;
 
    /* Setting boot.state before test check */
-   if (val->set_boot_flag(BOOT_EXPECTED_NS))
+   if (val->set_boot_flag(BOOT_EXPECTED_ON_SECOND_CHECK))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
        return VAL_STATUS_ERROR;
@@ -218,7 +218,7 @@
        return VAL_STATUS_ERROR;
 
    /* Setting boot.state before test check */
-   if (val->set_boot_flag(BOOT_EXPECTED_NS))
+   if (val->set_boot_flag(BOOT_EXPECTED_ON_SECOND_CHECK))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
        return VAL_STATUS_ERROR;
diff --git a/api-tests/ff/ipc/test_i075/test_i075.c b/api-tests/ff/ipc/test_i075/test_i075.c
index 5c7f4d0..fa48863 100644
--- a/api-tests/ff/ipc/test_i075/test_i075.c
+++ b/api-tests/ff/ipc/test_i075/test_i075.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -98,7 +98,7 @@
        return VAL_STATUS_ERROR;
 
    /* Setting boot.state before test check */
-   if (val->set_boot_flag(BOOT_EXPECTED_NS))
+   if (val->set_boot_flag(BOOT_EXPECTED_ON_SECOND_CHECK))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
        return VAL_STATUS_ERROR;
@@ -196,7 +196,7 @@
        return VAL_STATUS_ERROR;
 
    /* Setting boot.state before test check */
-   if (val->set_boot_flag(BOOT_EXPECTED_NS))
+   if (val->set_boot_flag(BOOT_EXPECTED_ON_SECOND_CHECK))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
        return VAL_STATUS_ERROR;
diff --git a/api-tests/ff/ipc/test_i076/test_i076.c b/api-tests/ff/ipc/test_i076/test_i076.c
index b4e9a0a..6a722be 100644
--- a/api-tests/ff/ipc/test_i076/test_i076.c
+++ b/api-tests/ff/ipc/test_i076/test_i076.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -136,7 +136,7 @@
     NULL,
 };
 
-static int32_t get_secure_partition_address(__attribute__((unused)) psa_handle_t *handle,
+static int32_t get_secure_partition_address(psa_handle_t *handle,
                                             addr_t *addr,
                                             driver_test_fn_id_t test_fn_id)
 {
diff --git a/api-tests/ff/ipc/test_i083/test_i083.c b/api-tests/ff/ipc/test_i083/test_i083.c
index 8c1bd7f..2ba5073 100644
--- a/api-tests/ff/ipc/test_i083/test_i083.c
+++ b/api-tests/ff/ipc/test_i083/test_i083.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -240,13 +240,6 @@
                                               TEST_ISOLATION_PSA_ROT_MMIO_WR)))
        return VAL_STATUS_ERROR;
 
-   /* Setting boot.state before test check */
-   if (val->set_boot_flag(BOOT_EXPECTED_S))
-   {
-       val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
-       return VAL_STATUS_ERROR;
-   }
-
    /* Write PSA RoT mmio address.
     * This should generate internal fault or ignore the write.
     */
diff --git a/api-tests/ff/ipc/test_i084/test_i084.c b/api-tests/ff/ipc/test_i084/test_i084.c
index 023b88c..1b84d7c 100644
--- a/api-tests/ff/ipc/test_i084/test_i084.c
+++ b/api-tests/ff/ipc/test_i084/test_i084.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -98,7 +98,7 @@
        return VAL_STATUS_ERROR;
 
    /* Setting boot.state before test check */
-   if (val->set_boot_flag(BOOT_EXPECTED_NS))
+   if (val->set_boot_flag(BOOT_EXPECTED_ON_SECOND_CHECK))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
        return VAL_STATUS_ERROR;
@@ -195,7 +195,7 @@
        return VAL_STATUS_ERROR;
 
    /* Setting boot.state before test check */
-   if (val->set_boot_flag(BOOT_EXPECTED_NS))
+   if (val->set_boot_flag(BOOT_EXPECTED_ON_SECOND_CHECK))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
        return VAL_STATUS_ERROR;
diff --git a/api-tests/ff/ipc/test_i085/test_i085.c b/api-tests/ff/ipc/test_i085/test_i085.c
index f672fdd..476b461 100644
--- a/api-tests/ff/ipc/test_i085/test_i085.c
+++ b/api-tests/ff/ipc/test_i085/test_i085.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -99,7 +99,7 @@
        return VAL_STATUS_ERROR;
 
    /* Setting boot.state before test check */
-   if (val->set_boot_flag(BOOT_EXPECTED_NS))
+   if (val->set_boot_flag(BOOT_EXPECTED_ON_SECOND_CHECK))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
        return VAL_STATUS_ERROR;
@@ -196,7 +196,7 @@
        return VAL_STATUS_ERROR;
 
    /* Setting boot.state before test check */
-   if (val->set_boot_flag(BOOT_EXPECTED_NS))
+   if (val->set_boot_flag(BOOT_EXPECTED_ON_SECOND_CHECK))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
        return VAL_STATUS_ERROR;
diff --git a/api-tests/ff/ipc/test_i086/test_i086.c b/api-tests/ff/ipc/test_i086/test_i086.c
index 2c2fcaa..d4577d8 100644
--- a/api-tests/ff/ipc/test_i086/test_i086.c
+++ b/api-tests/ff/ipc/test_i086/test_i086.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -102,7 +102,7 @@
        return VAL_STATUS_ERROR;
 
    /* Setting boot.state before test check */
-   if (val->set_boot_flag(BOOT_EXPECTED_NS))
+   if (val->set_boot_flag(BOOT_EXPECTED_ON_SECOND_CHECK))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
        return VAL_STATUS_ERROR;
@@ -215,7 +215,7 @@
        return VAL_STATUS_ERROR;
 
    /* Setting boot.state before test check */
-   if (val->set_boot_flag(BOOT_EXPECTED_NS))
+   if (val->set_boot_flag(BOOT_EXPECTED_ON_SECOND_CHECK))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
        return VAL_STATUS_ERROR;
diff --git a/api-tests/ff/ipc/test_i087/test_i087.c b/api-tests/ff/ipc/test_i087/test_i087.c
index 864d444..1debbc0 100644
--- a/api-tests/ff/ipc/test_i087/test_i087.c
+++ b/api-tests/ff/ipc/test_i087/test_i087.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -101,7 +101,7 @@
        return VAL_STATUS_ERROR;
 
    /* Setting boot.state before test check */
-   if (val->set_boot_flag(BOOT_EXPECTED_NS))
+   if (val->set_boot_flag(BOOT_EXPECTED_ON_SECOND_CHECK))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
        return VAL_STATUS_ERROR;
@@ -201,7 +201,7 @@
        return VAL_STATUS_ERROR;
 
    /* Setting boot.state before test check */
-   if (val->set_boot_flag(BOOT_EXPECTED_NS))
+   if (val->set_boot_flag(BOOT_EXPECTED_ON_SECOND_CHECK))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
        return VAL_STATUS_ERROR;
diff --git a/api-tests/ff/partition/client_partition.c b/api-tests/ff/partition/client_partition.c
index ae6b40f..3cb4c51 100644
--- a/api-tests/ff/partition/client_partition.c
+++ b/api-tests/ff/partition/client_partition.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -97,7 +97,9 @@
         /* Server_partition requests client to connect to SERVER_SECURE_CONNECT_ONLY_SID */
         else if (signals & PSA_DOORBELL)
         {
-#if STATELESS_ROT != 1
+#if STATELESS_ROT == 1
+            psa_call(SERVER_SECURE_CONNECT_ONLY_HANDLE, PSA_IPC_CALL, NULL, 0, NULL, 0);
+#else
             if (psa_connect(SERVER_SECURE_CONNECT_ONLY_SID, SERVER_SECURE_CONNECT_ONLY_VERSION)
                 != PSA_ERROR_CONNECTION_REFUSED)
             {
diff --git a/api-tests/ff/partition/driver_partition.c b/api-tests/ff/partition/driver_partition.c
index 8823fc2..433392a 100644
--- a/api-tests/ff/partition/driver_partition.c
+++ b/api-tests/ff/partition/driver_partition.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -497,7 +497,7 @@
     psa_write(msg->handle, 0, (void *) &addr, sizeof(addr_t));
 
     /* Setting boot.state before test check */
-    if (val_driver_private_set_boot_flag_fn(BOOT_EXPECTED_S))
+    if (val_driver_private_set_boot_flag_fn(BOOT_EXPECTED_ON_SECOND_CHECK))
     {
        val_print_sf("\tFailed to set boot flag before check\n", 0);
        psa_reply(msg->handle, -2);
@@ -553,7 +553,7 @@
     psa_write(msg->handle, 0, (void *) &addr, sizeof(addr_t));
 
     /* Setting boot.state before test check */
-    if (val_driver_private_set_boot_flag_fn(BOOT_EXPECTED_S))
+    if (val_driver_private_set_boot_flag_fn(BOOT_EXPECTED_ON_SECOND_CHECK))
     {
        val_print_sf("\tFailed to set boot flag before check\n", 0);
        psa_reply(msg->handle, -2);
@@ -614,14 +614,14 @@
 
     /* Send PSA RoT heap address */
     psa_write(msg->handle, 0, (void *) &buffer, BUFFER_SIZE);
-    psa_reply(msg->handle, PSA_SUCCESS);
 
     /* Setting boot.state before test check */
-    if (val_driver_private_set_boot_flag_fn(BOOT_EXPECTED_S))
+    if (val_driver_private_set_boot_flag_fn(BOOT_EXPECTED_ON_SECOND_CHECK))
     {
        val_print_sf("\tFailed to set boot flag before check\n", 0);
        psa_reply(msg->handle, -2);
     }
+    psa_reply(msg->handle, PSA_SUCCESS);
 
     /* Process second call request */
     if (VAL_ERROR(process_call_request(DRIVER_TEST_SIGNAL, msg)))
@@ -683,14 +683,14 @@
     /* Send PSA RoT mmio address */
     memset((uint8_t *)&psa_rot_mmio_addr, (uint8_t)DATA_VALUE, sizeof(addr_t));
     psa_write(msg->handle, 0, (void *) &psa_rot_mmio_addr, sizeof(addr_t));
-    psa_reply(msg->handle, PSA_SUCCESS);
 
     /* Setting boot.state before test check */
-    if (val_driver_private_set_boot_flag_fn(BOOT_EXPECTED_S))
+    if (val_driver_private_set_boot_flag_fn(BOOT_EXPECTED_ON_SECOND_CHECK))
     {
-       val_print_sf("\tFailed to set boot flag before check\n", 0);
-       psa_reply(msg->handle, -2);
+        val_print_sf("\tFailed to set boot flag before check\n", 0);
+        psa_reply(msg->handle, -2);
     }
+   psa_reply(msg->handle, PSA_SUCCESS);
 
     /* Process second call request */
     if (VAL_ERROR(process_call_request(DRIVER_TEST_SIGNAL, msg)))
diff --git a/api-tests/platform/drivers/watchdog/nrf/nrf9160_wdt.c b/api-tests/platform/drivers/watchdog/nrf/nrf9160_wdt.c
index f48318f..1d6f8dd 100644
--- a/api-tests/platform/drivers/watchdog/nrf/nrf9160_wdt.c
+++ b/api-tests/platform/drivers/watchdog/nrf/nrf9160_wdt.c
@@ -25,27 +25,28 @@
 /**
   * @brief Watchdog Timer
   */
-struct NRF_WDT_Type {                           /*!< (@ 0x40018000) WDT_NS Structure                                           */
-  __OM  uint32_t  TASKS_START;                  /*!< (@ 0x00000000) Start the watchdog                                         */
+struct NRF_WDT_Type {              /*!< (@ 0x40018000) WDT_NS Structure */
+  __OM  uint32_t  TASKS_START;     /*!< (@ 0x00000000) Start the watchdog */
   __IM  uint32_t  RESERVED[31];
-  __IOM uint32_t  SUBSCRIBE_START;              /*!< (@ 0x00000080) Subscribe configuration for task START                     */
+  __IOM uint32_t  SUBSCRIBE_START; /*!< (@ 0x00000080) Subscribe configuration for task START */
   __IM  uint32_t  RESERVED1[31];
-  __IOM uint32_t  EVENTS_TIMEOUT;               /*!< (@ 0x00000100) Watchdog timeout                                           */
+  __IOM uint32_t  EVENTS_TIMEOUT;  /*!< (@ 0x00000100) Watchdog timeout   */
   __IM  uint32_t  RESERVED2[31];
-  __IOM uint32_t  PUBLISH_TIMEOUT;              /*!< (@ 0x00000180) Publish configuration for event TIMEOUT                    */
+  __IOM uint32_t  PUBLISH_TIMEOUT; /*!< (@ 0x00000180) Publish configuration for event TIMEOUT  */
   __IM  uint32_t  RESERVED3[96];
-  __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
-  __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
+  __IOM uint32_t  INTENSET;        /*!< (@ 0x00000304) Enable interrupt  */
+  __IOM uint32_t  INTENCLR;        /*!< (@ 0x00000308) Disable interrupt */
   __IM  uint32_t  RESERVED4[61];
-  __IM  uint32_t  RUNSTATUS;                    /*!< (@ 0x00000400) Run status                                                 */
-  __IM  uint32_t  REQSTATUS;                    /*!< (@ 0x00000404) Request status                                             */
+  __IM  uint32_t  RUNSTATUS;       /*!< (@ 0x00000400) Run status        */
+  __IM  uint32_t  REQSTATUS;       /*!< (@ 0x00000404) Request status    */
   __IM  uint32_t  RESERVED5[63];
-  __IOM uint32_t  CRV;                          /*!< (@ 0x00000504) Counter reload value                                       */
-  __IOM uint32_t  RREN;                         /*!< (@ 0x00000508) Enable register for reload request registers               */
-  __IOM uint32_t  CONFIG;                       /*!< (@ 0x0000050C) Configuration register                                     */
+  __IOM uint32_t  CRV;             /*!< (@ 0x00000504) Counter reload value */
+  __IOM uint32_t  RREN;       /*!< (@ 0x00000508) Enable register for reload request registers */
+  __IOM uint32_t  CONFIG;          /*!< (@ 0x0000050C) Configuration register                */
   __IM  uint32_t  RESERVED6[60];
-  __OM  uint32_t  RR[8];                        /*!< (@ 0x00000600) Description collection: Reload request n                   */
-};          
+  __OM  uint32_t  RR[8];           /*!< (@ 0x00000600) Description collection: Reload request n */
+};
+
 
 /* Register: WDT_CONFIG */
 /* Description: Configuration register */
@@ -56,7 +57,8 @@
 /* Register: WDT_RUNSTATUS */
 /* Description: Run status */
 #define WDT_RUNSTATUS_RUNSTATUSWDT_Pos (0UL) /*!< Position of RUNSTATUSWDT field. */
-#define WDT_RUNSTATUS_RUNSTATUSWDT_Msk (0x1UL << WDT_RUNSTATUS_RUNSTATUSWDT_Pos) /*!< Bit mask of RUNSTATUSWDT field. */
+ /*!< Bit mask of RUNSTATUSWDT field. */
+#define WDT_RUNSTATUS_RUNSTATUSWDT_Msk (0x1UL << WDT_RUNSTATUS_RUNSTATUSWDT_Pos)
 #define WDT_RUNSTATUS_RUNSTATUSWDT_NotRunning (0UL) /*!< Watchdog is not running */
 #define WDT_RUNSTATUS_RUNSTATUSWDT_Running (1UL) /*!< Watchdog is running */
 
@@ -68,7 +70,7 @@
 **/
 int nrf_wdt_init(addr_t base_addr, uint32_t time_us)
 {
-    struct NRF_WDT_Type *nrf_wdt = (struct NRF_WDT_Type*)base_addr;
+    struct NRF_WDT_Type *nrf_wdt = (struct NRF_WDT_Type *)base_addr;
 
     /* The FF framework is written with the assumption that the watchdog timer
      * can be stopped and reconfigured, but this is not possible on the nRF91.
@@ -108,8 +110,7 @@
 **/
 int nrf_wdt_enable(addr_t base_addr)
 {
-    struct NRF_WDT_Type *nrf_wdt = (struct NRF_WDT_Type*)base_addr;
-    
+    struct NRF_WDT_Type *nrf_wdt = (struct NRF_WDT_Type *)base_addr;
     if (!nrf_wdt_is_enabled(base_addr)) {
         nrf_wdt->TASKS_START = 0x01UL; // Trigger start task
     } else {
@@ -130,7 +131,7 @@
 **/
 int nrf_wdt_disable(addr_t base_addr)
 {
-    struct NRF_WDT_Type *nrf_wdt = (struct NRF_WDT_Type*)base_addr;
+    struct NRF_WDT_Type *nrf_wdt = (struct NRF_WDT_Type *)base_addr;
 
     /* As the nRF91 WDT cannot be stopped, the timer will be reloaded to the
      * value in the CRV register. This should work in all cases, as the timer
@@ -152,6 +153,6 @@
 **/
 int nrf_wdt_is_enabled(addr_t base_addr)
 {
-    struct NRF_WDT_Type *nrf_wdt = (struct NRF_WDT_Type*)base_addr;
+    struct NRF_WDT_Type *nrf_wdt = (struct NRF_WDT_Type *)base_addr;
     return (nrf_wdt->RUNSTATUS & WDT_RUNSTATUS_RUNSTATUSWDT_Msk);
 }
diff --git a/api-tests/val/common/val.h b/api-tests/val/common/val.h
index 88bab7b..d93c649 100644
--- a/api-tests/val/common/val.h
+++ b/api-tests/val/common/val.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -213,6 +213,10 @@
      * re-enter the same test and continue executing the same check function
      */
     BOOT_EXPECTED_CONT_TEST_EXEC       = 0x7,
+    /* Test expects reboot for secure/non-secure on second check of test . If reboot happens,
+     * re-enter the same test and execute the next check function
+     */
+    BOOT_EXPECTED_ON_SECOND_CHECK      = 0x8,
 } boot_state_t;
 
 typedef enum {
diff --git a/api-tests/val/nspe/val_entry.h b/api-tests/val/nspe/val_entry.h
index 79646b9..c04c4d1 100644
--- a/api-tests/val/nspe/val_entry.h
+++ b/api-tests/val/nspe/val_entry.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,7 +21,7 @@
 #include "val_framework.h"
 
 #define PSA_ACS_MAJOR_VER    1
-#define PSA_ACS_MINOR_VER    3
+#define PSA_ACS_MINOR_VER    4
 
 /**
     @brief    - PSA Test Suite C main function, does VAL init and calls test dispatcher
diff --git a/api-tests/val/nspe/val_framework.c b/api-tests/val/nspe/val_framework.c
index ec6b1cc..54e5dbd 100644
--- a/api-tests/val/nspe/val_framework.c
+++ b/api-tests/val/nspe/val_framework.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -122,7 +122,8 @@
     }
 
     if (boot.state == BOOT_NOT_EXPECTED || boot.state == BOOT_EXPECTED_REENTER_TEST
-        || boot.state == BOOT_EXPECTED_CONT_TEST_EXEC)
+        || boot.state == BOOT_EXPECTED_CONT_TEST_EXEC
+        || boot.state == BOOT_EXPECTED_ON_SECOND_CHECK)
     {
         while (tests_list[i] != NULL)
         {
@@ -131,6 +132,7 @@
              * consider previous run pass and jump to second test function
              * of the same test if available.
              */
+
             if ((boot.state ==  BOOT_EXPECTED_REENTER_TEST) && (i == 1))
             {
                 val_print(PRINT_DEBUG, "[Check 1] PASSED\n", 0);
@@ -138,6 +140,13 @@
                 continue;
             }
 
+            if ((boot.state ==  BOOT_EXPECTED_ON_SECOND_CHECK) && (i == 1))
+            {
+                val_print(PRINT_DEBUG, "[Check 2] PASSED\n", 0);
+                i = i + 2 ;
+                continue;
+            }
+
             if (boot.state != BOOT_EXPECTED_CONT_TEST_EXEC)
             {
                 status = val_set_boot_flag(BOOT_NOT_EXPECTED);
@@ -257,6 +266,12 @@
             val_print(PRINT_DEBUG, "[Check 1] PASSED\n", 0);
        }
 
+       if (boot.state ==  BOOT_EXPECTED_ON_SECOND_CHECK)
+       {
+            test_info.block_num = test_info.block_num + 2;
+            val_print(PRINT_DEBUG, "[Check 2] PASSED\n", 0);
+       }
+
        status = val_set_boot_flag(BOOT_NOT_EXPECTED);
        if (VAL_ERROR(status))
        {
@@ -589,7 +604,8 @@
                                     BOOT_EXPECTED_S,
                                     BOOT_EXPECTED_BUT_FAILED,
                                     BOOT_EXPECTED_REENTER_TEST,
-                                    BOOT_EXPECTED_CONT_TEST_EXEC
+                                    BOOT_EXPECTED_CONT_TEST_EXEC,
+                                    BOOT_EXPECTED_ON_SECOND_CHECK
                                     };
 
     status = val_get_boot_flag(&boot.state);