[PATCH] firmware: bcm47xx_nvram: don't warn when NVRAM is already copied

From: Rosen Penev

Date: Fri Oct 09 2026 - 21:13:09 EST


On MIPS BCM47xx the arch code copies NVRAM very early, because the
board detection and several drivers need it before platform drivers
probe. With a device tree, the brcm_nvram nvmem driver then passes the
same NVRAM to bcm47xx_nvram_init_from_iomem(), which warns on every
boot:

nvram already initialized

The same can happen on ARM when the MTD fallback reads NVRAM before
brcm_nvram probes. In both cases the existing copy is the right one,
so log this at debug level. bcm47xx_nvram_find_and_copy(), used by the
early init, keeps its warning.

Assisted-by: LLM
Signed-off-by: Rosen Penev <rosenp@xxxxxxxxx>
---
drivers/firmware/broadcom/bcm47xx_nvram.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/firmware/broadcom/bcm47xx_nvram.c b/drivers/firmware/broadcom/bcm47xx_nvram.c
index 0ea5206be4c9..3609e1356065 100644
--- a/drivers/firmware/broadcom/bcm47xx_nvram.c
+++ b/drivers/firmware/broadcom/bcm47xx_nvram.c
@@ -112,8 +112,12 @@ static int bcm47xx_nvram_find_and_copy(void __iomem *flash_start, size_t res_siz

int bcm47xx_nvram_init_from_iomem(void __iomem *nvram_start, size_t res_size)
{
+ /*
+ * The arch code on MIPS (and the MTD fallback) may have copied the
+ * NVRAM before the nvmem driver probes. That copy is used.
+ */
if (nvram_len) {
- pr_warn("nvram already initialized\n");
+ pr_debug("nvram already initialized\n");
return -EEXIST;
}

--
2.56.0