Re: [PATCH] nvmem: brcm_nvram: store a copy of NVRAM content

From: Florian Fainelli
Date: Thu Sep 14 2023 - 17:26:56 EST


On 9/13/23 23:49, Rafał Miłecki wrote:
From: Rafał Miłecki <rafal@xxxxxxxxxx>

This driver uses MMIO access for reading NVRAM from a flash device.
Underneath there is a flash controller that reads data and provides
mapping window.

Using MMIO interface affects controller configuration and may break real
controller driver. It was reported by multiple users of devices with
NVRAM stored on NAND.

Modify driver to read & cache all NVRAM content during init and use that
copy to provide NVMEM data when requested.

Link: https://lore.kernel.org/linux-mtd/CACna6rwf3_9QVjYcM+847biTX=K0EoWXuXcSMkJO1Vy_5vmVqA@xxxxxxxxxxxxxx/
Cc: Arınç ÜNAL <arinc.unal@xxxxxxxxxx>
Cc: Florian Fainelli <florian.fainelli@xxxxxxxxxxxx>
Cc: Scott Branden <scott.branden@xxxxxxxxxxxx>
Signed-off-by: Rafał Miłecki <rafal@xxxxxxxxxx>
---
[snip]
- priv->base = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
- if (IS_ERR(priv->base))
- return PTR_ERR(priv->base);
+ base = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
+ if (IS_ERR(base))
+ return PTR_ERR(base);
+
+ priv->size = resource_size(res);
+
+ priv->data = devm_kzalloc(dev, priv->size, GFP_KERNEL);

These can conceivably quite big data structures, how about using kvmalloc()?
--
Florian