diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..ecfd432
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,14 @@
+#-------------------------------------------------------------------------------
+# Copyright (c) 2021-2022, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+#-------------------------------------------------------------------------------
+
+add_subdirectory(log)
+
+if(NS)
+    add_subdirectory(app)
+endif()
+
+add_subdirectory(test)
diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt
index 9f3a7d1..70edf69 100755
--- a/app/CMakeLists.txt
+++ b/app/CMakeLists.txt
@@ -198,6 +198,72 @@
     endif()
 
     add_subdirectory(${PSA_ARCH_TESTS_PATH}/api-tests ${CMAKE_CURRENT_BINARY_DIR}/psa_api_tests)
+
+    if (TEST_PSA_API STREQUAL IPC)
+        target_include_directories(tfm_partitions
+            INTERFACE
+                ${CMAKE_BINARY_DIR}/generated/api-tests/platform/manifests
+        )
+
+        target_sources(tfm_psa_rot_partition_driver_partition
+            PRIVATE
+                ${CMAKE_BINARY_DIR}/generated/api-tests/platform/manifests/auto_generated/intermedia_driver_partition_psa.c
+        )
+        target_link_libraries(tfm_psa_rot_partition_driver_partition
+            PRIVATE
+                psa_interface
+                platform_s
+        )
+        target_compile_definitions(tfm_psa_rot_partition_driver_partition
+            PRIVATE
+                CONFIG_TFM_BUILDING_SPE=1
+                TFM_LVL=${TFM_ISOLATION_LEVEL}
+        )
+
+        target_sources(tfm_app_rot_partition_client_partition
+            PRIVATE
+                ${CMAKE_BINARY_DIR}/generated/api-tests/platform/manifests/auto_generated/intermedia_client_partition_psa.c
+        )
+        target_link_libraries(tfm_app_rot_partition_client_partition
+            PRIVATE
+                psa_interface
+                platform_s
+        )
+        target_compile_definitions(tfm_app_rot_partition_client_partition
+            PRIVATE
+                CONFIG_TFM_BUILDING_SPE=1
+                TFM_LVL=${TFM_ISOLATION_LEVEL}
+        )
+
+        target_sources(tfm_app_rot_partition_server_partition
+            PRIVATE
+                ${CMAKE_BINARY_DIR}/generated/api-tests/platform/manifests/auto_generated/intermedia_server_partition_psa.c
+        )
+        target_link_libraries(tfm_app_rot_partition_server_partition
+            PRIVATE
+                psa_interface
+                platform_s
+        )
+        target_compile_definitions(tfm_app_rot_partition_server_partition
+            PRIVATE
+                CONFIG_TFM_BUILDING_SPE=1
+                TFM_LVL=${TFM_ISOLATION_LEVEL}
+        )
+
+        target_sources(tfm_partitions
+            INTERFACE
+                ${CMAKE_BINARY_DIR}/generated/api-tests/platform/manifests/auto_generated/load_info_driver_partition_psa.c
+                ${CMAKE_BINARY_DIR}/generated/api-tests/platform/manifests/auto_generated/load_info_client_partition_psa.c
+                ${CMAKE_BINARY_DIR}/generated/api-tests/platform/manifests/auto_generated/load_info_server_partition_psa.c
+        )
+
+        target_link_libraries(tfm_partitions
+            INTERFACE
+                tfm_psa_rot_partition_driver_partition
+                tfm_app_rot_partition_client_partition
+                tfm_app_rot_partition_server_partition
+        )
+    endif()
 endif()
 
 ############################# Test integration #################################
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 8709d92..e498c75 100755
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -21,6 +21,11 @@
         framework
 )
 
+target_link_libraries(tfm_test_framework_common
+    INTERFACE
+        tfm_log_interface
+)
+
 if(TEST_FRAMEWORK_S OR TEST_FRAMEWORK_NS)
     add_subdirectory(secure_fw)
 endif()
diff --git a/test/bl2/mcuboot/CMakeLists.txt b/test/bl2/mcuboot/CMakeLists.txt
index 3ba5b85..f4472ee 100644
--- a/test/bl2/mcuboot/CMakeLists.txt
+++ b/test/bl2/mcuboot/CMakeLists.txt
@@ -22,13 +22,7 @@
 target_link_libraries(mcuboot_tests
     PUBLIC
         tfm_test_framework_common
-        tfm_log
     PRIVATE
         platform_bl2
         mcuboot_test_suite_integration
 )
