Re: Regression caused by "eeprom: at24: Probe for DDR3 thermal sensor in the SPD case" - "sysfs: cannot create duplicate filename"

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 6/23/24 11:47, Krzysztof Olędzki wrote:
Hi,

After upgrading kernel to Linux 6.6.34 on one of my systems, I noticed "sysfs: cannot create duplicate filename" and i2c registration errors in dmesg, please see below.

This seems to be related to https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-6.6.y&id=4d5ace787273cb159bfdcf1c523df957938b3e42 - reverting the change fixes the problem.

Note that jc42 devices are registered correctly and work with and without the change.


My guess is that the devices are fist instantiated through the jc42
driver's _detect function and then again from the at24 driver.
The at24 driver should possibly call i2c_new_scanned_device() instead
of i2c_new_client_device() to only instantiate the device if it wasn't
already instantiated.

Guenter

# grep . /sys/devices/pci0000:00/0000:00:1f.3/i2c-12/12-*/name
/sys/devices/pci0000:00/0000:00:1f.3/i2c-12/12-0018/name:jc42
/sys/devices/pci0000:00/0000:00:1f.3/i2c-12/12-0019/name:jc42
/sys/devices/pci0000:00/0000:00:1f.3/i2c-12/12-001a/name:jc42
/sys/devices/pci0000:00/0000:00:1f.3/i2c-12/12-001b/name:jc42
/sys/devices/pci0000:00/0000:00:1f.3/i2c-12/12-0050/name:spd
/sys/devices/pci0000:00/0000:00:1f.3/i2c-12/12-0051/name:spd
/sys/devices/pci0000:00/0000:00:1f.3/i2c-12/12-0052/name:spd
/sys/devices/pci0000:00/0000:00:1f.3/i2c-12/12-0053/name:spd

# sensors|grep -A4 jc42-i2c
jc42-i2c-12-1b
Adapter: SMBus I801 adapter at 3000
temp1:        +33.2°C  (low  =  +0.0°C)
                        (high = +91.0°C, hyst = +91.0°C)
                        (crit = +95.0°C, hyst = +95.0°C)
--
jc42-i2c-12-19
Adapter: SMBus I801 adapter at 3000
temp1:        +33.5°C  (low  =  +0.0°C)
                        (high = +91.0°C, hyst = +91.0°C)
                        (crit = +95.0°C, hyst = +95.0°C)
--
jc42-i2c-12-1a
Adapter: SMBus I801 adapter at 3000
temp1:        +33.5°C  (low  =  +0.0°C)
                        (high = +91.0°C, hyst = +91.0°C)
                        (crit = +95.0°C, hyst = +95.0°C)
--
jc42-i2c-12-18
Adapter: SMBus I801 adapter at 3000
temp1:        +33.2°C  (low  =  +0.0°C)
                        (high = +91.0°C, hyst = +91.0°C)
                        (crit = +95.0°C, hyst = +95.0°C)


dmesg:
[    0.000000] DMI: Dell Inc. PowerEdge T110 II/0PM2CW, BIOS 2.10.0 05/24/2018
(...)
[    7.681132] i2c_dev: i2c /dev entries driver
[    7.687116] i2c i2c-12: 4/4 memory slots populated (from DMI)
[    7.690623] at24 12-0050: 256 byte spd EEPROM, read-only
[    7.691812] i2c i2c-12: Successfully instantiated SPD at 0x50
[    7.698246] at24 12-0051: 256 byte spd EEPROM, read-only
[    7.699465] i2c i2c-12: Successfully instantiated SPD at 0x51
[    7.700043] i2c i2c-12: Failed to register i2c client jc42 at 0x19 (-16)
[    7.700047] i2c i2c-12: Failed creating jc42 at 0x19
[    7.705248] sysfs: cannot create duplicate filename '/devices/pci0000:00/0000:00:1f.3/i2c-12/12-001a'
[    7.711617]  <TASK>
[    7.712612]  dump_stack_lvl+0x37/0x4a
[    7.712612]  sysfs_warn_dup+0x55/0x61
[    7.715616]  sysfs_create_dir_ns+0xa6/0xd2
[    7.716620]  kobject_add_internal+0xc3/0x1c0
[    7.716620]  kobject_add+0xba/0xe4
[    7.719615]  ? device_add+0x53/0x726
[    7.720611]  device_add+0x132/0x726
[    7.720611]  i2c_new_client_device+0x1ee/0x246
[    7.723616]  at24_probe+0x5f8/0x666
[    7.724642]  ? __pfx_at24_read+0x10/0x10
[    7.724642]  ? __pfx_at24_write+0x10/0x10
[    7.724642]  ? __pfx___device_attach_driver+0x10/0x10
[    7.727619]  i2c_device_probe+0x1b7/0x240
[    7.728612]  really_probe+0x101/0x248
[    7.728612]  __driver_probe_device+0xbb/0xed
[    7.731620]  driver_probe_device+0x1a/0x72
[    7.732621]  __device_attach_driver+0x82/0x96
[    7.732621]  bus_for_each_drv+0xa6/0xd4
[    7.732621]  __device_attach+0xa8/0x12a
[    7.735619]  bus_probe_device+0x31/0x95
[    7.736614]  device_add+0x265/0x726
[    7.736614]  i2c_new_client_device+0x1ee/0x246
[    7.739618]  i2c_register_spd+0x1a1/0x1ed
[    7.740613]  i801_probe+0x589/0x603
[    7.740613]  ? up_write+0x37/0x4d
[    7.740613]  ? kernfs_add_one+0x104/0x126
[    7.743618]  ? __raw_spin_unlock_irqrestore+0x14/0x29
[    7.744612]  pci_device_probe+0xbe/0x12f
[    7.744612]  really_probe+0x101/0x248
[    7.744612]  __driver_probe_device+0xbb/0xed
[    7.747618]  driver_probe_device+0x1a/0x72
[    7.748612]  __driver_attach_async_helper+0x2d/0x42
[    7.748612]  async_run_entry_fn+0x25/0xa0
[    7.748612]  process_scheduled_works+0x193/0x291
[    7.748612]  worker_thread+0x1c5/0x21f
[    7.751619]  ? __pfx_worker_thread+0x10/0x10
[    7.752611]  kthread+0xf6/0xfe
[    7.752611]  ? __pfx_kthread+0x10/0x10
[    7.752611]  ret_from_fork+0x23/0x35
[    7.755621]  ? __pfx_kthread+0x10/0x10
[    7.756613]  ret_from_fork_asm+0x1b/0x30
[    7.756613]  </TASK>
[    7.759637] i2c i2c-12: Failed to register i2c client jc42 at 0x1a (-17)
[    7.760815] at24 12-0052: 256 byte spd EEPROM, read-only
[    7.762047] i2c i2c-12: Successfully instantiated SPD at 0x52
[    7.765252] i2c i2c-12: Failed to register i2c client jc42 at 0x1b (-16)
[    7.766126] at24 12-0053: 256 byte spd EEPROM, read-only
[    7.767584] i2c i2c-12: Successfully instantiated SPD at 0x53

Thanks,
  Krzysztof





[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux