[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <0dfa2919-98eb-4433-acb4-aa1830787c9b@roeck-us.net>
Date: Sun, 23 Jun 2024 22:33:15 -0700
From: Guenter Roeck <linux@...ck-us.net>
To: Krzysztof Olędzki <ole@....pl>,
Heiner Kallweit <hkallweit1@...il.com>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
Bartosz Golaszewski <brgl@...ev.pl>
Cc: stable@...r.kernel.org, linux-i2c@...r.kernel.org,
linux-hwmon@...r.kernel.org,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>
Subject: Re: Regression caused by "eeprom: at24: Probe for DDR3 thermal sensor
in the SPD case" - "sysfs: cannot create duplicate filename"
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
Powered by blists - more mailing lists