e20f378d99
Creating sysfs files for all Cells caused a boot failure for linux-6.8-rc1 on
Apple M1, which (in downstream dts files) has multiple nvmem cells that use the
same byte address. This causes the device probe to fail with
[ 0.605336] sysfs: cannot create duplicate filename '/devices/platform/soc@200000000/2922bc000.efuse/apple_efuses_nvmem0/cells/efuse@a10'
[ 0.605347] CPU: 7 PID: 1 Comm: swapper/0 Tainted: G S 6.8.0-rc1-arnd-5+ #133
[ 0.605355] Hardware name: Apple Mac Studio (M1 Ultra, 2022) (DT)
[ 0.605362] Call trace:
[ 0.605365] show_stack+0x18/0x2c
[ 0.605374] dump_stack_lvl+0x60/0x80
[ 0.605383] dump_stack+0x18/0x24
[ 0.605388] sysfs_warn_dup+0x64/0x80
[ 0.605395] sysfs_add_bin_file_mode_ns+0xb0/0xd4
[ 0.605402] internal_create_group+0x268/0x404
[ 0.605409] sysfs_create_groups+0x38/0x94
[ 0.605415] devm_device_add_groups+0x50/0x94
[ 0.605572] nvmem_populate_sysfs_cells+0x180/0x1b0
[ 0.605682] nvmem_register+0x38c/0x470
[ 0.605789] devm_nvmem_register+0x1c/0x6c
[ 0.605895] apple_efuses_probe+0xe4/0x120
[ 0.606000] platform_probe+0xa8/0xd0
As far as I can tell, this is a problem for any device with multiple cells on
different bits of the same address. Avoid the issue by changing the file name
to include the first bit number.
Fixes:
|
||
---|---|---|
.. | ||
layouts | ||
apple-efuses.c | ||
bcm-ocotp.c | ||
brcm_nvram.c | ||
core.c | ||
imx-iim.c | ||
imx-ocotp-ele.c | ||
imx-ocotp-scu.c | ||
imx-ocotp.c | ||
internals.h | ||
jz4780-efuse.c | ||
Kconfig | ||
lan9662-otpc.c | ||
layerscape-sfp.c | ||
layouts.c | ||
lpc18xx_eeprom.c | ||
lpc18xx_otp.c | ||
Makefile | ||
meson-efuse.c | ||
meson-mx-efuse.c | ||
microchip-otpc.c | ||
mtk-efuse.c | ||
mxs-ocotp.c | ||
nintendo-otp.c | ||
qcom-spmi-sdam.c | ||
qfprom.c | ||
qoriq-efuse.c | ||
rave-sp-eeprom.c | ||
rmem.c | ||
rockchip-efuse.c | ||
rockchip-otp.c | ||
sc27xx-efuse.c | ||
sec-qfprom.c | ||
snvs_lpgpr.c | ||
sprd-efuse.c | ||
stm32-bsec-optee-ta.c | ||
stm32-bsec-optee-ta.h | ||
stm32-romem.c | ||
sunplus-ocotp.c | ||
sunxi_sid.c | ||
u-boot-env.c | ||
uniphier-efuse.c | ||
vf610-ocotp.c | ||
zynqmp_nvmem.c |