-
-target_compile_definitions(mcuboot_tests
-    PUBLIC
-        TEST_BL2
-)
diff --git a/test/bl2/mcuboot/suites/integration/CMakeLists.txt b/test/bl2/mcuboot/suites/integration/CMakeLists.txt
index d62b752..6505bd4 100644
--- a/test/bl2/mcuboot/suites/integration/CMakeLists.txt
+++ b/test/bl2/mcuboot/suites/integration/CMakeLists.txt
@@ -27,8 +27,3 @@
         tfm_log
         platform_bl2
 )
-
-target_compile_definitions(mcuboot_test_suite_integration
-    PUBLIC
-        TEST_BL2
-)
diff --git a/test/bl2/mcuboot/suites/integration/mcuboot_integration_tests.c b/test/bl2/mcuboot/suites/integration/mcuboot_integration_tests.c
index decbbf4..baf7394 100644
--- a/test/bl2/mcuboot/suites/integration/mcuboot_integration_tests.c
+++ b/test/bl2/mcuboot/suites/integration/mcuboot_integration_tests.c
@@ -125,23 +125,51 @@
 static int test_setup(int *original_image_idx)
 {
     int rc;
-    struct image_header hdr;
+    struct image_header hdr_0;
+    struct image_header hdr_1;
 
-    rc = read_image_header(0, &hdr);
+    rc = read_image_header(0, &hdr_0);
     if (rc) {
-        return rc;
+        return 1;
     }
 
-    /* If there's a valid image in slot 0 copy that to slot 1 */
-    if (hdr.ih_magic == IMAGE_MAGIC) {
+    rc = read_image_header(1, &hdr_1);
+    if (rc) {
+        return 1;
+    }
+
+    if (hdr_0.ih_magic == IMAGE_MAGIC && hdr_1.ih_magic == IMAGE_MAGIC) {
+        /* If there are images in both slots, it's not reasonable to run the
+         * test as we cannot restore the original state
+         */
+        printf_set_color(MAGENTA);
+        TEST_LOG("%s %s", "Cannot execute test without overwriting one slot.",
+                 "The test execution was SKIPPED.\r\n");
+        printf_set_color(DEFAULT);
+        return 2;
+    } else if (hdr_0.ih_magic == IMAGE_MAGIC) {
+        /* If there's a valid image in slot 0 copy that to slot 1 */
         *original_image_idx = 0;
-        return copy_image_to_slot(0, 1);
-    } else {
+        rc = copy_image_to_slot(0, 1);
+        if (rc) {
+            return 1;
+        } else {
+            return 0;
+        }
+    } else if (hdr_1.ih_magic == IMAGE_MAGIC) {
         /* Else copy slot 1 to slot 0. We assume that one of the slots has a
          * valid image.
          */
         *original_image_idx = 1;
-        return copy_image_to_slot(1, 0);
+        rc = copy_image_to_slot(1, 0);
+        if (rc) {
+            return 1;
+        } else {
+            return 0;
+        }
+    } else {
+        /* No valid images are loaded, error */
+        return 1;
     }
 }
 
@@ -156,14 +184,30 @@
     header->tlv_tot_len = SHARED_DATA_HEADER_SIZE;
 }
 
