diff --git a/src/acpi/acpigen.c b/src/acpi/acpigen.c
index ff04d0f..9981943 100644
--- a/src/acpi/acpigen.c
+++ b/src/acpi/acpigen.c
@@ -1783,7 +1783,7 @@
 		max = CPPC_MAX_FIELDS_VER_3;
 		break;
 	default:
-		printk(BIOS_ERR, "ERROR: CPPC version %u is not implemented\n",
+		printk(BIOS_ERR, "CPPC version %u is not implemented\n",
 		       config->version);
 		return;
 	}
diff --git a/src/arch/arm64/fit_payload.c b/src/arch/arm64/fit_payload.c
index 760b48c..7f1c8f8 100644
--- a/src/arch/arm64/fit_payload.c
+++ b/src/arch/arm64/fit_payload.c
@@ -52,7 +52,7 @@
 		       scratch.raw, sizeof(scratch.raw));
 		break;
 	default:
-		printk(BIOS_ERR, "ERROR: Unsupported compression algorithm!\n");
+		printk(BIOS_ERR, "Unsupported compression algorithm!\n");
 		return false;
 	}
 
@@ -61,8 +61,7 @@
 		die("ERROR: Partial decompression ran over scratchbuf!\n");
 
 	if (scratch.header.magic != KERNEL_HEADER_MAGIC) {
-		printk(BIOS_ERR,
-		       "ERROR: Invalid kernel magic: %#.8x\n != %#.8x\n",
+		printk(BIOS_ERR, "Invalid kernel magic: %#.8x\n != %#.8x\n",
 		       scratch.header.magic, KERNEL_HEADER_MAGIC);
 		return false;
 	}
diff --git a/src/arch/x86/acpi_bert_storage.c b/src/arch/x86/acpi_bert_storage.c
index a9c06f4..8559c06 100644
--- a/src/arch/x86/acpi_bert_storage.c
+++ b/src/arch/x86/acpi_bert_storage.c
@@ -127,7 +127,7 @@
 	status = bert_allocate_storage(sizeof(*status));
 
 	if (!status) {
-		printk(BIOS_ERR, "Error: New BERT error entry would exceed available region\n");
+		printk(BIOS_ERR, "New BERT error entry would exceed available region\n");
 		return NULL;
 	}
 
@@ -159,13 +159,13 @@
 	acpi_hest_generic_data_v300_t *entry;
 
 	if (bert_entry_count(status) == GENERIC_ERR_STS_ENTRY_COUNT_MAX) {
-		printk(BIOS_ERR, "Error: New BERT error would exceed maximum entries\n");
+		printk(BIOS_ERR, "New BERT error would exceed maximum entries\n");
 		return NULL;
 	}
 
 	entry = bert_allocate_storage(sizeof(*entry));
 	if (!entry) {
-		printk(BIOS_ERR, "Error: New BERT error entry would exceed available region\n");
+		printk(BIOS_ERR, "New BERT error entry would exceed available region\n");
 		return NULL;
 	}
 
@@ -191,7 +191,7 @@
 		return sizeof(cper_fw_err_rec_section_t);
 	/* else if ... sizeof(structures not yet defined) */
 
-	printk(BIOS_ERR, "Error: Requested size of unrecognized CPER GUID\n");
+	printk(BIOS_ERR, "Requested size of unrecognized CPER GUID\n");
 	return 0;
 }
 
@@ -199,7 +199,7 @@
 {
 	void *cl_data = bert_allocate_storage(cl_size);
 	if (!cl_data) {
-		printk(BIOS_ERR, "Error: Crashlog entry (size %zu) would exceed available region\n",
+		printk(BIOS_ERR, "Crashlog entry (size %zu) would exceed available region\n",
 			cl_size);
 		return NULL;
 	}
@@ -348,7 +348,7 @@
 		return NULL;
 
 	if (cper_ia32x64_proc_num_ctxs(x86err) == I32X64SEC_VALID_CTXNUM_MAX) {
-		printk(BIOS_ERR, "Error: New IA32X64 %s context entry would exceed max allowable contexts\n",
+		printk(BIOS_ERR, "New IA32X64 %s context entry would exceed max allowable contexts\n",
 				ctx_names[type]);
 		return NULL;
 	}
@@ -356,7 +356,7 @@
 	size = cper_ia32x64_ctx_sz_bytype(type, num);
 	ctx = bert_allocate_storage(size);
 	if (!ctx) {
-		printk(BIOS_ERR, "Error: New IA32X64 %s context entry would exceed available region\n",
+		printk(BIOS_ERR, "New IA32X64 %s context entry would exceed available region\n",
 				ctx_names[type]);
 		return NULL;
 	}
@@ -402,14 +402,14 @@
 		return NULL;
 
 	if (cper_ia32x64_proc_num_chks(x86err) == I32X64SEC_VALID_ERRNUM_MAX) {
-		printk(BIOS_ERR, "Error: New IA32X64 %s check entry would exceed max allowable errors\n",
+		printk(BIOS_ERR, "New IA32X64 %s check entry would exceed max allowable errors\n",
 				check_names[type]);
 		return NULL;
 	}
 
 	check = bert_allocate_storage(sizeof(*check));
 	if (!check) {
-		printk(BIOS_ERR, "Error: New IA32X64 %s check entry would exceed available region\n",
+		printk(BIOS_ERR, "New IA32X64 %s check entry would exceed available region\n",
 				check_names[type]);
 		return NULL;
 	}
@@ -518,7 +518,7 @@
 	size += sizeof_error_section(guid);
 
 	if (size > bert_storage_remaining()) {
-		printk(BIOS_ERR, "Error: Not enough BERT region space to add event for type %s\n",
+		printk(BIOS_ERR, "Not enough BERT region space to add event for type %s\n",
 				generic_error_name(guid));
 		return NULL;
 	}
@@ -571,7 +571,7 @@
  */
 __weak void bert_reserved_region(void **start, size_t *size)
 {
-	printk(BIOS_ERR, "Error: %s not implemented.  BERT region generation disabled\n",
+	printk(BIOS_ERR, "%s not implemented.  BERT region generation disabled\n",
 			__func__);
 	*start = NULL;
 	*size = 0;
diff --git a/src/arch/x86/tables.c b/src/arch/x86/tables.c
index 09ec0ea..1018dce 100644
--- a/src/arch/x86/tables.c
+++ b/src/arch/x86/tables.c
@@ -36,7 +36,7 @@
 		// much space it's going to need.
 		if (new_high_table_pointer > (high_table_pointer
 			+ MAX_PIRQ_TABLE_SIZE))
-			printk(BIOS_ERR, "ERROR: Increase PIRQ size.\n");
+			printk(BIOS_ERR, "Increase PIRQ size.\n");
 		printk(BIOS_DEBUG, "PIRQ table: %ld bytes.\n",
 				new_high_table_pointer - high_table_pointer);
 	}
@@ -64,7 +64,7 @@
 		// much space it's going to need.
 		if (new_high_table_pointer > (high_table_pointer
 			+ MAX_MP_TABLE_SIZE))
-			printk(BIOS_ERR, "ERROR: Increase MP table size.\n");
+			printk(BIOS_ERR, "Increase MP table size.\n");
 
 		printk(BIOS_DEBUG, "MP table: %ld bytes.\n",
 				new_high_table_pointer - high_table_pointer);
@@ -102,7 +102,7 @@
 		new_high_table_pointer = write_acpi_tables(high_table_pointer);
 		if (new_high_table_pointer > (high_table_pointer
 			+ max_acpi_size))
-			printk(BIOS_ERR, "ERROR: Increase ACPI size\n");
+			printk(BIOS_ERR, "Increase ACPI size\n");
 		printk(BIOS_DEBUG, "ACPI tables: %ld bytes.\n",
 				new_high_table_pointer - high_table_pointer);
 
@@ -127,8 +127,7 @@
 			   writes longest size available.  */
 			memcpy(low_rsdp, high_rsdp, sizeof(acpi_rsdp_t));
 		} else {
-			printk(BIOS_ERR,
-				"ERROR: Didn't find RSDP in high table.\n");
+			printk(BIOS_ERR, "Didn't find RSDP in high table.\n");
 		}
 		rom_table_end = ALIGN_UP(rom_table_end + sizeof(acpi_rsdp_t), 16);
 	} else {
@@ -159,7 +158,7 @@
 
 		if (new_high_table_pointer > (high_table_pointer
 			+ MAX_SMBIOS_SIZE))
-			printk(BIOS_ERR, "ERROR: Increase SMBIOS size\n");
+			printk(BIOS_ERR, "Increase SMBIOS size\n");
 		printk(BIOS_DEBUG, "SMBIOS tables: %ld bytes.\n",
 				new_high_table_pointer - high_table_pointer);
 	} else {
diff --git a/src/commonlib/storage/sd_mmc.h b/src/commonlib/storage/sd_mmc.h
index 9f6c077..411a4a3 100644
--- a/src/commonlib/storage/sd_mmc.h
+++ b/src/commonlib/storage/sd_mmc.h
@@ -71,7 +71,7 @@
 		if (CONFIG(SDHC_TRACE))	\
 			printk(BIOS_DEBUG, format);	\
 	} while (0)
-#define sdhc_error(format...) printk(BIOS_ERR, "ERROR: " format)
+#define sdhc_error(format...) printk(BIOS_ERR, format)
 
 /* Card/device debug functions */
 #define sd_mmc_debug(format...) \
@@ -84,6 +84,6 @@
 		if (CONFIG(SD_MMC_TRACE))	\
 			printk(BIOS_DEBUG, format);	\
 	} while (0)
-#define sd_mmc_error(format...) printk(BIOS_ERR, "ERROR: " format)
+#define sd_mmc_error(format...) printk(BIOS_ERR, format)
 
 #endif /* __COMMONLIB_STORAGE_SD_MMC_H__ */
diff --git a/src/cpu/x86/mtrr/mtrr.c b/src/cpu/x86/mtrr/mtrr.c
index f1d36da..185014e 100644
--- a/src/cpu/x86/mtrr/mtrr.c
+++ b/src/cpu/x86/mtrr/mtrr.c
@@ -409,7 +409,7 @@
 	resource_t mask;
 
 	if (var_state->mtrr_index >= total_mtrrs) {
-		printk(BIOS_ERR, "ERROR: Not enough MTRRs available! MTRR index is %d with %d MTRRs in total.\n",
+		printk(BIOS_ERR, "Not enough MTRRs available! MTRR index is %d with %d MTRRs in total.\n",
 		       var_state->mtrr_index, total_mtrrs);
 		return;
 	}
diff --git a/src/cpu/x86/smm/tseg_region.c b/src/cpu/x86/smm/tseg_region.c
index 1302bb0..f6aecd0 100644
--- a/src/cpu/x86/smm/tseg_region.c
+++ b/src/cpu/x86/smm/tseg_region.c
@@ -61,7 +61,7 @@
 void stage_cache_external_region(void **base, size_t *size)
 {
 	if (smm_subregion(SMM_SUBREGION_CACHE, (uintptr_t *)base, size)) {
-		printk(BIOS_ERR, "ERROR: No cache SMM subregion.\n");
+		printk(BIOS_ERR, "No cache SMM subregion.\n");
 		*base = NULL;
 		*size = 0;
 	}
diff --git a/src/device/dram/ddr4.c b/src/device/dram/ddr4.c
index eea5f0a..a66ee86 100644
--- a/src/device/dram/ddr4.c
+++ b/src/device/dram/ddr4.c
@@ -143,7 +143,7 @@
 			return speed_attr->reported_mts;
 		}
 	}
-	printk(BIOS_ERR, "ERROR: DDR4 speed of %d MHz is out of range\n", speed_mhz);
+	printk(BIOS_ERR, "DDR4 speed of %d MHz is out of range\n", speed_mhz);
 	return 0;
 }
 
diff --git a/src/device/dram/lpddr4.c b/src/device/dram/lpddr4.c
index a0c71f2..625aff2 100644
--- a/src/device/dram/lpddr4.c
+++ b/src/device/dram/lpddr4.c
@@ -94,6 +94,6 @@
 			return speed_attr->reported_mts;
 		}
 	}
-	printk(BIOS_ERR, "ERROR: LPDDR4 speed of %d MHz is out of range\n", speed_mhz);
+	printk(BIOS_ERR, "LPDDR4 speed of %d MHz is out of range\n", speed_mhz);
 	return 0;
 }
diff --git a/src/device/oprom/realmode/x86.c b/src/device/oprom/realmode/x86.c
index b391b92..7972011 100644
--- a/src/device/oprom/realmode/x86.c
+++ b/src/device/oprom/realmode/x86.c
@@ -233,7 +233,7 @@
 			0x0000, buffer_seg, buffer_adr);
 	/* If the VBE function completed successfully, 0x0 is returned in AH */
 	if (X86_AH) {
-		printk(BIOS_WARNING, "Warning: Error from VGA BIOS in %s\n", __func__);
+		printk(BIOS_WARNING, "Error from VGA BIOS in %s\n", __func__);
 		return 1;
 	}
 	memcpy(info, buffer, sizeof(vbe_info_block));
diff --git a/src/device/pci_device.c b/src/device/pci_device.c
index ed95dff..5938f0d 100644
--- a/src/device/pci_device.c
+++ b/src/device/pci_device.c
@@ -497,7 +497,7 @@
 	} else {
 		/* Don't let me think I stored the resource. */
 		resource->flags &= ~IORESOURCE_STORED;
-		printk(BIOS_ERR, "ERROR: invalid resource->index %lx\n", resource->index);
+		printk(BIOS_ERR, "invalid resource->index %lx\n", resource->index);
 	}
 }
 
