On Fri, 2024-04-12 at 10:50:26 UTC, Christian Marangi wrote: > MTD OTP logic is very fragile on parsing NVMEM cell and can be > problematic with some specific kind of devices. > > The problem was discovered by e87161321a40 ("mtd: rawnand: macronix: > OTP access for MX30LFxG18AC") where OTP support was added to a NAND > device. With the case of NAND devices, it does require a node where ECC > info are declared and all the fixed partitions, and this cause the OTP > codepath to parse this node as OTP NVMEM cells, making probe fail and > the NAND device registration fail. > > MTD OTP parsing should have been limited to always using compatible to > prevent this error by using node with compatible "otp-user" or > "otp-factory". > > NVMEM across the years had various iteration on how cells could be > declared in DT, in some old implementation, no_of_node should have been > enabled but now add_legacy_fixed_of_cells should be used to disable > NVMEM to parse child node as NVMEM cell. > > To fix this and limit any regression with other MTD that makes use of > declaring OTP as direct child of the dev node, disable > add_legacy_fixed_of_cells if we detect the MTD type is Nand. > > With the following logic, the OTP NVMEM entry is correctly created with > no cells and the MTD Nand is correctly probed and partitions are > correctly exposed. > > Fixes: 4b361cfa8624 ("mtd: core: add OTP nvmem provider support") > Cc: <stable@xxxxxxxxxxxxxxx> # v6.7+ > Signed-off-by: Christian Marangi <ansuelsmth@xxxxxxxxx> Applied to https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git mtd/fixes, thanks. Miquel