-static int test_teardown(int original_image_idx)
+static int test_teardown(int test_image_idx)
 {
     int rc;
-    int test_image_idx;
     const struct flash_area *fap;
+#if !(defined(MCUBOOT_DIRECT_XIP) || defined(MCUBOOT_RAM_LOADING))
+    struct image_header hdr;
+#endif /* !(defined(MCUBOOT_DIRECT_XIP) || defined(MCUBOOT_RAM_LOADING)) */
+
+#if !(defined(MCUBOOT_DIRECT_XIP) || defined(MCUBOOT_RAM_LOADING))
+    /* Copy modes will have now moved the good image into slot 0. Copy the image
+     * back to restore starting state.
+     */
+    if (test_image_idx == 0) {
+        rc = copy_image_to_slot(0, 1);
+        if (rc) {
+            return rc;
+        }
+
+        rc = read_image_header(0, &hdr);
+        rc = write_image_header(1, &hdr);
+    }
+#endif /* !(defined(MCUBOOT_DIRECT_XIP) || defined(MCUBOOT_RAM_LOADING)) */
 
     /* Erase the test image */
-    test_image_idx = original_image_idx == 0 ? 1 : 0;
     rc = flash_area_open(flash_area_id_from_image_slot(test_image_idx), &fap);
     if (rc) {
         return rc;
@@ -181,27 +225,34 @@
 {
     int rc;
     int original_image_idx = 0;
+    int test_image_idx;
     struct image_header hdr;
     struct boot_rsp rsp;
 
     rc = test_setup(&original_image_idx);
-    if (rc) {
+    if (rc == 2) {
+        /* Skipped tests are treated as a success */
+        ret->val = TEST_PASSED;
+        return;
+    } else if (rc != 0) {
         TEST_FAIL("Failed to setup test");
-        goto out;
+        return;
     }
 
-    rc = read_image_header(0, &hdr);
+    rc = read_image_header(original_image_idx, &hdr);
     if (rc) {
         TEST_FAIL("Failed to read image header");
         goto out;
     }
 
+    test_image_idx = (original_image_idx + 1) % 2;
+
     /* Increasing the version both causes the image to boot preferentially and
      * also invalidates the signature
      */
     hdr.ih_ver.iv_major += 1;
 
-    rc = write_image_header(1, &hdr);
+    rc = write_image_header(test_image_idx, &hdr);
     if (rc) {
         TEST_FAIL("Failed to write image header");
         goto out;
@@ -216,7 +267,7 @@
     ret->val = TEST_PASSED;
 
 out:
-    rc = test_teardown(original_image_idx);
+    rc = test_teardown(test_image_idx);
     if (rc) {
         TEST_FAIL("Failed to teardown test");
     }
diff --git a/test/framework/test_framework_helpers.h b/test/framework/test_framework_helpers.h
index 1cec7e0..beb6197 100644
--- a/test/framework/test_framework_helpers.h
+++ b/test/framework/test_framework_helpers.h
@@ -22,7 +22,7 @@
     GREEN   = 32,
     YELLOW  = 33,
     BLUE    = 34,
-    MAGENDA = 35,
+    MAGENTA = 35,
     CYAN    = 36,
     WHITE   = 37,
 };
diff --git a/test/framework/test_log.h b/test/framework/test_log.h
index 801d538..1a80741 100644
--- a/test/framework/test_log.h
+++ b/test/framework/test_log.h
@@ -8,21 +8,21 @@
 #ifndef __TEST_LOG_H__
 #define __TEST_LOG_H__
 
-#if (DOMAIN_NS == 1) || defined(TEST_BL2)
-#include "tfm_log_raw.h"
-#else
+#ifdef USE_SP_LOG
 #include "tfm_sp_log.h"
-#endif
+#else
+#include "tfm_log_raw.h"
+#endif /* USE_SP_LOG */
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-#if (DOMAIN_NS == 1) || defined(TEST_BL2)
-#define TEST_LOG(...) tfm_log_printf(__VA_ARGS__)
-#else
+#ifdef USE_SP_LOG
 #define TEST_LOG(...) tfm_sp_log_printf(__VA_ARGS__)
-#endif
+#else
+#define TEST_LOG(...) tfm_log_printf(__VA_ARGS__)
+#endif /* USE_SP_LOG */
 
 #ifdef __cplusplus
 }
diff --git a/test/secure_fw/secure_tests.cmake b/test/secure_fw/secure_tests.cmake
index ffb7b6b..26debd1 100644
--- a/test/secure_fw/secure_tests.cmake
+++ b/test/secure_fw/secure_tests.cmake
@@ -45,6 +45,11 @@
         tfm_sp_log_raw
 )
 
+target_compile_definitions(tfm_test_framework_s
+    INTERFACE
+        USE_SP_LOG
+)
+
 target_sources(tfm_s_tests
     INTERFACE
         ${CMAKE_CURRENT_SOURCE_DIR}/secure_suites.c
diff --git a/test/secure_fw/suites/crypto/crypto_tests_common.c b/test/secure_fw/suites/crypto/crypto_tests_common.c
index 47503df..4e2c2bc 100644
--- a/test/secure_fw/suites/crypto/crypto_tests_common.c
+++ b/test/secure_fw/suites/crypto/crypto_tests_common.c
@@ -431,8 +431,10 @@
      */
 #ifdef CRYPTO_HW_ACCELERATOR_CC312
     if (alg == PSA_ALG_CFB) {
+        printf_set_color(MAGENTA);
         TEST_LOG("%s %s", "The CC312 does not support CFB mode.",
                  "The test execution was SKIPPED.\r\n");
+        printf_set_color(DEFAULT);
         return;
     }
 #endif /* CRYPTO_HW_ACCELERATOR_CC312 */