@@ -510,7 +510,7 @@
 			   we can treat it like an empty resource. */
 			resource->size = 0;
 		} else {
-			printk(BIOS_ERR, "ERROR: %s %02lx %s size: 0x%010llx not assigned\n",
+			printk(BIOS_ERR, "%s %02lx %s size: 0x%010llx not assigned\n",
 			       dev_path(dev), resource->index,
 			       resource_type(resource), resource->size);
 			return;
@@ -1617,8 +1617,7 @@
 
 		/* Make sure the swizzle returned valid structures */
 		if (parent_bdg == NULL) {
-			printk(BIOS_WARNING,
-				"Warning: Could not find parent bridge for this device!\n");
+			printk(BIOS_WARNING, "Could not find parent bridge for this device!\n");
 			return -2;
 		}
 	} else {	/* Device is not behind a bridge */
diff --git a/src/device/pnp_device.c b/src/device/pnp_device.c
index 88072b9..85daec7 100644
--- a/src/device/pnp_device.c
+++ b/src/device/pnp_device.c
@@ -126,12 +126,12 @@
 		if (resource->flags & IORESOURCE_IRQ &&
 		    (resource->index != PNP_IDX_IRQ0) &&
 		    (resource->index != PNP_IDX_IRQ1))
-			printk(BIOS_WARNING, "WARNING: %s %02lx %s size: "
+			printk(BIOS_WARNING, "%s %02lx %s size: "
 			       "0x%010llx not assigned in devicetree\n", dev_path(dev),
 			       resource->index, resource_type(resource),
 			       resource->size);
 		else
-			printk(BIOS_ERR, "ERROR: %s %02lx %s size: 0x%010llx "
+			printk(BIOS_ERR, "%s %02lx %s size: 0x%010llx "
 			       "not assigned in devicetree\n", dev_path(dev), resource->index,
 			       resource_type(resource), resource->size);
 		return;
@@ -145,7 +145,7 @@
 	} else if (resource->flags & IORESOURCE_IRQ) {
 		pnp_set_irq(dev, resource->index, resource->base);
 	} else {
-		printk(BIOS_ERR, "ERROR: %s %02lx unknown resource type\n",
+		printk(BIOS_ERR, "%s %02lx unknown resource type\n",
 		       dev_path(dev), resource->index);
 		return;
 	}
@@ -213,7 +213,7 @@
 	/* If none of the mask bits is set, the resource would occupy the whole
 	   IO space leading to IO resource conflicts with the other devices */
 	if (!mask) {
-		printk(BIOS_ERR, "ERROR: device %s index %d has no mask.\n",
+		printk(BIOS_ERR, "device %s index %d has no mask.\n",
 				dev_path(dev), index);
 		return;
 	}
@@ -241,8 +241,7 @@
 	   If there is any zero in between the block of ones, it is ignored
 	   in the calculation of the resource size and limit. */
 	if (mask != (resource->limit ^ (resource->size - 1)))
-		printk(BIOS_WARNING,
-			"WARNING: mask of device %s index %d is wrong.\n",
+		printk(BIOS_WARNING, "mask of device %s index %d is wrong.\n",
 			dev_path(dev), index);
 }
 
diff --git a/src/drivers/analogix/anx7625/anx7625.c b/src/drivers/analogix/anx7625/anx7625.c
index 81f27d0..e3a5111 100644
--- a/src/drivers/analogix/anx7625/anx7625.c
+++ b/src/drivers/analogix/anx7625/anx7625.c
@@ -11,7 +11,7 @@
 #include "anx7625.h"
 
 #define ANXERROR(format, ...) \
-		printk(BIOS_ERR, "ERROR: %s: " format, __func__, ##__VA_ARGS__)
+		printk(BIOS_ERR, "%s: " format, __func__, ##__VA_ARGS__)
 #define ANXINFO(format, ...) \
 		printk(BIOS_INFO, "%s: " format, __func__, ##__VA_ARGS__)
 #define ANXDEBUG(format, ...) \
diff --git a/src/drivers/i2c/max98390/max98390.c b/src/drivers/i2c/max98390/max98390.c
index 08ed625..664a710 100644
--- a/src/drivers/i2c/max98390/max98390.c
+++ b/src/drivers/i2c/max98390/max98390.c
@@ -73,7 +73,7 @@
 					CONFIG_MAINBOARD_PART_NUMBER);
 
 			if (chars >= sizeof(dsm_name))
-				printk(BIOS_ERR, "ERROR: String too long in %s\n", __func__);
+				printk(BIOS_ERR, "String too long in %s\n", __func__);
 
 			acpi_dp_add_string(dp, "maxim,dsm_param_name", dsm_name);
 		}
diff --git a/src/drivers/i2c/tpm/cr50.c b/src/drivers/i2c/tpm/cr50.c
index 6c3471d..1423841 100644
--- a/src/drivers/i2c/tpm/cr50.c
+++ b/src/drivers/i2c/tpm/cr50.c
@@ -49,7 +49,7 @@
 	static int warning_displayed;
 
 	if (!warning_displayed) {
-		printk(BIOS_WARNING, "WARNING: %s() not implemented, wasting 20ms to wait on"
+		printk(BIOS_WARNING, "%s() not implemented, wasting 20ms to wait on"
 		       " Cr50!\n", __func__);
 		warning_displayed = 1;
 	}
diff --git a/src/drivers/intel/fsp1_1/fsp_relocate.c b/src/drivers/intel/fsp1_1/fsp_relocate.c
index 7aaba82..875fcf2 100644
--- a/src/drivers/intel/fsp1_1/fsp_relocate.c
+++ b/src/drivers/intel/fsp1_1/fsp_relocate.c
@@ -15,14 +15,14 @@
 	void *new_loc = cbfs_cbmem_alloc(prog_name(fsp_relocd),
 					 CBMEM_ID_REFCODE, &size);
 	if (new_loc == NULL) {
-		printk(BIOS_ERR, "ERROR: Unable to load FSP into memory.\n");
+		printk(BIOS_ERR, "Unable to load FSP into memory.\n");
 		return -1;
 	}
 
 	fih_offset = fsp1_1_relocate((uintptr_t)new_loc, new_loc, size);
 
 	if (fih_offset <= 0) {
-		printk(BIOS_ERR, "ERROR: FSP relocation failure.\n");
+		printk(BIOS_ERR, "FSP relocation failure.\n");
 		return -1;
 	}
 
diff --git a/src/drivers/intel/fsp2_0/memory_init.c b/src/drivers/intel/fsp2_0/memory_init.c
index 3643866..b7e81f0 100644
--- a/src/drivers/intel/fsp2_0/memory_init.c
+++ b/src/drivers/intel/fsp2_0/memory_init.c
@@ -36,7 +36,7 @@
 
 	mrc_data = fsp_find_nv_storage_data(&mrc_data_size);
 	if (!mrc_data) {
-		printk(BIOS_ERR, "ERROR: FSP_NON_VOLATILE_STORAGE_HOB missing!\n");
+		printk(BIOS_ERR, "FSP_NON_VOLATILE_STORAGE_HOB missing!\n");
 		return;
 	}
 
@@ -48,7 +48,7 @@
 	 */
 	if (mrc_cache_stash_data(MRC_TRAINING_DATA, fsp_version, mrc_data,
 				mrc_data_size) < 0)
-		printk(BIOS_ERR, "ERROR: Failed to stash MRC data\n");
+		printk(BIOS_ERR, "Failed to stash MRC data\n");
 }
 
 static void do_fsp_post_memory_init(bool s3wake, uint32_t fsp_version)
@@ -64,7 +64,7 @@
 	} else if (cbmem_initialize_id_size(CBMEM_ID_FSP_RESERVED_MEMORY,
 				range_entry_size(&fsp_mem))) {
 		if (CONFIG(HAVE_ACPI_RESUME)) {
-			printk(BIOS_ERR, "ERROR: Failed to recover CBMEM in S3 resume.\n");
+			printk(BIOS_ERR, "Failed to recover CBMEM in S3 resume.\n");
 			/* Failed S3 resume, reset to come up cleanly */
 			/* FIXME: A "system" reset is likely enough: */
 			full_reset();
diff --git a/src/drivers/intel/pmc_mux/conn/conn.c b/src/drivers/intel/pmc_mux/conn/conn.c
index f238397..9fcc736 100644
--- a/src/drivers/intel/pmc_mux/conn/conn.c
+++ b/src/drivers/intel/pmc_mux/conn/conn.c
@@ -56,7 +56,7 @@
 
 	info = conn_get_cbmem_buffer();
 	if (!info || (info->port_count >= total_conn_count)) {
-		printk(BIOS_ERR, "ERROR: No space for Type-C port info!\n");
+		printk(BIOS_ERR, "No space for Type-C port info!\n");
 		return;
 	}
 
diff --git a/src/drivers/net/atl1e.c b/src/drivers/net/atl1e.c
index d5e0cdd..e44195c 100644
--- a/src/drivers/net/atl1e.c
+++ b/src/drivers/net/atl1e.c
@@ -30,7 +30,7 @@
 			ret = c - 'a' + 0x0a;
 	}
 	if (ret > 0x0f) {
-		printk(BIOS_ERR, "Error: Invalid hex digit found: "
+		printk(BIOS_ERR, "Invalid hex digit found: "
 				 "%c - 0x%02x\n", (char)c, c);
 		ret = 0;
 	}
diff --git a/src/drivers/net/r8168.c b/src/drivers/net/r8168.c
index 2299a99..51d4fcb 100644
--- a/src/drivers/net/r8168.c
+++ b/src/drivers/net/r8168.c
@@ -76,7 +76,7 @@
 			ret = c - 'a' + 0x0a;
 	}
 	if (ret > 0x0f) {
-		printk(BIOS_ERR, "Error: Invalid hex digit found: "
+		printk(BIOS_ERR, "Invalid hex digit found: "
 				 "%c - 0x%02x\n", (char)c, c);
 		ret = 0;
 	}
@@ -94,7 +94,7 @@
 	size_t offset;
 
 	if (fmap_locate_area_as_rdev("RO_VPD", &rdev)) {
-		printk(BIOS_ERR, "Error: Couldn't find RO_VPD region.");
+		printk(BIOS_ERR, "Couldn't find RO_VPD region.");
 		return CB_ERR;
 	}
 	search_address = rdev_mmap_full(&rdev);
@@ -108,8 +108,7 @@
 			search_length);
 
 	if (offset == search_length) {
-		printk(BIOS_ERR,
-		       "Error: Could not locate '%s' in VPD\n", vpd_key);
+		printk(BIOS_ERR, "Could not locate '%s' in VPD\n", vpd_key);
 		rdev_munmap(&rdev, search_address);
 		return CB_ERR;
 	}
diff --git a/src/drivers/pc80/rtc/option.c b/src/drivers/pc80/rtc/option.c
index 1474b57..e8e2345 100644
--- a/src/drivers/pc80/rtc/option.c
+++ b/src/drivers/pc80/rtc/option.c
@@ -100,7 +100,7 @@
 	}
 
 	if (ce->config != 'e' && ce->config != 'h') {
-		printk(BIOS_ERR, "ERROR: CMOS option '%s' is not of integer type.\n", name);
+		printk(BIOS_ERR, "CMOS option '%s' is not of integer type.\n", name);
 		return CB_ERR_ARG;
 	}
 
@@ -176,7 +176,7 @@
 	}
 
 	if (ce->config != 'e' && ce->config != 'h') {
-		printk(BIOS_ERR, "ERROR: CMOS option '%s' is not of integer type.\n", name);
+		printk(BIOS_ERR, "CMOS option '%s' is not of integer type.\n", name);
 		return CB_ERR_ARG;
 	}
 
diff --git a/src/drivers/spi/tpm/tpm.c b/src/drivers/spi/tpm/tpm.c
index 30b1876..9c7baa9 100644
--- a/src/drivers/spi/tpm/tpm.c
+++ b/src/drivers/spi/tpm/tpm.c
@@ -74,7 +74,7 @@
 	static int warning_displayed;
 
 	if (!warning_displayed) {
-		printk(BIOS_WARNING, "WARNING: %s() not implemented, wasting 10ms to wait on"
+		printk(BIOS_WARNING, "%s() not implemented, wasting 10ms to wait on"
 		       " Cr50!\n", __func__);
 		warning_displayed = 1;
 	}
@@ -492,7 +492,7 @@
 		/* The high bit is set, meaning that the Cr50 is already locked on a particular
 		 * value for the register, but not the one we wanted. */
 		printk(BIOS_ERR,
-		       "ERROR: Current CR50_BOARD_CFG = 0x%08x, does not match desired = 0x%08x\n",
+		       "Current CR50_BOARD_CFG = 0x%08x, does not match desired = 0x%08x\n",
 		       board_cfg_value, CR50_BOARD_CFG_VALUE);
 		return;
 	}
diff --git a/src/drivers/ti/sn65dsi86bridge/sn65dsi86bridge.c b/src/drivers/ti/sn65dsi86bridge/sn65dsi86bridge.c
index a0fcf11..806e9b2 100644
--- a/src/drivers/ti/sn65dsi86bridge/sn65dsi86bridge.c
+++ b/src/drivers/ti/sn65dsi86bridge/sn65dsi86bridge.c
@@ -194,13 +194,13 @@
 			return CB_ERR;
 		if (!wait_ms(100, !i2c_readb(bus, chip, SN_AUX_CMD_REG, &buf) &&
 				  !(buf & AUX_CMD_SEND))) {
-			printk(BIOS_ERR, "ERROR: AUX_CMD_SEND not acknowledged\n");
+			printk(BIOS_ERR, "AUX_CMD_SEND not acknowledged\n");
 			return CB_ERR;
 		}
 		if (i2c_readb(bus, chip, SN_AUX_CMD_STATUS_REG, &buf))
 			return CB_ERR;
 		if (buf & (NAT_I2C_FAIL | AUX_SHORT | AUX_DFER | AUX_RPLY_TOUT)) {
-			printk(BIOS_ERR, "ERROR: AUX command failed, status = %#x\n", buf);
+			printk(BIOS_ERR, "AUX command failed, status = %#x\n", buf);
 			return CB_ERR;
 		}
 
@@ -230,7 +230,7 @@
 		err = sn65dsi86_bridge_aux_request(bus, chip, EDID_I2C_ADDR, EDID_LENGTH,
 						   I2C_RAW_READ_AND_STOP, edid);
 	if (err) {
-		printk(BIOS_ERR, "ERROR: Failed to read EDID.\n");
+		printk(BIOS_ERR, "Failed to read EDID.\n");
 		return err;
 	}
 
@@ -249,7 +249,7 @@
 	}
 
 	if (decode_edid(edid, edid_size, out) != EDID_CONFORMANT) {
-		printk(BIOS_ERR, "ERROR: Failed to decode EDID.\n");
+		printk(BIOS_ERR, "Failed to decode EDID.\n");
 		return CB_ERR;
 	}
 
@@ -364,7 +364,7 @@
 	if (dp_rate_idx < ARRAY_SIZE(sn65dsi86_bridge_dp_rate_lut))
 		i2c_write_field(bus, chip, SN_DATARATE_CONFIG_REG, dp_rate_idx, 8, 5);
 	else
-		printk(BIOS_ERR, "ERROR: valid dp rate not found");
+		printk(BIOS_ERR, "valid dp rate not found");
 }
 
 static void sn65dsi86_bridge_set_bridge_active_timing(uint8_t bus,
@@ -407,7 +407,7 @@
 	if (!wait_ms(500,
 	    !(i2c_readb(bus, chip, SN_DPPLL_SRC_REG, &buf)) &&
 	    (buf & BIT(7)))) {
-		printk(BIOS_ERR, "ERROR: PLL lock failure\n");
+		printk(BIOS_ERR, "PLL lock failure\n");
 	}
 
 	/*
@@ -426,14 +426,14 @@
 
 		if (!wait_ms(500, !(i2c_readb(bus, chip, SN_ML_TX_MODE_REG, &buf)) &&
 				  (buf == NORMAL_MODE || buf == MAIN_LINK_OFF))) {
-			printk(BIOS_ERR, "ERROR: unexpected link training state: %#x\n", buf);
+			printk(BIOS_ERR, "unexpected link training state: %#x\n", buf);
 			return;
 		}
 		if (buf == NORMAL_MODE)
 			return;
 	}
 
-	printk(BIOS_ERR, "ERROR: Link training failed 10 times\n");
+	printk(BIOS_ERR, "Link training failed 10 times\n");
 }
 
 void sn65dsi86_backlight_enable(uint8_t bus, uint8_t chip)
diff --git a/src/drivers/vpd/vpd.c b/src/drivers/vpd/vpd.c
index a099b3b..396097c 100644
--- a/src/drivers/vpd/vpd.c
+++ b/src/drivers/vpd/vpd.c
@@ -67,7 +67,7 @@
 
 	/* Try if we can find a google_vpd_info, otherwise read whole VPD. */
 	if (rdev_readat(rdev, &info, 0, sizeof(info)) != sizeof(info)) {
-		printk(BIOS_ERR, "ERROR: Failed to read %s header.\n",
+		printk(BIOS_ERR, "Failed to read %s header.\n",
 		       fmap_name);
 		goto fail;
 	}
@@ -75,13 +75,13 @@
 	if (memcmp(info.header.magic, VPD_INFO_MAGIC, sizeof(info.header.magic))
 	    == 0) {
 		if (rdev_chain(rdev, rdev, sizeof(info), info.size)) {
-			printk(BIOS_ERR, "ERROR: %s info size too large.\n",
+			printk(BIOS_ERR, "%s info size too large.\n",
 			       fmap_name);
 			goto fail;
 		}
 	} else if (info.header.tlv.type == VPD_TYPE_TERMINATOR ||
 		   info.header.tlv.type == VPD_TYPE_IMPLICIT_TERMINATOR) {
-		printk(BIOS_WARNING, "WARNING: %s is uninitialized or empty.\n",
+		printk(BIOS_WARNING, "%s is uninitialized or empty.\n",
 		       fmap_name);
 		goto fail;
 	}
@@ -151,7 +151,7 @@
 
 	if (ro_size) {
 		if (rdev_readat(&ro_vpd, cbmem->blob, 0, ro_size) != ro_size) {
-			printk(BIOS_ERR, "ERROR: Couldn't read RO VPD\n");
+			printk(BIOS_ERR, "Couldn't read RO VPD\n");
 			cbmem->ro_size = ro_size = 0;
 		}
 		timestamp_add_now(TS_END_COPYVPD_RO);
@@ -160,7 +160,7 @@
 	if (rw_size) {
 		if (rdev_readat(&rw_vpd, cbmem->blob + ro_size, 0, rw_size)
 								 != rw_size) {
-			printk(BIOS_ERR, "ERROR: Couldn't read RW VPD\n");
+			printk(BIOS_ERR, "Couldn't read RW VPD\n");
 			cbmem->rw_size = rw_size = 0;
 		}
 		timestamp_add_now(TS_END_COPYVPD_RW);
diff --git a/src/drivers/wifi/generic/acpi.c b/src/drivers/wifi/generic/acpi.c
index f4ffa5e..7c606f9 100644
--- a/src/drivers/wifi/generic/acpi.c
+++ b/src/drivers/wifi/generic/acpi.c
@@ -212,7 +212,7 @@
 	 * })
 	 */
 	if (sar->revision > MAX_SAR_REVISION) {
-		printk(BIOS_ERR, "ERROR: Invalid SAR table revision: %d\n", sar->revision);
+		printk(BIOS_ERR, "Invalid SAR table revision: %d\n", sar->revision);
 		return;
 	}
 
@@ -258,12 +258,12 @@
 	 * })
 	 */
 	if (sar->revision > MAX_SAR_REVISION) {
-		printk(BIOS_ERR, "ERROR: Invalid SAR table revision: %d\n", sar->revision);
+		printk(BIOS_ERR, "Invalid SAR table revision: %d\n", sar->revision);
 		return;
 	}
 
 	if (sar->dsar_set_count == 0) {
-		printk(BIOS_WARNING, "WARNING: DSAR set count is 0\n");
+		printk(BIOS_WARNING, "DSAR set count is 0\n");
 		return;
 	}
 
@@ -341,7 +341,7 @@
 	 * })
 	 */
 	if (wgds->revision > MAX_GEO_OFFSET_REVISION) {
-		printk(BIOS_ERR, "ERROR: Invalid WGDS revision: %d\n", wgds->revision);
+		printk(BIOS_ERR, "Invalid WGDS revision: %d\n", wgds->revision);
 		return;
 	}
 
@@ -475,7 +475,7 @@
 
 	/* Retrieve the sar limits data */
 	if (get_wifi_sar_limits(&sar_limits) < 0) {
-		printk(BIOS_ERR, "ERROR: failed getting SAR limits!\n");
+		printk(BIOS_ERR, "failed getting SAR limits!\n");
 		return;
 	}
 
diff --git a/src/ec/google/chromeec/ec.c b/src/ec/google/chromeec/ec.c
index e9a0939..5d53926 100644
--- a/src/ec/google/chromeec/ec.c
+++ b/src/ec/google/chromeec/ec.c
@@ -975,7 +975,7 @@
 retry:
 
 	if (google_chromeec_command(&cmd)) {
-		printk(BIOS_ERR, "ERROR: failed to %s vbnv_ec context: %d\n",
+		printk(BIOS_ERR, "failed to %s vbnv_ec context: %d\n",
 			is_read ? "read" : "write", (int)cmd.cmd_code);
 		mdelay(10);	/* just in case */
 		if (--retries)
diff --git a/src/lib/bootmem.c b/src/lib/bootmem.c
index 1fe23c2..e9d4287 100644
--- a/src/lib/bootmem.c
+++ b/src/lib/bootmem.c
@@ -51,7 +51,7 @@
 	case BM_MEM_TABLE:
 		return LB_MEM_TABLE;
 	default:
-		printk(BIOS_ERR, "ERROR: Unsupported tag %u\n", tag);
+		printk(BIOS_ERR, "Unsupported tag %u\n", tag);
 		return LB_MEM_RESERVED;
 	}
 }
diff --git a/src/lib/cbfs.c b/src/lib/cbfs.c
index 5bbbe6a..2d98c44 100644
--- a/src/lib/cbfs.c
+++ b/src/lib/cbfs.c
@@ -681,7 +681,7 @@
 	size_t real_size = cbfs_mcache_real_size(cbd->mcache, cbd->mcache_size);
 	void *cbmem_mcache = cbmem_add(cbmem_id, real_size);
 	if (!cbmem_mcache) {
-		printk(BIOS_ERR, "ERROR: Cannot allocate CBMEM mcache %#x (%#zx bytes)!\n",
+		printk(BIOS_ERR, "Cannot allocate CBMEM mcache %#x (%#zx bytes)!\n",
 		       cbmem_id, real_size);
 		return;
 	}
diff --git a/src/lib/cbmem_stage_cache.c b/src/lib/cbmem_stage_cache.c
index 28cc242..b45c950 100644
--- a/src/lib/cbmem_stage_cache.c
+++ b/src/lib/cbmem_stage_cache.c
@@ -13,7 +13,7 @@
 
 	meta = cbmem_add(CBMEM_ID_STAGEx_META + stage_id, sizeof(*meta));
 	if (meta == NULL) {
-		printk(BIOS_ERR, "Error: Can't add %x metadata to cbmem\n",
+		printk(BIOS_ERR, "Can't add %x metadata to cbmem\n",
 				CBMEM_ID_STAGEx_META + stage_id);
 		return;
 	}
@@ -23,7 +23,7 @@
 
 	c = cbmem_add(CBMEM_ID_STAGEx_CACHE + stage_id, prog_size(stage));
 	if (c == NULL) {
-		printk(BIOS_ERR, "Error: Can't add stage_cache %x to cbmem\n",
+		printk(BIOS_ERR, "Can't add stage_cache %x to cbmem\n",
 				CBMEM_ID_STAGEx_CACHE + stage_id);
 		return;
 	}
@@ -51,7 +51,7 @@
 
 	e = cbmem_entry_find(CBMEM_ID_STAGEx_RAW + stage_id);
 	if (e == NULL) {
-		printk(BIOS_ERR, "Error: Can't find raw %x data in cbmem\n",
+		printk(BIOS_ERR, "Can't find raw %x data in cbmem\n",
 				CBMEM_ID_STAGEx_RAW + stage_id);
 		return;
 	}
@@ -72,7 +72,7 @@
 
 	meta = cbmem_find(CBMEM_ID_STAGEx_META + stage_id);
 	if (meta == NULL) {
-		printk(BIOS_ERR, "Error: Can't find %x metadata in cbmem\n",
+		printk(BIOS_ERR, "Can't find %x metadata in cbmem\n",
 				CBMEM_ID_STAGEx_META + stage_id);
 		return;
 	}
@@ -80,7 +80,7 @@
 	e = cbmem_entry_find(CBMEM_ID_STAGEx_CACHE + stage_id);
 
 	if (e == NULL) {
-		printk(BIOS_ERR, "Error: Can't find stage_cache %x in cbmem\n",
+		printk(BIOS_ERR, "Can't find stage_cache %x in cbmem\n",
 				CBMEM_ID_STAGEx_CACHE + stage_id);
 		return;
 	}
diff --git a/src/lib/edid.c b/src/lib/edid.c
index 55876e8..41b8031 100644
--- a/src/lib/edid.c
+++ b/src/lib/edid.c
@@ -1507,7 +1507,7 @@
 			printk(BIOS_ERR,
 				"EDID block does NOT conform to EDID 1.3!\n");
 		else if (!c.has_name_descriptor || !c.has_range_descriptor)
-			printk(BIOS_WARNING, "WARNING: EDID block does NOT "
+			printk(BIOS_WARNING, "EDID block does NOT "
 			       "fully conform to EDID 1.3.\n");
 
 		if (c.nonconformant_digital_display)
diff --git a/src/lib/fit.c b/src/lib/fit.c
index 23ee52f..08fd045 100644
--- a/src/lib/fit.c
+++ b/src/lib/fit.c
@@ -78,7 +78,7 @@
 		if (!strcmp(image->name, name))
 			return image;
 	}
-	printk(BIOS_ERR, "ERROR: Cannot find image node %s!\n", name);
+	printk(BIOS_ERR, "Cannot find image node %s!\n", name);
 	return NULL;
 }
 
@@ -413,8 +413,7 @@
 		uint32_t fdt_offset = be32_to_cpu(fdt_header->structure_offset);
 
 		if (config->fdt->compression != CBFS_COMPRESS_NONE) {
-			printk(BIOS_ERR,
-			       "ERROR: config %s has a compressed FDT without "
+			printk(BIOS_ERR, "config %s has a compressed FDT without "
 			       "external compatible property, skipping.\n",
 			       config->name);
 			return -1;
@@ -422,15 +421,13 @@
 
 		/* FDT overlays are not supported in legacy FIT images. */
 		if (config->overlays.next) {
-			printk(BIOS_ERR,
-			       "ERROR: config %s has overlay but no compat!\n",
+			printk(BIOS_ERR, "config %s has overlay but no compat!\n",
 			       config->name);
 			return -1;
 		}
 
 		if (fdt_find_compat(fdt_blob, fdt_offset, &config->compat)) {
-			printk(BIOS_ERR,
-			       "ERROR: Can't find compat string in FDT %s "
+			printk(BIOS_ERR, "Can't find compat string in FDT %s "
 			       "for config %s, skipping.\n",
 			       config->fdt->name, config->name);
 			return -1;
@@ -467,7 +464,7 @@
 
 	struct device_tree *tree = fdt_unflatten(fit);
 	if (!tree) {
-		printk(BIOS_ERR, "ERROR: Failed to unflatten FIT image!\n");
+		printk(BIOS_ERR, "Failed to unflatten FIT image!\n");
 		return NULL;
 	}
 
@@ -494,21 +491,19 @@
 	/* Process and list the configs. */
 	list_for_each(config, config_nodes, list_node) {
 		if (!config->kernel) {
-			printk(BIOS_ERR,
-			       "ERROR: config %s has no kernel, skipping.\n",
+			printk(BIOS_ERR, "config %s has no kernel, skipping.\n",
 			       config->name);
 			continue;
 		}
 		if (!config->fdt) {
-			printk(BIOS_ERR,
-			       "ERROR: config %s has no FDT, skipping.\n",
+			printk(BIOS_ERR, "config %s has no FDT, skipping.\n",
 			       config->name);
 			continue;
 		}
 
 		if (config->ramdisk &&
 		    config->ramdisk->compression < 0) {
-			printk(BIOS_WARNING, "WARN: Ramdisk is compressed with "
+			printk(BIOS_WARNING, "Ramdisk is compressed with "
 			       "an unsupported algorithm, discarding config %s."
 			       "\n", config->name);
 			continue;
diff --git a/src/lib/fit_payload.c b/src/lib/fit_payload.c
index 97f9af0..d61bfd5 100644
--- a/src/lib/fit_payload.c
+++ b/src/lib/fit_payload.c
@@ -35,7 +35,7 @@
 	size_t true_size = 0;
 
 	if (node->size == 0) {
-		printk(BIOS_ERR, "ERROR: The %s size is 0\n", node->name);
+		printk(BIOS_ERR, "The %s size is 0\n", node->name);
 		return true;
 	}
 
@@ -50,7 +50,7 @@
 		comp_name = "Decompressing LZ4";
 		break;
 	default:
-		printk(BIOS_ERR, "ERROR: Unsupported compression\n");
+		printk(BIOS_ERR, "Unsupported compression\n");
 		return true;
 	}
 
@@ -76,7 +76,7 @@
 	}
 
 	if (!true_size) {
-		printk(BIOS_ERR, "ERROR: %s decompression failed!\n",
+		printk(BIOS_ERR, "%s decompression failed!\n",
 		       comp_name);
 		return true;
 	}
@@ -176,13 +176,13 @@
 	struct fit_config_node *config = fit_load(data);
 
 	if (!config) {
-		printk(BIOS_ERR, "ERROR: Could not load FIT\n");
+		printk(BIOS_ERR, "Could not load FIT\n");
 		return;
 	}
 
 	dt = unpack_fdt(config->fdt);
 	if (!dt) {
-		printk(BIOS_ERR, "ERROR: Failed to unflatten the FDT.\n");
+		printk(BIOS_ERR, "Failed to unflatten the FDT.\n");
 		return;
 	}
 
@@ -190,7 +190,7 @@
 	list_for_each(chain, config->overlays, list_node) {
 		struct device_tree *overlay = unpack_fdt(chain->overlay);
 		if (!overlay || dt_apply_overlay(dt, overlay)) {
-			printk(BIOS_ERR, "ERROR: Failed to apply overlay %s!\n",
+			printk(BIOS_ERR, "Failed to apply overlay %s!\n",
 			       chain->overlay->name);
 		}
 	}
@@ -213,7 +213,7 @@
 
 	/* Invoke arch specific payload placement and fixups */
 	if (!fit_payload_arch(payload, config, &kernel, &fdt, &initrd)) {
-		printk(BIOS_ERR, "ERROR: Failed to find free memory region\n");
+		printk(BIOS_ERR, "Failed to find free memory region\n");
 		bootmem_dump_ranges();
 		return;
 	}
@@ -227,7 +227,7 @@
 
 	if (config->ramdisk &&
 	    extract(&initrd, config->ramdisk)) {
-		printk(BIOS_ERR, "ERROR: Failed to extract initrd\n");
+		printk(BIOS_ERR, "Failed to extract initrd\n");
 		prog_set_entry(payload, NULL, NULL);
 		return;
 	}
@@ -235,7 +235,7 @@
 	timestamp_add_now(TS_KERNEL_DECOMPRESSION);
 
 	if (extract(&kernel, config->kernel)) {
-		printk(BIOS_ERR, "ERROR: Failed to extract kernel\n");
+		printk(BIOS_ERR, "Failed to extract kernel\n");
 		prog_set_entry(payload, NULL, NULL);
 		return;
 	}
diff --git a/src/lib/fmap.c b/src/lib/fmap.c
index 6ff8431..2511255 100644
--- a/src/lib/fmap.c
+++ b/src/lib/fmap.c
@@ -80,7 +80,7 @@
 		if (!verify_fmap(fmap))
 			goto register_cache;
 
-		printk(BIOS_ERR, "ERROR: FMAP cache corrupted?!\n");
+		printk(BIOS_ERR, "FMAP cache corrupted?!\n");
 		if (CONFIG(TOCTOU_SAFETY))
 			die("TOCTOU safety relies on FMAP cache");
 	}
@@ -301,13 +301,13 @@
 	const size_t s = region_device_sz(&fmrd);
 	struct fmap *fmap = cbmem_add(CBMEM_ID_FMAP, s);
 	if (!fmap) {
-		printk(BIOS_ERR, "ERROR: Failed to allocate CBMEM\n");
+		printk(BIOS_ERR, "Failed to allocate CBMEM\n");
 		return;
 	}
 
 	const ssize_t ret = rdev_readat(&fmrd, fmap, 0, s);
 	if (ret != s) {
-		printk(BIOS_ERR, "ERROR: Failed to read FMAP into CBMEM\n");
+		printk(BIOS_ERR, "Failed to read FMAP into CBMEM\n");
 		cbmem_entry_remove(cbmem_entry_find(CBMEM_ID_FMAP));
 		return;
 	}
diff --git a/src/lib/thread.c b/src/lib/thread.c
index a1c84dce..adfc298 100644
--- a/src/lib/thread.c
+++ b/src/lib/thread.c
@@ -282,15 +282,14 @@
 	current = current_thread();
 
 	if (!thread_can_yield(current)) {
-		printk(BIOS_ERR,
-		       "ERROR: %s() called from non-yielding context!\n", __func__);
+		printk(BIOS_ERR, "%s() called from non-yielding context!\n", __func__);
 		return -1;
 	}
 
 	t = get_free_thread();
 
 	if (t == NULL) {
-		printk(BIOS_ERR, "ERROR: %s: No more threads!\n", __func__);
+		printk(BIOS_ERR, "%s: No more threads!\n", __func__);
 		return -1;
 	}
 
@@ -317,15 +316,14 @@
 	current = current_thread();
 
 	if (!thread_can_yield(current)) {
-		printk(BIOS_ERR,
-		       "ERROR: %s() called from non-yielding context!\n", __func__);
+		printk(BIOS_ERR, "%s() called from non-yielding context!\n", __func__);
 		return -1;
 	}
 
 	t = get_free_thread();
 
 	if (t == NULL) {
-		printk(BIOS_ERR, "ERROR: %s: No more threads!\n", __func__);
+		printk(BIOS_ERR, "%s: No more threads!\n", __func__);
 		return -1;
 	}
 
diff --git a/src/lib/timestamp.c b/src/lib/timestamp.c
index f8e4ab8..b92975f 100644
--- a/src/lib/timestamp.c
+++ b/src/lib/timestamp.c
@@ -114,7 +114,7 @@
 	tse->entry_stamp = ts_time;
 
 	if (ts_table->num_entries == ts_table->max_entries)
-		printk(BIOS_ERR, "ERROR: Timestamp table full\n");
+		printk(BIOS_ERR, "Timestamp table full\n");
 }
 
 void timestamp_add(enum timestamp_id id, int64_t ts_time)
@@ -127,7 +127,7 @@
 	ts_table = timestamp_table_get();
 
 	if (!ts_table) {
-		printk(BIOS_ERR, "ERROR: No timestamp table found\n");
+		printk(BIOS_ERR, "No timestamp table found\n");
 		return;
 	}
 
@@ -155,7 +155,7 @@
 	ts_cache = timestamp_cache_get();
 
 	if (!ts_cache) {
-		printk(BIOS_ERR, "ERROR: No timestamp cache to init\n");
+		printk(BIOS_ERR, "No timestamp cache to init\n");
 		return;
 	}
 
@@ -170,7 +170,7 @@
 
 	ts_cache_table = timestamp_table_get();
 	if (!ts_cache_table) {
-		printk(BIOS_ERR, "ERROR: No timestamp cache found\n");
+		printk(BIOS_ERR, "No timestamp cache found\n");
 		return;
 	}
 
@@ -223,7 +223,7 @@
 	}
 
 	if (ts_cbmem_table == NULL) {
-		printk(BIOS_ERR, "ERROR: No timestamp table allocated\n");
+		printk(BIOS_ERR, "No timestamp table allocated\n");
 		timestamp_table_set(NULL);
 		return;
 	}
@@ -253,7 +253,7 @@
 
 	/* No timestamp table found */
 	if (ts_table == NULL) {
-		printk(BIOS_ERR, "ERROR: No timestamp table found\n");
+		printk(BIOS_ERR, "No timestamp table found\n");
 		return;
 	}
 
diff --git a/src/mainboard/google/gru/mainboard.c b/src/mainboard/google/gru/mainboard.c
index c177c15..5327771 100644
--- a/src/mainboard/google/gru/mainboard.c
+++ b/src/mainboard/google/gru/mainboard.c
@@ -247,12 +247,12 @@
 static void usb_power_cycle(int port)
 {
 	if (google_chromeec_set_usb_pd_role(port, USB_PD_CTRL_ROLE_FORCE_SINK))
-		printk(BIOS_ERR, "ERROR: Cannot force USB%d PD sink\n", port);
+		printk(BIOS_ERR, "Cannot force USB%d PD sink\n", port);
 
 	mdelay(10);	/* Make sure USB stick is fully depowered. */
 
 	if (google_chromeec_set_usb_pd_role(port, USB_PD_CTRL_ROLE_TOGGLE_ON))
-		printk(BIOS_ERR, "ERROR: Cannot restore USB%d PD mode\n", port);
+		printk(BIOS_ERR, "Cannot restore USB%d PD mode\n", port);
 }
 
 static void setup_usb(int port)
diff --git a/src/mainboard/google/kahlee/OemCustomize.c b/src/mainboard/google/kahlee/OemCustomize.c
index 9f37a46..5ccd181 100644
--- a/src/mainboard/google/kahlee/OemCustomize.c
+++ b/src/mainboard/google/kahlee/OemCustomize.c
@@ -67,7 +67,7 @@
 	const struct soc_amd_stoneyridge_config *cfg;
 	const struct device *dev = pcidev_path_on_root(GNB_DEVFN);
 	if (!dev || !dev->chip_info) {
-		printk(BIOS_WARNING, "Warning: Cannot find SoC devicetree config\n");
+		printk(BIOS_WARNING, "Cannot find SoC devicetree config\n");
 		return;
 	}
 	cfg = dev->chip_info;
diff --git a/src/mainboard/google/kahlee/variants/baseboard/memory.c b/src/mainboard/google/kahlee/variants/baseboard/memory.c
index 4b60a9c..9110187 100644
--- a/src/mainboard/google/kahlee/variants/baseboard/memory.c
+++ b/src/mainboard/google/kahlee/variants/baseboard/memory.c
@@ -29,12 +29,12 @@
 
 	void *spd = (void *)spd_cbfs_map(spd_index);
 	if (!spd) {
-		printk(BIOS_ERR, "Error: spd.bin not found\n");
+		printk(BIOS_ERR, "spd.bin not found\n");
 		return -1;
 	}
 
 	if (len != CONFIG_DIMM_SPD_SIZE) {
-		printk(BIOS_ERR, "Error: spd.bin is not the correct size\n");
+		printk(BIOS_ERR, "spd.bin is not the correct size\n");
 		return -1;
 	}
 
diff --git a/src/mainboard/google/octopus/romstage.c b/src/mainboard/google/octopus/romstage.c
index 8d83609..47daba2 100644
--- a/src/mainboard/google/octopus/romstage.c
+++ b/src/mainboard/google/octopus/romstage.c
@@ -34,7 +34,7 @@
 
 	if (google_chromeec_cbi_get_dram_part_num(&part_num_store[0],
 			ARRAY_SIZE(part_num_store)) < 0)
-		printk(BIOS_ERR, "ERROR: Couldn't obtain DRAM part number from CBI\n");
+		printk(BIOS_ERR, "Couldn't obtain DRAM part number from CBI\n");
 	else
 		part_num = &part_num_store[0];
 
diff --git a/src/mainboard/intel/harcuvar/romstage.c b/src/mainboard/intel/harcuvar/romstage.c
index 027c56e..44551a2 100644
--- a/src/mainboard/intel/harcuvar/romstage.c
+++ b/src/mainboard/intel/harcuvar/romstage.c
@@ -88,7 +88,7 @@
 	}
 
 	if ((!table) || (!num)) {
-		printk(BIOS_ERR, "ERROR: No valid GPIO table found!\n");
+		printk(BIOS_ERR, "No valid GPIO table found!\n");
 		return;
 	}
 
diff --git a/src/mainboard/scaleway/tagada/romstage.c b/src/mainboard/scaleway/tagada/romstage.c
index f041b6f..e64356e 100644
--- a/src/mainboard/scaleway/tagada/romstage.c
+++ b/src/mainboard/scaleway/tagada/romstage.c
@@ -25,7 +25,7 @@
 	num = ARRAY_SIZE(tagada_gpio_config);
 
 	if ((!table) || (!num)) {
-		printk(BIOS_ERR, "ERROR: No valid GPIO table found!\n");
+		printk(BIOS_ERR, "No valid GPIO table found!\n");
 		return;
 	}
 
diff --git a/src/northbridge/amd/agesa/family14/northbridge.c b/src/northbridge/amd/agesa/family14/northbridge.c
index 4b4ab67..2d9597e 100644
--- a/src/northbridge/amd/agesa/family14/northbridge.c
+++ b/src/northbridge/amd/agesa/family14/northbridge.c
@@ -625,7 +625,7 @@
 	/* There is only one node for fam14, but there may be multiple cores. */
 	cpu = pcidev_on_root(0x18, 0);
 	if (!cpu)
-		printk(BIOS_ERR, "ERROR: %02x:%02x.0 not found", 0, 0x18);
+		printk(BIOS_ERR, "%02x:%02x.0 not found", 0, 0x18);
 
 	cores_found = (pci_read_config32(pcidev_on_root(0x18, 0x3),
 					0xe8) >> 12) & 3;
diff --git a/src/northbridge/intel/gm45/raminit.c b/src/northbridge/intel/gm45/raminit.c
index e7663b9..6e505da 100644
--- a/src/northbridge/intel/gm45/raminit.c
+++ b/src/northbridge/intel/gm45/raminit.c
@@ -195,8 +195,7 @@
 
 	if (reg8 & (1 << 2)) { /* S4-assertion-width violation */
 		/* Ignore S4-assertion-width violation like original BIOS. */
-		printk(BIOS_WARNING,
-			"WARNING: Ignoring S4-assertion-width violation.\n");
+		printk(BIOS_WARNING, "Ignoring S4-assertion-width violation.\n");
 		/* Bit2 is R/WC, so it will clear itself below. */
 	}
 
diff --git a/src/northbridge/intel/i945/gma.c b/src/northbridge/intel/i945/gma.c
index 99d3c21..d094a67 100644
--- a/src/northbridge/intel/i945/gma.c
+++ b/src/northbridge/intel/i945/gma.c
@@ -328,7 +328,7 @@
 	write32(mmiobase + EIR, 0xffffffff);
 
 	if (gtt_setup(mmiobase)) {
-		printk(BIOS_ERR, "ERROR: GTT Setup Failed!!!\n");
+		printk(BIOS_ERR, "GTT Setup Failed!!!\n");
 		return 0;
 	}
 
@@ -352,7 +352,7 @@
 	if (temp & 1)
 		printk(BIOS_INFO, "GTT Enabled\n");
 	else
-		printk(BIOS_ERR, "ERROR: GTT is still Disabled!!!\n");
+		printk(BIOS_ERR, "GTT is still Disabled!!!\n");
 
 	if (CONFIG(LINEAR_FRAMEBUFFER)) {
 		printk(BIOS_SPEW, "memset %p to 0x00 for %d bytes\n",
diff --git a/src/northbridge/intel/sandybridge/common.c b/src/northbridge/intel/sandybridge/common.c
index 5cd49cc..a8f718c 100644
--- a/src/northbridge/intel/sandybridge/common.c
+++ b/src/northbridge/intel/sandybridge/common.c
@@ -9,7 +9,7 @@
 {
 	const int id = get_platform_id();
 	if (id != 1 && id != 4)
-		printk(BIOS_WARNING, "WARN: Unknown platform id 0x%x\n", id);
+		printk(BIOS_WARNING, "Unknown platform id 0x%x\n", id);
 
 	return (id == 4) ? PLATFORM_MOBILE : PLATFORM_DESKTOP_SERVER;
 }
diff --git a/src/security/tpm/tss/tcg-2.0/tss_marshaling.c b/src/security/tpm/tss/tcg-2.0/tss_marshaling.c
index 83fff5f..ae62304 100644
--- a/src/security/tpm/tss/tcg-2.0/tss_marshaling.c
+++ b/src/security/tpm/tss/tcg-2.0/tss_marshaling.c
@@ -680,7 +680,7 @@
 		return NULL;
 	}
 	if (rc)
-		printk(BIOS_WARNING, "Warning: %s had one or more failures.\n",
+		printk(BIOS_WARNING, "%s had one or more failures.\n",
 					__func__);
 
 	/* The entire message have been parsed. */
diff --git a/src/soc/amd/cezanne/data_fabric.c b/src/soc/amd/cezanne/data_fabric.c
index 2a13d20..97cff28 100644
--- a/src/soc/amd/cezanne/data_fabric.c
+++ b/src/soc/amd/cezanne/data_fabric.c
@@ -66,8 +66,7 @@
 				/* Although a pair could be freed later, this condition is
 				 * very unusual and deserves analysis.  Flag an error and
 				 * leave the topmost part unconfigured. */
-				printk(BIOS_ERR,
-				       "Error: Not enough NB MMIO routing registers\n");
+				printk(BIOS_ERR, "Not enough NB MMIO routing registers\n");
 				continue;
 			}
 			data_fabric_broadcast_write32(0, NB_MMIO_BASE(reg), np_top + 1);
@@ -85,7 +84,7 @@
 
 	reg = data_fabric_find_unused_mmio_reg();
 	if (reg < 0) {
-		printk(BIOS_ERR, "Error: cannot configure region as NP\n");
+		printk(BIOS_ERR, "cannot configure region as NP\n");
 		return;
 	}
 
diff --git a/src/soc/amd/cezanne/i2c.c b/src/soc/amd/cezanne/i2c.c
index bf47b81..ae49a06 100644
--- a/src/soc/amd/cezanne/i2c.c
+++ b/src/soc/amd/cezanne/i2c.c
@@ -24,7 +24,7 @@
 void i2c_set_bar(unsigned int bus, uintptr_t bar)
 {
 	if (bus >= ARRAY_SIZE(i2c_ctrlr)) {
-		printk(BIOS_ERR, "Error: i2c index out of bounds: %u.", bus);
+		printk(BIOS_ERR, "i2c index out of bounds: %u.", bus);
 		return;
 	}
 
diff --git a/src/soc/amd/cezanne/root_complex.c b/src/soc/amd/cezanne/root_complex.c
index f101680..dde59d4 100644
--- a/src/soc/amd/cezanne/root_complex.c
+++ b/src/soc/amd/cezanne/root_complex.c
@@ -141,7 +141,7 @@
 	mmconf_resource(dev, MMIO_CONF_BASE);
 
 	if (!hob) {
-		printk(BIOS_ERR, "Error: %s incomplete because no HOB list was found\n",
+		printk(BIOS_ERR, "%s incomplete because no HOB list was found\n",
 				__func__);
 		return;
 	}
@@ -163,7 +163,7 @@
 		else if (res->type == EFI_RESOURCE_MEMORY_RESERVED)
 			reserved_ram_resource(dev, idx++, res->addr / KiB, res->length / KiB);
 		else
-			printk(BIOS_ERR, "Error: failed to set resources for type %d\n",
+			printk(BIOS_ERR, "failed to set resources for type %d\n",
 					res->type);
 	}
 
diff --git a/src/soc/amd/cezanne/smihandler.c b/src/soc/amd/cezanne/smihandler.c
index 2549ef8..509a1d4 100644
--- a/src/soc/amd/cezanne/smihandler.c
+++ b/src/soc/amd/cezanne/smihandler.c
@@ -121,7 +121,7 @@
 			psp_notify_sx_info(ACPI_S3);
 
 		smu_sx_entry(); /* Leave SlpTypeEn clear, SMU will set */
-		printk(BIOS_ERR, "Error: System did not go to sleep\n");
+		printk(BIOS_ERR, "System did not go to sleep\n");
 		hlt();
 	}
 }
diff --git a/src/soc/amd/common/block/acpi/bert.c b/src/soc/amd/common/block/acpi/bert.c
index 968c9a6..f20a454 100644
--- a/src/soc/amd/common/block/acpi/bert.c
+++ b/src/soc/amd/common/block/acpi/bert.c
@@ -17,7 +17,7 @@
 
 	bert_errors_region(region, length);
 	if (!*region) {
-		printk(BIOS_ERR, "Error: Can't find BERT storage area\n");
+		printk(BIOS_ERR, "Can't find BERT storage area\n");
 		return CB_ERR;
 	}
 
diff --git a/src/soc/amd/common/block/acpi/gpio.c b/src/soc/amd/common/block/acpi/gpio.c
index b5167b8..c4e3801 100644
--- a/src/soc/amd/common/block/acpi/gpio.c
+++ b/src/soc/amd/common/block/acpi/gpio.c
@@ -7,13 +7,13 @@
 static int acpigen_soc_gpio_op(const char *op, unsigned int gpio_num)
 {
 	if (gpio_num >= SOC_GPIO_TOTAL_PINS) {
-		printk(BIOS_WARNING, "Warning: Pin %d should be smaller than"
+		printk(BIOS_WARNING, "Pin %d should be smaller than"
 					" %d\n", gpio_num, SOC_GPIO_TOTAL_PINS);
 		return -1;
 	}
 	if (SOC_GPIO_TOTAL_PINS >= AMD_GPIO_FIRST_REMOTE_GPIO_NUMBER &&
 			gpio_num >= SOC_GPIO_TOTAL_PINS) {
-		printk(BIOS_WARNING, "Warning: Pin %d is a remote GPIO which isn't supported"
+		printk(BIOS_WARNING, "Pin %d is a remote GPIO which isn't supported"
 			" yet.\n", gpio_num);
 		return -1;
 	}
@@ -26,13 +26,13 @@
 static int acpigen_soc_get_gpio_state(const char *op, unsigned int gpio_num)
 {
 	if (gpio_num >= SOC_GPIO_TOTAL_PINS) {
-		printk(BIOS_WARNING, "Warning: Pin %d should be smaller than"
+		printk(BIOS_WARNING, "Pin %d should be smaller than"
 					" %d\n", gpio_num, SOC_GPIO_TOTAL_PINS);
 		return -1;
 	}
 	if (SOC_GPIO_TOTAL_PINS >= AMD_GPIO_FIRST_REMOTE_GPIO_NUMBER &&
 			gpio_num >= SOC_GPIO_TOTAL_PINS) {
-		printk(BIOS_WARNING, "Warning: Pin %d is a remote GPIO which isn't supported"
+		printk(BIOS_WARNING, "Pin %d is a remote GPIO which isn't supported"
 			" yet.\n", gpio_num);
 		return -1;
 	}
diff --git a/src/soc/amd/common/block/apob/apob_cache.c b/src/soc/amd/common/block/apob/apob_cache.c
index d538207..bdacd81 100644
--- a/src/soc/amd/common/block/apob/apob_cache.c
+++ b/src/soc/amd/common/block/apob/apob_cache.c
@@ -67,7 +67,7 @@
 static int get_nv_rdev(struct region_device *r)
 {
 	if  (fmap_locate_area_as_rdev(DEFAULT_MRC_CACHE, r) < 0) {
-		printk(BIOS_ERR, "Error: No APOB NV region is found in flash\n");
+		printk(BIOS_ERR, "No APOB NV region is found in flash\n");
 		return -1;
 	}
 
@@ -180,7 +180,7 @@
 		region_device_offset(&read_rdev), region_device_sz(&read_rdev));
 
 	if  (fmap_locate_area_as_rdev_rw(DEFAULT_MRC_CACHE, &write_rdev) < 0) {
-		printk(BIOS_ERR, "Error: No RW APOB NV region is found in flash\n");
+		printk(BIOS_ERR, "No RW APOB NV region is found in flash\n");
 		return;
 	}
 
@@ -188,14 +188,14 @@
 
 	/* write data to flash region */
 	if (rdev_eraseat(&write_rdev, 0, DEFAULT_MRC_CACHE_SIZE) < 0) {
-		printk(BIOS_ERR, "Error: APOB flash region erase failed\n");
+		printk(BIOS_ERR, "APOB flash region erase failed\n");
 		return;
 	}
 
 	timestamp_add_now(TS_AMD_APOB_WRITE_START);
 
 	if (rdev_writeat(&write_rdev, apob_src_ram, 0, apob_src_ram->size) < 0) {
-		printk(BIOS_ERR, "Error: APOB flash region update failed\n");
+		printk(BIOS_ERR, "APOB flash region update failed\n");
 		return;
 	}
 
diff --git a/src/soc/amd/common/block/cpu/mca/mca_bert.c b/src/soc/amd/common/block/cpu/mca/mca_bert.c
index 93d5749..5ec68e5 100644
--- a/src/soc/amd/common/block/cpu/mca/mca_bert.c
+++ b/src/soc/amd/common/block/cpu/mca/mca_bert.c
@@ -91,5 +91,5 @@
 
 failed:
 	/* We're here because of a hardware error, don't break something else */
-	printk(BIOS_ERR, "Error: Not enough room in BERT region for Machine Check error\n");
+	printk(BIOS_ERR, "Not enough room in BERT region for Machine Check error\n");
 }
diff --git a/src/soc/amd/common/block/cpu/mca/mcax_bert.c b/src/soc/amd/common/block/cpu/mca/mcax_bert.c
index 8d864e8..af2bee4 100644
--- a/src/soc/amd/common/block/cpu/mca/mcax_bert.c
+++ b/src/soc/amd/common/block/cpu/mca/mcax_bert.c
@@ -91,5 +91,5 @@
 
 failed:
 	/* We're here because of a hardware error, don't break something else */
-	printk(BIOS_ERR, "Error: Not enough room in BERT region for Machine Check error\n");
+	printk(BIOS_ERR, "Not enough room in BERT region for Machine Check error\n");
 }
diff --git a/src/soc/amd/common/block/cpu/noncar/memmap.c b/src/soc/amd/common/block/cpu/noncar/memmap.c
index 325e36b..8f37f1a 100644
--- a/src/soc/amd/common/block/cpu/noncar/memmap.c
+++ b/src/soc/amd/common/block/cpu/noncar/memmap.c
@@ -47,7 +47,7 @@
 	status = fsp_find_range_hob(&tseg, AMD_FSP_TSEG_HOB_GUID.b);
 
 	if (status < 0) {
-		printk(BIOS_ERR, "Error: unable to find TSEG HOB\n");
+		printk(BIOS_ERR, "unable to find TSEG HOB\n");
 		return;
 	}
 
diff --git a/src/soc/amd/common/block/cpu/smm/smm_helper.c b/src/soc/amd/common/block/cpu/smm/smm_helper.c
index bf01b8b..ce80f16 100644
--- a/src/soc/amd/common/block/cpu/smm/smm_helper.c
+++ b/src/soc/amd/common/block/cpu/smm/smm_helper.c
@@ -19,7 +19,7 @@
 		if (!tvalid) /* not valid but locked means still accessible */
 			return;
 
-		printk(BIOS_ERR, "Error: can't clear TValid, already locked\n");
+		printk(BIOS_ERR, "can't clear TValid, already locked\n");
 		return;
 	}
 
diff --git a/src/soc/amd/common/block/gpio/gpio.c b/src/soc/amd/common/block/gpio/gpio.c
index 163de2d..bc3bcab 100644
--- a/src/soc/amd/common/block/gpio/gpio.c
+++ b/src/soc/amd/common/block/gpio/gpio.c
@@ -85,7 +85,7 @@
 	uint8_t level;
 
 	if (!is_gpio_event_level_triggered(flags)) {
-		printk(BIOS_ERR, "ERROR: %s - Only level trigger allowed for SMI!\n", __func__);
+		printk(BIOS_ERR, "%s - Only level trigger allowed for SMI!\n", __func__);
 		BUG();
 		return;
 	}
@@ -247,7 +247,7 @@
 
 	gevent_num = get_gpio_gevent(g->gpio, gev_tbl, gev_items);
 	if (gevent_num < 0) {
-		printk(BIOS_WARNING, "Warning: GPIO pin %d has no associated gevent!\n",
+		printk(BIOS_WARNING, "GPIO pin %d has no associated gevent!\n",
 				     g->gpio);
 		return;
 	}
diff --git a/src/soc/amd/common/block/lpc/espi_util.c b/src/soc/amd/common/block/lpc/espi_util.c
index ae742c5..c1d0a57 100644
--- a/src/soc/amd/common/block/lpc/espi_util.c
+++ b/src/soc/amd/common/block/lpc/espi_util.c
@@ -187,7 +187,7 @@
 		if (idx == -1) {
 			printk(BIOS_ERR, "Cannot open IO window base %x size %zx\n", base,
 			       size);
-			printk(BIOS_ERR, "ERROR: No more available IO windows!\n");
+			printk(BIOS_ERR, "No more available IO windows!\n");
 			return CB_ERR;
 		}
 
@@ -279,7 +279,7 @@
 		if (idx == -1) {
 			printk(BIOS_ERR, "Cannot open IO window base %x size %zx\n", base,
 			       size);
-			printk(BIOS_ERR, "ERROR: No more available MMIO windows!\n");
+			printk(BIOS_ERR, "No more available MMIO windows!\n");
 			return CB_ERR;
 		}
 
@@ -418,7 +418,7 @@
 			return CB_SUCCESS;
 	} while (!stopwatch_expired(&sw));
 
-	printk(BIOS_ERR, "Error: eSPI timed out waiting for status update.\n");
+	printk(BIOS_ERR, "eSPI timed out waiting for status update.\n");
 
 	return CB_ERR;
 }
@@ -609,7 +609,7 @@
 			*ctrlr_config |= ESPI_IO_MODE_QUAD;
 			break;
 		}
-		printk(BIOS_ERR, "Error: eSPI Quad I/O not supported. Dropping to dual mode.\n");
+		printk(BIOS_ERR, "eSPI Quad I/O not supported. Dropping to dual mode.\n");
 		/* Intentional fall-through */
 	case ESPI_IO_MODE_DUAL:
 		if (espi_slave_supports_dual_io(slave_caps)) {
@@ -617,8 +617,7 @@
 			*ctrlr_config |= ESPI_IO_MODE_DUAL;
 			break;
 		}
-		printk(BIOS_ERR,
-		       "Error: eSPI Dual I/O not supported. Dropping to single mode.\n");
+		printk(BIOS_ERR, "eSPI Dual I/O not supported. Dropping to single mode.\n");
 		/* Intentional fall-through */
 	case ESPI_IO_MODE_SINGLE:
 		/* Single I/O mode is always supported. */
@@ -642,7 +641,7 @@
 			*ctrlr_config |= ESPI_OP_FREQ_66_MHZ;
 			break;
 		}
-		printk(BIOS_ERR, "Error: eSPI 66MHz not supported. Dropping to 33MHz.\n");
+		printk(BIOS_ERR, "eSPI 66MHz not supported. Dropping to 33MHz.\n");
 		/* Intentional fall-through */
 	case ESPI_OP_FREQ_33_MHZ:
 		if (slave_max_speed_mhz >= 33) {
@@ -650,7 +649,7 @@
 			*ctrlr_config |= ESPI_OP_FREQ_33_MHZ;
 			break;
 		}
-		printk(BIOS_ERR, "Error: eSPI 33MHz not supported. Dropping to 16MHz.\n");
+		printk(BIOS_ERR, "eSPI 33MHz not supported. Dropping to 16MHz.\n");
 		/* Intentional fall-through */
 	case ESPI_OP_FREQ_16_MHZ:
 		/*
@@ -732,7 +731,7 @@
 			return CB_SUCCESS;
 	} while (!stopwatch_expired(&sw));
 
-	printk(BIOS_ERR, "Error: Channel is not ready after %d usec (slave addr: 0x%x)\n",
+	printk(BIOS_ERR, "Channel is not ready after %d usec (slave addr: 0x%x)\n",
 	       ESPI_CH_READY_TIMEOUT_US, slave_reg_addr);
 	return CB_ERR;
 
@@ -777,7 +776,7 @@
 		return CB_SUCCESS;
 
 	if (!espi_slave_supports_vw_channel(slave_caps)) {
-		printk(BIOS_ERR, "Error: eSPI slave doesn't support VW channel!\n");
+		printk(BIOS_ERR, "eSPI slave doesn't support VW channel!\n");
 		return CB_ERR;
 	}
 
@@ -812,7 +811,7 @@
 	 */
 	if (mb_cfg->periph_ch_en) {
 		if (!espi_slave_supports_periph_channel(slave_caps)) {
-			printk(BIOS_ERR, "Error: eSPI slave doesn't support periph channel!\n");
+			printk(BIOS_ERR, "eSPI slave doesn't support periph channel!\n");
 			return CB_ERR;
 		}
 		slave_config |= slave_en_mask;
@@ -834,7 +833,7 @@
 		return CB_SUCCESS;
 
 	if (!espi_slave_supports_oob_channel(slave_caps)) {
-		printk(BIOS_ERR, "Error: eSPI slave doesn't support OOB channel!\n");
+		printk(BIOS_ERR, "eSPI slave doesn't support OOB channel!\n");
 		return CB_ERR;
 	}
 
@@ -856,7 +855,7 @@
 		return CB_SUCCESS;
 
 	if (!espi_slave_supports_flash_channel(slave_caps)) {
-		printk(BIOS_ERR, "Error: eSPI slave doesn't support flash channel!\n");
+		printk(BIOS_ERR, "eSPI slave doesn't support flash channel!\n");
 		return CB_ERR;
 	}
 
@@ -928,7 +927,7 @@
 	 * The resets affects both host and slave devices, so set initial config again.
 	 */
 	if (espi_send_reset() != CB_SUCCESS) {
-		printk(BIOS_ERR, "Error: In-band reset failed!\n");
+		printk(BIOS_ERR, "In-band reset failed!\n");
 		return CB_ERR;
 	}
 	espi_set_initial_config(cfg);
@@ -938,7 +937,7 @@
 	 * Get configuration of slave device.
 	 */
 	if (espi_get_general_configuration(&slave_caps) != CB_SUCCESS) {
-		printk(BIOS_ERR, "Error: Slave GET_CONFIGURATION failed!\n");
+		printk(BIOS_ERR, "Slave GET_CONFIGURATION failed!\n");
 		return CB_ERR;
 	}
 
@@ -948,7 +947,7 @@
 	 * Step 5: Set host slave config
 	 */
 	if (espi_set_general_configuration(cfg, slave_caps) != CB_SUCCESS) {
-		printk(BIOS_ERR, "Error: Slave SET_CONFIGURATION failed!\n");
+		printk(BIOS_ERR, "Slave SET_CONFIGURATION failed!\n");
 		return CB_ERR;
 	}
 
@@ -964,39 +963,39 @@
 	 */
 	/* Set up VW first so we can deassert PLTRST#. */
 	if (espi_setup_vw_channel(cfg, slave_caps) != CB_SUCCESS) {
-		printk(BIOS_ERR, "Error: Setup VW channel failed!\n");
+		printk(BIOS_ERR, "Setup VW channel failed!\n");
 		return CB_ERR;
 	}
 
 	/* Assert PLTRST# if VW channel is enabled by mainboard. */
 	if (espi_send_pltrst(cfg, true) != CB_SUCCESS) {
-		printk(BIOS_ERR, "Error: PLTRST# assertion failed!\n");
+		printk(BIOS_ERR, "PLTRST# assertion failed!\n");
 		return CB_ERR;
 	}
 
 	/* De-assert PLTRST# if VW channel is enabled by mainboard. */
 	if (espi_send_pltrst(cfg, false) != CB_SUCCESS) {
-		printk(BIOS_ERR, "Error: PLTRST# deassertion failed!\n");
+		printk(BIOS_ERR, "PLTRST# deassertion failed!\n");
 		return CB_ERR;
 	}
 
 	if (espi_setup_periph_channel(cfg, slave_caps) != CB_SUCCESS) {
-		printk(BIOS_ERR, "Error: Setup Periph channel failed!\n");
+		printk(BIOS_ERR, "Setup Periph channel failed!\n");
 		return CB_ERR;
 	}
 
 	if (espi_setup_oob_channel(cfg, slave_caps) != CB_SUCCESS) {
-		printk(BIOS_ERR, "Error: Setup OOB channel failed!\n");
+		printk(BIOS_ERR, "Setup OOB channel failed!\n");
 		return CB_ERR;
 	}
 
 	if (espi_setup_flash_channel(cfg, slave_caps) != CB_SUCCESS) {
-		printk(BIOS_ERR, "Error: Setup Flash channel failed!\n");
+		printk(BIOS_ERR, "Setup Flash channel failed!\n");
 		return CB_ERR;
 	}
 
 	if (espi_configure_decodes(cfg) != CB_SUCCESS) {
-		printk(BIOS_ERR, "Error: Configuring decodes failed!\n");
+		printk(BIOS_ERR, "Configuring decodes failed!\n");
 		return CB_ERR;
 	}
 
diff --git a/src/soc/amd/common/block/lpc/spi_dma.c b/src/soc/amd/common/block/lpc/spi_dma.c
index 2c183ee..97ba2be 100644
--- a/src/soc/amd/common/block/lpc/spi_dma.c
+++ b/src/soc/amd/common/block/lpc/spi_dma.c
@@ -147,8 +147,7 @@
 	thread_mutex_unlock(&spi_hw_mutex);
 
 	if (spi_dma_has_error()) {
-		printk(BIOS_ERR,
-		       "ERROR: SPI DMA failure: dest: %p, source: %#zx, size: %zu\n",
+		printk(BIOS_ERR, "SPI DMA failure: dest: %p, source: %#zx, size: %zu\n",
 		       transaction->destination, transaction->source,
 		       transaction->transfer_size);
 		return false;
diff --git a/src/soc/amd/common/block/pci/amd_pci_util.c b/src/soc/amd/common/block/pci/amd_pci_util.c
index 9c80ef8..6c5565f 100644
--- a/src/soc/amd/common/block/pci/amd_pci_util.c
+++ b/src/soc/amd/common/block/pci/amd_pci_util.c
@@ -97,7 +97,7 @@
 
 	idx_name = sb_get_apic_reg_association(&limit);
 	if (pirq_data_ptr == NULL) {
-		printk(BIOS_WARNING, "Warning: Can't write PCI IRQ assignments"
+		printk(BIOS_WARNING, "Can't write PCI IRQ assignments"
 				" because 'mainboard_pirq_data' structure does"
 				" not exist\n");
 		return;
diff --git a/src/soc/amd/common/block/pm/pmlib.c b/src/soc/amd/common/block/pm/pmlib.c
index f1b0b27..5ce6b7b 100644
--- a/src/soc/amd/common/block/pm/pmlib.c
+++ b/src/soc/amd/common/block/pm/pmlib.c
@@ -31,7 +31,7 @@
 		pwr_fail |= PWR_FAIL_PREV;
 		break;
 	default:
-		printk(BIOS_WARNING, "WARNING: Unknown power-failure state: %d\n",
+		printk(BIOS_WARNING, "Unknown power-failure state: %d\n",
 						CONFIG_MAINBOARD_POWER_FAILURE_STATE);
 		pwr_fail |= PWR_FAIL_OFF;
 		break;
diff --git a/src/soc/amd/common/block/smu/smu.c b/src/soc/amd/common/block/smu/smu.c
index f48a9d5..d68867c 100644
--- a/src/soc/amd/common/block/smu/smu.c
+++ b/src/soc/amd/common/block/smu/smu.c
@@ -29,7 +29,7 @@
 		}
 	} while (!stopwatch_expired(&sw));
 
-	printk(BIOS_ERR, "Error: timeout sending SMU message\n");
+	printk(BIOS_ERR, "timeout sending SMU message\n");
 	return SMU_MESG_RESP_TIMEOUT;
 }
 
diff --git a/src/soc/amd/common/fsp/dmi.c b/src/soc/amd/common/fsp/dmi.c
index b96b047..64a5685 100644
--- a/src/soc/amd/common/fsp/dmi.c
+++ b/src/soc/amd/common/fsp/dmi.c
@@ -28,7 +28,7 @@
 	case MEMORY_TYPE_LPDDR4:
 		return lpddr4_speed_mhz_to_reported_mts(speed);
 	default:
-		printk(BIOS_ERR, "ERROR: Unknown memory type %x", ddr_type);
+		printk(BIOS_ERR, "Unknown memory type %x", ddr_type);
 		return 0;
 	}
 }
diff --git a/src/soc/amd/common/fsp/fsp_reset.c b/src/soc/amd/common/fsp/fsp_reset.c
index 62480bf..0a89dc7 100644
--- a/src/soc/amd/common/fsp/fsp_reset.c
+++ b/src/soc/amd/common/fsp/fsp_reset.c
@@ -8,7 +8,7 @@
 
 void chipset_handle_reset(uint32_t status)
 {
-	printk(BIOS_ERR, "Error: unexpected call to %s(0x%08x).  Doing cold reset.\n",
+	printk(BIOS_ERR, "unexpected call to %s(0x%08x).  Doing cold reset.\n",
 			__func__, status);
 	BUG();
 	do_cold_reset();
diff --git a/src/soc/amd/common/fsp/pci/pci_routing_info.c b/src/soc/amd/common/fsp/pci/pci_routing_info.c
index 2ea8dfc..5e3c368 100644
--- a/src/soc/amd/common/fsp/pci/pci_routing_info.c
+++ b/src/soc/amd/common/fsp/pci/pci_routing_info.c
@@ -26,7 +26,7 @@
 						       &hob_size);
 
 	if (routing_hob == NULL || hob_size == 0 || routing_hob->num_of_entries == 0) {
-		printk(BIOS_ERR, "ERROR: Couldn't find valid PCIe interrupt routing HOB.\n");
+		printk(BIOS_ERR, "Couldn't find valid PCIe interrupt routing HOB.\n");
 		return NULL;
 	}
 
diff --git a/src/soc/amd/common/pi/agesawrapper.c b/src/soc/amd/common/pi/agesawrapper.c
index 1859801..8ee962b 100644
--- a/src/soc/amd/common/pi/agesawrapper.c
+++ b/src/soc/amd/common/pi/agesawrapper.c
@@ -78,7 +78,7 @@
 	status = module_dispatch(AMD_CREATE_STRUCT, &aip->StdHeader);
 
 	if (status != AGESA_SUCCESS) {
-		printk(BIOS_ERR, "Error: AmdCreateStruct() for 0x%x returned 0x%x. "
+		printk(BIOS_ERR, "AmdCreateStruct() for 0x%x returned 0x%x. "
 				"Proper system initialization may not be possible.\n",
 				aip->AgesaFunctionName, status);
 	}
diff --git a/src/soc/amd/common/pi/def_callouts.c b/src/soc/amd/common/pi/def_callouts.c
index 0d799b9..414de6f 100644
--- a/src/soc/amd/common/pi/def_callouts.c
+++ b/src/soc/amd/common/pi/def_callouts.c
@@ -72,7 +72,7 @@
 	}
 
 	if (i >= BiosCalloutsLen) {
-		printk(BIOS_ERR, "ERROR: AGESA Callout Not Supported: 0x%x\n",
+		printk(BIOS_ERR, "AGESA Callout Not Supported: 0x%x\n",
 			(u32)Func);
 		return AGESA_UNSUPPORTED;
 	}
diff --git a/src/soc/amd/common/pi/s3_resume.c b/src/soc/amd/common/pi/s3_resume.c
index 2094931..b7df396 100644
--- a/src/soc/amd/common/pi/s3_resume.c
+++ b/src/soc/amd/common/pi/s3_resume.c
@@ -53,7 +53,7 @@
 
 	stage_cache_get_raw(STAGE_S3_DATA, &base, &size);
 	if (!base || !size) {
-		printk(BIOS_ERR, "Error: S3 volatile data not found\n");
+		printk(BIOS_ERR, "S3 volatile data not found\n");
 		return AGESA_FATAL;
 	}
 
diff --git a/src/soc/amd/common/psp_verstage/psp_verstage.c b/src/soc/amd/common/psp_verstage/psp_verstage.c
index 9f34700..30dc115 100644
--- a/src/soc/amd/common/psp_verstage/psp_verstage.c
+++ b/src/soc/amd/common/psp_verstage/psp_verstage.c
@@ -100,12 +100,12 @@
 
 	amdfw_location = cbfs_map(fname, NULL);
 	if (!amdfw_location) {
-		printk(BIOS_ERR, "Error: AMD Firmware table not found.\n");
+		printk(BIOS_ERR, "AMD Firmware table not found.\n");
 		return POSTCODE_AMD_FW_MISSING;
 	}
 	ef_table = (struct embedded_firmware *)amdfw_location;
 	if (ef_table->signature != EMBEDDED_FW_SIGNATURE) {
-		printk(BIOS_ERR, "Error: ROMSIG address is not correct.\n");
+		printk(BIOS_ERR, "ROMSIG address is not correct.\n");
 		return POSTCODE_ROMSIG_MISMATCH_ERROR;
 	}
 
@@ -116,11 +116,11 @@
 	bios_dir_in_spi = (uint32_t *)((bios_dir_addr & SPI_ADDR_MASK) +
 			(uint32_t)boot_dev_base);
 	if (*psp_dir_in_spi != PSP_COOKIE) {
-		printk(BIOS_ERR, "Error: PSP Directory address is not correct.\n");
+		printk(BIOS_ERR, "PSP Directory address is not correct.\n");
 		return POSTCODE_PSP_COOKIE_MISMATCH_ERROR;
 	}
 	if (*bios_dir_in_spi != BDT1_COOKIE) {
-		printk(BIOS_ERR, "Error: BIOS Directory address is not correct.\n");
+		printk(BIOS_ERR, "BIOS Directory address is not correct.\n");
 		return POSTCODE_BDT1_COOKIE_MISMATCH_ERROR;
 	}
 
@@ -131,7 +131,7 @@
 	}
 
 	if (update_psp_bios_dir(&psp_dir_addr, &bios_dir_addr)) {
-		printk(BIOS_ERR, "Error: Updated BIOS Directory could not be set.\n");
+		printk(BIOS_ERR, "Updated BIOS Directory could not be set.\n");
 		return POSTCODE_UPDATE_PSP_BIOS_DIR_ERROR;
 	}
 
@@ -183,7 +183,7 @@
 	}
 
 	if (buffer_size > max_buffer_size) {
-		printk(BIOS_ERR, "Error: Buffer is larger than max buffer size.\n");
+		printk(BIOS_ERR, "Buffer is larger than max buffer size.\n");
 		post_code(POSTCODE_WORKBUF_BUFFER_SIZE_ERROR);
 		return POSTCODE_WORKBUF_BUFFER_SIZE_ERROR;
 	}
@@ -198,7 +198,7 @@
 
 	retval = save_uapp_data((void *)_transfer_buffer, buffer_size);
 	if (retval) {
-		printk(BIOS_ERR, "Error: Could not save workbuf. Error code 0x%08x\n", retval);
+		printk(BIOS_ERR, "Could not save workbuf. Error code 0x%08x\n", retval);
 		return POSTCODE_WORKBUF_SAVE_ERROR;
 	}
 
diff --git a/src/soc/amd/common/psp_verstage/vboot_crypto.c b/src/soc/amd/common/psp_verstage/vboot_crypto.c
index 581d924..d872678 100644
--- a/src/soc/amd/common/psp_verstage/vboot_crypto.c
+++ b/src/soc/amd/common/psp_verstage/vboot_crypto.c
@@ -50,7 +50,7 @@
 	sha_op.Data = (uint8_t *) buf;
 
 	if (!sha_op_size_remaining) {
-		printk(BIOS_ERR, "ERROR: got more data than expected.\n");
+		printk(BIOS_ERR, "got more data than expected.\n");
 		return VB2_ERROR_UNKNOWN;
 	}
 
@@ -65,7 +65,7 @@
 
 		retval = svc_crypto_sha(&sha_op, SHA_GENERIC);
 		if (retval) {
-			printk(BIOS_ERR, "ERROR: HW crypto failed - errorcode: %#x\n",
+			printk(BIOS_ERR, "HW crypto failed - errorcode: %#x\n",
 					retval);
 			return VB2_ERROR_UNKNOWN;
 		}
@@ -84,12 +84,12 @@
 vb2_error_t vb2ex_hwcrypto_digest_finalize(uint8_t *digest, uint32_t digest_size)
 {
 	if (sha_op.Eom == 0) {
-		printk(BIOS_ERR, "ERROR: Got less data than expected.\n");
+		printk(BIOS_ERR, "Got less data than expected.\n");
 		return VB2_ERROR_UNKNOWN;
 	}
 
 	if (digest_size != sha_op.DigestLen) {
-		printk(BIOS_ERR, "ERROR: Digest size does not match expected length.\n");
+		printk(BIOS_ERR, "Digest size does not match expected length.\n");
 		return VB2_ERROR_UNKNOWN;
 	}
 
@@ -134,7 +134,7 @@
 
 	retval = svc_modexp(&mod_exp_param);
 	if (retval) {
-		printk(BIOS_ERR, "ERROR: HW crypto failed - errorcode: %#x\n",
+		printk(BIOS_ERR, "HW crypto failed - errorcode: %#x\n",
 				retval);
 		return VB2_ERROR_EX_HWCRYPTO_UNSUPPORTED;
 	}
diff --git a/src/soc/amd/common/vboot/vboot_bootblock.c b/src/soc/amd/common/vboot/vboot_bootblock.c
index 9d1d347..e3705d1 100644
--- a/src/soc/amd/common/vboot/vboot_bootblock.c
+++ b/src/soc/amd/common/vboot/vboot_bootblock.c
@@ -35,7 +35,7 @@
 			CMOS_RECOVERY_MAGIC_VAL)
 		die("Error: Reboot into recovery was unsuccessful.  Halting.");
 
-	printk(BIOS_ERR, "ERROR: VBOOT workbuf not valid.\n");
+	printk(BIOS_ERR, "VBOOT workbuf not valid.\n");
 	printk(BIOS_DEBUG, "Signature: %#08x\n", *(uint32_t *)_vboot2_work);
 	cmos_init(0);
 	cmos_write(CMOS_RECOVERY_MAGIC_VAL, CMOS_RECOVERY_BYTE);
diff --git a/src/soc/amd/picasso/data_fabric.c b/src/soc/amd/picasso/data_fabric.c
index aec8a9e..f8204ff 100644
--- a/src/soc/amd/picasso/data_fabric.c
+++ b/src/soc/amd/picasso/data_fabric.c
@@ -66,8 +66,7 @@
 				/* Although a pair could be freed later, this condition is
 				 * very unusual and deserves analysis.  Flag an error and
 				 * leave the topmost part unconfigured. */
-				printk(BIOS_ERR,
-				       "Error: Not enough NB MMIO routing registers\n");
+				printk(BIOS_ERR, "Not enough NB MMIO routing registers\n");
 				continue;
 			}
 			data_fabric_broadcast_write32(0, NB_MMIO_BASE(reg), np_top + 1);
@@ -85,7 +84,7 @@
 
 	reg = data_fabric_find_unused_mmio_reg();
 	if (reg < 0) {
-		printk(BIOS_ERR, "Error: cannot configure region as NP\n");
+		printk(BIOS_ERR, "cannot configure region as NP\n");
 		return;
 	}
 
diff --git a/src/soc/amd/picasso/i2c.c b/src/soc/amd/picasso/i2c.c
index ebc833d..afbc8bd 100644
--- a/src/soc/amd/picasso/i2c.c
+++ b/src/soc/amd/picasso/i2c.c
@@ -30,7 +30,7 @@
 void i2c_set_bar(unsigned int bus, uintptr_t bar)
 {
 	if (bus >= ARRAY_SIZE(i2c_ctrlr)) {
-		printk(BIOS_ERR, "Error: i2c index out of bounds: %u.", bus);
+		printk(BIOS_ERR, "i2c index out of bounds: %u.", bus);
 		return;
 	}
 
diff --git a/src/soc/amd/picasso/root_complex.c b/src/soc/amd/picasso/root_complex.c
index eee2036..4ea8bc2 100644
--- a/src/soc/amd/picasso/root_complex.c
+++ b/src/soc/amd/picasso/root_complex.c
@@ -139,7 +139,7 @@
 	mmconf_resource(dev, MMIO_CONF_BASE);
 
 	if (!hob) {
-		printk(BIOS_ERR, "Error: %s incomplete because no HOB list was found\n",
+		printk(BIOS_ERR, "%s incomplete because no HOB list was found\n",
 				__func__);
 		return;
 	}
@@ -161,7 +161,7 @@
 		else if (res->type == EFI_RESOURCE_MEMORY_RESERVED)
 			reserved_ram_resource(dev, idx++, res->addr / KiB, res->length / KiB);
 		else
-			printk(BIOS_ERR, "Error: failed to set resources for type %d\n",
+			printk(BIOS_ERR, "failed to set resources for type %d\n",
 					res->type);
 	}
 
diff --git a/src/soc/amd/picasso/smihandler.c b/src/soc/amd/picasso/smihandler.c
index f9f5fc0..08f805b 100644
--- a/src/soc/amd/picasso/smihandler.c
+++ b/src/soc/amd/picasso/smihandler.c
@@ -124,7 +124,7 @@
 			psp_notify_sx_info(ACPI_S3);
 
 		smu_sx_entry(); /* Leave SlpTypeEn clear, SMU will set */
-		printk(BIOS_ERR, "Error: System did not go to sleep\n");
+		printk(BIOS_ERR, "System did not go to sleep\n");
 
 		hlt();
 	}
diff --git a/src/soc/amd/stoneyridge/romstage.c b/src/soc/amd/stoneyridge/romstage.c
index c732f75..8ac2eb5 100644
--- a/src/soc/amd/stoneyridge/romstage.c
+++ b/src/soc/amd/stoneyridge/romstage.c
@@ -151,7 +151,7 @@
 	const struct device *dev = pcidev_path_on_root(GNB_DEVFN);
 
 	if (!dev || !dev->chip_info) {
-		printk(BIOS_ERR, "ERROR: Cannot find SoC devicetree config\n");
+		printk(BIOS_ERR, "Cannot find SoC devicetree config\n");
 		/* In case of a BIOS error, only attempt to set UMA. */
 		PostParams->MemConfig.UmaMode = CONFIG(GFXUMA) ?
 					UMA_AUTO : UMA_NONE;
@@ -189,7 +189,7 @@
 	struct _PLATFORM_CONFIGURATION *platform;
 
 	if (!dev || !dev->chip_info) {
-		printk(BIOS_WARNING, "Warning: Cannot find SoC devicetree"
+		printk(BIOS_WARNING, "Cannot find SoC devicetree"
 					" config, STAPM unchanged\n");
 		return;
 	}
diff --git a/src/soc/cavium/cn81xx/cpu.c b/src/soc/cavium/cn81xx/cpu.c
index 0dd6ce4..bb85029 100644
--- a/src/soc/cavium/cn81xx/cpu.c
+++ b/src/soc/cavium/cn81xx/cpu.c
@@ -97,7 +97,7 @@
 	} while (!stopwatch_expired(&sw) && (pending & coremask));
 
 	if (stopwatch_expired(&sw)) {
-		printk(BIOS_ERR, "ERROR: Timeout waiting for reset "
+		printk(BIOS_ERR, "Timeout waiting for reset "
 		       "pending to clear.");
 		return 1;
 	}
@@ -113,7 +113,7 @@
 	dmb();
 
 	if (!read64(&secondary_booted)) {
-		printk(BIOS_ERR, "ERROR: Core %zu failed to start.\n", cpu);
+		printk(BIOS_ERR, "Core %zu failed to start.\n", cpu);
 		return 1;
 	}
 
diff --git a/src/soc/cavium/cn81xx/ecam0.c b/src/soc/cavium/cn81xx/ecam0.c
index 943e1c9..e789fd8 100644
--- a/src/soc/cavium/cn81xx/ecam0.c
+++ b/src/soc/cavium/cn81xx/ecam0.c
@@ -163,7 +163,7 @@
 	}
 	nr_entries = pci_msix_table_size(dev);
 	if (nvec > nr_entries) {
-		printk(BIOS_ERR, "ERROR: %s: Specified to many table entries\n",
+		printk(BIOS_ERR, "%s: Specified to many table entries\n",
 		       dev_path(dev));
 		return nr_entries;
 	}
@@ -177,13 +177,13 @@
 	offset = 0;
 	bar_idx = 0;
 	if (pci_msix_table_bar(dev, &offset, &bar_idx)) {
-		printk(BIOS_ERR, "ERROR: %s: Failed to find MSI-X entry\n",
+		printk(BIOS_ERR, "%s: Failed to find MSI-X entry\n",
 		       dev_path(dev));
 		return -1;
 	}
 	bar = ecam0_get_bar_val(dev, bar_idx);
 	if (!bar) {
-		printk(BIOS_ERR, "ERROR: %s: Failed to find MSI-X bar\n",
+		printk(BIOS_ERR, "%s: Failed to find MSI-X bar\n",
 		       dev_path(dev));
 		return -1;
 	}
diff --git a/src/soc/intel/alderlake/chip.c b/src/soc/intel/alderlake/chip.c
index 9127c5e..3f5c365 100644
--- a/src/soc/intel/alderlake/chip.c
+++ b/src/soc/intel/alderlake/chip.c
@@ -150,7 +150,7 @@
 static void cpu_fill_ssdt(const struct device *dev)
 {
 	if (!generate_pin_irq_map())
-		printk(BIOS_ERR, "ERROR: Failed to generate ACPI _PRT table!\n");
+		printk(BIOS_ERR, "Failed to generate ACPI _PRT table!\n");
 
 	generate_cpu_entries(dev);
 }
diff --git a/src/soc/intel/alderlake/romstage/fsp_params.c b/src/soc/intel/alderlake/romstage/fsp_params.c
index 790aa99..9a42642 100644
--- a/src/soc/intel/alderlake/romstage/fsp_params.c
+++ b/src/soc/intel/alderlake/romstage/fsp_params.c
@@ -284,17 +284,17 @@
 
 	if (m_cfg->VtdIgdEnable && m_cfg->VtdBaseAddress[VTD_GFX] == 0) {
 		m_cfg->VtdIgdEnable = 0;
-		printk(BIOS_ERR, "ERROR: Requested IGD VT-d, but GFXVT_BASE_ADDRESS is 0\n");
+		printk(BIOS_ERR, "Requested IGD VT-d, but GFXVT_BASE_ADDRESS is 0\n");
 	}
 
 	if (m_cfg->VtdIpuEnable && m_cfg->VtdBaseAddress[VTD_IPU] == 0) {
 		m_cfg->VtdIpuEnable = 0;
-		printk(BIOS_ERR, "ERROR: Requested IPU VT-d, but IPUVT_BASE_ADDRESS is 0\n");
+		printk(BIOS_ERR, "Requested IPU VT-d, but IPUVT_BASE_ADDRESS is 0\n");
 	}
 
 	if (!m_cfg->VtdDisable && m_cfg->VtdBaseAddress[VTD_VTVCO] == 0) {
 		m_cfg->VtdDisable = 1;
-		printk(BIOS_ERR, "ERROR: Requested VT-d, but VTVCO_BASE_ADDRESS is 0\n");
+		printk(BIOS_ERR, "Requested VT-d, but VTVCO_BASE_ADDRESS is 0\n");
 	}
 
 	if (m_cfg->TcssDma0En || m_cfg->TcssDma1En)
diff --git a/src/soc/intel/alderlake/systemagent.c b/src/soc/intel/alderlake/systemagent.c
index 1736e32..1bbd62a 100644
--- a/src/soc/intel/alderlake/systemagent.c
+++ b/src/soc/intel/alderlake/systemagent.c
@@ -87,7 +87,7 @@
 	}
 
 	if (i == ARRAY_SIZE(cpuid_to_adl)) {
-		printk(BIOS_ERR, "ERROR: unknown SA ID: 0x%4x, skipped power limits configuration.\n",
+		printk(BIOS_ERR, "unknown SA ID: 0x%4x, skipped power limits configuration.\n",
 			sa_pci_id);
 		return;
 	}
diff --git a/src/soc/intel/alderlake/vr_config.c b/src/soc/intel/alderlake/vr_config.c
index 44e4528..c0058cd 100644
--- a/src/soc/intel/alderlake/vr_config.c
+++ b/src/soc/intel/alderlake/vr_config.c
@@ -53,7 +53,7 @@
 		return tbl[i].conf[domain];
 	}
 
-	printk(BIOS_ERR, "ERROR: Unknown MCH (0x%x) in %s\n", mch_id, __func__);
+	printk(BIOS_ERR, "Unknown MCH (0x%x) in %s\n", mch_id, __func__);
 	return 0;
 }
 
diff --git a/src/soc/intel/braswell/southcluster.c b/src/soc/intel/braswell/southcluster.c
index 25868640..4c6cbee 100644
--- a/src/soc/intel/braswell/southcluster.c
+++ b/src/soc/intel/braswell/southcluster.c
@@ -106,7 +106,7 @@
 	const struct soc_irq_route *ir = &global_soc_irq_route;
 
 	if (ir == NULL) {
-		printk(BIOS_WARNING, "Warning: Can't write PCI IRQ assignments "
+		printk(BIOS_WARNING, "Can't write PCI IRQ assignments "
 			"because 'global_braswell_irq_route' structure does not exist\n");
 		return;
 	}
@@ -142,8 +142,7 @@
 		device_num = PCI_SLOT(parent_bdf);
 
 		if (ir->pcidev[device_num] == 0) {
-			printk(BIOS_WARNING,
-				"Warning: PCI Device %d does not have an IRQ entry, "
+			printk(BIOS_WARNING, "PCI Device %d does not have an IRQ entry, "
 				"skipping it\n", device_num);
 			continue;
 		}
diff --git a/src/soc/intel/broadwell/pch/me_status.c b/src/soc/intel/broadwell/pch/me_status.c
index fa44c7c..ef6a0f3 100644
--- a/src/soc/intel/broadwell/pch/me_status.c
+++ b/src/soc/intel/broadwell/pch/me_status.c
@@ -307,7 +307,7 @@
 		udelay(ME_DELAY);
 	}
 	if (!count) {
-		printk(BIOS_ERR, "ERROR: ME failed to respond\n");
+		printk(BIOS_ERR, "ME failed to respond\n");
 		return;
 	}
 
diff --git a/src/soc/intel/cannonlake/chip.c b/src/soc/intel/cannonlake/chip.c
index 80a6c01..27c49b1 100644
--- a/src/soc/intel/cannonlake/chip.c
+++ b/src/soc/intel/cannonlake/chip.c
@@ -162,7 +162,7 @@
 	generate_cpu_entries(dev);
 
 	if (!generate_pin_irq_map())
-		printk(BIOS_ERR, "ERROR: Failed to generate ACPI _PRT table!\n");
+		printk(BIOS_ERR, "Failed to generate ACPI _PRT table!\n");
 }
 
 static void cpu_set_north_irqs(struct device *dev)
diff --git a/src/soc/intel/cannonlake/vr_config.c b/src/soc/intel/cannonlake/vr_config.c
index 7ba73ea..ade1ef6 100644
--- a/src/soc/intel/cannonlake/vr_config.c
+++ b/src/soc/intel/cannonlake/vr_config.c
@@ -107,7 +107,7 @@
 		break;
 	}
 
-	printk(BIOS_ERR, "ERROR: Unknown MCH (0x%x) in %s\n", mch_id, __func__);
+	printk(BIOS_ERR, "Unknown MCH (0x%x) in %s\n", mch_id, __func__);
 
 	return 0;
 }
diff --git a/src/soc/intel/common/block/acpi/acpi_bert.c b/src/soc/intel/common/block/acpi/acpi_bert.c
index 85fbc03..beb131e 100644
--- a/src/soc/intel/common/block/acpi/acpi_bert.c
+++ b/src/soc/intel/common/block/acpi/acpi_bert.c
@@ -39,7 +39,7 @@
 	}
 
 	if (!cl_get_total_data_size()) {
-		printk(BIOS_ERR, "Error: No crashlog record present\n");
+		printk(BIOS_ERR, "No crashlog record present\n");
 		return CB_ERR;
 	}
 
@@ -47,12 +47,12 @@
 	gesb_header_size = sizeof(*status);
 
 	if (!status) {
-		printk(BIOS_ERR, "Error: unable to allocate GSB\n");
+		printk(BIOS_ERR, "unable to allocate GSB\n");
 		return CB_ERR;
 	}
 
 	if (cl_get_total_data_size() > bert_storage_remaining()) {
-		printk(BIOS_ERR, "Error: Crashlog entry would exceed "
+		printk(BIOS_ERR, "Crashlog entry would exceed "
 				"available region\n");
 		return CB_ERR;
 	}
@@ -61,7 +61,7 @@
 	if (cpu_record_size) {
 		cl_data = new_cper_fw_error_crashlog(status, cpu_record_size);
 		if (!cl_data) {
-			printk(BIOS_ERR, "Error: Crashlog CPU entry(size %lu) "
+			printk(BIOS_ERR, "Crashlog CPU entry(size %lu) "
 				"would exceed available region\n",
 				cpu_record_size);
 			return CB_ERR;
@@ -75,14 +75,14 @@
 	if (pmc_record_size) {
 		/*  Allocate new FW ERR structure in case CPU crashlog is present */
 		if (cpu_record_size && !bert_append_fw_err(status)) {
-			printk(BIOS_ERR, "Error: Crashlog PMC entry would "
+			printk(BIOS_ERR, "Crashlog PMC entry would "
 				"exceed available region\n");
 			return CB_ERR;
 		}
 
 		cl_data = new_cper_fw_error_crashlog(status, pmc_record_size);
 		if (!cl_data) {
-			printk(BIOS_ERR, "Error: Crashlog PMC entry(size %lu) "
+			printk(BIOS_ERR, "Crashlog PMC entry(size %lu) "
 				"would exceed available region\n",
 				pmc_record_size);
 			return CB_ERR;
diff --git a/src/soc/intel/common/block/cse/cse.c b/src/soc/intel/common/block/cse/cse.c
index 6dfe329..a9a619c 100644
--- a/src/soc/intel/common/block/cse/cse.c
+++ b/src/soc/intel/common/block/cse/cse.c
@@ -1051,7 +1051,7 @@
 			 * If the (CS)ME fails to change states after 3 attempts, it will
 			 * likely need a cold boot, or recovering.
 			 */
-			printk(BIOS_ERR, "Error: Failed to change ME state in %u attempts!\n",
+			printk(BIOS_ERR, "Failed to change ME state in %u attempts!\n",
 									 ME_DISABLE_ATTEMPTS);
 
 		}
diff --git a/src/soc/intel/common/block/cse/cse_eop.c b/src/soc/intel/common/block/cse/cse_eop.c
index 3fc4e2b..5d6a4a7 100644
--- a/src/soc/intel/common/block/cse/cse_eop.c
+++ b/src/soc/intel/common/block/cse/cse_eop.c
@@ -172,7 +172,7 @@
 		break;
 	case CSE_EOP_RESULT_ERROR: /* fallthrough */
 	default:
-		printk(BIOS_ERR, "ERROR: Failed to send EOP to CSE, %d\n", result);
+		printk(BIOS_ERR, "Failed to send EOP to CSE, %d\n", result);
 		/* For vboot, trigger recovery mode if applicable, as there is
 		   likely something very broken in this case. */
 		if (CONFIG(VBOOT) && !vboot_recovery_mode_enabled())
diff --git a/src/soc/intel/common/block/fast_spi/fast_spi_flash.c b/src/soc/intel/common/block/fast_spi/fast_spi_flash.c
index 1b0652d..aead8de 100644
--- a/src/soc/intel/common/block/fast_spi/fast_spi_flash.c
+++ b/src/soc/intel/common/block/fast_spi/fast_spi_flash.c
@@ -350,7 +350,7 @@
 	}
 
 	if (fpr >= SPIBAR_FPR_MAX) {
-		printk(BIOS_ERR, "ERROR: No SPI FPR free!\n");
+		printk(BIOS_ERR, "No SPI FPR free!\n");
 		return -1;
 	}
 
@@ -365,7 +365,7 @@
 		protect_mask |= (SPI_FPR_RPE | SPI_FPR_WPE);
 		break;
 	default:
-		printk(BIOS_ERR, "ERROR: Seeking invalid protection!\n");
+		printk(BIOS_ERR, "Seeking invalid protection!\n");
 		return -1;
 	}
 
@@ -376,7 +376,7 @@
 	write32((void *)fpr_base, reg);
 	reg = read32((void *)fpr_base);
 	if (!(reg & protect_mask)) {
-		printk(BIOS_ERR, "ERROR: Unable to set SPI FPR %d\n", fpr);
+		printk(BIOS_ERR, "Unable to set SPI FPR %d\n", fpr);
 		return -1;
 	}
 
diff --git a/src/soc/intel/common/block/irq/irq.c b/src/soc/intel/common/block/irq/irq.c
index 0074451..8b0642f 100644
--- a/src/soc/intel/common/block/irq/irq.c
+++ b/src/soc/intel/common/block/irq/irq.c
@@ -128,7 +128,7 @@
 static bool assign_pirq(struct pin_info pin_info[PCI_INT_MAX], enum pci_pin pin, enum pirq pirq)
 {
 	if (pirq < PIRQ_A || pirq > PIRQ_H) {
-		printk(BIOS_ERR, "ERROR: Invalid pirq constraint %u\n", pirq);
+		printk(BIOS_ERR, "Invalid pirq constraint %u\n", pirq);
 		return false;
 	}
 
@@ -143,7 +143,7 @@
 		       enum pci_pin fn_pin_map[MAX_FNS])
 {
 	if (pin < PCI_INT_A || pin > PCI_INT_D) {
-		printk(BIOS_ERR, "ERROR: Invalid pin constraint %u\n", pin);
+		printk(BIOS_ERR, "Invalid pin constraint %u\n", pin);
 		return false;
 	}
 
@@ -182,7 +182,7 @@
 		   fixed pin */
 		const enum pci_pin pin = fn_pin_map[i];
 		if (pin == PCI_INT_NONE) {
-			printk(BIOS_ERR, "ERROR: Slot %u, pirq %u, no pin for function %zu\n",
+			printk(BIOS_ERR, "Slot %u, pirq %u, no pin for function %zu\n",
 			       constraints->slot, fixed_pirq, i);
 			return false;
 		}
@@ -210,7 +210,7 @@
 
 		const int irq = find_free_unique_irq();
 		if (irq == INVALID_IRQ) {
-			printk(BIOS_ERR, "ERROR: No free unique IRQs found\n");
+			printk(BIOS_ERR, "No free unique IRQs found\n");
 			return false;
 		}
 
@@ -234,7 +234,7 @@
 				pin = find_shareable_pin(pin_info);
 
 				if (pin == PCI_INT_NONE) {
-					printk(BIOS_ERR, "ERROR: No shareable pins found\n");
+					printk(BIOS_ERR, "No shareable pins found\n");
 					return false;
 				}
 			}
diff --git a/src/soc/intel/common/block/pcie/pcie_helpers.c b/src/soc/intel/common/block/pcie/pcie_helpers.c
index e8ed3be..00bef42 100644
--- a/src/soc/intel/common/block/pcie/pcie_helpers.c
+++ b/src/soc/intel/common/block/pcie/pcie_helpers.c
@@ -29,7 +29,7 @@
 
 	for (group = groups; group->count; ++group) {
 		if (group->count + offset >= sizeof(mask) * 8) {
-			printk(BIOS_ERR, "ERROR: %s: Root port count greater than mask size!\n",
+			printk(BIOS_ERR, "%s: Root port count greater than mask size!\n",
 			       __func__);
 			break;
 		}
diff --git a/src/soc/intel/common/block/pmc/pmclib.c b/src/soc/intel/common/block/pmc/pmclib.c
index f7efeb7..da78d5c 100644
--- a/src/soc/intel/common/block/pmc/pmclib.c
+++ b/src/soc/intel/common/block/pmc/pmclib.c
@@ -611,7 +611,7 @@
 		pmc_soc_set_afterg3_en(target_on);
 		break;
 	default:
-		printk(BIOS_WARNING, "WARNING: Unknown power-failure state: %d\n", state);
+		printk(BIOS_WARNING, "Unknown power-failure state: %d\n", state);
 		break;
 	}
 }
diff --git a/src/soc/intel/common/block/thermal/thermal_pci.c b/src/soc/intel/common/block/thermal/thermal_pci.c
index 1b9f28a..04203fe 100644
--- a/src/soc/intel/common/block/thermal/thermal_pci.c
+++ b/src/soc/intel/common/block/thermal/thermal_pci.c
@@ -19,13 +19,13 @@
 
 	dev = pcidev_path_on_root(PCH_DEVFN_THERMAL);
 	if (!dev) {
-		printk(BIOS_ERR, "ERROR: PCH_DEVFN_THERMAL device not found!\n");
+		printk(BIOS_ERR, "PCH_DEVFN_THERMAL device not found!\n");
 		return;
 	}
 
 	res = probe_resource(dev, PCI_BASE_ADDRESS_0);
 	if (!res) {
-		printk(BIOS_ERR, "ERROR: PCH thermal device not found!\n");
+		printk(BIOS_ERR, "PCH thermal device not found!\n");
 		return;
 	}
 
diff --git a/src/soc/intel/quark/storage_test.c b/src/soc/intel/quark/storage_test.c
index 1eed84e..e7e4646 100644
--- a/src/soc/intel/quark/storage_test.c
+++ b/src/soc/intel/quark/storage_test.c
@@ -195,8 +195,7 @@
 		err = storage_setup_media(media, &sdhci_ctrlr->sd_mmc_ctrlr);
 		if (err) {
 			display_log();
-			printk(BIOS_ERR,
-				"ERROR: Device failed to initialize, err = %d\n",
+			printk(BIOS_ERR, "Device failed to initialize, err = %d\n",
 				err);
 			return;
 		}
diff --git a/src/soc/intel/skylake/vr_config.c b/src/soc/intel/skylake/vr_config.c
index b807f54..89d85cf 100644
--- a/src/soc/intel/skylake/vr_config.c
+++ b/src/soc/intel/skylake/vr_config.c
@@ -222,7 +222,7 @@
 		return icc_max[domain];
 	}
 	default:
-		printk(BIOS_ERR, "ERROR: Unknown MCH (0x%x) in %s\n", mch_id, __func__);
+		printk(BIOS_ERR, "Unknown MCH (0x%x) in %s\n", mch_id, __func__);
 	}
 	return 0;
 }
@@ -292,7 +292,7 @@
 		return loadline[domain];
 	}
 	default:
-		printk(BIOS_ERR, "ERROR: Unknown MCH (0x%x) in %s\n", mch_id, __func__);
+		printk(BIOS_ERR, "Unknown MCH (0x%x) in %s\n", mch_id, __func__);
 	}
 	return 0;
 }
diff --git a/src/soc/intel/tigerlake/chip.c b/src/soc/intel/tigerlake/chip.c
index 4594524..9343ecf 100644
--- a/src/soc/intel/tigerlake/chip.c
+++ b/src/soc/intel/tigerlake/chip.c
@@ -164,7 +164,7 @@
 static void cpu_fill_ssdt(const struct device *dev)
 {
 	if (!generate_pin_irq_map())
-		printk(BIOS_ERR, "ERROR: Failed to generate ACPI _PRT table!\n");
+		printk(BIOS_ERR, "Failed to generate ACPI _PRT table!\n");
 
 	generate_cpu_entries(dev);
 }
diff --git a/src/soc/mediatek/common/include/soc/msdc.h b/src/soc/mediatek/common/include/soc/msdc.h
index b7f7fd7..798b0f6 100644
--- a/src/soc/mediatek/common/include/soc/msdc.h
+++ b/src/soc/mediatek/common/include/soc/msdc.h
@@ -162,7 +162,7 @@
 
 #define msdc_debug(format...) printk(BIOS_DEBUG, format)
 #define msdc_trace(format...) printk(BIOS_DEBUG, format)
-#define msdc_error(format...) printk(BIOS_ERR, "ERROR: " format)
+#define msdc_error(format...) printk(BIOS_ERR, format)
 
 int mtk_emmc_early_init(void *base, void *top_base);
 void mtk_msdc_configure_emmc(bool is_early_init);
diff --git a/src/soc/mediatek/mt8173/da9212.c b/src/soc/mediatek/mt8173/da9212.c
index e44a76f..5028f18 100644
--- a/src/soc/mediatek/mt8173/da9212.c
+++ b/src/soc/mediatek/mt8173/da9212.c
@@ -46,7 +46,7 @@
 			       DA9212_BUCK_MODE_MASK, DA9212_BUCK_MODE_SHIFT);
 
 	if (ret)
-		printk(BIOS_ERR, "ERROR: %s failed\n", __func__);
+		printk(BIOS_ERR, "%s failed\n", __func__);
 
 }
 
@@ -74,7 +74,7 @@
 
 	/* Check device ID is DA9212 */
 	if (device_id != DA9212_ID || ret) {
-		printk(BIOS_ERR, "ERROR: unknown DA9212 device_id\n");
+		printk(BIOS_ERR, "unknown DA9212 device_id\n");
 		return;
 	}
 
diff --git a/src/soc/mediatek/mt8173/mt6311.c b/src/soc/mediatek/mt8173/mt6311.c
index 3e61f8c..05149dc4 100644
--- a/src/soc/mediatek/mt8173/mt6311.c
+++ b/src/soc/mediatek/mt8173/mt6311.c
@@ -97,7 +97,7 @@
 			       MT6311_LDO_CON3, 0, 0x1, 0);
 
 	if (ret)
-		printk(BIOS_ERR, "ERROR: %s failed\n", __func__);
+		printk(BIOS_ERR, "%s failed\n", __func__);
 }
 
 void mt6311_probe(uint8_t i2c_num)
@@ -109,7 +109,7 @@
 	printk(BIOS_INFO, "%s: device ID = %#x\n", __func__, val);
 
 	if (val < MT6311_E1_CID_CODE) {
-		printk(BIOS_ERR, "ERROR: unknown MT6311 device_id\n");
+		printk(BIOS_ERR, "unknown MT6311 device_id\n");
 		return;
 	}
 
diff --git a/src/soc/mediatek/mt8195/dpm_4ch.c b/src/soc/mediatek/mt8195/dpm_4ch.c
index 78895c8..f13337d 100644
--- a/src/soc/mediatek/mt8195/dpm_4ch.c
+++ b/src/soc/mediatek/mt8195/dpm_4ch.c
@@ -28,7 +28,7 @@
 	}
 
 	if (loop == 0) {
-		printk(BIOS_ERR, "ERROR: failed to wake DPM up.\n");
+		printk(BIOS_ERR, "failed to wake DPM up.\n");
 		return -1;
 	}
 
diff --git a/src/soc/mediatek/mt8195/dptx.c b/src/soc/mediatek/mt8195/dptx.c
index edb3f7e..f2c0905 100644
--- a/src/soc/mediatek/mt8195/dptx.c
+++ b/src/soc/mediatek/mt8195/dptx.c
@@ -431,7 +431,7 @@
 			 0x08 : 0x00;
 		if (pixclk_mhz > mtk_dp->train_info.linkrate * 27) {
 			count = 0x8;
-			printk(BIOS_ERR, "ERROR: Pixclk > LinkRateChange\n");
+			printk(BIOS_ERR, "Pixclk > LinkRateChange\n");
 		} else {
 			count = 0x10 + offset;
 		}
diff --git a/src/soc/mediatek/mt8195/dptx_hal.c b/src/soc/mediatek/mt8195/dptx_hal.c
index 385e88c..b246c20 100644
--- a/src/soc/mediatek/mt8195/dptx_hal.c
+++ b/src/soc/mediatek/mt8195/dptx_hal.c
@@ -719,7 +719,7 @@
 		mtk_dp_write_byte(mtk_dp, REG_34A4_DP_TRANS_P0,
 				  value << 2, BIT(3) | BIT(2));
 	} else {
-		printk(BIOS_ERR, "ERROR: [%s]value << 2 > 0xff\n", __func__);
+		printk(BIOS_ERR, "[%s]value << 2 > 0xff\n", __func__);
 	}
 }
 
@@ -742,7 +742,7 @@
 		mtk_dp_write(mtk_dp, 0x103C, 0x3);
 		break;
 	default:
-		printk(BIOS_ERR, "ERROR: Link rate not support(%d)\n", value);
+		printk(BIOS_ERR, "Link rate not support(%d)\n", value);
 		break;
 	}
 
diff --git a/src/soc/mediatek/mt8195/mt6691.c b/src/soc/mediatek/mt8195/mt6691.c
index 3f22421..3b3ccf1 100644
--- a/src/soc/mediatek/mt8195/mt6691.c
+++ b/src/soc/mediatek/mt8195/mt6691.c
@@ -65,7 +65,7 @@
 {
 	/* Check device ID is MT6691 */
 	if (!get_mt6691_chip_id(i2c_num)) {
-		printk(BIOS_ERR, "ERROR: unknown MT6691 chip_id\n");
+		printk(BIOS_ERR, "unknown MT6691 chip_id\n");
 		return;
 	}
 	/* Slew rate 12mV */
diff --git a/src/soc/nvidia/tegra/usb.c b/src/soc/nvidia/tegra/usb.c
index ac61c54..9f10b38 100644
--- a/src/soc/nvidia/tegra/usb.c
+++ b/src/soc/nvidia/tegra/usb.c
@@ -115,7 +115,7 @@
 		/* wait for HC to reset */;
 
 	if (!timeout) {
-		printk(BIOS_ERR, "ERROR: EHCI(%p) reset timeout", usb);
+		printk(BIOS_ERR, "EHCI(%p) reset timeout", usb);
 		return;
 	}
 
diff --git a/src/soc/nvidia/tegra210/dp.c b/src/soc/nvidia/tegra210/dp.c
index a2b06b1..f3bc208 100644
--- a/src/soc/nvidia/tegra210/dp.c
+++ b/src/soc/nvidia/tegra210/dp.c
@@ -1575,7 +1575,7 @@
 		 __func__, disp_ctrl);
 
 	if (disp_ctrl == NULL) {
-		printk(BIOS_ERR, "Error: No dc is assigned by dt.\n");
+		printk(BIOS_ERR, "No dc is assigned by dt.\n");
 		return;
 	}
 
diff --git a/src/soc/nvidia/tegra210/dsi.c b/src/soc/nvidia/tegra210/dsi.c
index 5026ef4..b9bbea3 100644
--- a/src/soc/nvidia/tegra210/dsi.c
+++ b/src/soc/nvidia/tegra210/dsi.c
@@ -963,7 +963,7 @@
 		 __func__, disp_ctrl);
 
 	if (disp_ctrl == NULL) {
-		printk(BIOS_ERR, "Error: No dc is assigned by dt.\n");
+		printk(BIOS_ERR, "No dc is assigned by dt.\n");
 		return;
 	}
 
diff --git a/src/soc/nvidia/tegra210/funitcfg.c b/src/soc/nvidia/tegra210/funitcfg.c
index 0ca43cd..ba6408f 100644
--- a/src/soc/nvidia/tegra210/funitcfg.c
+++ b/src/soc/nvidia/tegra210/funitcfg.c
@@ -140,7 +140,7 @@
 		int funit_usb = is_usb(entry->funit_index);
 
 		if (entry->funit_index >= FUNIT_INDEX_MAX) {
-			printk(BIOS_ERR, "Error: Index out of bounds\n");
+			printk(BIOS_ERR, "Index out of bounds\n");
 			continue;
 		}
 
diff --git a/src/soc/qualcomm/common/clock.c b/src/soc/qualcomm/common/clock.c
index 09cd95c..e06a954 100644
--- a/src/soc/qualcomm/common/clock.c
+++ b/src/soc/qualcomm/common/clock.c
@@ -27,7 +27,7 @@
 			return CB_SUCCESS;
 		udelay(1);
 	}
-	printk(BIOS_ERR, "ERROR: Failed to enable clock, register val: 0x%x\n",
+	printk(BIOS_ERR, "Failed to enable clock, register val: 0x%x\n",
 			read32(cbcr_addr));
 	return CB_ERR;
 }
@@ -45,7 +45,7 @@
 			return CB_SUCCESS;
 		udelay(1);
 	}
-	printk(BIOS_ERR, "ERROR: Failed to enable clock, register val: 0x%x\n",
+	printk(BIOS_ERR, "Failed to enable clock, register val: 0x%x\n",
 			read32(cbcr_addr));
 	return CB_ERR;
 }
@@ -207,7 +207,7 @@
 
 		/* Wait for Lock Detection */
 		if (!wait_us(100, read32(cfg->reg_mode) & PLL_LOCK_DET_BMSK)) {
-			printk(BIOS_ERR, "ERROR: PLL did not lock!\n");
+			printk(BIOS_ERR, "PLL did not lock!\n");
 			return CB_ERR;
 		}
 	}
@@ -227,7 +227,7 @@
 	setbits32(cfg->reg_mode, BIT(PLL_RESET_SHFT));
 
 	if (!wait_us(100, read32(cfg->reg_mode) & PLL_LOCK_DET_BMSK)) {
-		printk(BIOS_ERR, "ERROR: CPU PLL did not lock!\n");
+		printk(BIOS_ERR, "CPU PLL did not lock!\n");
 		return CB_ERR;
 	}
 
@@ -249,7 +249,7 @@
 	setbits32(cfg->reg_opmode, PLL_RUN_MODE);
 
 	if (!wait_us(100, read32(cfg->reg_mode) & PLL_LOCK_DET_BMSK)) {
-		printk(BIOS_ERR, "ERROR: CPU PLL did not lock!\n");
+		printk(BIOS_ERR, "CPU PLL did not lock!\n");
 		return CB_ERR;
 	}
 
diff --git a/src/soc/qualcomm/common/usb/qmpv3_usb_phy.c b/src/soc/qualcomm/common/usb/qmpv3_usb_phy.c
index fc560ff..c1782be 100644
--- a/src/soc/qualcomm/common/usb/qmpv3_usb_phy.c
+++ b/src/soc/qualcomm/common/usb/qmpv3_usb_phy.c
@@ -408,7 +408,7 @@
 			!(read32(&ss_phy_reg->qmp_pcs_reg->pcs_ready_status) &
 			USB3_PCS_PHYSTATUS));
 	if (!lock_us)
-		printk(BIOS_ERR, "ERROR: QMP PHY PLL LOCK fails:\n");
+		printk(BIOS_ERR, "QMP PHY PLL LOCK fails:\n");
 	else
 		printk(BIOS_DEBUG, "QMP PHY initialized and locked in %ldus\n",
 				lock_us);
diff --git a/src/soc/qualcomm/common/usb/qmpv4_usb_phy.c b/src/soc/qualcomm/common/usb/qmpv4_usb_phy.c
index 031e2cf..23ab75a 100644
--- a/src/soc/qualcomm/common/usb/qmpv4_usb_phy.c
+++ b/src/soc/qualcomm/common/usb/qmpv4_usb_phy.c
@@ -404,7 +404,7 @@
 			!(read32(&ss_phy_reg->qmp_pcs_reg->pcs_ready_status) &
 			USB3_PCS_PHYSTATUS));
 	if (!lock_us)
-		printk(BIOS_ERR, "ERROR: QMP PHY PLL LOCK fails:\n");
+		printk(BIOS_ERR, "QMP PHY PLL LOCK fails:\n");
 	else
 		printk(BIOS_DEBUG, "QMP PHY initialized and locked in %ldus\n",
 				lock_us);
diff --git a/src/soc/qualcomm/common/usb/qusb_phy.c b/src/soc/qualcomm/common/usb/qusb_phy.c
index c8a56b0..494f7cd 100644
--- a/src/soc/qualcomm/common/usb/qusb_phy.c
+++ b/src/soc/qualcomm/common/usb/qusb_phy.c
@@ -132,7 +132,7 @@
 	long lock_us = wait_us(160, read32(&hs_phy_reg->phy_dig->debug_stat5) &
 						VSTATUS_PLL_LOCK_STATUS_MASK);
 	if (!lock_us)
-		printk(BIOS_ERR, "ERROR: QUSB PHY PLL LOCK fails\n");
+		printk(BIOS_ERR, "QUSB PHY PLL LOCK fails\n");
 	else
 		printk(BIOS_DEBUG, "QUSB PHY initialized and locked in %ldus\n",
 				lock_us);
diff --git a/src/soc/rockchip/common/rk808.c b/src/soc/rockchip/common/rk808.c
index 73c2312..022529f 100644
--- a/src/soc/rockchip/common/rk808.c
+++ b/src/soc/rockchip/common/rk808.c
@@ -54,7 +54,7 @@
 	uint8_t value;
 
 	if (rk808_read(reg, &value) || rk808_write(reg, (value & ~clr) | set))
-		printk(BIOS_ERR, "ERROR: Cannot set Rk808[%#x]!\n", reg);
+		printk(BIOS_ERR, "Cannot set Rk808[%#x]!\n", reg);
 }
 
 void rk808_configure_switch(int sw, int enabled)
diff --git a/src/soc/rockchip/rk3288/crypto.c b/src/soc/rockchip/rk3288/crypto.c
index 96a089b..6ce6a27 100644
--- a/src/soc/rockchip/rk3288/crypto.c
+++ b/src/soc/rockchip/rk3288/crypto.c
@@ -94,7 +94,7 @@
 	do {
 		intsts = read32(&crypto->intsts);
 		if (intsts & HRDMA_ERR) {
-			printk(BIOS_ERR, "ERROR: DMA error during HW crypto\n");
+			printk(BIOS_ERR, "DMA error during HW crypto\n");
 			return VB2_ERROR_UNKNOWN;
 		}
 	} while (!(intsts & HRDMA_DONE));	/* wait for DMA to finish */
diff --git a/src/soc/rockchip/rk3399/display.c b/src/soc/rockchip/rk3399/display.c
index c300726..728f45d 100644
--- a/src/soc/rockchip/rk3399/display.c
+++ b/src/soc/rockchip/rk3399/display.c
@@ -72,8 +72,7 @@
 				break;
 			}
 			if (retry_count_init == 3) {
-				printk(BIOS_WARNING,
-				       "Warning: EDP initialization failed.\n");
+				printk(BIOS_WARNING, "EDP initialization failed.\n");
 				return;
 			} else {
 				reset_edp();
diff --git a/src/soc/ti/am335x/mmc.c b/src/soc/ti/am335x/mmc.c
index b7b4f97..b65030e 100644
--- a/src/soc/ti/am335x/mmc.c
+++ b/src/soc/ti/am335x/mmc.c
@@ -265,7 +265,7 @@
 
 	err = am335x_mmc_init(mmc_host->reg);
 	if (err != 0) {
-		printk(BIOS_ERR, "ERROR: Initialising AM335X SD failed.\n");
+		printk(BIOS_ERR, "Initialising AM335X SD failed.\n");
 		return err;
 	}
 
diff --git a/src/southbridge/amd/common/amd_pci_util.c b/src/southbridge/amd/common/amd_pci_util.c
index fe967d5..cbba3ef 100644
--- a/src/southbridge/amd/common/amd_pci_util.c
+++ b/src/southbridge/amd/common/amd_pci_util.c
@@ -89,7 +89,7 @@
 	u32 i = 0;
 
 	if (pirq_data_ptr == NULL) {
-		printk(BIOS_WARNING, "Warning: Can't write PCI IRQ assignments because"
+		printk(BIOS_WARNING, "Can't write PCI IRQ assignments because"
 				" 'mainboard_pirq_data' structure does not exist\n");
 		return;
 	}
diff --git a/src/southbridge/intel/bd82x6x/early_me.c b/src/southbridge/intel/bd82x6x/early_me.c
index 34e0c99..561bed9 100644
--- a/src/southbridge/intel/bd82x6x/early_me.c
+++ b/src/southbridge/intel/bd82x6x/early_me.c
@@ -56,14 +56,14 @@
 		udelay(ME_DELAY);
 	}
 	if (!count) {
-		printk(BIOS_ERR, "ERROR: ME is not ready!\n");
+		printk(BIOS_ERR, "ME is not ready!\n");
 		return -1;
 	}
 
 	/* Check for valid firmware */
 	hfs.raw = pci_read_config32(PCH_ME_DEV, PCI_ME_HFS);
 	if (hfs.fpt_bad) {
-		printk(BIOS_WARNING, "WARNING: ME has bad firmware\n");
+		printk(BIOS_WARNING, "ME has bad firmware\n");
 		return -1;
 	}
 
diff --git a/src/southbridge/intel/bd82x6x/early_me_mrc.c b/src/southbridge/intel/bd82x6x/early_me_mrc.c
index 2582abb..88fad7c 100644
--- a/src/southbridge/intel/bd82x6x/early_me_mrc.c
+++ b/src/southbridge/intel/bd82x6x/early_me_mrc.c
@@ -55,14 +55,14 @@
 		udelay(ME_DELAY);
 	}
 	if (!count) {
-		printk(BIOS_ERR, "ERROR: ME is not ready!\n");
+		printk(BIOS_ERR, "ME is not ready!\n");
 		return -1;
 	}
 
 	/* Check for valid firmware */
 	hfs.raw = pci_read_config32(PCH_ME_DEV, PCI_ME_HFS);
 	if (hfs.fpt_bad) {
-		printk(BIOS_WARNING, "WARNING: ME has bad firmware\n");
+		printk(BIOS_WARNING, "ME has bad firmware\n");
 		return -1;
 	}
 
@@ -114,7 +114,7 @@
 		udelay(ME_DELAY);
 	}
 	if (!count) {
-		printk(BIOS_ERR, "ERROR: ME failed to respond\n");
+		printk(BIOS_ERR, "ME failed to respond\n");
 		return -1;
 	}
 
diff --git a/src/southbridge/intel/common/spi.c b/src/southbridge/intel/common/spi.c
index 30f7657..44d283c 100644
--- a/src/southbridge/intel/common/spi.c
+++ b/src/southbridge/intel/common/spi.c
@@ -998,7 +998,7 @@
 	}
 
 	if (fpr == cntlr.fpr_max) {
-		printk(BIOS_ERR, "ERROR: No SPI FPR free!\n");
+		printk(BIOS_ERR, "No SPI FPR free!\n");
 		return -1;
 	}
 
