diff --git a/secure_fw/partitions/manifestfilename.template b/secure_fw/partitions/manifestfilename.template
index d0b2e9a..a1a5f15 100644
--- a/secure_fw/partitions/manifestfilename.template
+++ b/secure_fw/partitions/manifestfilename.template
@@ -16,10 +16,22 @@
 
 {% if attr.tfm_partition_ipc %}
     {% set ns = namespace(iterator_counter=0) %}
+    {% if manifest.psa_framework_version == 1.1 and manifest.model == "SFN" %}
+#define {{"%-55s"|format(manifest.name + "_MODEL_IPC")}} 0
+#define {{"%-55s"|format(manifest.name + "_MODEL_SFN")}} 1
+    {% else %}
+#define {{"%-55s"|format(manifest.name + "_MODEL_IPC")}} 1
+#define {{"%-55s"|format(manifest.name + "_MODEL_SFN")}} 0
+    {% endif %}
+
     {% if manifest.services %}
         {% for service in manifest.services %}
+            {% if manifest.psa_framework_version == 1.1 and manifest.model == "SFN" %}
+psa_status_t {{service.name|lower}}_sfn(const psa_msg_t* msg);
+            {% else %}
 #define {{"%-55s"|format(service.name + "_SIGNAL")}} (1U << ({{"%d"|format(ns.iterator_counter)}} + 4))
-            {% set ns.iterator_counter = ns.iterator_counter + 1 %}
+                {% set ns.iterator_counter = ns.iterator_counter + 1 %}
+            {% endif %}
         {% endfor %}
     {% endif %}
     {% if ns.iterator_counter > 28 %}
diff --git a/secure_fw/partitions/partition_load_info.template b/secure_fw/partitions/partition_load_info.template
index 6c40c55..54f9257 100644
--- a/secure_fw/partitions/partition_load_info.template
+++ b/secure_fw/partitions/partition_load_info.template
@@ -56,8 +56,19 @@
 #endif
 extern uint8_t {{manifest.name|lower}}_stack[];
 
+{% if manifest.entry_init and manifest.entry_point %}
+#error "Both manifest.entry_init and manifest.entry_point exist, unsupported!"
+{% elif (manifest.model == "IPC" or manifest.psa_framework_version == 1.0) and (not manifest.entry_point) %}
+#error "The entry_point attribute is required, it should not be empty!"
+{% elif manifest.model == "SFN" and manifest.entry_point %}
+#error "The entry_point attribute should not be exist in SFN mode!"
+{% endif %}
 /* Entrypoint function declaration */
+{% if manifest.entry_point %}
 extern void {{manifest.entry_point}}(void);
+{% elif manifest.entry_init %}
+extern psa_status_t {{manifest.entry_init}}(void);
+{% endif %}
 
 /* partition load info type definition */
 struct partition_{{manifest.name|lower}}_load_info_t {
@@ -97,9 +108,7 @@
 {% endif %}
         .pid                        = {{manifest.name}},
         .flags                      = 0
-{% if manifest.psa_framework_version == 1.0 and attr.tfm_partition_ipc is sameas true %}
-                                    | SPM_PART_FLAG_IPC
-{% elif manifest.psa_framework_version == 1.1 and manifest.model == "IPC" %}
+{% if (manifest.psa_framework_version == 1.1 and manifest.model == "IPC") or manifest.psa_framework_version == 1.0 %}
                                     | SPM_PART_FLAG_IPC
 {% endif %}
 {% if manifest.type == "PSA-ROT" %}
@@ -108,7 +117,13 @@
 #error "Unsupported type '{{manifest.type}}' for partition '{{manifest.name}}'!"
 {% endif %}
                                     | PARTITION_PRI_{{manifest.priority}},
+{% if manifest.entry_point %}
         .entry                      = ENTRY_TO_POSITION({{manifest.entry_point}}),
+{% elif manifest.entry_init %}
+        .entry                      = ENTRY_TO_POSITION({{manifest.entry_init}}),
+{% else %}
+        .entry                      = NULL,
+{% endif %}
         .stack_size                 = {{manifest.stack_size}},
         .heap_size                  = 0,
         .ndeps                      = {{(manifest.name|upper + "_NDEPS")}},
@@ -130,7 +145,11 @@
     {% for service in manifest.services %}
         {
             .name_strid             = STRING_PTR_TO_STRID("{{service.name}}"),
+{% if manifest.psa_framework_version == 1.1 and manifest.model == "SFN" %}
+            .sfn                    = ENTRY_TO_POSITION({{service.name|lower}}_sfn),
+{% else %}
             .signal                 = {{service.name}}_SIGNAL,
+{% endif %}
             .sid                    = {{service.sid}},
             .flags                  = 0
         {% if service.non_secure_clients is sameas true %}
diff --git a/secure_fw/spm/include/load/service_defs.h b/secure_fw/spm/include/load/service_defs.h
index 0dac420..6c97793 100644
--- a/secure_fw/spm/include/load/service_defs.h
+++ b/secure_fw/spm/include/load/service_defs.h
@@ -41,7 +41,10 @@
 /* Common service structure type */
 struct service_load_info_t {
     uintptr_t       name_strid;         /* String ID for name               */
-    psa_signal_t    signal;             /* Service signal                   */
+    union {
+        psa_signal_t    signal;         /* Service signal                   */
+        uintptr_t       sfn;            /* Secure Function                  */
+    };
     uint32_t        sid;                /* Service ID                       */
     uint32_t        flags;              /* Flags                            */
     uint32_t        version;            /* Service version                  */
