diff --git a/realm/realm_multiple_rec.c b/realm/realm_multiple_rec.c
index bc357bc..abd166b 100644
--- a/realm/realm_multiple_rec.c
+++ b/realm/realm_multiple_rec.c
@@ -25,10 +25,10 @@
 
 static void rec1_handler(u_register_t cxt_id)
 {
-	realm_printf("Realm: running on CPU = 0x%lx cxt_id= 0x%lx\n",
+	realm_printf("running on CPU = 0x%lx cxt_id= 0x%lx\n",
 			read_mpidr_el1() & MPID_MASK, cxt_id);
 	if (cxt_id < CXT_ID_MAGIC || cxt_id > CXT_ID_MAGIC + MAX_REC_COUNT) {
-		realm_printf("Realm: Wrong cxt_id\n");
+		realm_printf("Wrong cxt_id\n");
 		rsi_exit_to_host(HOST_CALL_EXIT_FAILED_CMD);
 	}
 	is_secondary_cpu_booted++;
diff --git a/realm/realm_pauth.c b/realm/realm_pauth.c
index 0a5a022..cf3bec3 100644
--- a/realm/realm_pauth.c
+++ b/realm/realm_pauth.c
@@ -35,7 +35,7 @@
 
 void dummy_func(void)
 {
-	realm_printf("Realm: shouldn't reach here.\n");
+	realm_printf("shouldn't reach here.\n");
 	rsi_exit_to_host(HOST_CALL_EXIT_FAILED_CMD);
 }
 
@@ -48,7 +48,7 @@
 	}
 
 	register_custom_sync_exception_handler(exception_handler);
-	realm_printf("Realm: overwrite LR to generate fault.\n");
+	realm_printf("overwrite LR to generate fault.\n");
 	__asm__("mov	x17, x30;	"
 		"mov	x30, %0;	"	/* overwite LR. */
 		"isb;			"
diff --git a/realm/realm_payload_main.c b/realm/realm_payload_main.c
index e1f78c5..563c643 100644
--- a/realm/realm_payload_main.c
+++ b/realm/realm_payload_main.c
@@ -29,7 +29,7 @@
 {
 	uint64_t sleep = realm_shared_data_get_my_host_val(HOST_ARG1_INDEX);
 
-	realm_printf("Realm: going to sleep for %llums\n", sleep);
+	realm_printf("going to sleep for %llums\n", sleep);
 	waitms(sleep);
 }
 
diff --git a/realm/realm_pmuv3.c b/realm/realm_pmuv3.c
index 58c05f0..3ae597d 100644
--- a/realm/realm_pmuv3.c
+++ b/realm/realm_pmuv3.c
@@ -154,7 +154,7 @@
 	disable_counting();
 	clear_counters();
 
-	realm_printf("Realm: counted from %lu to %lu\n",
+	realm_printf("counted from %lu to %lu\n",
 		ccounter_start, ccounter_end);
 	if (ccounter_start != ccounter_end) {
 		return true;
@@ -171,7 +171,7 @@
 	u_register_t evcounter_end;
 
 	if (GET_CNT_NUM == 0) {
-		realm_printf("Realm: no event counters implemented\n");
+		realm_printf("no event counters implemented\n");
 		return false;
 	}
 
@@ -189,7 +189,7 @@
 	evcounter_end = read_pmevcntrn_el0(0);
 	clear_counters();
 
-	realm_printf("Realm: counted from %lu to %lu\n",
+	realm_printf("counted from %lu to %lu\n",
 		evcounter_start, evcounter_end);
 	if (evcounter_start != evcounter_end) {
 		return true;
@@ -210,7 +210,7 @@
 	u_register_t pmu_cfg_end[3];
 	unsigned int impl_ev_ctrs = GET_CNT_NUM;
 
-	realm_printf("Realm: testing %u event counters\n", impl_ev_ctrs);
+	realm_printf("testing %u event counters\n", impl_ev_ctrs);
 
 	pmu_reset();
 
@@ -235,19 +235,19 @@
 	read_all_pmu_configs(pmu_cfg_end);
 
 	if (memcmp(ctr_start, ctr_end, sizeof(ctr_start)) != 0) {
-		realm_printf("Realm: SMC call did not preserve %s\n",
+		realm_printf("SMC call did not preserve %s\n",
 				"counters");
 		return false;
 	}
 
 	if (memcmp(ctr_cfg_start, ctr_cfg_end, sizeof(ctr_cfg_start)) != 0) {
-		realm_printf("Realm: SMC call did not preserve %s\n",
+		realm_printf("SMC call did not preserve %s\n",
 				"counter config");
 		return false;
 	}
 
 	if (memcmp(pmu_cfg_start, pmu_cfg_end, sizeof(pmu_cfg_start)) != 0) {
-		realm_printf("Realm: SMC call did not preserve %s\n",
+		realm_printf("SMC call did not preserve %s\n",
 				"PMU registers");
 		return false;
 	}
@@ -284,7 +284,7 @@
 	/* Enable interrupt on event counter #0 */
 	write_pmintenset_el1((1UL << 0));
 
-	realm_printf("Realm: waiting for PMU vIRQ...\n");
+	realm_printf("waiting for PMU vIRQ...\n");
 
 	enable_counting();
 	execute_nops();
@@ -304,12 +304,12 @@
 	pmu_reset();
 
 	if (delay_time == 0ULL) {
-		realm_printf("Realm: PMU vIRQ %sreceived in %llums\n",	"not ",
+		realm_printf("PMU vIRQ %sreceived in %llums\n",	"not ",
 				DELAY_MS);
 		return false;
 	}
 
-	realm_printf("Realm: PMU vIRQ %sreceived in %llums\n", "",
+	realm_printf("PMU vIRQ %sreceived in %llums\n", "",
 			DELAY_MS - delay_time);
 
 	return true;
diff --git a/realm/realm_simd.c b/realm/realm_simd.c
index 106a849..2eb3eab 100644
--- a/realm/realm_simd.c
+++ b/realm/realm_simd.c
@@ -65,7 +65,7 @@
 	output = (struct sve_cmd_id_regs *)sd->realm_cmd_output_buffer;
 	memset((void *)output, 0, sizeof(struct sve_cmd_id_regs));
 
-	realm_printf("Realm: reading ID registers: ID_AA64PFR0_EL1, "
+	realm_printf("reading ID registers: ID_AA64PFR0_EL1, "
 		    " ID_AA64ZFR0_EL1\n");
 	output->id_aa64pfr0_el1 = read_id_aa64pfr0_el1();
 	output->id_aa64zfr0_el1 = read_id_aa64zfr0_el1();
@@ -118,7 +118,7 @@
 	/* Check result of SVE operations. */
 	for (i = 0; i < RL_SVE_OP_ARRAYSIZE; i++) {
 		if (rl_sve_op_1[i] != (val - i - SVE_TEST_ITERATIONS)) {
-			realm_printf("Realm: SVE ops failed\n");
+			realm_printf("SVE ops failed\n");
 			return false;
 		}
 	}
@@ -181,7 +181,7 @@
 	/* fpcr, fpsr common registers */
 	fpu_cs_regs_read(&rl_fpu_cs_regs_read);
 	if (fpu_cs_regs_compare(&rl_fpu_cs_regs_write, &rl_fpu_cs_regs_read)) {
-		ERROR("Realm: FPCR/FPSR mismatch\n");
+		ERROR("FPCR/FPSR mismatch\n");
 		rc = false;
 	}
 
@@ -193,7 +193,7 @@
 	uint64_t esr_el1 = read_esr_el1();
 
 	if (EC_BITS(esr_el1) == EC_UNKNOWN) {
-		realm_printf("Realm: received undefined abort. "
+		realm_printf("received undefined abort. "
 			     "esr_el1: 0x%llx elr_el1: 0x%llx\n",
 			     esr_el1, read_elr_el1());
 		realm_got_undef_abort++;
@@ -228,7 +228,7 @@
 	output = (struct sme_cmd_id_regs *)sd->realm_cmd_output_buffer;
 	memset((void *)output, 0, sizeof(struct sme_cmd_id_regs));
 
-	realm_printf("Realm: reading ID registers: ID_AA64PFR1_EL1, "
+	realm_printf("reading ID registers: ID_AA64PFR1_EL1, "
 		    " ID_AA64SMFR0_EL1\n");
 
 	output->id_aa64pfr1_el1 = read_id_aa64pfr1_el1();