@@ -1017,7 +1017,7 @@
 		protect_mask |= (ICH9_SPI_FPR_RPE | SPI_FPR_WPE);
 		break;
 	default:
-		printk(BIOS_ERR, "ERROR: Seeking invalid protection!\n");
+		printk(BIOS_ERR, "Seeking invalid protection!\n");
 		return -1;
 	}
 
@@ -1027,7 +1027,7 @@
 	/* Set the FPR register and verify it is protected */
 	write32(&fpr_base[fpr], reg);
 	if (reg != read32(&fpr_base[fpr])) {
-		printk(BIOS_ERR, "ERROR: Unable to set SPI FPR %d\n", fpr);
+		printk(BIOS_ERR, "Unable to set SPI FPR %d\n", fpr);
 		return -1;
 	}
 
diff --git a/src/southbridge/intel/lynxpoint/early_me.c b/src/southbridge/intel/lynxpoint/early_me.c
index 6c73c33..947c570 100644
--- a/src/southbridge/intel/lynxpoint/early_me.c
+++ b/src/southbridge/intel/lynxpoint/early_me.c
@@ -45,14 +45,14 @@
 		udelay(ME_DELAY);
 	}
 	if (!count) {
-		printk(BIOS_ERR, "ERROR: ME is not ready!\n");
+		printk(BIOS_ERR, "ME is not ready!\n");
 		return -1;
 	}
 
 	/* Check for valid firmware */
 	hfs.raw = pci_read_config32(PCH_ME_DEV, PCI_ME_HFS);
 	if (hfs.fpt_bad) {
-		printk(BIOS_WARNING, "WARNING: ME has bad firmware\n");
+		printk(BIOS_WARNING, "ME has bad firmware\n");
 		return -1;
 	}
 
@@ -123,7 +123,7 @@
 		udelay(ME_DELAY);
 	}
 	if (!count) {
-		printk(BIOS_ERR, "ERROR: ME failed to respond\n");
+		printk(BIOS_ERR, "ME failed to respond\n");
 		return -1;
 	}
 
diff --git a/src/superio/nuvoton/nct5104d/superio.c b/src/superio/nuvoton/nct5104d/superio.c
index 3351ad9..1deda72 100644
--- a/src/superio/nuvoton/nct5104d/superio.c
+++ b/src/superio/nuvoton/nct5104d/superio.c
@@ -156,7 +156,7 @@
 	if (!((gpio0 && gpio0->enabled) || (gpio1 && gpio1->enabled) ||
 	      (gpio6 && gpio6->enabled))) {
 		dev->enabled = 0;
-		printk(BIOS_WARNING, "WARNING: GPIO IO port configured,"
+		printk(BIOS_WARNING, "GPIO IO port configured,"
 				     " but no GPIO enabled. Disabling...");
 	}
 }
diff --git a/src/superio/smsc/lpc47n217/superio.c b/src/superio/smsc/lpc47n217/superio.c
index a716d19..dcaf6e7 100644
--- a/src/superio/smsc/lpc47n217/superio.c
+++ b/src/superio/smsc/lpc47n217/superio.c
@@ -113,7 +113,7 @@
 static void lpc47n217_pnp_set_resource(struct device *dev, struct resource *resource)
 {
 	if (!(resource->flags & IORESOURCE_ASSIGNED)) {
-		printk(BIOS_ERR, "ERROR: %s %02lx not allocated\n",
+		printk(BIOS_ERR, "%s %02lx not allocated\n",
 		       dev_path(dev), resource->index);
 		return;
 	}
@@ -131,7 +131,7 @@
 	} else if (resource->flags & IORESOURCE_IRQ) {
 		lpc47n217_pnp_set_irq(dev, resource->base);
 	} else {
-		printk(BIOS_ERR, "ERROR: %s %02lx unknown resource type\n",
+		printk(BIOS_ERR, "%s %02lx unknown resource type\n",
 		       dev_path(dev), resource->index);
 		return;
 	}
diff --git a/src/superio/smsc/lpc47n227/superio.c b/src/superio/smsc/lpc47n227/superio.c
index 376fddb..3712350 100644
--- a/src/superio/smsc/lpc47n227/superio.c
+++ b/src/superio/smsc/lpc47n227/superio.c
@@ -121,7 +121,7 @@
 static void lpc47n227_pnp_set_resource(struct device *dev, struct resource *resource)
 {
 	if (!(resource->flags & IORESOURCE_ASSIGNED)) {
-		printk(BIOS_ERR, "ERROR: %s %02lx not allocated\n",
+		printk(BIOS_ERR, "%s %02lx not allocated\n",
 		       dev_path(dev), resource->index);
 		return;
 	}
@@ -138,7 +138,7 @@
 	} else if (resource->flags & IORESOURCE_IRQ) {
 		lpc47n227_pnp_set_irq(dev, resource->base);
 	} else {
-		printk(BIOS_ERR, "ERROR: %s %02lx unknown resource type\n",
+		printk(BIOS_ERR, "%s %02lx unknown resource type\n",
 		       dev_path(dev), resource->index);
 		return;
 	}
diff --git a/src/superio/smsc/sch5545/superio.c b/src/superio/smsc/sch5545/superio.c
index 8165fe0..1ce1fd6 100644
--- a/src/superio/smsc/sch5545/superio.c
+++ b/src/superio/smsc/sch5545/superio.c
@@ -90,7 +90,7 @@
 	lpc_if = dev_find_slot_pnp(dev->path.pnp.port, SCH5545_LDN_LPC);
 
 	if (!lpc_if) {
-		printk(BIOS_ERR, "ERROR: %s LPC interface LDN not present."
+		printk(BIOS_ERR, "%s LPC interface LDN not present."
 		       "Check the devicetree!\n", dev_path(dev));
 		return;
 	}
@@ -152,7 +152,7 @@
 	lpc_if = dev_find_slot_pnp(dev->path.pnp.port, SCH5545_LDN_LPC);
 
 	if (!lpc_if) {
-		printk(BIOS_ERR, "ERROR: %s LPC interface LDN not present."
+		printk(BIOS_ERR, "%s LPC interface LDN not present."
 		       "Check the devicetree!\n", dev_path(dev));
 		return;
 	}
@@ -193,7 +193,7 @@
 	struct device *lpc_if;
 
 	if (drq == 4) {
-		printk(BIOS_ERR, "ERROR: %s %02x: Trying to set reserved DMA channel 4!\n",
+		printk(BIOS_ERR, "%s %02x: Trying to set reserved DMA channel 4!\n",
 		       dev_path(dev), index);
 		printk(BIOS_ERR, "This configuration is untested. Trying to continue.\n");
 	}
@@ -202,7 +202,7 @@
 	lpc_if = dev_find_slot_pnp(dev->path.pnp.port, SCH5545_LDN_LPC);
 
 	if (!lpc_if) {
-		printk(BIOS_ERR, "ERROR: %s LPC interface LDN not present."
+		printk(BIOS_ERR, "%s LPC interface LDN not present."
 		       "Check the devicetree!\n", dev_path(dev));
 		return;
 	}
@@ -233,12 +233,12 @@
 		if (resource->flags & IORESOURCE_IRQ &&
 		    (resource->index != PNP_IDX_IRQ0) &&
 		    (resource->index != PNP_IDX_IRQ1))
-			printk(BIOS_WARNING, "WARNING: %s %02lx %s size: "
+			printk(BIOS_WARNING, "%s %02lx %s size: "
 			       "0x%010llx not assigned\n", dev_path(dev),
 			       resource->index, resource_type(resource),
 			       resource->size);
 		else
-			printk(BIOS_ERR, "ERROR: %s %02lx %s size: 0x%010llx "
+			printk(BIOS_ERR, "%s %02lx %s size: 0x%010llx "
 			       "not assigned\n", dev_path(dev), resource->index,
 			       resource_type(resource), resource->size);
 		return;
@@ -252,7 +252,7 @@
 	} else if (resource->flags & IORESOURCE_IRQ) {
 		sch5545_set_irq(dev, resource->index, resource->base);
 	} else {
-		printk(BIOS_ERR, "ERROR: %s %02lx unknown resource type\n",
+		printk(BIOS_ERR, "%s %02lx unknown resource type\n",
 		       dev_path(dev), resource->index);
 		return;
 	}
diff --git a/src/vendorcode/eltan/security/verified_boot/vboot_check.c b/src/vendorcode/eltan/security/verified_boot/vboot_check.c
index ed20af5..09da5c5 100644
--- a/src/vendorcode/eltan/security/verified_boot/vboot_check.c
+++ b/src/vendorcode/eltan/security/verified_boot/vboot_check.c
@@ -36,13 +36,13 @@
 
 	buffer = cbfs_map(RSA_PUBLICKEY_FILE_NAME, &size);
 	if (!buffer || !size) {
-		printk(BIOS_ERR, "ERROR: Public key not found!\n");
+		printk(BIOS_ERR, "Public key not found!\n");
 		goto fail;
 	}
 
 	if ((size != CONFIG_VENDORCODE_ELTAN_VBOOT_KEY_SIZE) ||
 	    (buffer != (void *)CONFIG_VENDORCODE_ELTAN_VBOOT_KEY_LOCATION)) {
-		printk(BIOS_ERR, "ERROR: Illegal public key!\n");
+		printk(BIOS_ERR, "Illegal public key!\n");
 		goto fail;
 	}
 
@@ -53,7 +53,7 @@
 	if ((sd->workbuf_used + size + sizeof(struct vb2_kernel_preamble) +
 	    ((CONFIG_VENDORCODE_ELTAN_OEM_MANIFEST_ITEMS * DIGEST_SIZE) + (2048/8))) >
 	    sizeof(wb_buffer)) {
-		printk(BIOS_ERR, "ERROR: Work buffer too small\n");
+		printk(BIOS_ERR, "Work buffer too small\n");
 		goto fail;
 	}
 
@@ -74,7 +74,7 @@
 	/* Fill body_signature (vb2_structure). RSA2048 key is used */
 	cbfs_map("oemmanifest.bin", &size);
 	if (size != ((CONFIG_VENDORCODE_ELTAN_OEM_MANIFEST_ITEMS * DIGEST_SIZE) + (2048/8))) {
-		printk(BIOS_ERR, "ERROR: Incorrect manifest size!\n");
+		printk(BIOS_ERR, "Incorrect manifest size!\n");
 		goto fail;
 	}
 	pre->body_signature.data_size = CONFIG_VENDORCODE_ELTAN_OEM_MANIFEST_ITEMS *
diff --git a/src/vendorcode/google/chromeos/cr50_enable_update.c b/src/vendorcode/google/chromeos/cr50_enable_update.c
index fa5556b..0a24d0f 100644
--- a/src/vendorcode/google/chromeos/cr50_enable_update.c
+++ b/src/vendorcode/google/chromeos/cr50_enable_update.c
@@ -44,8 +44,7 @@
 		return 1;
 	} else if (ret != TPM_SUCCESS)	{
 		/* TPM command failed, continue booting. */
-		printk(BIOS_ERR,
-		       "ERROR: Attempt to get CR50 TPM mode failed: %x\n", ret);
+		printk(BIOS_ERR, "Attempt to get CR50 TPM mode failed: %x\n", ret);
 		return 0;
 	}
 
@@ -85,8 +84,7 @@
 	ret = tlcl_lib_init();
 
 	if (ret != VB2_SUCCESS) {
-		printk(BIOS_ERR,
-		       "ERROR: tlcl_lib_init() failed for CR50 update: %x\n",
+		printk(BIOS_ERR, "tlcl_lib_init() failed for CR50 update: %x\n",
 		       ret);
 		return;
 	}
@@ -98,8 +96,7 @@
 				      &num_restored_headers);
 
 	if (ret != TPM_SUCCESS) {
-		printk(BIOS_ERR,
-		       "ERROR: Attempt to enable CR50 update failed: %x\n",
+		printk(BIOS_ERR, "Attempt to enable CR50 update failed: %x\n",
 		       ret);
 		return;
 	}
@@ -152,8 +149,7 @@
 			 * booting but the current boot will likely end up at
 			 * the recovery screen.
 			 */
-			printk(BIOS_ERR,
-			       "ERROR: Attempt to reset CR50 failed: %x\n",
+			printk(BIOS_ERR, "Attempt to reset CR50 failed: %x\n",
 			       ret);
 			return;
 		}
diff --git a/src/vendorcode/google/chromeos/sar.c b/src/vendorcode/google/chromeos/sar.c
index 8959588..130f5fa 100644
--- a/src/vendorcode/google/chromeos/sar.c
+++ b/src/vendorcode/google/chromeos/sar.c
@@ -25,7 +25,7 @@
 	if (!legacy_hex_format) {
 		sar_bin = malloc(str_len);
 		if (!sar_bin) {
-			printk(BIOS_ERR, "ERROR: Failed to allocate space for SAR binary!\n");
+			printk(BIOS_ERR, "Failed to allocate space for SAR binary!\n");
 			return NULL;
 		}
 
@@ -35,12 +35,12 @@
 		bin_len = ((str_len - 1) / 2);
 		sar_bin = malloc(bin_len);
 		if (!sar_bin) {
-			printk(BIOS_ERR, "ERROR: Failed to allocate space for SAR binary!\n");
+			printk(BIOS_ERR, "Failed to allocate space for SAR binary!\n");
 			return NULL;
 		}
 
 		if (hexstrtobin(sar_str, (uint8_t *)sar_bin, bin_len) != bin_len) {
-			printk(BIOS_ERR, "ERROR: sar_limits contains non-hex value!\n");
+			printk(BIOS_ERR, "sar_limits contains non-hex value!\n");
 			free(sar_bin);
 			return NULL;
 		}
@@ -116,20 +116,20 @@
 	size_t header_size = sar_header_size();
 
 	if (sar_bin_size < header_size) {
-		printk(BIOS_ERR, "ERROR: Invalid SAR format!\n");
+		printk(BIOS_ERR, "Invalid SAR format!\n");
 		return -1;
 	}
 
 	header = (struct sar_header *)sar_bin;
 
 	if (header->version != SAR_FILE_REVISION) {
-		printk(BIOS_ERR, "ERROR: Invalid SAR file version: %d!\n", header->version);
+		printk(BIOS_ERR, "Invalid SAR file version: %d!\n", header->version);
 		return -1;
 	}
 
 	for (i = 0; i < MAX_PROFILE_COUNT; i++) {
 		if (header->offsets[i] > sar_bin_size) {
-			printk(BIOS_ERR, "ERROR: Offset is outside the file size!\n");
+			printk(BIOS_ERR, "Offset is outside the file size!\n");
 			return -1;
 		}
 
@@ -145,7 +145,7 @@
 	expected_sar_bin_size += dsm_table_size(sar_limits->dsm);
 
 	if (sar_bin_size != expected_sar_bin_size) {
-		printk(BIOS_ERR, "ERROR: Invalid SAR size, expected: %ld, obtained: %ld\n",
+		printk(BIOS_ERR, "Invalid SAR size, expected: %ld, obtained: %ld\n",
 		       expected_sar_bin_size, sar_bin_size);
 		return -1;
 	}
@@ -164,7 +164,7 @@
 
 	new_sar_bin = malloc(size);
 	if (!new_sar_bin) {
-		printk(BIOS_ERR, "ERROR: Failed to allocate space for SAR binary!\n");
+		printk(BIOS_ERR, "Failed to allocate space for SAR binary!\n");
 		return -1;
 	}
 
@@ -259,13 +259,13 @@
 
 	filename = get_wifi_sar_cbfs_filename();
 	if (filename == NULL) {
-		printk(BIOS_ERR, "ERROR: Filename missing for CBFS SAR file!\n");
+		printk(BIOS_ERR, "Filename missing for CBFS SAR file!\n");
 		return ret;
 	}
 
 	sar_str = cbfs_map(filename, &sar_str_len);
 	if (!sar_str) {
-		printk(BIOS_ERR, "ERROR: Failed to get the %s file size!\n", filename);
+		printk(BIOS_ERR, "Failed to get the %s file size!\n", filename);
 		return ret;
 	}
 
@@ -274,13 +274,13 @@
 	} else if (valid_legacy_length(sar_str_len)) {
 		legacy_hex_format = true;
 	} else {
-		printk(BIOS_ERR, "ERROR: Invalid SAR format!\n");
+		printk(BIOS_ERR, "Invalid SAR format!\n");
 		goto error;
 	}
 
 	sar_bin = wifi_hextostr(sar_str, sar_str_len, &sar_bin_len, legacy_hex_format);
 	if (sar_bin == NULL) {
-		printk(BIOS_ERR, "ERROR: Failed to parse SAR file %s\n", filename);
+		printk(BIOS_ERR, "Failed to parse SAR file %s\n", filename);
 		goto error;
 	}
 
