* Regression caused by "eeprom: at24: Probe for DDR3 thermal sensor in the SPD case" - "sysfs: cannot create duplicate filename"
@ 2024-06-23 18:47 Krzysztof Olędzki
2024-06-24 5:33 ` Guenter Roeck
` (2 more replies)
0 siblings, 3 replies; 18+ messages in thread
From: Krzysztof Olędzki @ 2024-06-23 18:47 UTC (permalink / raw)
To: Heiner Kallweit, Greg Kroah-Hartman, Guenter Roeck,
Bartosz Golaszewski
Cc: stable, linux-i2c, linux-hwmon, Linux Kernel Mailing List
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.
# 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
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Regression caused by "eeprom: at24: Probe for DDR3 thermal sensor in the SPD case" - "sysfs: cannot create duplicate filename"
2024-06-23 18:47 Regression caused by "eeprom: at24: Probe for DDR3 thermal sensor in the SPD case" - "sysfs: cannot create duplicate filename" Krzysztof Olędzki
@ 2024-06-24 5:33 ` Guenter Roeck
2024-06-24 8:38 ` Krzysztof Olędzki
2024-06-24 5:43 ` Greg Kroah-Hartman
2024-07-02 20:25 ` Heiner Kallweit
2 siblings, 1 reply; 18+ messages in thread
From: Guenter Roeck @ 2024-06-24 5:33 UTC (permalink / raw)
To: Krzysztof Olędzki, Heiner Kallweit, Greg Kroah-Hartman,
Bartosz Golaszewski
Cc: stable, linux-i2c, linux-hwmon, Linux Kernel Mailing List
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
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Regression caused by "eeprom: at24: Probe for DDR3 thermal sensor in the SPD case" - "sysfs: cannot create duplicate filename"
2024-06-23 18:47 Regression caused by "eeprom: at24: Probe for DDR3 thermal sensor in the SPD case" - "sysfs: cannot create duplicate filename" Krzysztof Olędzki
2024-06-24 5:33 ` Guenter Roeck
@ 2024-06-24 5:43 ` Greg Kroah-Hartman
2024-06-24 13:35 ` Guenter Roeck
2024-07-02 20:25 ` Heiner Kallweit
2 siblings, 1 reply; 18+ messages in thread
From: Greg Kroah-Hartman @ 2024-06-24 5:43 UTC (permalink / raw)
To: Krzysztof Olędzki
Cc: Heiner Kallweit, Guenter Roeck, Bartosz Golaszewski, stable,
linux-i2c, linux-hwmon, Linux Kernel Mailing List
On Sun, Jun 23, 2024 at 11:47:39AM -0700, 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.
So is this also an issue in 6.9?
thanks,
greg k-h
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Regression caused by "eeprom: at24: Probe for DDR3 thermal sensor in the SPD case" - "sysfs: cannot create duplicate filename"
2024-06-24 5:33 ` Guenter Roeck
@ 2024-06-24 8:38 ` Krzysztof Olędzki
2024-06-24 14:54 ` Guenter Roeck
0 siblings, 1 reply; 18+ messages in thread
From: Krzysztof Olędzki @ 2024-06-24 8:38 UTC (permalink / raw)
To: Guenter Roeck, Heiner Kallweit, Greg Kroah-Hartman,
Bartosz Golaszewski, Geert Uytterhoeven, Wolfram Sang
Cc: stable, linux-i2c, linux-hwmon, Linux Kernel Mailing List
On 23.06.2024 at 22:33, Guenter Roeck wrote:
> 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.
i2c_new_scanned_device() also calls i2c_default_probe() at the end (unless
different probe is provided) which seems risky given the comment that explains
that it would use quick write for that address. However, maybe it is safe in this case?
I wish we had a way to just tell "no probing is needed".
We also know the exact address so no scanning is needed.
Perhaps it would be better to just call i2c_check_addr_busy() in
at24_probe_temp_sensor()?
Something like this:
--- a/drivers/misc/eeprom/at24.c 2024-06-24 09:16:11.251855130 +0200
+++ b/drivers/misc/eeprom/at24.c 2024-06-24 09:27:01.158170725 +0200
@@ -603,6 +603,10 @@
info.addr = 0x18 | (client->addr & 7);
+ /* The device may be already instantiated through the jc42 driver */
+ if (i2c_check_addr_busy(client->adapter, info.addr))
+ return;
+
i2c_new_client_device(client->adapter, &info);
}
Unfortunately, i2c_check_addr_busy is not exported and declared as static,
I assume intentionally? Unless this can be changed, we are back to the original
recommendation:
--- a/drivers/misc/eeprom/at24.c 2024-06-24 09:16:11.251855130 +0200
+++ b/drivers/misc/eeprom/at24.c 2024-06-24 10:25:39.142567472 +0200
@@ -585,6 +585,7 @@
{
struct at24_data *at24 = i2c_get_clientdata(client);
struct i2c_board_info info = { .type = "jc42" };
+ unsigned short addr_list[] = { 0, I2C_CLIENT_END };
int ret;
u8 val;
@@ -601,9 +602,10 @@
if (ret || !(val & BIT(7)))
return;
- info.addr = 0x18 | (client->addr & 7);
+ addr_list[0] = 0x18 | (client->addr & 7);
- i2c_new_client_device(client->adapter, &info);
+ /* The device may be already instantiated through the jc42 driver */
+ i2c_new_scanned_device(client->adapter, &info, addr_list, NULL);
}
static int at24_probe(struct i2c_client *client)
For now compile-tested only given the write-test concern above.
That said, I have some follow-up questions:
1. if the jc42 driver handles this already, I wonder what's the point of adding
at24_probe_temp_sensor()? Is there a situation where it would not do it properly?
Or do we expect to remove the probing functionally from jc42.c?
2. I don't understand why we are also getting the "Failed creating jc42" and
"sysfs: cannot create duplicate filename" errors since i2c_new_client_device() calls
i2c_check_addr_busy() on its own and should abort after the first error message?
3. (unrelated but found while looking at the code) The comment for
delete_device_store() seems to be outdated as it mentions i2c_sysfs_new_device
which does not exist any longer, as it was renamed in
"i2c: core: Use DEVICE_ATTR_*() helper macros" back in 2019:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/i2c/i2c-core-base.c?id=54a19fd4a6402ef47fce5c3a5374c71f52373c40 -
For the Greg's question if it is also in 6.9: I have not tested that kernel yet,
but unless there have been some recent changes in the i2c code I would expect
it should behave the same way. If required, I should be able to do this next week.
Krzysztof
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Regression caused by "eeprom: at24: Probe for DDR3 thermal sensor in the SPD case" - "sysfs: cannot create duplicate filename"
2024-06-24 5:43 ` Greg Kroah-Hartman
@ 2024-06-24 13:35 ` Guenter Roeck
0 siblings, 0 replies; 18+ messages in thread
From: Guenter Roeck @ 2024-06-24 13:35 UTC (permalink / raw)
To: Greg Kroah-Hartman, Krzysztof Olędzki
Cc: Heiner Kallweit, Bartosz Golaszewski, stable, linux-i2c,
linux-hwmon, Linux Kernel Mailing List
On 6/23/24 22:43, Greg Kroah-Hartman wrote:
> On Sun, Jun 23, 2024 at 11:47:39AM -0700, 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.
>
> So is this also an issue in 6.9?
>
I didn't verify, but I am quite sure that it is seen there as well.
Guenter
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Regression caused by "eeprom: at24: Probe for DDR3 thermal sensor in the SPD case" - "sysfs: cannot create duplicate filename"
2024-06-24 8:38 ` Krzysztof Olędzki
@ 2024-06-24 14:54 ` Guenter Roeck
2024-06-24 16:23 ` Guenter Roeck
` (2 more replies)
0 siblings, 3 replies; 18+ messages in thread
From: Guenter Roeck @ 2024-06-24 14:54 UTC (permalink / raw)
To: Krzysztof Olędzki, Heiner Kallweit, Greg Kroah-Hartman,
Bartosz Golaszewski, Geert Uytterhoeven, Wolfram Sang
Cc: stable, linux-i2c, linux-hwmon, Linux Kernel Mailing List
On 6/24/24 01:38, Krzysztof Olędzki wrote:
> On 23.06.2024 at 22:33, Guenter Roeck wrote:
>> 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.
>
> i2c_new_scanned_device() also calls i2c_default_probe() at the end (unless
> different probe is provided) which seems risky given the comment that explains
> that it would use quick write for that address. However, maybe it is safe in this case?
> I wish we had a way to just tell "no probing is needed".
>
Sorry, I don't understand why it would be less risky to just probe the device
without such a test.
> We also know the exact address so no scanning is needed.
>
> Perhaps it would be better to just call i2c_check_addr_busy() in
> at24_probe_temp_sensor()?
>
> Something like this:
> --- a/drivers/misc/eeprom/at24.c 2024-06-24 09:16:11.251855130 +0200
> +++ b/drivers/misc/eeprom/at24.c 2024-06-24 09:27:01.158170725 +0200
> @@ -603,6 +603,10 @@
>
> info.addr = 0x18 | (client->addr & 7);
>
> + /* The device may be already instantiated through the jc42 driver */
> + if (i2c_check_addr_busy(client->adapter, info.addr))
> + return;
> +
> i2c_new_client_device(client->adapter, &info);
> }
>
> Unfortunately, i2c_check_addr_busy is not exported and declared as static,
That is why I did not suggest that.
> I assume intentionally? Unless this can be changed, we are back to the original
> recommendation:
>
> --- a/drivers/misc/eeprom/at24.c 2024-06-24 09:16:11.251855130 +0200
> +++ b/drivers/misc/eeprom/at24.c 2024-06-24 10:25:39.142567472 +0200
> @@ -585,6 +585,7 @@
> {
> struct at24_data *at24 = i2c_get_clientdata(client);
> struct i2c_board_info info = { .type = "jc42" };
> + unsigned short addr_list[] = { 0, I2C_CLIENT_END };
> int ret;
> u8 val;
>
> @@ -601,9 +602,10 @@
> if (ret || !(val & BIT(7)))
> return;
>
> - info.addr = 0x18 | (client->addr & 7);
> + addr_list[0] = 0x18 | (client->addr & 7);
>
> - i2c_new_client_device(client->adapter, &info);
> + /* The device may be already instantiated through the jc42 driver */
> + i2c_new_scanned_device(client->adapter, &info, addr_list, NULL);
> }
>
> static int at24_probe(struct i2c_client *client)
>
> For now compile-tested only given the write-test concern above.
>
The device detect code in the i2c core does that same write-test that you
are concerned about.
> That said, I have some follow-up questions:
>
> 1. if the jc42 driver handles this already, I wonder what's the point of adding
> at24_probe_temp_sensor()? Is there a situation where it would not do it properly?
> Or do we expect to remove the probing functionally from jc42.c?
>
The jc42 driver is not auto-loaded. When suggesting to remove the "probing
functionally", I assume you mean to remove its detect function. That would only
work if SPD EEPROMs were only connected to I2C adapters calling i2c_register_spd(),
and if the systems with those adapters would support DMI.
In v6.9, i2c_register_spd() is only called from the i801 driver (Intel systems).
In v6.11, piix4 (AMD) will be added. Even after that, all non-Intel / non-AMD systems
would no longer be able to support jc42 compatible chips by just loading the jc42
driver. That would not be acceptable.
> 2. I don't understand why we are also getting the "Failed creating jc42" and
> "sysfs: cannot create duplicate filename" errors since i2c_new_client_device() calls
> i2c_check_addr_busy() on its own and should abort after the first error message?
>
The "Failed creating" message is from the i2c core's detect function which
is only called if a new i2c adapter is added. This is actually the case here,
since the call sequence of the backtrace includes i801_probe(). It looks like
i2c_detect() runs asynchronously and doesn't protect itself against having
devices added to a bus while it is running on that same bus. That is just
a guess, though - I have not tried to verify it.
That does suggest, though, that even your suggested code above might not
completely fix the problem. It may be necessary to call i2c_lock_bus()
or similar from i2c_new_scanned_device() and i2c_detect(), but I don't know
if that is save, sufficient, or even possible.
> 3. (unrelated but found while looking at the code) The comment for
> delete_device_store() seems to be outdated as it mentions i2c_sysfs_new_device
> which does not exist any longer, as it was renamed in
> "i2c: core: Use DEVICE_ATTR_*() helper macros" back in 2019:
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/i2c/i2c-core-base.c?id=54a19fd4a6402ef47fce5c3a5374c71f52373c40 -
>
> For the Greg's question if it is also in 6.9: I have not tested that kernel yet,
> but unless there have been some recent changes in the i2c code I would expect
> it should behave the same way. If required, I should be able to do this next week.
>
Agreed.
Guenter
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Regression caused by "eeprom: at24: Probe for DDR3 thermal sensor in the SPD case" - "sysfs: cannot create duplicate filename"
2024-06-24 14:54 ` Guenter Roeck
@ 2024-06-24 16:23 ` Guenter Roeck
2024-06-24 20:58 ` Heiner Kallweit
2024-06-27 11:24 ` Krzysztof Olędzki
2 siblings, 0 replies; 18+ messages in thread
From: Guenter Roeck @ 2024-06-24 16:23 UTC (permalink / raw)
To: Krzysztof Olędzki, Heiner Kallweit, Greg Kroah-Hartman,
Bartosz Golaszewski, Geert Uytterhoeven, Wolfram Sang
Cc: stable, linux-i2c, linux-hwmon, Linux Kernel Mailing List
On 6/24/24 07:54, Guenter Roeck wrote:
[ ... ]
>> That said, I have some follow-up questions:
>>
>> 1. if the jc42 driver handles this already, I wonder what's the point of adding
>> at24_probe_temp_sensor()? Is there a situation where it would not do it properly?
>> Or do we expect to remove the probing functionally from jc42.c?
>>
>
> The jc42 driver is not auto-loaded. When suggesting to remove the "probing
> functionally", I assume you mean to remove its detect function. That would only
> work if SPD EEPROMs were only connected to I2C adapters calling i2c_register_spd(),
> and if the systems with those adapters would support DMI.
>
> In v6.9, i2c_register_spd() is only called from the i801 driver (Intel systems).
> In v6.11, piix4 (AMD) will be added. Even after that, all non-Intel / non-AMD systems
> would no longer be able to support jc42 compatible chips by just loading the jc42
> driver. That would not be acceptable.
>
There is another reason to not remove the detect function, one that I just found in
my system when I tried to reproduce the problem: While SPD data is supposed to identify
if a DIMM supports a temperature sensor, this is not always the case. The DIMMs
in one of my systems (F4-3200C14-16GTZSW) do support temperature sensors, but the
respective bit in the SPD data is not set. From raw SPD data:
000000 23 10 0c 02 85 21 00 08 00 40 00 03 09 03 00 00
^^
Bit 7 is supposed to be set but isn't.
This means that the thermal sensors on the DIMMs in my system would not be instantiated
without detect function and require manual instantiation.
Guenter
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Regression caused by "eeprom: at24: Probe for DDR3 thermal sensor in the SPD case" - "sysfs: cannot create duplicate filename"
2024-06-24 14:54 ` Guenter Roeck
2024-06-24 16:23 ` Guenter Roeck
@ 2024-06-24 20:58 ` Heiner Kallweit
2024-06-25 3:45 ` Guenter Roeck
2024-06-27 11:24 ` Krzysztof Olędzki
2 siblings, 1 reply; 18+ messages in thread
From: Heiner Kallweit @ 2024-06-24 20:58 UTC (permalink / raw)
To: Guenter Roeck, Krzysztof Olędzki, Greg Kroah-Hartman,
Bartosz Golaszewski, Geert Uytterhoeven, Wolfram Sang
Cc: stable, linux-i2c, linux-hwmon, Linux Kernel Mailing List
On 24.06.2024 16:54, Guenter Roeck wrote:
> On 6/24/24 01:38, Krzysztof Olędzki wrote:
>> On 23.06.2024 at 22:33, Guenter Roeck wrote:
>>> 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.
>>
>> i2c_new_scanned_device() also calls i2c_default_probe() at the end (unless
>> different probe is provided) which seems risky given the comment that explains
>> that it would use quick write for that address. However, maybe it is safe in this case?
>> I wish we had a way to just tell "no probing is needed".
>>
>
> Sorry, I don't understand why it would be less risky to just probe the device
> without such a test.
>
>> We also know the exact address so no scanning is needed.
>>
>> Perhaps it would be better to just call i2c_check_addr_busy() in
>> at24_probe_temp_sensor()?
>>
>> Something like this:
>> --- a/drivers/misc/eeprom/at24.c 2024-06-24 09:16:11.251855130 +0200
>> +++ b/drivers/misc/eeprom/at24.c 2024-06-24 09:27:01.158170725 +0200
>> @@ -603,6 +603,10 @@
>> info.addr = 0x18 | (client->addr & 7);
>> + /* The device may be already instantiated through the jc42 driver */
>> + if (i2c_check_addr_busy(client->adapter, info.addr))
>> + return;
>> +
>> i2c_new_client_device(client->adapter, &info);
>> }
>>
>> Unfortunately, i2c_check_addr_busy is not exported and declared as static,
>
> That is why I did not suggest that.
>
>> I assume intentionally? Unless this can be changed, we are back to the original
>> recommendation:
>>
>> --- a/drivers/misc/eeprom/at24.c 2024-06-24 09:16:11.251855130 +0200
>> +++ b/drivers/misc/eeprom/at24.c 2024-06-24 10:25:39.142567472 +0200
>> @@ -585,6 +585,7 @@
>> {
>> struct at24_data *at24 = i2c_get_clientdata(client);
>> struct i2c_board_info info = { .type = "jc42" };
>> + unsigned short addr_list[] = { 0, I2C_CLIENT_END };
>> int ret;
>> u8 val;
>> @@ -601,9 +602,10 @@
>> if (ret || !(val & BIT(7)))
>> return;
>> - info.addr = 0x18 | (client->addr & 7);
>> + addr_list[0] = 0x18 | (client->addr & 7);
>> - i2c_new_client_device(client->adapter, &info);
>> + /* The device may be already instantiated through the jc42 driver */
>> + i2c_new_scanned_device(client->adapter, &info, addr_list, NULL);
>> }
>> static int at24_probe(struct i2c_client *client)
>>
>> For now compile-tested only given the write-test concern above.
>>
>
> The device detect code in the i2c core does that same write-test that you
> are concerned about.
>
>> That said, I have some follow-up questions:
>>
>> 1. if the jc42 driver handles this already, I wonder what's the point of adding
>> at24_probe_temp_sensor()? Is there a situation where it would not do it properly?
>> Or do we expect to remove the probing functionally from jc42.c?
>>
>
> The jc42 driver is not auto-loaded. When suggesting to remove the "probing
> functionally", I assume you mean to remove its detect function. That would only
> work if SPD EEPROMs were only connected to I2C adapters calling i2c_register_spd(),
> and if the systems with those adapters would support DMI.
>
> In v6.9, i2c_register_spd() is only called from the i801 driver (Intel systems).
> In v6.11, piix4 (AMD) will be added. Even after that, all non-Intel / non-AMD systems
> would no longer be able to support jc42 compatible chips by just loading the jc42
> driver. That would not be acceptable.
>
>> 2. I don't understand why we are also getting the "Failed creating jc42" and
>> "sysfs: cannot create duplicate filename" errors since i2c_new_client_device() calls
>> i2c_check_addr_busy() on its own and should abort after the first error message?
>>
>
> The "Failed creating" message is from the i2c core's detect function which
> is only called if a new i2c adapter is added. This is actually the case here,
> since the call sequence of the backtrace includes i801_probe(). It looks like
> i2c_detect() runs asynchronously and doesn't protect itself against having
> devices added to a bus while it is running on that same bus. That is just
> a guess, though - I have not tried to verify it.
>
Too me the issue also looks like a race. According to the OP's logs:
- jc42 at 0x18 is instantiated successfully
- jc42 at 0x19 returns -EBUSY. This is what is expected if the device
has been instantiated otherwise already.
- jc42 at 0x1a returns -EEXIST. Here two instantiations of the the same
device seem to collide.
- jc42 at 0x1b returns -EBUSY, like at 0x19.
So it looks like referenced change isn't wrong, but reveals an
underlying issue with device instantiation races.
I'll have a look how this could be fixed.
> That does suggest, though, that even your suggested code above might not
> completely fix the problem. It may be necessary to call i2c_lock_bus()
> or similar from i2c_new_scanned_device() and i2c_detect(), but I don't know
> if that is save, sufficient, or even possible.
>
>> 3. (unrelated but found while looking at the code) The comment for
>> delete_device_store() seems to be outdated as it mentions i2c_sysfs_new_device
>> which does not exist any longer, as it was renamed in
>> "i2c: core: Use DEVICE_ATTR_*() helper macros" back in 2019:
>> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/i2c/i2c-core-base.c?id=54a19fd4a6402ef47fce5c3a5374c71f52373c40 -
>>
>> For the Greg's question if it is also in 6.9: I have not tested that kernel yet,
>> but unless there have been some recent changes in the i2c code I would expect
>> it should behave the same way. If required, I should be able to do this next week.
>>
> Agreed.
>
> Guenter
>
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Regression caused by "eeprom: at24: Probe for DDR3 thermal sensor in the SPD case" - "sysfs: cannot create duplicate filename"
2024-06-24 20:58 ` Heiner Kallweit
@ 2024-06-25 3:45 ` Guenter Roeck
2024-06-27 11:29 ` Krzysztof Olędzki
0 siblings, 1 reply; 18+ messages in thread
From: Guenter Roeck @ 2024-06-25 3:45 UTC (permalink / raw)
To: Heiner Kallweit, Krzysztof Olędzki, Greg Kroah-Hartman,
Bartosz Golaszewski, Geert Uytterhoeven, Wolfram Sang
Cc: stable, linux-i2c, linux-hwmon, Linux Kernel Mailing List
On 6/24/24 13:58, Heiner Kallweit wrote:
[ ... ]
>
> Too me the issue also looks like a race. According to the OP's logs:
> - jc42 at 0x18 is instantiated successfully
> - jc42 at 0x19 returns -EBUSY. This is what is expected if the device
> has been instantiated otherwise already.
> - jc42 at 0x1a returns -EEXIST. Here two instantiations of the the same
> device seem to collide.
> - jc42 at 0x1b returns -EBUSY, like at 0x19.
>
> So it looks like referenced change isn't wrong, but reveals an
> underlying issue with device instantiation races.
It isn't just a race, though. Try to unload the at24 (or ee1004 driver
for DDR4) and load it again, and you'll see the -EBUSY errors. Problem
is that instantiating those drivers _always_ triggers the call to
i2c_new_client_device() even if the jc42 device is already instantiated.
Unloading the spd/eeprom driver doesn't unload the jc42 driver,
so -EBUSY will be seen if the spd/eeprom driver is loaded again.
I have not been able to reproduce the backtrace with my systems, but those
are all with AMD CPUs using the piix4 driver, so timing is likely different.
Another difference is that my systems (with DDR4) use the ee1004 driver.
That driver instantiates the jc42 devices under a driver lock, so it is
guaranteed that a single instantiation doesn't interfere with other
instantiations running in parallel.
Guenter
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Regression caused by "eeprom: at24: Probe for DDR3 thermal sensor in the SPD case" - "sysfs: cannot create duplicate filename"
2024-06-24 14:54 ` Guenter Roeck
2024-06-24 16:23 ` Guenter Roeck
2024-06-24 20:58 ` Heiner Kallweit
@ 2024-06-27 11:24 ` Krzysztof Olędzki
2024-06-29 21:56 ` Heiner Kallweit
2 siblings, 1 reply; 18+ messages in thread
From: Krzysztof Olędzki @ 2024-06-27 11:24 UTC (permalink / raw)
To: Guenter Roeck, Heiner Kallweit, Greg Kroah-Hartman,
Bartosz Golaszewski, Geert Uytterhoeven, Wolfram Sang
Cc: stable, linux-i2c, linux-hwmon, Linux Kernel Mailing List
On 24.06.2024 at 07:54, Guenter Roeck wrote:
> On 6/24/24 01:38, Krzysztof Olędzki wrote:
>> On 23.06.2024 at 22:33, Guenter Roeck wrote:
>>> 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.
>>
>> i2c_new_scanned_device() also calls i2c_default_probe() at the end (unless
>> different probe is provided) which seems risky given the comment that explains
>> that it would use quick write for that address. However, maybe it is safe in this case?
>> I wish we had a way to just tell "no probing is needed".
>>
>
> Sorry, I don't understand why it would be less risky to just probe the device
> without such a test.
I'm referring to this comment on i2c_default_probe():
/*
* Legacy default probe function, mostly relevant for SMBus. The default
* probe method is a quick write, but it is known to corrupt the 24RF08
* EEPROMs due to a state machine bug, and could also irreversibly
* write-protect some EEPROMs, so for address ranges 0x30-0x37 and 0x50-0x5f,
* we use a short byte read instead. Also, some bus drivers don't implement
* quick write, so we fallback to a byte read in that case too.
* On x86, there is another special case for FSC hardware monitoring chips,
* which want regular byte reads (address 0x73.) Fortunately, these are the
* only known chips using this I2C address on PC hardware.
* Returns 1 if probe succeeded, 0 if not.
*/
<CUT>
>> For now compile-tested only given the write-test concern above.
>>
>
> The device detect code in the i2c core does that same write-test that you
> are concerned about.
There is no write-test testing in i2c_new_client_device() and I cannot find how
i2c_detect() would do that. However, after looking at this more, it seems that
we actually have jc42_detect() precisely for this, as this is what jc42.c
provides as the .detect callback.
>
>> That said, I have some follow-up questions:
>>
>> 1. if the jc42 driver handles this already, I wonder what's the point of adding
>> at24_probe_temp_sensor()? Is there a situation where it would not do it properly?
>> Or do we expect to remove the probing functionally from jc42.c?
>>
>
> The jc42 driver is not auto-loaded. When suggesting to remove the "probing
> functionally", I assume you mean to remove its detect function. That would only
> work if SPD EEPROMs were only connected to I2C adapters calling i2c_register_spd(),
> and if the systems with those adapters would support DMI.
I'm not suggesting to remove it. I'm just asking why we have two two different mechanisms
for doing the same thing and what is the plan longer term? A new code was added, where is
seems the old one has worked just fine. As you mentioned in the other response, it even
handles well a buggy DIMMS with their eeprom data incorrectly stating no temp sensor.
> In v6.9, i2c_register_spd() is only called from the i801 driver (Intel systems).
> In v6.11, piix4 (AMD) will be added. Even after that, all non-Intel / non-AMD systems
> would no longer be able to support jc42 compatible chips by just loading the jc42
> driver. That would not be acceptable.
Indeed.
>> 2. I don't understand why we are also getting the "Failed creating jc42" and
>> "sysfs: cannot create duplicate filename" errors since i2c_new_client_device() calls
>> i2c_check_addr_busy() on its own and should abort after the first error message?
>>
>
> The "Failed creating" message is from the i2c core's detect function which
> is only called if a new i2c adapter is added. This is actually the case here,
> since the call sequence of the backtrace includes i801_probe(). It looks like
> i2c_detect() runs asynchronously and doesn't protect itself against having
> devices added to a bus while it is running on that same bus. That is just
> a guess, though - I have not tried to verify it.
>
> That does suggest, though, that even your suggested code above might not
> completely fix the problem. It may be necessary to call i2c_lock_bus()
> or similar from i2c_new_scanned_device() and i2c_detect(), but I don't know
> if that is save, sufficient, or even possible.
Right... Which again brings the original question: is there a situation where
jc42 is not able to detect the temp sensors on its own?
Krzysztof
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Regression caused by "eeprom: at24: Probe for DDR3 thermal sensor in the SPD case" - "sysfs: cannot create duplicate filename"
2024-06-25 3:45 ` Guenter Roeck
@ 2024-06-27 11:29 ` Krzysztof Olędzki
2024-06-27 12:12 ` Krzysztof Olędzki
0 siblings, 1 reply; 18+ messages in thread
From: Krzysztof Olędzki @ 2024-06-27 11:29 UTC (permalink / raw)
To: Guenter Roeck, Heiner Kallweit, Greg Kroah-Hartman,
Bartosz Golaszewski, Geert Uytterhoeven, Wolfram Sang
Cc: stable, linux-i2c, linux-hwmon, Linux Kernel Mailing List
On 24.06.2024 at 20:45, Guenter Roeck wrote:
> On 6/24/24 13:58, Heiner Kallweit wrote:
> [ ... ]
>>
>> Too me the issue also looks like a race. According to the OP's logs:
>> - jc42 at 0x18 is instantiated successfully
>> - jc42 at 0x19 returns -EBUSY. This is what is expected if the device
>> has been instantiated otherwise already.
>> - jc42 at 0x1a returns -EEXIST. Here two instantiations of the the same
>> device seem to collide.
>> - jc42 at 0x1b returns -EBUSY, like at 0x19.
>>
>> So it looks like referenced change isn't wrong, but reveals an
>> underlying issue with device instantiation races.
>
> It isn't just a race, though. Try to unload the at24 (or ee1004 driver
> for DDR4) and load it again, and you'll see the -EBUSY errors. Problem
> is that instantiating those drivers _always_ triggers the call to
> i2c_new_client_device() even if the jc42 device is already instantiated.
> Unloading the spd/eeprom driver doesn't unload the jc42 driver,
> so -EBUSY will be seen if the spd/eeprom driver is loaded again.
>
> I have not been able to reproduce the backtrace with my systems, but those
> are all with AMD CPUs using the piix4 driver, so timing is likely different.
> Another difference is that my systems (with DDR4) use the ee1004 driver.
> That driver instantiates the jc42 devices under a driver lock, so it is
> guaranteed that a single instantiation doesn't interfere with other
> instantiations running in parallel.
Right, sorry for not mentioning this in the original report:
[ 0.269013] pci 0000:00:1f.3: [8086:1c22] type 00 class 0x0c0500
[ 0.269098] pci 0000:00:1f.3: reg 0x10: [mem 0xc3a02000-0xc3a020ff 64bit]
[ 0.269186] pci 0000:00:1f.3: reg 0x20: [io 0x3000-0x301f]
[ 0.334962] pci 0000:00:1f.3: Adding to iommu group 7
[ 7.874736] i801_smbus 0000:00:1f.3: SMBus using PCI interrupt
$ lspci -s 0000:00:1f.3 -vvnn
00:1f.3 SMBus [0c05]: Intel Corporation 6 Series/C200 Series Chipset Family SMBus Controller [8086:1c22] (rev 04)
Subsystem: Dell Device [1028:04de]
Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Interrupt: pin C routed to IRQ 19
IOMMU group: 7
Region 0: Memory at c3a02000 (64-bit, non-prefetchable) [size=256]
Region 4: I/O ports at 3000 [size=32]
Kernel driver in use: i801_smbus
Krzysztof
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Regression caused by "eeprom: at24: Probe for DDR3 thermal sensor in the SPD case" - "sysfs: cannot create duplicate filename"
2024-06-27 11:29 ` Krzysztof Olędzki
@ 2024-06-27 12:12 ` Krzysztof Olędzki
0 siblings, 0 replies; 18+ messages in thread
From: Krzysztof Olędzki @ 2024-06-27 12:12 UTC (permalink / raw)
To: Guenter Roeck, Heiner Kallweit, Greg Kroah-Hartman,
Bartosz Golaszewski, Geert Uytterhoeven, Wolfram Sang
Cc: stable, linux-i2c, linux-hwmon, Linux Kernel Mailing List
On 27.06.2024 at 04:29, Krzysztof Olędzki wrote:
> On 24.06.2024 at 20:45, Guenter Roeck wrote:
>> On 6/24/24 13:58, Heiner Kallweit wrote:
>> [ ... ]
>>>
>>> Too me the issue also looks like a race. According to the OP's logs:
>>> - jc42 at 0x18 is instantiated successfully
>>> - jc42 at 0x19 returns -EBUSY. This is what is expected if the device
>>> has been instantiated otherwise already.
>>> - jc42 at 0x1a returns -EEXIST. Here two instantiations of the the same
>>> device seem to collide.
>>> - jc42 at 0x1b returns -EBUSY, like at 0x19.
>>>
>>> So it looks like referenced change isn't wrong, but reveals an
>>> underlying issue with device instantiation races.
>>
>> It isn't just a race, though. Try to unload the at24 (or ee1004 driver
>> for DDR4) and load it again, and you'll see the -EBUSY errors. Problem
>> is that instantiating those drivers _always_ triggers the call to
>> i2c_new_client_device() even if the jc42 device is already instantiated.
>> Unloading the spd/eeprom driver doesn't unload the jc42 driver,
>> so -EBUSY will be seen if the spd/eeprom driver is loaded again.
>>
>> I have not been able to reproduce the backtrace with my systems, but those
>> are all with AMD CPUs using the piix4 driver, so timing is likely different.
>> Another difference is that my systems (with DDR4) use the ee1004 driver.
>> That driver instantiates the jc42 devices under a driver lock, so it is
>> guaranteed that a single instantiation doesn't interfere with other
>> instantiations running in parallel.
>
> Right, sorry for not mentioning this in the original report:
>
> [ 0.269013] pci 0000:00:1f.3: [8086:1c22] type 00 class 0x0c0500
> [ 0.269098] pci 0000:00:1f.3: reg 0x10: [mem 0xc3a02000-0xc3a020ff 64bit]
> [ 0.269186] pci 0000:00:1f.3: reg 0x20: [io 0x3000-0x301f]
> [ 0.334962] pci 0000:00:1f.3: Adding to iommu group 7
> [ 7.874736] i801_smbus 0000:00:1f.3: SMBus using PCI interrupt
>
> $ lspci -s 0000:00:1f.3 -vvnn
> 00:1f.3 SMBus [0c05]: Intel Corporation 6 Series/C200 Series Chipset Family SMBus Controller [8086:1c22] (rev 04)
> Subsystem: Dell Device [1028:04de]
> Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> Interrupt: pin C routed to IRQ 19
> IOMMU group: 7
> Region 0: Memory at c3a02000 (64-bit, non-prefetchable) [size=256]
> Region 4: I/O ports at 3000 [size=32]
> Kernel driver in use: i801_smbus
Also, here is a different trace showing a different code path, which even more suggest a race:
[ 7.871973] i2c_dev: i2c /dev entries driver
[ 7.878215] i2c i2c-12: 4/4 memory slots populated (from DMI)
[ 7.881116] at24 12-0050: 256 byte spd EEPROM, read-only
[ 7.881887] i2c i2c-12: Successfully instantiated SPD at 0x50
[ 7.894183] at24 12-0051: 256 byte spd EEPROM, read-only
[ 7.895910] i2c i2c-12: Failed to register i2c client jc42 at 0x19 (-16)
[ 7.896039] i2c i2c-12: Successfully instantiated SPD at 0x51
[ 7.896850] i2c i2c-12: Failed creating jc42 at 0x19
[ 7.903444] sysfs: cannot create duplicate filename '/devices/pci0000:00/0000:00:1f.3/i2c-12/12-001a'
[ 7.904085] at24 12-0052: 256 byte spd EEPROM, read-only
[ 7.905284] Hardware name: Dell Inc. PowerEdge T110 II/0PM2CW, BIOS 2.10.0 05/24/2018
[ 7.905284] Call Trace:
[ 7.905284] <TASK>
[ 7.909238] dump_stack_lvl+0x37/0x4a
[ 7.910488] at24 12-0053: 256 byte spd EEPROM, read-only
[ 7.909855] sysfs_warn_dup+0x55/0x61
[ 7.911456] i2c i2c-12: Successfully instantiated SPD at 0x53
[ 7.911597] sysfs_create_dir_ns+0xa6/0xd2
[ 7.911597] kobject_add_internal+0xc3/0x1c0
[ 7.914606] kobject_add+0xba/0xe4
[ 7.915595] ? device_add+0x53/0x726
[ 7.915595] device_add+0x132/0x726
[ 7.916622] i2c_new_client_device+0x1ee/0x246
[ 7.916622] i2c_detect.isra.0+0x17c/0x223
[ 7.918603] ? __pfx___process_new_driver+0x10/0x10
[ 7.919603] __process_new_driver+0x17/0x1e
[ 7.919603] bus_for_each_dev+0x8b/0xcf
[ 7.920595] ? __pfx___process_new_driver+0x10/0x10
[ 7.920595] i2c_for_each_dev+0x2d/0x49
[ 7.922608] i2c_register_driver+0x51/0x63
[ 7.922608] ? __pfx_jc42_driver_init+0x10/0x10
[ 7.923595] do_one_initcall+0x93/0x182
[ 7.924601] kernel_init_freeable+0x1be/0x204
[ 7.924601] ? __pfx_kernel_init+0x10/0x10
[ 7.924601] kernel_init+0x15/0x110
[ 7.926609] ret_from_fork+0x23/0x35
[ 7.927602] ? __pfx_kernel_init+0x10/0x10
[ 7.927602] ret_from_fork_asm+0x1b/0x30
[ 7.927602] </TASK>
[ 7.929937] kobject: kobject_add_internal failed for 12-001a with -EEXIST, don't try to register things with the same name in the same directory.
[ 7.932129] i2c i2c-12: Failed to register i2c client jc42 at 0x1a (-17)
[ 7.933257] i2c i2c-12: Failed creating jc42 at 0x1a
Note there is no warning for 0x18 and 0x1b.
# sensors|grep jc42-i2c|sort
jc42-i2c-12-18
jc42-i2c-12-19
jc42-i2c-12-1a
jc42-i2c-12-1b
Krzysztof
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Regression caused by "eeprom: at24: Probe for DDR3 thermal sensor in the SPD case" - "sysfs: cannot create duplicate filename"
2024-06-27 11:24 ` Krzysztof Olędzki
@ 2024-06-29 21:56 ` Heiner Kallweit
0 siblings, 0 replies; 18+ messages in thread
From: Heiner Kallweit @ 2024-06-29 21:56 UTC (permalink / raw)
To: Krzysztof Olędzki, Guenter Roeck, Greg Kroah-Hartman,
Bartosz Golaszewski, Geert Uytterhoeven, Wolfram Sang
Cc: stable, linux-i2c, linux-hwmon, Linux Kernel Mailing List
On 27.06.2024 13:24, Krzysztof Olędzki wrote:
> On 24.06.2024 at 07:54, Guenter Roeck wrote:
>> On 6/24/24 01:38, Krzysztof Olędzki wrote:
>>> On 23.06.2024 at 22:33, Guenter Roeck wrote:
>>>> 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.
>>>
>>> i2c_new_scanned_device() also calls i2c_default_probe() at the end (unless
>>> different probe is provided) which seems risky given the comment that explains
>>> that it would use quick write for that address. However, maybe it is safe in this case?
>>> I wish we had a way to just tell "no probing is needed".
>>>
>>
>> Sorry, I don't understand why it would be less risky to just probe the device
>> without such a test.
>
>
> I'm referring to this comment on i2c_default_probe():
>
> /*
> * Legacy default probe function, mostly relevant for SMBus. The default
> * probe method is a quick write, but it is known to corrupt the 24RF08
> * EEPROMs due to a state machine bug, and could also irreversibly
> * write-protect some EEPROMs, so for address ranges 0x30-0x37 and 0x50-0x5f,
> * we use a short byte read instead. Also, some bus drivers don't implement
> * quick write, so we fallback to a byte read in that case too.
> * On x86, there is another special case for FSC hardware monitoring chips,
> * which want regular byte reads (address 0x73.) Fortunately, these are the
> * only known chips using this I2C address on PC hardware.
> * Returns 1 if probe succeeded, 0 if not.
> */
>
> <CUT>
>
>>> For now compile-tested only given the write-test concern above.
>>>
>>
>> The device detect code in the i2c core does that same write-test that you
>> are concerned about.
>
>
> There is no write-test testing in i2c_new_client_device() and I cannot find how
> i2c_detect() would do that. However, after looking at this more, it seems that
> we actually have jc42_detect() precisely for this, as this is what jc42.c
> provides as the .detect callback.
>
>>
>>> That said, I have some follow-up questions:
>>>
>>> 1. if the jc42 driver handles this already, I wonder what's the point of adding
>>> at24_probe_temp_sensor()? Is there a situation where it would not do it properly?
>>> Or do we expect to remove the probing functionally from jc42.c?
>>>
>>
>> The jc42 driver is not auto-loaded. When suggesting to remove the "probing
>> functionally", I assume you mean to remove its detect function. That would only
>> work if SPD EEPROMs were only connected to I2C adapters calling i2c_register_spd(),
>> and if the systems with those adapters would support DMI.
>
> I'm not suggesting to remove it. I'm just asking why we have two two different mechanisms
> for doing the same thing and what is the plan longer term? A new code was added, where is
> seems the old one has worked just fine. As you mentioned in the other response, it even
> handles well a buggy DIMMS with their eeprom data incorrectly stating no temp sensor.
>
Auto-probing (scanning) is a legacy mechanism, and all use cases but hwmon have been
removed meanwhile. One of the reasons is that the detect i2c access could do harm to
a device of another type that sits on one of the scanned addresses.
Explicit instantiation is preferred.
Another reason why explicit instantiation is preferred: It allows auto-loading of
i2c client driver modules. W/o explicit instantiation jc42 needs to be loaded
manually (or by some user space tool).
It seems we have two issues:
1. Calls to i2c_new_client_device() aren't serialized. Parallel instantiation
of the same device can cause errors like reported here.
2. i2c_new_client_device() complains also if the same device has been instantiated
already.
Issue 2 we may be able to tackle w/o big effort:
So far we just check for registered clients with the same bus address, and complain
if found. It should be possible (not tested yet) to include the client device name
in the check. If the names are identical, then we can assume it's the same device
that has been registered by other means already, and silence the error message.
>> In v6.9, i2c_register_spd() is only called from the i801 driver (Intel systems).
>> In v6.11, piix4 (AMD) will be added. Even after that, all non-Intel / non-AMD systems
>> would no longer be able to support jc42 compatible chips by just loading the jc42
>> driver. That would not be acceptable.
>
> Indeed.
>
>>> 2. I don't understand why we are also getting the "Failed creating jc42" and
>>> "sysfs: cannot create duplicate filename" errors since i2c_new_client_device() calls
>>> i2c_check_addr_busy() on its own and should abort after the first error message?
>>>
>>
>> The "Failed creating" message is from the i2c core's detect function which
>> is only called if a new i2c adapter is added. This is actually the case here,
>> since the call sequence of the backtrace includes i801_probe(). It looks like
>> i2c_detect() runs asynchronously and doesn't protect itself against having
>> devices added to a bus while it is running on that same bus. That is just
>> a guess, though - I have not tried to verify it.
>>
>> That does suggest, though, that even your suggested code above might not
>> completely fix the problem. It may be necessary to call i2c_lock_bus()
>> or similar from i2c_new_scanned_device() and i2c_detect(), but I don't know
>> if that is save, sufficient, or even possible.
>
> Right... Which again brings the original question: is there a situation where
> jc42 is not able to detect the temp sensors on its own?
>
> Krzysztof
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Regression caused by "eeprom: at24: Probe for DDR3 thermal sensor in the SPD case" - "sysfs: cannot create duplicate filename"
2024-06-23 18:47 Regression caused by "eeprom: at24: Probe for DDR3 thermal sensor in the SPD case" - "sysfs: cannot create duplicate filename" Krzysztof Olędzki
2024-06-24 5:33 ` Guenter Roeck
2024-06-24 5:43 ` Greg Kroah-Hartman
@ 2024-07-02 20:25 ` Heiner Kallweit
2024-07-07 1:42 ` Krzysztof Olędzki
2 siblings, 1 reply; 18+ messages in thread
From: Heiner Kallweit @ 2024-07-02 20:25 UTC (permalink / raw)
To: Krzysztof Olędzki, Greg Kroah-Hartman, Guenter Roeck,
Bartosz Golaszewski
Cc: stable, linux-i2c, linux-hwmon, Linux Kernel Mailing List
[-- Attachment #1: Type: text/plain, Size: 5371 bytes --]
On 23.06.2024 20: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.
>
> # 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
Could you please test whether the attached two experimental patches fix the issue for you?
They serialize client device instantiation per I2C adapter, and include the client device
name in the check whether a bus address is busy.
[-- Attachment #2: 0001-i2c-Include-device-name-in-check-i2c_check_addr_busy.patch --]
[-- Type: text/plain, Size: 4098 bytes --]
From c64b23a583fb987e93528033bf6033918cbaf105 Mon Sep 17 00:00:00 2001
From: Heiner Kallweit <hkallweit1@gmail.com>
Date: Tue, 2 Jul 2024 21:54:47 +0200
Subject: [PATCH 1/2] i2c: Include device name in check i2c_check_addr_busy()
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
drivers/i2c/i2c-core-base.c | 50 ++++++++++++++++++++++++-------------
1 file changed, 32 insertions(+), 18 deletions(-)
diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c
index 49fdcb3eb..a6c2974b9 100644
--- a/drivers/i2c/i2c-core-base.c
+++ b/drivers/i2c/i2c-core-base.c
@@ -779,55 +779,67 @@ int i2c_check_7bit_addr_validity_strict(unsigned short addr)
return 0;
}
-static int __i2c_check_addr_busy(struct device *dev, void *addrp)
+static int __i2c_check_addr_busy(struct device *dev, void *data)
{
struct i2c_client *client = i2c_verify_client(dev);
- int addr = *(int *)addrp;
+ struct i2c_client *cl = data;
+
+ if (client && i2c_encode_flags_to_addr(client) == cl->addr) {
+ if (strcmp(client->name, cl->name))
+ return -EBUSY;
+ else
+ /*
+ * If we find a device with the same name on the address,
+ * then assume we have been instantiated by other means already
+ */
+ return -EEXIST;
+ }
- if (client && i2c_encode_flags_to_addr(client) == addr)
- return -EBUSY;
return 0;
}
/* walk up mux tree */
-static int i2c_check_mux_parents(struct i2c_adapter *adapter, int addr)
+static int i2c_check_mux_parents(struct i2c_adapter *adapter, struct i2c_client *cl)
{
struct i2c_adapter *parent = i2c_parent_is_i2c_adapter(adapter);
int result;
- result = device_for_each_child(&adapter->dev, &addr,
- __i2c_check_addr_busy);
+ result = device_for_each_child(&adapter->dev, cl, __i2c_check_addr_busy);
if (!result && parent)
- result = i2c_check_mux_parents(parent, addr);
+ result = i2c_check_mux_parents(parent, cl);
return result;
}
/* recurse down mux tree */
-static int i2c_check_mux_children(struct device *dev, void *addrp)
+static int i2c_check_mux_children(struct device *dev, void *cl)
{
int result;
if (dev->type == &i2c_adapter_type)
- result = device_for_each_child(dev, addrp,
- i2c_check_mux_children);
+ result = device_for_each_child(dev, cl, i2c_check_mux_children);
else
- result = __i2c_check_addr_busy(dev, addrp);
+ result = __i2c_check_addr_busy(dev, cl);
return result;
}
-static int i2c_check_addr_busy(struct i2c_adapter *adapter, int addr)
+static int i2c_check_addr_busy(struct i2c_adapter *adapter, int addr, const char *name)
{
struct i2c_adapter *parent = i2c_parent_is_i2c_adapter(adapter);
+ struct i2c_client cl = {};
int result = 0;
+ cl.addr = addr;
+ if (name)
+ strscpy(cl.name, name, sizeof(cl.name));
+
if (parent)
- result = i2c_check_mux_parents(parent, addr);
+ result = i2c_check_mux_parents(parent, &cl);
if (!result)
- result = device_for_each_child(&adapter->dev, &addr,
+ result = device_for_each_child(&adapter->dev, &cl,
i2c_check_mux_children);
return result;
@@ -963,7 +975,9 @@ i2c_new_client_device(struct i2c_adapter *adap, struct i2c_board_info const *inf
}
/* Check for address business */
- status = i2c_check_addr_busy(adap, i2c_encode_flags_to_addr(client));
+ status = i2c_check_addr_busy(adap, i2c_encode_flags_to_addr(client), client->name);
+ if (status == -EEXIST)
+ goto out_err_silent;
if (status)
goto out_err;
@@ -2444,7 +2458,7 @@ static int i2c_detect_address(struct i2c_client *temp_client,
}
/* Skip if already in use (7 bit, no need to encode flags) */
- if (i2c_check_addr_busy(adapter, addr))
+ if (i2c_check_addr_busy(adapter, addr, NULL))
return 0;
/* Make sure there is something at this address */
@@ -2559,7 +2573,7 @@ i2c_new_scanned_device(struct i2c_adapter *adap,
}
/* Check address availability (7 bit, no need to encode flags) */
- if (i2c_check_addr_busy(adap, addr_list[i])) {
+ if (i2c_check_addr_busy(adap, addr_list[i], NULL)) {
dev_dbg(&adap->dev,
"Address 0x%02x already in use, not probing\n",
addr_list[i]);
--
2.45.2
[-- Attachment #3: 0002-i2c-Serialize-client-device-instantiation.patch --]
[-- Type: text/plain, Size: 5189 bytes --]
From 98c5a9e018c188064dea2debae7651e8b1e6d258 Mon Sep 17 00:00:00 2001
From: Heiner Kallweit <hkallweit1@gmail.com>
Date: Sun, 30 Jun 2024 22:56:13 +0200
Subject: [PATCH 2/2] i2c: Serialize client device instantiation
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
drivers/i2c/i2c-core-base.c | 45 ++++++++++++++++++++++++++++++-------
include/linux/i2c.h | 3 +++
2 files changed, 40 insertions(+), 8 deletions(-)
diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c
index a6c2974b9..2fd3a5432 100644
--- a/drivers/i2c/i2c-core-base.c
+++ b/drivers/i2c/i2c-core-base.c
@@ -928,7 +928,7 @@ int i2c_dev_irq_from_resources(const struct resource *resources,
}
/**
- * i2c_new_client_device - instantiate an i2c device
+ * __i2c_new_client_device - instantiate an i2c device
* @adap: the adapter managing the device
* @info: describes one I2C device; bus_num is ignored
* Context: can sleep
@@ -944,7 +944,7 @@ int i2c_dev_irq_from_resources(const struct resource *resources,
* i2c_unregister_device(); or an ERR_PTR to describe the error.
*/
struct i2c_client *
-i2c_new_client_device(struct i2c_adapter *adap, struct i2c_board_info const *info)
+__i2c_new_client_device(struct i2c_adapter *adap, struct i2c_board_info const *info)
{
struct i2c_client *client;
bool need_put = false;
@@ -1025,6 +1025,20 @@ i2c_new_client_device(struct i2c_adapter *adap, struct i2c_board_info const *inf
kfree(client);
return ERR_PTR(status);
}
+EXPORT_SYMBOL_GPL(__i2c_new_client_device);
+
+
+struct i2c_client *
+i2c_new_client_device(struct i2c_adapter *adap, struct i2c_board_info const *info)
+{
+ struct i2c_client *cl;
+
+ rt_mutex_lock_nested(&adap->client_lock, i2c_adapter_depth(adap));
+ cl = __i2c_new_client_device(adap, info);
+ rt_mutex_unlock(&adap->client_lock);
+
+ return cl;
+}
EXPORT_SYMBOL_GPL(i2c_new_client_device);
/**
@@ -1516,6 +1530,7 @@ static int i2c_register_adapter(struct i2c_adapter *adap)
adap->locked_flags = 0;
rt_mutex_init(&adap->bus_lock);
+ rt_mutex_init(&adap->client_lock);
rt_mutex_init(&adap->mux_lock);
mutex_init(&adap->userspace_clients_lock);
INIT_LIST_HEAD(&adap->userspace_clients);
@@ -2457,13 +2472,15 @@ static int i2c_detect_address(struct i2c_client *temp_client,
return err;
}
+ rt_mutex_lock_nested(&adapter->client_lock, i2c_adapter_depth(adapter));
+
/* Skip if already in use (7 bit, no need to encode flags) */
if (i2c_check_addr_busy(adapter, addr, NULL))
- return 0;
+ goto out;
/* Make sure there is something at this address */
if (!i2c_default_probe(adapter, addr))
- return 0;
+ goto out;
/* Finally call the custom detection function */
memset(&info, 0, sizeof(struct i2c_board_info));
@@ -2472,7 +2489,9 @@ static int i2c_detect_address(struct i2c_client *temp_client,
if (err) {
/* -ENODEV is returned if the detection fails. We catch it
here as this isn't an error. */
- return err == -ENODEV ? 0 : err;
+ if (err == -ENODEV)
+ err = 0;
+ goto out;
}
/* Consistency check */
@@ -2500,7 +2519,9 @@ static int i2c_detect_address(struct i2c_client *temp_client,
dev_err(&adapter->dev, "Failed creating %s at 0x%02x\n",
info.type, info.addr);
}
- return 0;
+out:
+ rt_mutex_unlock(&adapter->client_lock);
+ return err;
}
static int i2c_detect(struct i2c_adapter *adapter, struct i2c_driver *driver)
@@ -2559,11 +2580,14 @@ i2c_new_scanned_device(struct i2c_adapter *adap,
unsigned short const *addr_list,
int (*probe)(struct i2c_adapter *adap, unsigned short addr))
{
+ struct i2c_client *cl;
int i;
if (!probe)
probe = i2c_default_probe;
+ rt_mutex_lock_nested(&adap->client_lock, i2c_adapter_depth(adap));
+
for (i = 0; addr_list[i] != I2C_CLIENT_END; i++) {
/* Check address validity */
if (i2c_check_7bit_addr_validity_strict(addr_list[i]) < 0) {
@@ -2587,11 +2611,16 @@ i2c_new_scanned_device(struct i2c_adapter *adap,
if (addr_list[i] == I2C_CLIENT_END) {
dev_dbg(&adap->dev, "Probing failed, no device found\n");
- return ERR_PTR(-ENODEV);
+ cl = ERR_PTR(-ENODEV);
+ goto out;
}
info->addr = addr_list[i];
- return i2c_new_client_device(adap, info);
+ cl = __i2c_new_client_device(adap, info);
+
+out:
+ rt_mutex_unlock(&adap->client_lock);
+ return cl;
}
EXPORT_SYMBOL_GPL(i2c_new_scanned_device);
diff --git a/include/linux/i2c.h b/include/linux/i2c.h
index 424acb98c..981b16147 100644
--- a/include/linux/i2c.h
+++ b/include/linux/i2c.h
@@ -457,6 +457,8 @@ struct i2c_board_info {
*/
struct i2c_client *
i2c_new_client_device(struct i2c_adapter *adap, struct i2c_board_info const *info);
+struct i2c_client *
+__i2c_new_client_device(struct i2c_adapter *adap, struct i2c_board_info const *info);
/* If you don't know the exact address of an I2C device, use this variant
* instead, which can probe for device presence in a list of possible
@@ -725,6 +727,7 @@ struct i2c_adapter {
/* data fields that are valid for all devices */
const struct i2c_lock_operations *lock_ops;
struct rt_mutex bus_lock;
+ struct rt_mutex client_lock;
struct rt_mutex mux_lock;
int timeout; /* in jiffies */
--
2.45.2
^ permalink raw reply related [flat|nested] 18+ messages in thread
* Re: Regression caused by "eeprom: at24: Probe for DDR3 thermal sensor in the SPD case" - "sysfs: cannot create duplicate filename"
2024-07-02 20:25 ` Heiner Kallweit
@ 2024-07-07 1:42 ` Krzysztof Olędzki
2024-07-23 14:12 ` Krzysztof Olędzki
0 siblings, 1 reply; 18+ messages in thread
From: Krzysztof Olędzki @ 2024-07-07 1:42 UTC (permalink / raw)
To: Heiner Kallweit, Greg Kroah-Hartman, Guenter Roeck,
Bartosz Golaszewski
Cc: stable, linux-i2c, linux-hwmon, Linux Kernel Mailing List
[-- Attachment #1: Type: text/plain, Size: 983 bytes --]
On 02.07.2024 at 13:25, Heiner Kallweit wrote:
> On 23.06.2024 20: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.
<CUT>
>
> Could you please test whether the attached two experimental patches fix the issue for you?
> They serialize client device instantiation per I2C adapter, and include the client device
> name in the check whether a bus address is busy.
Sadly, they crash the kernel.
I will get serial console attached there next week, so will be able to capture the full crash.
For now, I was able to obtain a photo. I'm very sorry for the quality, just wanted to provide
something for now.
Krzysztof
[-- Attachment #2: i2c-bug.png --]
[-- Type: image/png, Size: 743008 bytes --]
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Regression caused by "eeprom: at24: Probe for DDR3 thermal sensor in the SPD case" - "sysfs: cannot create duplicate filename"
2024-07-07 1:42 ` Krzysztof Olędzki
@ 2024-07-23 14:12 ` Krzysztof Olędzki
2024-08-03 17:19 ` Heiner Kallweit
0 siblings, 1 reply; 18+ messages in thread
From: Krzysztof Olędzki @ 2024-07-23 14:12 UTC (permalink / raw)
To: Heiner Kallweit, Greg Kroah-Hartman, Guenter Roeck,
Bartosz Golaszewski
Cc: stable, linux-i2c, linux-hwmon, Linux Kernel Mailing List
[-- Attachment #1: Type: text/plain, Size: 2043 bytes --]
On 06.07.2024 at 18:42, Krzysztof Olędzki wrote:
> On 02.07.2024 at 13:25, Heiner Kallweit wrote:
>> On 23.06.2024 20: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.
>
> <CUT>
>
>>
>> Could you please test whether the attached two experimental patches fix the issue for you?
>> They serialize client device instantiation per I2C adapter, and include the client device
>> name in the check whether a bus address is busy.
>
> Sadly, they crash the kernel.
>
> I will get serial console attached there next week, so will be able to capture the full crash.
> For now, I was able to obtain a photo. I'm very sorry for the quality, just wanted to provide
> something for now.
Sorry it took me so long - my attempts to coordinate setting up serial console
were not successful, so it had to wait for me to go there in person...
I have attached complete dmesg, summary:
[ 10.905953] rtmutex deadlock detected
[ 10.909959] WARNING: CPU: 5 PID: 83 at kernel/locking/rtmutex.c:1642 __rt_mutex_slowlock_locked.constprop.0+0x10f/0x1a5
[ 10.920961] CPU: 5 PID: 83 Comm: kworker/u16:3 Not tainted 6.6.34-o5 #1
[ 10.929970] Hardware name: Dell Inc. PowerEdge T110 II/0PM2CW, BIOS 2.10.0 05/24/2018
[ 10.938954] Workqueue: events_unbound async_run_entry_fn
[ 11.336954] BUG: scheduling while atomic: kworker/u16:3/83/0x00000002
[ 11.342953] Preemption disabled at:
[ 11.342953] [<0000000000000000>] 0x0
[ 11.350953] CPU: 5 PID: 83 Comm: kworker/u16:3 Tainted: G W 6.6.34-o5 #1
[ 11.361954] Hardware name: Dell Inc. PowerEdge T110 II/0PM2CW, BIOS 2.10.0 05/24/2018
[ 11.369953] Workqueue: events_unbound async_run_entry_fn
Krzysztof
[-- Attachment #2: at24-lock.txt --]
[-- Type: text/plain, Size: 70677 bytes --]
[ 0.000000] microcode: updated early: 0x20 -> 0x21, date = 2019-02-13
[ 0.000000] Linux version 6.6.34-o5 (root@gnom) (gcc (Gentoo 13.3.1_p20240614 p17) 13.3.1 20240614, GNU ld (Gentoo 2.42 p3) 2.42.0) #1 SMP PREEMPT_DYNAMIC Sun Jul 7 00:45:41 2024
[ 0.000000] Command line: hostname=gnom root=/dev/VG0/root ro rootfstype=ext4 rootflags=data=journal vt.default_utf8=0 panic=120 oops=panic rng_core.default_quality=256 libata.allow_tpm=1 console=tty1 console=ttyS0,115200 initrd=\EFI\Linux\airfs-0.98a.img
[ 0.000000] BIOS-provided physical RAM map:
[ 0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009ffff] usable
[ 0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000009a691fff] usable
[ 0.000000] BIOS-e820: [mem 0x000000009a692000-0x000000009a693fff] reserved
[ 0.000000] BIOS-e820: [mem 0x000000009a694000-0x000000009a6affff] usable
[ 0.000000] BIOS-e820: [mem 0x000000009a6b0000-0x000000009a6b2fff] reserved
[ 0.000000] BIOS-e820: [mem 0x000000009a6b3000-0x000000009b3a6fff] usable
[ 0.000000] BIOS-e820: [mem 0x000000009b3a7000-0x000000009b3b2fff] reserved
[ 0.000000] BIOS-e820: [mem 0x000000009b3b3000-0x000000009b3b9fff] usable
[ 0.000000] BIOS-e820: [mem 0x000000009b3ba000-0x000000009b3bcfff] reserved
[ 0.000000] BIOS-e820: [mem 0x000000009b3bd000-0x000000009dfaffff] usable
[ 0.000000] BIOS-e820: [mem 0x000000009dfb0000-0x000000009f3affff] reserved
[ 0.000000] BIOS-e820: [mem 0x000000009f3b0000-0x000000009f4befff] usable
[ 0.000000] BIOS-e820: [mem 0x000000009f4bf000-0x000000009f6befff] reserved
[ 0.000000] BIOS-e820: [mem 0x000000009f6bf000-0x000000009f7befff] ACPI NVS
[ 0.000000] BIOS-e820: [mem 0x000000009f7bf000-0x000000009f7effff] ACPI data
[ 0.000000] BIOS-e820: [mem 0x000000009f7f0000-0x000000009f7fffff] usable
[ 0.000000] BIOS-e820: [mem 0x00000000e00f8000-0x00000000e00f8fff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000fed1c000-0x00000000fed1ffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000ffc00000-0x00000000ffffffff] reserved
[ 0.000000] BIOS-e820: [mem 0x0000000100000000-0x000000045fffffff] usable
[ 0.000000] NX (Execute Disable) protection: active
[ 0.000000] APIC: Static calls initialized
[ 0.000000] extended physical RAM map:
[ 0.000000] reserve setup_data: [mem 0x0000000000000000-0x000000000009ffff] usable
[ 0.000000] reserve setup_data: [mem 0x0000000000100000-0x000000009a432017] usable
[ 0.000000] reserve setup_data: [mem 0x000000009a432018-0x000000009a43b457] usable
[ 0.000000] reserve setup_data: [mem 0x000000009a43b458-0x000000009a43c017] usable
[ 0.000000] reserve setup_data: [mem 0x000000009a43c018-0x000000009a44bc57] usable
[ 0.000000] reserve setup_data: [mem 0x000000009a44bc58-0x000000009a4e4017] usable
[ 0.000000] reserve setup_data: [mem 0x000000009a4e4018-0x000000009a4fd857] usable
[ 0.000000] reserve setup_data: [mem 0x000000009a4fd858-0x000000009a691fff] usable
[ 0.000000] reserve setup_data: [mem 0x000000009a692000-0x000000009a693fff] reserved
[ 0.000000] reserve setup_data: [mem 0x000000009a694000-0x000000009a6affff] usable
[ 0.000000] reserve setup_data: [mem 0x000000009a6b0000-0x000000009a6b2fff] reserved
[ 0.000000] reserve setup_data: [mem 0x000000009a6b3000-0x000000009b3a6fff] usable
[ 0.000000] reserve setup_data: [mem 0x000000009b3a7000-0x000000009b3b2fff] reserved
[ 0.000000] reserve setup_data: [mem 0x000000009b3b3000-0x000000009b3b9fff] usable
[ 0.000000] reserve setup_data: [mem 0x000000009b3ba000-0x000000009b3bcfff] reserved
[ 0.000000] reserve setup_data: [mem 0x000000009b3bd000-0x000000009dfaffff] usable
[ 0.000000] reserve setup_data: [mem 0x000000009dfb0000-0x000000009f3affff] reserved
[ 0.000000] reserve setup_data: [mem 0x000000009f3b0000-0x000000009f4befff] usable
[ 0.000000] reserve setup_data: [mem 0x000000009f4bf000-0x000000009f6befff] reserved
[ 0.000000] reserve setup_data: [mem 0x000000009f6bf000-0x000000009f7befff] ACPI NVS
[ 0.000000] reserve setup_data: [mem 0x000000009f7bf000-0x000000009f7effff] ACPI data
[ 0.000000] reserve setup_data: [mem 0x000000009f7f0000-0x000000009f7fffff] usable
[ 0.000000] reserve setup_data: [mem 0x00000000e00f8000-0x00000000e00f8fff] reserved
[ 0.000000] reserve setup_data: [mem 0x00000000fed1c000-0x00000000fed1ffff] reserved
[ 0.000000] reserve setup_data: [mem 0x00000000ffc00000-0x00000000ffffffff] reserved
[ 0.000000] reserve setup_data: [mem 0x0000000100000000-0x000000045fffffff] usable
[ 0.000000] efi: EFI v2.1 by Dell
[ 0.000000] efi: SMBIOS=0x9f6aef98 ACPI=0x9f7ef000 ACPI 2.0=0x9f7ef014 INITRD=0x9a62c998
[ 0.000000] efi: Not removing mem230: MMIO range=[0xe00f8000-0xe00f8fff] (4KB) from e820 map
[ 0.000000] efi: Not removing mem231: MMIO range=[0xfed1c000-0xfed1ffff] (16KB) from e820 map
[ 0.000000] efi: Remove mem232: MMIO range=[0xffc00000-0xffe5ffff] (2MB) from e820 map
[ 0.000000] efi: Not removing mem233: MMIO range=[0xffe60000-0xffe7ffff] (128KB) from e820 map
[ 0.000000] efi: Remove mem234: MMIO range=[0xffe80000-0xffffffff] (1MB) from e820 map
[ 0.000000] SMBIOS 2.7 present.
[ 0.000000] DMI: Dell Inc. PowerEdge T110 II/0PM2CW, BIOS 2.10.0 05/24/2018
[ 0.000000] tsc: Fast TSC calibration using PIT
[ 0.000000] tsc: Detected 3591.551 MHz processor
[ 0.001007] last_pfn = 0x460000 max_arch_pfn = 0x400000000
[ 0.001011] MTRR map: 6 entries (3 fixed + 3 variable; max 23), built from 10 variable MTRRs
[ 0.001013] x86/PAT: Configuration [0-7]: WB WC UC- UC WB WP UC- WT
[ 0.001204] last_pfn = 0x9f800 max_arch_pfn = 0x400000000
[ 0.008354] found SMP MP-table at [mem 0x000fe1b0-0x000fe1bf]
[ 0.009668] Secure boot disabled
[ 0.009669] RAMDISK: [mem 0x7ef71000-0x7fffffff]
[ 0.009671] ACPI: Early table checksum verification disabled
[ 0.009674] ACPI: RSDP 0x000000009F7EF014 000024 (v02 DELL )
[ 0.009677] ACPI: XSDT 0x000000009F7EF170 0000BC (v01 DELL PE_SC3 00000001 DELL 00040000)
[ 0.009682] ACPI: FACP 0x000000009F7EA000 0000F4 (v04 DELL PE_SC3 00000001 DELL 00040000)
[ 0.009687] ACPI: DSDT 0x000000009F7E0000 0068FE (v01 DELL PE_SC3 00000000 DELL 00040000)
[ 0.009689] ACPI: FACS 0x000000009F7A8000 000040
[ 0.009692] ACPI: FACS 0x000000009F7A8000 000040
[ 0.009694] ACPI: TCPA 0x000000009F7EE000 000032 (v02 DELL PE_SC3 00000000 DELL 00040000)
[ 0.009696] ACPI: SPMI 0x000000009F7ED000 000040 (v05 DELL PE_SC3 00000001 DELL 00040000)
[ 0.009699] ACPI: DMAR 0x000000009F7EC000 000078 (v01 DELL PE_SC3 00000001 DELL 00040000)
[ 0.009702] ACPI: ASF! 0x000000009F7EB000 0000A5 (v32 DELL PE_SC3 00000001 DELL 00040000)
[ 0.009705] ACPI: HPET 0x000000009F7E9000 000038 (v01 DELL PE_SC3 00000001 DELL 00040000)
[ 0.009707] ACPI: APIC 0x000000009F7E8000 000092 (v02 DELL PE_SC3 00000001 DELL 00040000)
[ 0.009710] ACPI: MCFG 0x000000009F7E7000 00003C (v01 DELL PE_SC3 00000001 DELL 00040000)
[ 0.009713] ACPI: WDAT 0x000000009F7DF000 000224 (v01 DELL PE_SC3 00000001 DELL 00040000)
[ 0.009716] ACPI: BOOT 0x000000009F7DD000 000028 (v01 DELL PE_SC3 00000001 DELL 00040000)
[ 0.009718] ACPI: SSDT 0x000000009F7DC000 0002F6 (v01 DELL PE_SC3 00001000 DELL 00040000)
[ 0.009721] ACPI: ASPT 0x000000009F7D9000 000034 (v07 DELL PE_SC3 00000001 DELL 00040000)
[ 0.009724] ACPI: SSDT 0x000000009F7D8000 0009AA (v01 DELL PE_SC3 00003000 DELL 00040000)
[ 0.009726] ACPI: SSDT 0x000000009F7D7000 000A92 (v01 DELL PE_SC3 00003000 DELL 00040000)
[ 0.009729] ACPI: SSDT 0x000000009F7D6000 0002C4 (v01 Insyde TPMACPI 00001000 INTL 20080729)
[ 0.009732] ACPI: HEST 0x000000009F7D5000 0000A8 (v01 DELL PE_SC3 00000000 DELL 00040000)
[ 0.009735] ACPI: ERST 0x000000009F7D4000 000230 (v01 DELL PE_SC3 00000000 DELL 00040000)
[ 0.009737] ACPI: BERT 0x000000009F7D3000 000030 (v01 DELL PE_SC3 00000000 DELL 00040000)
[ 0.009740] ACPI: EINJ 0x000000009F7D2000 000130 (v01 DELL PE_SC3 00000000 DELL 00040000)
[ 0.009742] ACPI: Reserving FACP table memory at [mem 0x9f7ea000-0x9f7ea0f3]
[ 0.009744] ACPI: Reserving DSDT table memory at [mem 0x9f7e0000-0x9f7e68fd]
[ 0.009745] ACPI: Reserving FACS table memory at [mem 0x9f7a8000-0x9f7a803f]
[ 0.009745] ACPI: Reserving FACS table memory at [mem 0x9f7a8000-0x9f7a803f]
[ 0.009746] ACPI: Reserving TCPA table memory at [mem 0x9f7ee000-0x9f7ee031]
[ 0.009747] ACPI: Reserving SPMI table memory at [mem 0x9f7ed000-0x9f7ed03f]
[ 0.009748] ACPI: Reserving DMAR table memory at [mem 0x9f7ec000-0x9f7ec077]
[ 0.009749] ACPI: Reserving ASF! table memory at [mem 0x9f7eb000-0x9f7eb0a4]
[ 0.009750] ACPI: Reserving HPET table memory at [mem 0x9f7e9000-0x9f7e9037]
[ 0.009751] ACPI: Reserving APIC table memory at [mem 0x9f7e8000-0x9f7e8091]
[ 0.009752] ACPI: Reserving MCFG table memory at [mem 0x9f7e7000-0x9f7e703b]
[ 0.009752] ACPI: Reserving WDAT table memory at [mem 0x9f7df000-0x9f7df223]
[ 0.009753] ACPI: Reserving BOOT table memory at [mem 0x9f7dd000-0x9f7dd027]
[ 0.009754] ACPI: Reserving SSDT table memory at [mem 0x9f7dc000-0x9f7dc2f5]
[ 0.009755] ACPI: Reserving ASPT table memory at [mem 0x9f7d9000-0x9f7d9033]
[ 0.009756] ACPI: Reserving SSDT table memory at [mem 0x9f7d8000-0x9f7d89a9]
[ 0.009757] ACPI: Reserving SSDT table memory at [mem 0x9f7d7000-0x9f7d7a91]
[ 0.009758] ACPI: Reserving SSDT table memory at [mem 0x9f7d6000-0x9f7d62c3]
[ 0.009759] ACPI: Reserving HEST table memory at [mem 0x9f7d5000-0x9f7d50a7]
[ 0.009760] ACPI: Reserving ERST table memory at [mem 0x9f7d4000-0x9f7d422f]
[ 0.009760] ACPI: Reserving BERT table memory at [mem 0x9f7d3000-0x9f7d302f]
[ 0.009761] ACPI: Reserving EINJ table memory at [mem 0x9f7d2000-0x9f7d212f]
[ 0.009794] Zone ranges:
[ 0.009794] DMA [mem 0x0000000000001000-0x0000000000ffffff]
[ 0.009796] DMA32 [mem 0x0000000001000000-0x00000000ffffffff]
[ 0.009797] Normal [mem 0x0000000100000000-0x000000045fffffff]
[ 0.009799] Movable zone start for each node
[ 0.009799] Early memory node ranges
[ 0.009800] node 0: [mem 0x0000000000001000-0x000000000009ffff]
[ 0.009801] node 0: [mem 0x0000000000100000-0x000000009a691fff]
[ 0.009802] node 0: [mem 0x000000009a694000-0x000000009a6affff]
[ 0.009803] node 0: [mem 0x000000009a6b3000-0x000000009b3a6fff]
[ 0.009804] node 0: [mem 0x000000009b3b3000-0x000000009b3b9fff]
[ 0.009804] node 0: [mem 0x000000009b3bd000-0x000000009dfaffff]
[ 0.009805] node 0: [mem 0x000000009f3b0000-0x000000009f4befff]
[ 0.009806] node 0: [mem 0x000000009f7f0000-0x000000009f7fffff]
[ 0.009807] node 0: [mem 0x0000000100000000-0x000000045fffffff]
[ 0.009809] Initmem setup node 0 [mem 0x0000000000001000-0x000000045fffffff]
[ 0.009813] On node 0, zone DMA: 1 pages in unavailable ranges
[ 0.009832] On node 0, zone DMA: 96 pages in unavailable ranges
[ 0.013917] On node 0, zone DMA32: 2 pages in unavailable ranges
[ 0.013947] On node 0, zone DMA32: 3 pages in unavailable ranges
[ 0.013948] On node 0, zone DMA32: 12 pages in unavailable ranges
[ 0.014032] On node 0, zone DMA32: 3 pages in unavailable ranges
[ 0.014118] On node 0, zone DMA32: 5120 pages in unavailable ranges
[ 0.014131] On node 0, zone DMA32: 817 pages in unavailable ranges
[ 0.038488] On node 0, zone Normal: 2048 pages in unavailable ranges
[ 0.038680] ACPI: PM-Timer IO Port: 0x408
[ 0.038686] ACPI: LAPIC_NMI (acpi_id[0xff] high edge lint[0x1])
[ 0.038697] IOAPIC[0]: apic_id 0, version 32, address 0xfec00000, GSI 0-23
[ 0.038699] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[ 0.038701] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
[ 0.038706] ACPI: Using ACPI (MADT) for SMP configuration information
[ 0.038707] ACPI: HPET id: 0x8086a201 base: 0xfed00000
[ 0.038711] TSC deadline timer available
[ 0.038712] smpboot: Allowing 8 CPUs, 0 hotplug CPUs
[ 0.038728] [mem 0x9f800000-0xe00f7fff] available for PCI devices
[ 0.038732] clocksource: refined-jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1910969940391419 ns
[ 0.059133] setup_percpu: NR_CPUS:8 nr_cpumask_bits:8 nr_cpu_ids:8 nr_node_ids:1
[ 0.059305] percpu: Embedded 53 pages/cpu s188008 r0 d29080 u262144
[ 0.059324] Kernel command line: hostname=gnom root=/dev/VG0/root ro rootfstype=ext4 rootflags=data=journal vt.default_utf8=0 panic=120 oops=panic rng_core.default_quality=256 libata.allow_tpm=1 console=tty1 console=ttyS0,115200 initrd=\EFI\Linux\airfs-0.98a.img
[ 0.059468] random: crng init done
[ 0.060147] Dentry cache hash table entries: 2097152 (order: 12, 16777216 bytes, linear)
[ 0.060491] Inode-cache hash table entries: 1048576 (order: 11, 8388608 bytes, linear)
[ 0.060562] Built 1 zonelists, mobility grouping on. Total pages: 4119608
[ 0.060565] mem auto-init: stack:all(zero), heap alloc:off, heap free:off
[ 0.060572] software IO TLB: area num 8.
[ 0.112840] Memory: 16265200K/16744808K available (18432K kernel code, 3231K rwdata, 8580K rodata, 2876K init, 1828K bss, 479352K reserved, 0K cma-reserved)
[ 0.113090] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=8, Nodes=1
[ 0.113100] Kernel/User page tables isolation: enabled
[ 0.113165] Dynamic Preempt: full
[ 0.113212] rcu: Preemptible hierarchical RCU implementation.
[ 0.113214] Trampoline variant of Tasks RCU enabled.
[ 0.113214] Tracing variant of Tasks RCU enabled.
[ 0.113215] rcu: RCU calculated value of scheduler-enlistment delay is 100 jiffies.
[ 0.114951] NR_IRQS: 4352, nr_irqs: 488, preallocated irqs: 16
[ 0.115139] rcu: srcu_init: Setting srcu_struct sizes based on contention.
[ 0.115218] Console: colour dummy device 80x25
[ 0.115220] printk: console [tty1] enabled
[ 0.115630] printk: console [ttyS0] enabled
[ 1.344417] ACPI: Core revision 20230628
[ 1.348450] clocksource: hpet: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 133484882848 ns
[ 1.357595] APIC: Switch to symmetric I/O mode setup
[ 1.362580] DMAR: Host address width 36
[ 1.366427] DMAR: DRHD base: 0x000000fed90000 flags: 0x1
[ 1.371752] DMAR: dmar0: reg_base_addr fed90000 ver 1:0 cap c9008020660262 ecap f010da
[ 1.379670] DMAR: RMRR base: 0x00000000000000 end: 0x00000000000fff
[ 1.385947] DMAR-IR: IOAPIC id 0 under DRHD base 0xfed90000 IOMMU 0
[ 1.392305] DMAR-IR: HPET id 0 under DRHD base 0xfed90000
[ 1.397714] DMAR-IR: Queued invalidation will be enabled to support x2apic and Intr-remapping.
[ 1.406658] DMAR-IR: Enabled IRQ remapping in x2apic mode
[ 1.412060] x2apic enabled
[ 1.414818] APIC: Switched APIC routing to: cluster x2apic
[ 1.420756] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
[ 1.431600] clocksource: tsc-early: mask: 0xffffffffffffffff max_cycles: 0x33c525af8a9, max_idle_ns: 440795223140 ns
[ 1.442122] Calibrating delay loop (skipped), value calculated using timer frequency.. 7183.10 BogoMIPS (lpj=3591551)
[ 1.443156] process: using mwait in idle threads
[ 1.444124] Last level iTLB entries: 4KB 512, 2MB 8, 4MB 8
[ 1.445122] Last level dTLB entries: 4KB 512, 2MB 32, 4MB 32, 1GB 0
[ 1.446125] Spectre V1 : Mitigation: usercopy/swapgs barriers and __user pointer sanitization
[ 1.447125] Spectre V2 : Mitigation: Retpolines
[ 1.448122] Spectre V2 : Spectre v2 / SpectreRSB mitigation: Filling RSB on context switch
[ 1.449123] Spectre V2 : Spectre v2 / SpectreRSB : Filling RSB on VMEXIT
[ 1.450123] Spectre V2 : Enabling Restricted Speculation for firmware calls
[ 1.451124] Spectre V2 : mitigation: Enabling conditional Indirect Branch Prediction Barrier
[ 1.452123] Spectre V2 : User space: Mitigation: STIBP via prctl
[ 1.453124] Speculative Store Bypass: Mitigation: Speculative Store Bypass disabled via prctl
[ 1.454124] MDS: Mitigation: Clear CPU buffers
[ 1.455122] MMIO Stale Data: Unknown: No mitigations
[ 1.456122] SRBDS: Vulnerable: No microcode
[ 1.457125] x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers'
[ 1.458123] x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers'
[ 1.459123] x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers'
[ 1.460123] x86/fpu: xstate_offset[2]: 576, xstate_sizes[2]: 256
[ 1.461123] x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'standard' format.
[ 1.480481] Freeing SMP alternatives memory: 36K
[ 1.481125] pid_max: default: 32768 minimum: 301
[ 1.493282] LSM: initializing lsm=capability,integrity
[ 1.494159] Mount-cache hash table entries: 32768 (order: 6, 262144 bytes, linear)
[ 1.495134] Mountpoint-cache hash table entries: 32768 (order: 6, 262144 bytes, linear)
[ 1.498171] smpboot: CPU0: Intel(R) Xeon(R) CPU E3-1280 V2 @ 3.60GHz (family: 0x6, model: 0x3a, stepping: 0x9)
[ 1.499273] RCU Tasks: Setting shift to 3 and lim to 1 rcu_task_cb_adjust=1.
[ 1.500140] RCU Tasks Trace: Setting shift to 3 and lim to 1 rcu_task_cb_adjust=1.
[ 1.501136] Performance Events: PEBS fmt1+, IvyBridge events, 16-deep LBR, full-width counters, Intel PMU driver.
[ 1.502125] ... version: 3
[ 1.503122] ... bit width: 48
[ 1.504122] ... generic registers: 4
[ 1.505122] ... value mask: 0000ffffffffffff
[ 1.506122] ... max period: 00007fffffffffff
[ 1.507122] ... fixed-purpose events: 3
[ 1.508122] ... event mask: 000000070000000f
[ 1.509234] signal: max sigframe size: 1776
[ 1.510136] Estimated ratio of average max frequency by base frequency (times 1024): 1052
[ 1.511148] rcu: Hierarchical SRCU implementation.
[ 1.512123] rcu: Max phase no-delay instances is 400.
[ 1.513437] NMI watchdog: Enabled. Permanently consumes one hw-PMU counter.
[ 1.514202] smp: Bringing up secondary CPUs ...
[ 1.515207] smpboot: x86: Booting SMP configuration:
[ 1.516128] .... node #0, CPUs: #2 #4 #6 #1 #3 #5 #7
[ 1.521257] MDS CPU bug present and SMT on, data leak possible. See https://www.kernel.org/doc/html/latest/admin-guide/hw-vuln/mds.html for more details.
[ 1.526170] smp: Brought up 1 node, 8 CPUs
[ 1.527123] smpboot: Max logical packages: 1
[ 1.528123] smpboot: Total of 8 processors activated (57464.81 BogoMIPS)
[ 1.530971] devtmpfs: initialized
[ 1.531488] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275000 ns
[ 1.532129] futex hash table entries: 2048 (order: 5, 131072 bytes, linear)
[ 1.533256] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[ 1.534315] audit: initializing netlink subsys (disabled)
[ 1.535153] audit: type=2000 audit(1721741428.110:1): state=initialized audit_enabled=0 res=1
[ 1.535221] thermal_sys: Registered thermal governor 'step_wise'
[ 1.536126] thermal_sys: Registered thermal governor 'user_space'
[ 1.537137] cpuidle: using governor ladder
[ 1.539228] Simple Boot Flag at 0x44 set to 0x1
[ 1.540132] ACPI FADT declares the system doesn't support PCIe ASPM, so disable it
[ 1.541182] dca service started, version 1.12.1
[ 1.542133] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000)
[ 1.543133] PCI: Using configuration type 1 for base access
[ 1.544228] core: PMU erratum BJ122, BV98, HSD29 worked around, HT is on
[ 1.545303] ENERGY_PERF_BIAS: Set to 'normal', was 'performance'
[ 1.546398] HugeTLB: registered 2.00 MiB page size, pre-allocated 0 pages
[ 1.547132] HugeTLB: 28 KiB vmemmap can be freed for a 2.00 MiB page
[ 1.548183] cryptd: max_cpu_qlen set to 1000
[ 1.566120] raid6: sse2x4 gen() 17466 MB/s
[ 1.584121] raid6: sse2x2 gen() 17044 MB/s
[ 1.602121] raid6: sse2x1 gen() 13379 MB/s
[ 1.603122] raid6: using algorithm sse2x4 gen() 17466 MB/s
[ 1.621121] raid6: .... xor() 8947 MB/s, rmw enabled
[ 1.622123] raid6: using ssse3x2 recovery algorithm
[ 1.623183] ACPI: Added _OSI(Module Device)
[ 1.624124] ACPI: Added _OSI(Processor Device)
[ 1.625122] ACPI: Added _OSI(3.0 _SCP Extensions)
[ 1.626122] ACPI: Added _OSI(Processor Aggregator Device)
[ 1.630093] ACPI: 5 ACPI AML tables successfully acquired and loaded
[ 1.631182] ACPI: Dynamic OEM Table Load:
[ 1.632128] ACPI: SSDT 0xFFFF888100A8F000 00083B (v01 PmRef Cpu0Cst 00003001 INTL 20080729)
[ 1.633565] ACPI: Dynamic OEM Table Load:
[ 1.634130] ACPI: SSDT 0xFFFF888101129800 000303 (v01 PmRef ApIst 00003000 INTL 20080729)
[ 1.635474] ACPI: Dynamic OEM Table Load:
[ 1.636125] ACPI: SSDT 0xFFFF88810082F000 000119 (v01 PmRef ApCst 00003000 INTL 20080729)
[ 1.638246] ACPI: _OSC evaluated successfully for all CPUs
[ 1.639240] ACPI: Interpreter enabled
[ 1.640128] ACPI: PM: (supports S0 S5)
[ 1.641122] ACPI: Using IOAPIC for interrupt routing
[ 1.642145] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
[ 1.643132] PCI: Using E820 reservations for host bridge windows
[ 1.644256] ACPI: watchdog: Skipping WDAT on this system because it uses RTC SRAM
[ 1.645138] ACPI: Enabled 9 GPEs in block 00 to 3F
[ 1.650652] ACPI: \_TZ_.FN00: New power resource
[ 1.651192] ACPI: \_TZ_.FN01: New power resource
[ 1.652188] ACPI: \_TZ_.FN02: New power resource
[ 1.653188] ACPI: \_TZ_.FN03: New power resource
[ 1.654190] ACPI: \_TZ_.FN04: New power resource
[ 1.655646] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-fe])
[ 1.656127] acpi PNP0A08:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI HPX-Type3]
[ 1.657465] acpi PNP0A08:00: _OSC: OS now controls [PME AER PCIeCapability LTR]
[ 1.658124] acpi PNP0A08:00: FADT indicates ASPM is unsupported, using BIOS configuration
[ 1.659461] PCI host bridge to bus 0000:00
[ 1.660124] pci_bus 0000:00: root bus resource [io 0x0000-0x0cf7 window]
[ 1.661123] pci_bus 0000:00: root bus resource [io 0x0d00-0xffff window]
[ 1.662123] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff window]
[ 1.663123] pci_bus 0000:00: root bus resource [mem 0xa0000000-0xfeafffff window]
[ 1.664123] pci_bus 0000:00: root bus resource [bus 00-fe]
[ 1.665136] pci 0000:00:00.0: [8086:0158] type 00 class 0x060000
[ 1.666183] pci 0000:00:01.0: [8086:0151] type 01 class 0x060400
[ 1.667151] pci 0000:00:01.0: PME# supported from D0 D3hot D3cold
[ 1.668180] pci 0000:00:01.1: [8086:0155] type 01 class 0x060400
[ 1.669150] pci 0000:00:01.1: PME# supported from D0 D3hot D3cold
[ 1.670207] pci 0000:00:1a.0: [8086:1c2d] type 00 class 0x0c0320
[ 1.671732] pci 0000:00:1a.0: reg 0x10: [mem 0xc3a06000-0xc3a063ff]
[ 1.673912] pci 0000:00:1a.0: PME# supported from D0 D3hot D3cold
[ 1.674209] pci 0000:00:1c.0: [8086:1c10] type 01 class 0x060400
[ 1.675274] pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold
[ 1.676156] pci 0000:00:1c.0: Enabling MPC IRBNCE
[ 1.677125] pci 0000:00:1c.0: Intel PCH root port ACS workaround enabled
[ 1.678202] pci 0000:00:1c.4: [8086:1c18] type 01 class 0x060400
[ 1.679208] pci 0000:00:1c.4: PME# supported from D0 D3hot D3cold
[ 1.680144] pci 0000:00:1c.4: Enabling MPC IRBNCE
[ 1.681123] pci 0000:00:1c.4: Intel PCH root port ACS workaround enabled
[ 1.682194] pci 0000:00:1d.0: [8086:1c26] type 00 class 0x0c0320
[ 1.683724] pci 0000:00:1d.0: reg 0x10: [mem 0xc3a05000-0xc3a053ff]
[ 1.685911] pci 0000:00:1d.0: PME# supported from D0 D3hot D3cold
[ 1.686194] pci 0000:00:1e.0: [8086:244e] type 01 class 0x060401
[ 1.687231] pci 0000:00:1f.0: [8086:1c52] type 00 class 0x060100
[ 1.688300] pci 0000:00:1f.2: [8086:1c02] type 00 class 0x010601
[ 1.689134] pci 0000:00:1f.2: reg 0x10: [io 0x3048-0x304f]
[ 1.690128] pci 0000:00:1f.2: reg 0x14: [io 0x3054-0x3057]
[ 1.691129] pci 0000:00:1f.2: reg 0x18: [io 0x3040-0x3047]
[ 1.692129] pci 0000:00:1f.2: reg 0x1c: [io 0x3050-0x3053]
[ 1.693129] pci 0000:00:1f.2: reg 0x20: [io 0x3020-0x303f]
[ 1.694128] pci 0000:00:1f.2: reg 0x24: [mem 0xc3a04000-0xc3a047ff]
[ 1.695160] pci 0000:00:1f.2: PME# supported from D3hot
[ 1.696180] pci 0000:00:1f.3: [8086:1c22] type 00 class 0x0c0500
[ 1.697138] pci 0000:00:1f.3: reg 0x10: [mem 0xc3a02000-0xc3a020ff 64bit]
[ 1.698141] pci 0000:00:1f.3: reg 0x20: [io 0x3000-0x301f]
[ 1.699459] pci 0000:01:00.0: [15b3:1003] type 00 class 0x020000
[ 1.700450] pci 0000:01:00.0: reg 0x10: [mem 0xc3900000-0xc39fffff 64bit]
[ 1.701335] pci 0000:01:00.0: reg 0x18: [mem 0xc3000000-0xc37fffff 64bit pref]
[ 1.702521] pci 0000:01:00.0: reg 0x30: [mem 0xfff00000-0xffffffff pref]
[ 1.705609] pci 0000:00:01.0: PCI bridge to [bus 01]
[ 1.706124] pci 0000:00:01.0: bridge window [mem 0xc3900000-0xc39fffff]
[ 1.707124] pci 0000:00:01.0: bridge window [mem 0xc3000000-0xc37fffff 64bit pref]
[ 1.708156] pci 0000:02:00.0: [10de:0659] type 00 class 0x030000
[ 1.709135] pci 0000:02:00.0: reg 0x10: [mem 0xc2000000-0xc2ffffff]
[ 1.710132] pci 0000:02:00.0: reg 0x14: [mem 0xa0000000-0xbfffffff 64bit pref]
[ 1.711133] pci 0000:02:00.0: reg 0x1c: [mem 0xc0000000-0xc1ffffff 64bit]
[ 1.712129] pci 0000:02:00.0: reg 0x24: [io 0x2000-0x207f]
[ 1.713129] pci 0000:02:00.0: reg 0x30: [mem 0xfff80000-0xffffffff pref]
[ 1.714128] pci 0000:02:00.0: enabling Extended Tags
[ 1.715133] pci 0000:02:00.0: BAR 3: assigned to efifb
[ 1.716126] pci 0000:02:00.0: Video device with shadowed ROM at [mem 0x000c0000-0x000dffff]
[ 1.717189] pci 0000:02:00.0: 16.000 Gb/s available PCIe bandwidth, limited by 2.5 GT/s PCIe x8 link at 0000:00:01.1 (capable of 32.000 Gb/s with 2.5 GT/s PCIe x16 link)
[ 1.718182] pci 0000:00:01.1: PCI bridge to [bus 02]
[ 1.719124] pci 0000:00:01.1: bridge window [io 0x2000-0x2fff]
[ 1.720123] pci 0000:00:01.1: bridge window [mem 0xc0000000-0xc2ffffff]
[ 1.721124] pci 0000:00:01.1: bridge window [mem 0xa0000000-0xbfffffff 64bit pref]
[ 1.722179] pci 0000:00:1c.0: PCI bridge to [bus 03]
[ 1.723203] pci 0000:04:00.0: [14e4:165a] type 00 class 0x020000
[ 1.724154] pci 0000:04:00.0: reg 0x10: [mem 0xc3800000-0xc380ffff 64bit]
[ 1.725195] pci 0000:04:00.0: enabling Extended Tags
[ 1.726238] pci 0000:04:00.0: PME# supported from D3hot D3cold
[ 1.727299] pci 0000:00:1c.4: PCI bridge to [bus 04]
[ 1.728127] pci 0000:00:1c.4: bridge window [mem 0xc3800000-0xc38fffff]
[ 1.729143] pci_bus 0000:05: extended config space not accessible
[ 1.730171] pci 0000:00:1e.0: PCI bridge to [bus 05] (subtractive decode)
[ 1.731130] pci 0000:00:1e.0: bridge window [io 0x0000-0x0cf7 window] (subtractive decode)
[ 1.732124] pci 0000:00:1e.0: bridge window [io 0x0d00-0xffff window] (subtractive decode)
[ 1.733123] pci 0000:00:1e.0: bridge window [mem 0x000a0000-0x000bffff window] (subtractive decode)
[ 1.734123] pci 0000:00:1e.0: bridge window [mem 0xa0000000-0xfeafffff window] (subtractive decode)
[ 1.735751] ACPI: PCI: Interrupt link LNKA configured for IRQ 10
[ 1.736166] ACPI: PCI: Interrupt link LNKB configured for IRQ 11
[ 1.737165] ACPI: PCI: Interrupt link LNKC configured for IRQ 0
[ 1.738123] ACPI: PCI: Interrupt link LNKC disabled
[ 1.739164] ACPI: PCI: Interrupt link LNKD configured for IRQ 6
[ 1.740164] ACPI: PCI: Interrupt link LNKE configured for IRQ 15
[ 1.741164] ACPI: PCI: Interrupt link LNKF configured for IRQ 10
[ 1.742164] ACPI: PCI: Interrupt link LNKG configured for IRQ 0
[ 1.743123] ACPI: PCI: Interrupt link LNKG disabled
[ 1.744164] ACPI: PCI: Interrupt link LNKH configured for IRQ 6
[ 1.745365] iommu: Default domain type: Translated
[ 1.746124] iommu: DMA domain TLB invalidation policy: lazy mode
[ 1.747200] SCSI subsystem initialized
[ 1.748180] ACPI: bus type USB registered
[ 1.749136] usbcore: registered new interface driver usbfs
[ 1.750130] usbcore: registered new interface driver hub
[ 1.751130] usbcore: registered new device driver usb
[ 1.752142] pps_core: LinuxPPS API ver. 1 registered
[ 1.753122] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[ 1.754126] PTP clock support registered
[ 1.755181] EDAC MC: Ver: 3.0.0
[ 1.756316] efivars: Registered efivars operations
[ 1.757337] NetLabel: Initializing
[ 1.758123] NetLabel: domain hash size = 128
[ 1.759122] NetLabel: protocols = UNLABELED CIPSOv4 CALIPSO
[ 1.760139] NetLabel: unlabeled traffic allowed by default
[ 1.761123] PCI: Using ACPI for IRQ routing
[ 1.768078] pci 0000:02:00.0: vgaarb: setting as boot VGA device
[ 1.768119] pci 0000:02:00.0: vgaarb: bridge control possible
[ 1.768119] pci 0000:02:00.0: vgaarb: VGA device added: decodes=io+mem,owns=io+mem,locks=none
[ 1.768122] vgaarb: loaded
[ 1.769218] dcdbas dcdbas: Dell Systems Management Base Driver (version 5.6.0-3.4)
[ 1.770231] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0, 0, 0, 0, 0, 0
[ 1.771124] hpet0: 8 comparators, 64-bit 14.318180 MHz counter
[ 1.774143] clocksource: Switched to clocksource tsc-early
[ 1.779688] VFS: Disk quotas dquot_6.6.0
[ 1.783624] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[ 1.790528] FS-Cache: Loaded
[ 1.793433] pnp: PnP ACPI init
[ 1.796584] system 00:00: [io 0x0680-0x069f] has been reserved
[ 1.802503] system 00:00: [io 0x1000-0x100f] has been reserved
[ 1.808421] system 00:00: [io 0x1010-0x1013] has been reserved
[ 1.814342] system 00:00: [io 0xffff] has been reserved
[ 1.819655] system 00:00: [io 0x0400-0x0453] has been reserved
[ 1.825573] system 00:00: [io 0x0458-0x047f] has been reserved
[ 1.831492] system 00:00: [io 0x0500-0x057f] has been reserved
[ 1.837413] system 00:00: [io 0x164e-0x164f] has been reserved
[ 1.843394] system 00:02: [io 0x0454-0x0457] has been reserved
[ 1.849681] system 00:05: [mem 0xfed90000-0xfed91fff] could not be reserved
[ 1.856774] system 00:06: [mem 0xfed1c000-0xfed1ffff] has been reserved
[ 1.863389] system 00:06: [mem 0xfed10000-0xfed17fff] has been reserved
[ 1.870000] system 00:06: [mem 0xfed18000-0xfed18fff] has been reserved
[ 1.876613] system 00:06: [mem 0xfed19000-0xfed19fff] has been reserved
[ 1.883226] system 00:06: [mem 0xe0000000-0xefffffff] could not be reserved
[ 1.890185] system 00:06: [mem 0xfed20000-0xfed3ffff] has been reserved
[ 1.896798] system 00:06: [mem 0xfed90000-0xfed93fff] could not be reserved
[ 1.903758] system 00:06: [mem 0xff000000-0xffffffff] could not be reserved
[ 1.910716] system 00:06: [mem 0xfee00000-0xfeefffff] has been reserved
[ 1.917329] system 00:06: [mem 0xc3b00000-0xc3b00fff] has been reserved
[ 1.924104] pnp: PnP ACPI: found 8 devices
[ 1.933955] clocksource: acpi_pm: mask: 0xffffff max_cycles: 0xffffff, max_idle_ns: 2085701024 ns
[ 1.942871] NET: Registered PF_INET protocol family
[ 1.947865] IP idents hash table entries: 262144 (order: 9, 2097152 bytes, linear)
[ 1.958265] tcp_listen_portaddr_hash hash table entries: 8192 (order: 5, 131072 bytes, linear)
[ 1.966897] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
[ 1.974638] TCP established hash table entries: 131072 (order: 8, 1048576 bytes, linear)
[ 1.982847] TCP bind hash table entries: 65536 (order: 9, 2097152 bytes, linear)
[ 1.990487] TCP: Hash tables configured (established 131072 bind 65536)
[ 1.997170] MPTCP token hash table entries: 16384 (order: 6, 393216 bytes, linear)
[ 2.004788] UDP hash table entries: 8192 (order: 6, 262144 bytes, linear)
[ 2.011602] UDP-Lite hash table entries: 8192 (order: 6, 262144 bytes, linear)
[ 2.018869] NET: Registered PF_UNIX/PF_LOCAL protocol family
[ 2.024638] RPC: Registered named UNIX socket transport module.
[ 2.030569] RPC: Registered udp transport module.
[ 2.035275] RPC: Registered tcp transport module.
[ 2.039984] RPC: Registered tcp-with-tls transport module.
[ 2.045469] RPC: Registered tcp NFSv4.1 backchannel transport module.
[ 2.051911] pci 0000:01:00.0: can't claim BAR 6 [mem 0xfff00000-0xffffffff pref]: no compatible bridge window
[ 2.061824] pci 0000:01:00.0: BAR 6: no space for [mem size 0x00100000 pref]
[ 2.068870] pci 0000:01:00.0: BAR 6: failed to assign [mem size 0x00100000 pref]
[ 2.076263] pci 0000:00:01.0: PCI bridge to [bus 01]
[ 2.081230] pci 0000:00:01.0: bridge window [mem 0xc3900000-0xc39fffff]
[ 2.088016] pci 0000:00:01.0: bridge window [mem 0xc3000000-0xc37fffff 64bit pref]
[ 2.095761] pci 0000:00:01.1: PCI bridge to [bus 02]
[ 2.100736] pci 0000:00:01.1: bridge window [io 0x2000-0x2fff]
[ 2.106833] pci 0000:00:01.1: bridge window [mem 0xc0000000-0xc2ffffff]
[ 2.113616] pci 0000:00:01.1: bridge window [mem 0xa0000000-0xbfffffff 64bit pref]
[ 2.121358] pci 0000:00:1c.0: PCI bridge to [bus 03]
[ 2.126338] pci 0000:00:1c.4: PCI bridge to [bus 04]
[ 2.131309] pci 0000:00:1c.4: bridge window [mem 0xc3800000-0xc38fffff]
[ 2.138113] pci 0000:00:1e.0: PCI bridge to [bus 05]
[ 2.143085] pci_bus 0000:00: resource 4 [io 0x0000-0x0cf7 window]
[ 2.149263] pci_bus 0000:00: resource 5 [io 0x0d00-0xffff window]
[ 2.155443] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff window]
[ 2.162315] pci_bus 0000:00: resource 7 [mem 0xa0000000-0xfeafffff window]
[ 2.169189] pci_bus 0000:01: resource 1 [mem 0xc3900000-0xc39fffff]
[ 2.175459] pci_bus 0000:01: resource 2 [mem 0xc3000000-0xc37fffff 64bit pref]
[ 2.182685] pci_bus 0000:02: resource 0 [io 0x2000-0x2fff]
[ 2.188256] pci_bus 0000:02: resource 1 [mem 0xc0000000-0xc2ffffff]
[ 2.194522] pci_bus 0000:02: resource 2 [mem 0xa0000000-0xbfffffff 64bit pref]
[ 2.201740] pci_bus 0000:04: resource 1 [mem 0xc3800000-0xc38fffff]
[ 2.208008] pci_bus 0000:05: resource 4 [io 0x0000-0x0cf7 window]
[ 2.214187] pci_bus 0000:05: resource 5 [io 0x0d00-0xffff window]
[ 2.220366] pci_bus 0000:05: resource 6 [mem 0x000a0000-0x000bffff window]
[ 2.227238] pci_bus 0000:05: resource 7 [mem 0xa0000000-0xfeafffff window]
[ 2.246242] pci 0000:00:1a.0: quirk_usb_early_handoff+0x0/0x638 took 11780 usecs
[ 2.265236] pci 0000:00:1d.0: quirk_usb_early_handoff+0x0/0x638 took 11308 usecs
[ 2.272673] PCI: CLS 64 bytes, default 64
[ 2.276693] DMAR: No ATSR found
[ 2.276725] Unpacking initramfs...
[ 2.279835] DMAR: No SATC found
[ 2.279836] DMAR: dmar0: Using Queued invalidation
[ 2.291228] pci 0000:00:00.0: Adding to iommu group 0
[ 2.296294] pci 0000:00:01.0: Adding to iommu group 1
[ 2.301355] pci 0000:00:01.1: Adding to iommu group 1
[ 2.306419] pci 0000:00:1a.0: Adding to iommu group 2
[ 2.311483] pci 0000:00:1c.0: Adding to iommu group 3
[ 2.316542] pci 0000:00:1c.4: Adding to iommu group 4
[ 2.321604] pci 0000:00:1d.0: Adding to iommu group 5
[ 2.326668] pci 0000:00:1e.0: Adding to iommu group 6
[ 2.331744] pci 0000:00:1f.0: Adding to iommu group 7
[ 2.336807] pci 0000:00:1f.2: Adding to iommu group 7
[ 2.341866] pci 0000:00:1f.3: Adding to iommu group 7
[ 2.346924] pci 0000:01:00.0: Adding to iommu group 1
[ 2.351977] pci 0000:02:00.0: Adding to iommu group 1
[ 2.357036] pci 0000:04:00.0: Adding to iommu group 8
[ 2.362684] DMAR: Intel(R) Virtualization Technology for Directed I/O
[ 2.369138] PCI-DMA: Using software bounce buffering for IO (SWIOTLB)
[ 2.375574] software IO TLB: mapped [mem 0x00000000963b3000-0x000000009a3b3000] (64MB)
[ 2.391155] RAPL PMU: API unit is 2^-32 Joules, 2 fixed counters, 163840 ms ovfl timer
[ 2.399079] RAPL PMU: hw unit of domain pp0-core 2^-16 Joules
[ 2.404833] RAPL PMU: hw unit of domain package 2^-16 Joules
[ 2.417362] AVX2 instructions are not detected.
[ 2.421918] AVX2 or AES-NI instructions are not detected.
[ 2.427412] sm3_avx_x86_64: BMI2 instruction are not detected.
[ 2.433270] AVX2 or AES-NI instructions are not detected.
[ 2.438680] AVX2 or AES-NI instructions are not detected.
[ 2.444077] AVX512/GFNI instructions are not detected.
[ 2.449634] workingset: timestamp_bits=46 max_order=22 bucket_order=0
[ 2.456228] DLM installed
[ 2.458986] NFS: Registering the id_resolver key type
[ 2.464050] Key type id_resolver registered
[ 2.468238] Key type id_legacy registered
[ 2.472255] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
[ 2.478953] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
[ 2.486550] Key type cifs.idmap registered
[ 2.490655] ntfs: driver 2.1.32 [Flags: R/O].
[ 2.495020] ntfs3: Read-only LZX/Xpress compression included
[ 2.508096] NET: Registered PF_ALG protocol family
[ 2.512896] xor: measuring software checksum speed
[ 2.518093] avx : 24972 MB/sec
[ 2.522839] prefetch64-sse : 25443 MB/sec
[ 2.527628] generic_sse : 22907 MB/sec
[ 2.531982] xor: using function: prefetch64-sse (25443 MB/sec)
[ 2.537818] async_tx: api initialized (async)
[ 2.542795] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 248)
[ 2.550196] io scheduler mq-deadline registered
[ 2.554731] io scheduler kyber registered
[ 2.558770] io scheduler bfq registered
[ 2.569023] pcieport 0000:00:01.0: PME: Signaling with IRQ 25
[ 2.574937] pcieport 0000:00:01.1: PME: Signaling with IRQ 26
[ 2.580866] pcieport 0000:00:1c.0: PME: Signaling with IRQ 27
[ 2.586822] pcieport 0000:00:1c.4: PME: Signaling with IRQ 28
[ 2.593012] IPMI message handler: version 39.2
[ 2.597476] ipmi device interface
[ 2.600857] ipmi_si: IPMI System Interface driver
[ 2.605575] ipmi_si dmi-ipmi-si.0: ipmi_platform: probing via SMBIOS
[ 2.611928] ipmi_platform: ipmi_si: SMBIOS: io 0xca8 regsize 1 spacing 4 irq 0
[ 2.619148] ipmi_si: Adding SMBIOS-specified kcs state machine
[ 2.624994] ipmi_si IPI0001:00: ipmi_platform: probing via ACPI
[ 2.630945] ipmi_si IPI0001:00: ipmi_platform: [io 0x0ca8] regsize 1 spacing 4 irq 0
[ 2.638779] ipmi_si dmi-ipmi-si.0: Removing SMBIOS-specified kcs state machine in favor of ACPI
[ 2.647471] ipmi_si: Adding ACPI-specified kcs state machine
[ 2.653161] ipmi_si: Trying ACPI-specified kcs state machine at i/o address 0xca8, slave address 0x20, irq 0
[ 2.752242] ipmi_si IPI0001:00: IPMI message handler: Found new BMC (man_id: 0x0002a2, prod_id: 0x0100, dev_id: 0x20)
[ 3.044099] ipmi_si IPI0001:00: IPMI kcs interface initialized
[ 3.052991] IPMI Watchdog: driver initialized
[ 3.057355] IPMI poweroff: Copyright (C) 2004 MontaVista Software - IPMI Powerdown via sys_reboot
[ 3.073750] IPMI poweroff: ATCA Detect mfg 0x2A2 prod 0x100
[ 3.079332] IPMI poweroff: Found a chassis style poweroff function
[ 3.086040] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input0
[ 3.093443] ACPI: button: Power Button [PWRF]
[ 3.098755] thermal LNXTHERM:00: registered as thermal_zone0
[ 3.104423] ACPI: thermal: Thermal Zone [TZ01] (30 C)
[ 3.109537] ioatdma: Intel(R) QuickData Technology Driver 5.00
[ 3.115488] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[ 3.121877] 00:03: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
[ 3.129385] 00:04: ttyS1 at I/O 0x2f8 (irq = 3, base_baud = 115200) is a 16550A
[ 3.137288] Non-volatile memory driver v1.3
[ 3.149689] tpm_tis 00:07: 1.2 TPM (device-id 0x0, rev-id 78)
[ 3.167840] tpm tpm0: [Hardware Error]: Adjusting reported durations.
[ 3.198074] ACPI: bus type drm_connector registered
[ 3.203136] nouveau 0000:02:00.0: vgaarb: deactivate vga console
[ 3.209174] nouveau 0000:02:00.0: NVIDIA G96 (096c80c1)
[ 3.313978] tsc: Refined TSC clocksource calibration: 3591.813 MHz
[ 3.320213] clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x33c61db2173, max_idle_ns: 440795316756 ns
[ 3.330282] clocksource: Switched to clocksource tsc
[ 3.345661] nouveau 0000:02:00.0: bios: version 62.94.96.00.05
[ 3.372112] nouveau 0000:02:00.0: fb: 512 MiB GDDR3
[ 3.443753] nouveau 0000:02:00.0: DRM: VRAM: 512 MiB
[ 3.448733] nouveau 0000:02:00.0: DRM: GART: 1048576 MiB
[ 3.454042] nouveau 0000:02:00.0: DRM: TMDS table version 2.0
[ 3.459785] nouveau 0000:02:00.0: DRM: DCB version 4.0
[ 3.464927] nouveau 0000:02:00.0: DRM: DCB outp 00: 02000300 00000028
[ 3.471367] nouveau 0000:02:00.0: DRM: DCB outp 01: 01000302 00020030
[ 3.477804] nouveau 0000:02:00.0: DRM: DCB outp 02: 02021396 0f200020
[ 3.484245] nouveau 0000:02:00.0: DRM: DCB outp 03: 02021332 00020020
[ 3.490690] nouveau 0000:02:00.0: DRM: DCB outp 04: 040323b6 0f200020
[ 3.497131] nouveau 0000:02:00.0: DRM: DCB outp 05: 04032342 00020020
[ 3.503571] nouveau 0000:02:00.0: DRM: DCB conn 00: 00001030
[ 3.509228] nouveau 0000:02:00.0: DRM: DCB conn 01: 0000a146
[ 3.514888] nouveau 0000:02:00.0: DRM: DCB conn 02: 00050246
[ 3.522555] nouveau 0000:02:00.0: DRM: MM: using CRYPT for buffer copies
[ 3.599690] Freeing initrd memory: 16956K
[ 3.791321] [drm] Initialized nouveau 1.4.0 20120801 for 0000:02:00.0 on minor 0
[ 3.894051] fbcon: nouveaudrmfb (fb0) is primary device
[ 4.025621] Console: switching to colour frame buffer device 160x64
[ 4.043638] nouveau 0000:02:00.0: [drm] fb0: nouveaudrmfb frame buffer device
[ 4.055760] loop: module loaded
[ 4.060006] ACPI: watchdog: Skipping WDAT on this system because it uses RTC SRAM
[ 4.067578] ACPI Warning: SystemIO range 0x0000000000000428-0x000000000000042F conflicts with OpRegion 0x0000000000000400-0x000000000000047F (\PMIO) (20230628/utaddress-204)
[ 4.083100] ACPI: OSL: Resource conflict; ACPI support missing from driver?
[ 4.090102] ACPI Warning: SystemIO range 0x0000000000000540-0x000000000000054F conflicts with OpRegion 0x0000000000000500-0x0000000000000563 (\GPIO) (20230628/utaddress-204)
[ 4.105628] ACPI: OSL: Resource conflict; ACPI support missing from driver?
[ 4.112617] ACPI Warning: SystemIO range 0x0000000000000530-0x000000000000053F conflicts with OpRegion 0x0000000000000500-0x0000000000000563 (\GPIO) (20230628/utaddress-204)
[ 4.128146] ACPI: OSL: Resource conflict; ACPI support missing from driver?
[ 4.135151] ACPI Warning: SystemIO range 0x0000000000000500-0x000000000000052F conflicts with OpRegion 0x0000000000000500-0x0000000000000563 (\GPIO) (20230628/utaddress-204)
[ 4.150689] ACPI: OSL: Resource conflict; ACPI support missing from driver?
[ 4.157709] lpc_ich: Resource conflict(s) found affecting gpio_ich
[ 4.164225] ahci 0000:00:1f.2: SSS flag set, parallel bus scan disabled
[ 4.181073] ahci 0000:00:1f.2: AHCI 0001.0300 32 slots 6 ports 3 Gbps 0x3f impl SATA mode
[ 4.189303] ahci 0000:00:1f.2: flags: 64bit ncq stag pm led clo pio slum part ems sxs apst
[ 4.212395] scsi host0: ahci
[ 4.215453] scsi host1: ahci
[ 4.218554] scsi host2: ahci
[ 4.221664] scsi host3: ahci
[ 4.224790] scsi host4: ahci
[ 4.227867] scsi host5: ahci
[ 4.230829] ata1: SATA max UDMA/133 abar m2048@0xc3a04000 port 0xc3a04100 irq 30
[ 4.238268] ata2: SATA max UDMA/133 abar m2048@0xc3a04000 port 0xc3a04180 irq 30
[ 4.245705] ata3: SATA max UDMA/133 abar m2048@0xc3a04000 port 0xc3a04200 irq 30
[ 4.253135] ata4: SATA max UDMA/133 abar m2048@0xc3a04000 port 0xc3a04280 irq 30
[ 4.260563] ata5: SATA max UDMA/133 abar m2048@0xc3a04000 port 0xc3a04300 irq 30
[ 4.267989] ata6: SATA max UDMA/133 abar m2048@0xc3a04000 port 0xc3a04380 irq 30
[ 4.276092] MACsec IEEE 802.1AE
[ 4.288491] tg3 0000:04:00.0 eth0: Tigon3 [partno(BCM95722) rev a200] (PCI Express) MAC address f8:db:88:ff:06:48
[ 4.298805] tg3 0000:04:00.0 eth0: attached PHY is 5722/5756 (10/100/1000Base-T Ethernet) (WireSpeed[1], EEE[0])
[ 4.309029] tg3 0000:04:00.0 eth0: RXcsums[1] LinkChgREG[0] MIirq[0] ASF[1] TSOcap[1]
[ 4.316891] tg3 0000:04:00.0 eth0: dma_rwctrl[76180000] dma_mask[64-bit]
[ 4.323838] mlx4_core: Mellanox ConnectX core driver v4.0-0
[ 4.329452] mlx4_core: Initializing 0000:01:00.0
[ 4.583496] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[ 4.594448] ata1.00: ATA-8: HGST HUS724040ALA640, MFAOAA70, PN1338P4GWS2EB, max UDMA/133
[ 4.604523] ata1.00: 7814037168 sectors, multi 0: LBA48 NCQ (depth 32), AA
[ 4.614298] ata1.00: configured for UDMA/133
[ 4.619861] scsi 0:0:0:0: Direct-Access ATA HGST HUS724040AL AA70 PQ: 0 ANSI: 5
[ 4.629390] sd 0:0:0:0: Attached scsi generic sg0 type 0
[ 4.629425] sd 0:0:0:0: [sda] 7814037168 512-byte logical blocks: (4.00 TB/3.64 TiB)
[ 4.644969] sd 0:0:0:0: [sda] Write Protect is off
[ 4.653977] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[ 4.664316] sd 0:0:0:0: [sda] Preferred minimum I/O size 512 bytes
[ 4.718850] sda: sda1 sda2 sda3 sda4
[ 4.724086] sd 0:0:0:0: [sda] Attached SCSI disk
[ 4.943482] ata2: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[ 4.952430] ata2.00: ATA-8: HGST HUS724040ALA640, MFAOAA70, PN1338P4GWSX9B, max UDMA/133
[ 4.962607] ata2.00: 7814037168 sectors, multi 0: LBA48 NCQ (depth 32), AA
[ 4.972517] ata2.00: configured for UDMA/133
[ 4.978214] scsi 1:0:0:0: Direct-Access ATA HGST HUS724040AL AA70 PQ: 0 ANSI: 5
[ 4.989294] sd 1:0:0:0: Attached scsi generic sg1 type 0
[ 4.989333] sd 1:0:0:0: [sdb] 7814037168 512-byte logical blocks: (4.00 TB/3.64 TiB)
[ 5.005965] sd 1:0:0:0: [sdb] Write Protect is off
[ 5.014009] sd 1:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[ 5.024989] sd 1:0:0:0: [sdb] Preferred minimum I/O size 512 bytes
[ 5.076700] sdb: sdb1 sdb2 sdb3 sdb4
[ 5.082121] sd 1:0:0:0: [sdb] Attached SCSI disk
[ 5.303491] ata3: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[ 5.312539] ata3.00: ATA-8: HGST HUS724040ALA640, MFAOAA70, PN1338P4GUDJ5B, max UDMA/133
[ 5.322797] ata3.00: 7814037168 sectors, multi 0: LBA48 NCQ (depth 32), AA
[ 5.332775] ata3.00: configured for UDMA/133
[ 5.338514] scsi 2:0:0:0: Direct-Access ATA HGST HUS724040AL AA70 PQ: 0 ANSI: 5
[ 5.348297] sd 2:0:0:0: Attached scsi generic sg2 type 0
[ 5.348342] sd 2:0:0:0: [sdc] 7814037168 512-byte logical blocks: (4.00 TB/3.64 TiB)
[ 5.364965] sd 2:0:0:0: [sdc] Write Protect is off
[ 5.372975] sd 2:0:0:0: [sdc] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[ 5.383345] sd 2:0:0:0: [sdc] Preferred minimum I/O size 512 bytes
[ 5.435971] sdc: sdc1 sdc2 sdc3 sdc4
[ 5.441239] sd 2:0:0:0: [sdc] Attached SCSI disk
[ 5.663312] ata4: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[ 5.672416] ata4.00: ATA-8: HGST HUS724040ALA640, MFAOAA70, PN1338P4GWM7LB, max UDMA/133
[ 5.682505] ata4.00: 7814037168 sectors, multi 0: LBA48 NCQ (depth 32), AA
[ 5.693121] ata4.00: configured for UDMA/133
[ 5.698647] scsi 3:0:0:0: Direct-Access ATA HGST HUS724040AL AA70 PQ: 0 ANSI: 5
[ 5.708314] sd 3:0:0:0: Attached scsi generic sg3 type 0
[ 5.708419] sd 3:0:0:0: [sdd] 7814037168 512-byte logical blocks: (4.00 TB/3.64 TiB)
[ 5.725977] sd 3:0:0:0: [sdd] Write Protect is off
[ 5.731984] sd 3:0:0:0: [sdd] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[ 5.743022] sd 3:0:0:0: [sdd] Preferred minimum I/O size 512 bytes
[ 5.799223] sdd: sdd1 sdd2 sdd3 sdd4
[ 5.804367] sd 3:0:0:0: [sdd] Attached SCSI disk
[ 6.023318] ata5: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
[ 6.032032] ata5.00: ATAPI: HL-DT-ST DVD-ROM DH50N, A1B0, KB4F68F4909, max UDMA/100
[ 6.049334] ata5.00: configured for UDMA/100
[ 6.061766] scsi 4:0:0:0: CD-ROM HL-DT-ST DVD-ROM DH50N A1B0 PQ: 0 ANSI: 5
[ 6.109404] sr 4:0:0:0: [sr0] scsi3-mmc drive: 12x/48x cd/rw xa/form2 cdda tray
[ 6.117989] cdrom: Uniform CD-ROM driver Revision: 3.20
[ 6.143907] sr 4:0:0:0: Attached scsi generic sg4 type 5
[ 6.455306] ata6: SATA link down (SStatus 0 SControl 300)
[ 10.331708] mlx4_core 0000:01:00.0: DMFS high rate steer mode is: disabled performance optimized steering
[ 10.343220] mlx4_core 0000:01:00.0: 63.008 Gb/s available PCIe bandwidth (8.0 GT/s PCIe x8 link)
[ 10.417640] mlx4_en: Mellanox ConnectX HCA Ethernet driver v4.0-0
[ 10.425209] mlx4_en 0000:01:00.0: Activating port:1
[ 10.433435] mlx4_en: 0000:01:00.0: Port 1: Using 8 TX rings
[ 10.440293] mlx4_en: 0000:01:00.0: Port 1: Using 8 RX rings
[ 10.447324] mlx4_en: 0000:01:00.0: Port 1: Initializing port
[ 10.455238] mlx4_en 0000:01:00.0: registered PHC clock
[ 10.461885] mlx4_en 0000:01:00.0: Activating port:2
[ 10.468763] mlx4_en: 0000:01:00.0: Port 2: Using 8 TX rings
[ 10.475564] mlx4_en: 0000:01:00.0: Port 2: Using 8 RX rings
[ 10.482505] mlx4_en: 0000:01:00.0: Port 2: Initializing port
[ 10.489836] usbcore: registered new device driver r8152-cfgselector
[ 10.497307] usbcore: registered new interface driver r8152
[ 10.504113] usbcore: registered new interface driver usblp
[ 10.504338] ehci-pci 0000:00:1d.0: EHCI Host Controller
[ 10.509607] usbcore: registered new interface driver usb-storage
[ 10.514864] ehci-pci 0000:00:1d.0: new USB bus registered, assigned bus number 1
[ 10.520841] usbcore: registered new interface driver usbserial_generic
[ 10.528235] ehci-pci 0000:00:1d.0: debug port 2
[ 10.534749] usbserial: USB Serial support registered for generic
[ 10.543210] ehci-pci 0000:00:1d.0: irq 23, io mem 0xc3a05000
[ 10.545289] usbcore: registered new interface driver usb_serial_simple
[ 10.556966] ehci-pci 0000:00:1d.0: USB 2.0 started, EHCI 1.00
[ 10.557472] usbserial: USB Serial support registered for carelink
[ 10.563264] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.06
[ 10.569310] usbserial: USB Serial support registered for flashloader
[ 10.577566] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 10.583931] usbserial: USB Serial support registered for funsoft
[ 10.591144] usb usb1: Product: EHCI Host Controller
[ 10.591146] usb usb1: Manufacturer: Linux 6.6.34-o5 ehci_hcd
[ 10.597190] usbserial: USB Serial support registered for google
[ 10.602060] usb usb1: SerialNumber: 0000:00:1d.0
[ 10.607695] usbserial: USB Serial support registered for hp4x
[ 10.613770] hub 1-0:1.0: USB hub found
[ 10.618231] usbserial: USB Serial support registered for kaufmann
[ 10.623979] hub 1-0:1.0: 2 ports detected
[ 10.627730] usbserial: USB Serial support registered for libtransistor
[ 10.633959] ehci-pci 0000:00:1a.0: EHCI Host Controller
[ 10.637835] usbserial: USB Serial support registered for moto_modem
[ 10.644434] ehci-pci 0000:00:1a.0: new USB bus registered, assigned bus number 2
[ 10.649592] usbserial: USB Serial support registered for motorola_tetra
[ 10.655862] ehci-pci 0000:00:1a.0: debug port 2
[ 10.663247] usbserial: USB Serial support registered for nokia
[ 10.673788] ehci-pci 0000:00:1a.0: irq 20, io mem 0xc3a06000
[ 10.674422] usbserial: USB Serial support registered for novatel_gps
[ 10.686966] ehci-pci 0000:00:1a.0: USB 2.0 started, EHCI 1.00
[ 10.687062] usbserial: USB Serial support registered for siemens_mpi
[ 10.693456] usb usb2: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.06
[ 10.699148] usbserial: USB Serial support registered for suunto
[ 10.705516] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 10.713752] usbserial: USB Serial support registered for vivopay
[ 10.719664] usb usb2: Product: EHCI Host Controller
[ 10.719666] usb usb2: Manufacturer: Linux 6.6.34-o5 ehci_hcd
[ 10.726897] usbserial: USB Serial support registered for zio
[ 10.732892] usb usb2: SerialNumber: 0000:00:1a.0
[ 10.733043] hub 2-0:1.0: USB hub found
[ 10.737834] i8042: PNP: No PS/2 controller found.
[ 10.743437] hub 2-0:1.0: 2 ports detected
[ 10.749251] mousedev: PS/2 mouse device common for all mice
[ 10.824258] input: PC Speaker as /devices/platform/pcspkr/input/input1
[ 10.832072] rtc_cmos 00:01: RTC can wake from S4
[ 10.838101] rtc_cmos 00:01: registered as rtc0
[ 10.843706] rtc_cmos 00:01: setting system clock to 2024-07-23T13:30:40 UTC (1721741440)
[ 10.853004] rtc_cmos 00:01: alarms up to one month, y3k, 242 bytes nvram
[ 10.860850] i2c_dev: i2c /dev entries driver
[ 10.867177] usbcore: registered new interface driver dvb_usb_af9035
[ 10.867236] i801_smbus 0000:00:1f.3: SMBus using PCI interrupt
[ 10.881532] ACPI: watchdog: Skipping WDAT on this system because it uses RTC SRAM
[ 10.891415] i2c i2c-12: 4/4 memory slots populated (from DMI)
[ 10.900279] ------------[ cut here ]------------
[ 10.905953] rtmutex deadlock detected
[ 10.909959] WARNING: CPU: 5 PID: 83 at kernel/locking/rtmutex.c:1642 __rt_mutex_slowlock_locked.constprop.0+0x10f/0x1a5
[ 10.920961] CPU: 5 PID: 83 Comm: kworker/u16:3 Not tainted 6.6.34-o5 #1
[ 10.929970] Hardware name: Dell Inc. PowerEdge T110 II/0PM2CW, BIOS 2.10.0 05/24/2018
[ 10.938954] Workqueue: events_unbound async_run_entry_fn
[ 10.941964] usb 1-1: new high-speed USB device number 2 using ehci-pci
[ 10.944955] RIP: 0010:__rt_mutex_slowlock_locked.constprop.0+0x10f/0x1a5
[ 10.944955] Code: c0 4c 89 e6 48 89 df 65 4c 8b 2c 25 00 be 02 00 41 89 45 18 e8 6d 13 d0 00 83 fd dd 75 1e 48 c7 c7 4d 29 0d bd e8 66 aa fa ff <0f> 0b b8 01 00 00 00 41 87 45 18 e8 52 ea cf 00 eb f0 48 8b 43 08
[ 10.944955] RSP: 0000:ffffc900043cf6a0 EFLAGS: 00010086
[ 10.988966] RAX: 0000000000000000 RBX: ffff888105409070 RCX: 0000000000000003
[ 10.997959] RDX: 0000000000000000 RSI: 0000000000000003 RDI: 00000000ffffffff
[ 11.000964] usb 2-1: new high-speed USB device number 2 using ehci-pci
[ 11.004966] RBP: 00000000ffffffdd R08: 0000000000000000 R09: 0000000000000000
[ 11.004966] R10: 0000000000000001 R11: ffffc9000083fc20 R12: ffffc900043cf6a0
[ 11.004966] R13: ffff888100e0a080 R14: ffff888100e0a080 R15: 0000000000000001
[ 11.004966] FS: 0000000000000000(0000) GS:ffff88844fd40000(0000) knlGS:0000000000000000
[ 11.004966] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 11.055953] CR2: 0000000000000000 CR3: 0000000398444001 CR4: 00000000001706e0
[ 11.061959] Call Trace:
[ 11.067954] <TASK>
[ 11.069959] ? __warn+0x93/0x114
[ 11.074953] ? report_bug+0xeb/0x162
[ 11.077959] ? __rt_mutex_slowlock_locked.constprop.0+0x10f/0x1a5
[ 11.086953] ? handle_bug+0x3c/0x63
[ 11.089953] ? exc_invalid_op+0x17/0x64
[ 11.096967] ? asm_exc_invalid_op+0x1a/0x20
[ 11.102954] ? __rt_mutex_slowlock_locked.constprop.0+0x10f/0x1a5
[ 11.109959] rt_mutex_slowlock.constprop.0+0x1f/0x3b
[ 11.114955] i2c_new_client_device+0x1b/0x40
[ 11.121969] at24_probe+0x5f8/0x666
[ 11.126139] ? __pfx_at24_read+0x10/0x10
[ 11.131953] ? __pfx_at24_write+0x10/0x10
[ 11.136967] ? __pfx___device_attach_driver+0x10/0x10
[ 11.141359] usb 2-1: New USB device found, idVendor=8087, idProduct=0024, bcdDevice= 0.00
[ 11.141960] i2c_device_probe+0x1ba/0x246
[ 11.141960] really_probe+0x101/0x248
[ 11.141960] __driver_probe_device+0xbb/0xed
[ 11.150444] usb 2-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[ 11.152966] driver_probe_device+0x1a/0x72
[ 11.152966] __device_attach_driver+0x82/0x96
[ 11.158395] hub 2-1:1.0: USB hub found
[ 11.160961] bus_for_each_drv+0xa6/0xd4
[ 11.160961] __device_attach+0xa8/0x12a
[ 11.169622] hub 2-1:1.0: 6 ports detected
[ 11.172966] bus_probe_device+0x31/0x95
[ 11.172966] device_add+0x265/0x726
[ 11.214954] __i2c_new_client_device+0x202/0x25d
[ 11.219955] ? __pfx_i2c_default_probe+0x10/0x10
[ 11.227953] i2c_new_scanned_device+0xb0/0xd6
[ 11.230955] i2c_register_spd+0x1a7/0x1f3
[ 11.236955] i801_probe+0x592/0x60c
[ 11.242954] ? up_write+0x37/0x4d
[ 11.245954] ? kernfs_add_one+0x104/0x126
[ 11.250953] ? __raw_spin_unlock_irqrestore+0x14/0x29
[ 11.255953] pci_device_probe+0xbe/0x12f
[ 11.261952] really_probe+0x101/0x248
[ 11.267954] __driver_probe_device+0xbb/0xed
[ 11.270952] driver_probe_device+0x1a/0x72
[ 11.276954] __driver_attach_async_helper+0x2d/0x42
[ 11.282953] async_run_entry_fn+0x25/0xa0
[ 11.288953] process_scheduled_works+0x193/0x291
[ 11.294954] worker_thread+0x1c5/0x21f
[ 11.299954] ? __pfx_worker_thread+0x10/0x10
[ 11.302955] kthread+0xf6/0xfe
[ 11.308954] ? __pfx_kthread+0x10/0x10
[ 11.311955] ret_from_fork+0x23/0x35
[ 11.317964] ? __pfx_kthread+0x10/0x10
[ 11.320953] ret_from_fork_asm+0x1b/0x30
[ 11.326954] </TASK>
[ 11.329954] ---[ end trace 0000000000000000 ]---
[ 11.336954] BUG: scheduling while atomic: kworker/u16:3/83/0x00000002
[ 11.342953] Preemption disabled at:
[ 11.342953] [<0000000000000000>] 0x0
[ 11.350953] CPU: 5 PID: 83 Comm: kworker/u16:3 Tainted: G W 6.6.34-o5 #1
[ 11.361954] Hardware name: Dell Inc. PowerEdge T110 II/0PM2CW, BIOS 2.10.0 05/24/2018
[ 11.369953] Workqueue: events_unbound async_run_entry_fn
[ 11.375952] Call Trace:
[ 11.377955] <TASK>
[ 11.380955] dump_stack_lvl+0x37/0x4a
[ 11.386953] __schedule_bug+0x8c/0x9e
[ 11.391954] __schedule+0x7c/0xabb
[ 11.394955] ? asm_exc_invalid_op+0x1a/0x20
[ 11.399954] schedule+0x60/0x95
[ 11.402952] __rt_mutex_slowlock_locked.constprop.0+0x11f/0x1a5
[ 11.411954] rt_mutex_slowlock.constprop.0+0x1f/0x3b
[ 11.416954] i2c_new_client_device+0x1b/0x40
[ 11.421955] at24_probe+0x5f8/0x666
[ 11.426953] ? __pfx_at24_read+0x10/0x10
[ 11.429955] ? __pfx_at24_write+0x10/0x10
[ 11.434955] ? __pfx___device_attach_driver+0x10/0x10
[ 11.440953] i2c_device_probe+0x1ba/0x246
[ 11.445954] really_probe+0x101/0x248
[ 11.451953] __driver_probe_device+0xbb/0xed
[ 11.454953] driver_probe_device+0x1a/0x72
[ 11.460955] __device_attach_driver+0x82/0x96
[ 11.465954] bus_for_each_drv+0xa6/0xd4
[ 11.471954] __device_attach+0xa8/0x12a
[ 11.474953] bus_probe_device+0x31/0x95
[ 11.480954] device_add+0x265/0x726
[ 11.483954] __i2c_new_client_device+0x202/0x25d
[ 11.489952] ? __pfx_i2c_default_probe+0x10/0x10
[ 11.494955] i2c_new_scanned_device+0xb0/0xd6
[ 11.499953] i2c_register_spd+0x1a7/0x1f3
[ 11.504953] i801_probe+0x592/0x60c
[ 11.507955] ? up_write+0x37/0x4d
[ 11.512956] ? kernfs_add_one+0x104/0x126
[ 11.517954] ? __raw_spin_unlock_irqrestore+0x14/0x29
[ 11.523954] pci_device_probe+0xbe/0x12f
[ 11.528954] really_probe+0x101/0x248
[ 11.531953] __driver_probe_device+0xbb/0xed
[ 11.537953] driver_probe_device+0x1a/0x72
[ 11.542954] __driver_attach_async_helper+0x2d/0x42
[ 11.547952] async_run_entry_fn+0x25/0xa0
[ 11.553953] process_scheduled_works+0x193/0x291
[ 11.559954] worker_thread+0x1c5/0x21f
[ 11.562954] ? __pfx_worker_thread+0x10/0x10
[ 11.568953] kthread+0xf6/0xfe
[ 11.571953] ? __pfx_kthread+0x10/0x10
[ 11.577954] ret_from_fork+0x23/0x35
[ 11.580955] ? __pfx_kthread+0x10/0x10
[ 11.583954] ret_from_fork_asm+0x1b/0x30
[ 11.589955] </TASK>
[ 14.062497] mlx4_en: eth1: Link Up
[ 27.729962] usb 1-1: device not accepting address 2, error -110
[ 27.853963] usb 1-1: new high-speed USB device number 3 using ehci-pci
[ 32.595953] rcu: INFO: rcu_preempt detected stalls on CPUs/tasks:
[ 32.596950] rcu: 2-...0: (1 GPs behind) idle=60b4/1/0x4000000000000000 softirq=837/838 fqs=5251
[ 32.596950] rcu: (detected by 1, t=21018 jiffies, g=13, q=91 ncpus=8)
[ 32.596950] Sending NMI from CPU 1 to CPUs 2:
[ 32.621955] NMI backtrace for cpu 2
[ 32.621955] CPU: 2 PID: 1 Comm: swapper/0 Tainted: G W 6.6.34-o5 #1
[ 32.621955] Hardware name: Dell Inc. PowerEdge T110 II/0PM2CW, BIOS 2.10.0 05/24/2018
[ 32.621955] RIP: 0010:queued_spin_lock_slowpath+0x5f/0x225
[ 32.621955] Code: 0f ba 2b 08 8b 03 0f 92 c2 0f b6 d2 c1 e2 08 30 e4 09 d0 3d ff 00 00 00 76 0c 0f ba e0 08 72 1e c6 43 01 00 eb 18 85 c0 74 0a <8a> 03 84 c0 74 04 f3 90 eb f6 66 c7 03 01 00 e9 a7 01 00 00 e8 fc
[ 32.621955] RSP: 0000:ffffc9000003fd08 EFLAGS: 00000002
[ 32.621955] RAX: 0000000000000001 RBX: ffff888105409070 RCX: 0000000000000000
[ 32.621955] RDX: 0000000000000000 RSI: 0000000000000001 RDI: ffff888105409070
[ 32.621955] RBP: 0000000000000213 R08: 0000000000000dc0 R09: 00000000ffffffff
[ 32.621955] R10: 0000000000000000 R11: 0000000000000000 R12: ffff888100afd800
[ 32.621955] R13: ffffc90000030018 R14: 0000000000000000 R15: ffffffffbcd33af0
[ 32.621955] FS: 0000000000000000(0000) GS:ffff88844fc80000(0000) knlGS:0000000000000000
[ 32.621955] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 32.621955] CR2: 0000000000000000 CR3: 0000000398444001 CR4: 00000000001706e0
[ 32.621955] Call Trace:
[ 32.624953] <NMI>
[ 32.624953] ? nmi_cpu_backtrace+0x99/0xc6
[ 32.624953] ? nmi_cpu_backtrace_handler+0xc/0x14
[ 32.624953] ? nmi_handle+0x52/0x12c
[ 32.624953] ? queued_spin_lock_slowpath+0x5f/0x225
[ 32.624953] ? default_do_nmi+0x66/0x283
[ 32.624953] ? exc_nmi+0xb1/0x103
[ 32.624953] ? end_repeat_nmi+0x16/0x67
[ 32.624953] ? queued_spin_lock_slowpath+0x5f/0x225
[ 32.624953] ? queued_spin_lock_slowpath+0x5f/0x225
[ 32.624953] ? queued_spin_lock_slowpath+0x5f/0x225
[ 32.624953] </NMI>
[ 32.624953] <TASK>
[ 32.624953] _raw_spin_lock_irqsave+0x1e/0x28
[ 32.624953] rt_mutex_slowlock.constprop.0+0x10/0x3b
[ 32.624953] i2c_detect.isra.0+0xc8/0x257
[ 32.624953] ? __pfx___process_new_driver+0x10/0x10
[ 32.624953] __process_new_driver+0x1a/0x21
[ 32.624953] bus_for_each_dev+0x8b/0xcf
[ 32.624953] ? __pfx___process_new_driver+0x10/0x10
[ 32.624953] i2c_for_each_dev+0x2d/0x49
[ 32.624953] i2c_register_driver+0x51/0x63
[ 32.624953] ? __pfx_jc42_driver_init+0x10/0x10
[ 32.624953] do_one_initcall+0x93/0x182
[ 32.624953] kernel_init_freeable+0x1be/0x204
[ 32.624953] ? __pfx_kernel_init+0x10/0x10
[ 32.624953] kernel_init+0x15/0x110
[ 32.624953] ret_from_fork+0x23/0x35
[ 32.624953] ? __pfx_kernel_init+0x10/0x10
[ 32.624953] ret_from_fork_asm+0x1b/0x30
[ 32.624953] </TASK>
[ 37.525120] watchdog: BUG: soft lockup - CPU#5 stuck for 22s! [kworker/5:1:214]
[ 37.525950] CPU: 5 PID: 214 Comm: kworker/5:1 Tainted: G W 6.6.34-o5 #1
[ 37.525950] Hardware name: Dell Inc. PowerEdge T110 II/0PM2CW, BIOS 2.10.0 05/24/2018
[ 37.525950] Workqueue: events drain_vmap_area_work
[ 37.525950] RIP: 0010:smp_call_function_many_cond+0x2fe/0x330
[ 37.525950] Code: 48 8d 5d 08 31 c0 45 84 f6 74 3e 48 63 f0 48 89 df e8 61 fc ff ff 83 f8 07 77 2e 48 63 c8 48 8b 55 00 48 03 14 cd c0 d9 20 bd <8b> 4a 08 80 e1 01 74 04 f3 90 eb f4 ff c0 eb d1 45 84 f6 74 0a 31
[ 37.525950] RSP: 0000:ffffc900047c3d38 EFLAGS: 00000202
[ 37.586964] RAX: 0000000000000002 RBX: ffff88844fd6d6c8 RCX: 0000000000000001
[ 37.594964] RDX: ffff88844fcafe60 RSI: 0000000000000002 RDI: ffff88844fd6d6c8
[ 37.594964] RBP: ffff88844fd6d6c0 R08: 0000000000000000 R09: 000073746e657665
[ 37.594964] R10: 8080808080808080 R11: fefefefefefefeff R12: ffffffffbba5c992
[ 37.594964] R13: 0000000000000005 R14: 0000000000000001 R15: 0000000000000000
[ 37.626963] FS: 0000000000000000(0000) GS:ffff88844fd40000(0000) knlGS:0000000000000000
[ 37.626963] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 37.626963] CR2: 0000000000000000 CR3: 0000000398444001 CR4: 00000000001706e0
[ 37.626963] Call Trace:
[ 37.626963] <IRQ>
[ 37.626963] ? watchdog_timer_fn+0x1db/0x241
[ 37.626963] ? __hrtimer_run_queues+0xe6/0x18b
[ 37.626963] ? hrtimer_interrupt+0x9b/0x16d
[ 37.626963] ? __sysvec_apic_timer_interrupt+0xc4/0x12e
[ 37.626963] ? sysvec_apic_timer_interrupt+0x84/0xaa
[ 37.626963] </IRQ>
[ 37.626963] <TASK>
[ 37.626963] ? asm_sysvec_apic_timer_interrupt+0x1a/0x20
[ 37.626963] ? on_each_cpu_cond_mask+0x41/0x68
[ 37.626963] ? smp_call_function_many_cond+0x2fe/0x330
[ 37.626963] ? smp_call_function_many_cond+0x2ea/0x330
[ 37.626963] ? __pfx_do_flush_tlb_all+0x10/0x10
[ 37.626963] on_each_cpu_cond_mask+0x41/0x68
[ 37.626963] ? __pfx_do_flush_tlb_all+0x10/0x10
[ 37.626963] __purge_vmap_area_lazy+0xdb/0x560
[ 37.626963] drain_vmap_area_work+0x1f/0x4e
[ 37.626963] process_scheduled_works+0x193/0x291
[ 37.626963] worker_thread+0x1c5/0x21f
[ 37.626963] ? __pfx_worker_thread+0x10/0x10
[ 37.626963] kthread+0xf6/0xfe
[ 37.626963] ? __pfx_kthread+0x10/0x10
[ 37.626963] ret_from_fork+0x23/0x35
[ 37.626963] ? __pfx_kthread+0x10/0x10
[ 37.626963] ret_from_fork_asm+0x1b/0x30
[ 37.626963] </TASK>
[ 44.625962] usb 1-1: device not accepting address 3, error -110
[ 44.632761] usb usb1-port1: attempt power cycle
[ 44.815964] usb 1-1: new high-speed USB device number 4 using ehci-pci
[ 49.050966] watchdog: Watchdog detected hard LOCKUP on cpu 2
[ 49.050966] CPU: 2 PID: 1 Comm: swapper/0 Tainted: G W L 6.6.34-o5 #1
[ 49.050966] Hardware name: Dell Inc. PowerEdge T110 II/0PM2CW, BIOS 2.10.0 05/24/2018
[ 49.050966] RIP: 0010:queued_spin_lock_slowpath+0x61/0x225
[ 49.050966] Code: 2b 08 8b 03 0f 92 c2 0f b6 d2 c1 e2 08 30 e4 09 d0 3d ff 00 00 00 76 0c 0f ba e0 08 72 1e c6 43 01 00 eb 18 85 c0 74 0a 8a 03 <84> c0 74 04 f3 90 eb f6 66 c7 03 01 00 e9 a7 01 00 00 e8 fc 7e ff
[ 49.050966] RSP: 0000:ffffc9000003fd08 EFLAGS: 00000002
[ 49.050966] RAX: 0000000000000001 RBX: ffff888105409070 RCX: 0000000000000000
[ 49.050966] RDX: 0000000000000000 RSI: 0000000000000001 RDI: ffff888105409070
[ 49.050966] RBP: 0000000000000213 R08: 0000000000000dc0 R09: 00000000ffffffff
[ 49.050966] R10: 0000000000000000 R11: 0000000000000000 R12: ffff888100afd800
[ 49.050966] R13: ffffc90000030018 R14: 0000000000000000 R15: ffffffffbcd33af0
[ 49.050966] FS: 0000000000000000(0000) GS:ffff88844fc80000(0000) knlGS:0000000000000000
[ 49.050966] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 49.050966] CR2: 0000000000000000 CR3: 0000000398444001 CR4: 00000000001706e0
[ 49.050966] Call Trace:
[ 49.050966] <NMI>
[ 49.050966] ? watchdog_hardlockup_check+0x9f/0x139
[ 49.050966] ? __perf_event_overflow+0x130/0x176
[ 49.050966] ? handle_pmi_common+0x2d4/0x318
[ 49.050966] ? intel_pmu_handle_irq+0x2e2/0x359
[ 49.050966] ? perf_event_nmi_handler+0x25/0x42
[ 49.050966] ? queued_spin_lock_slowpath+0x61/0x225
[ 49.050966] ? nmi_handle+0x52/0x12c
[ 49.050966] ? queued_spin_lock_slowpath+0x61/0x225
[ 49.050966] ? default_do_nmi+0x66/0x283
[ 49.050966] ? exc_nmi+0xb1/0x103
[ 49.050966] ? end_repeat_nmi+0x16/0x67
[ 49.050966] ? queued_spin_lock_slowpath+0x61/0x225
[ 49.050966] ? queued_spin_lock_slowpath+0x61/0x225
[ 49.050966] ? queued_spin_lock_slowpath+0x61/0x225
[ 49.050966] </NMI>
[ 49.050966] <TASK>
[ 49.050966] _raw_spin_lock_irqsave+0x1e/0x28
[ 49.050966] rt_mutex_slowlock.constprop.0+0x10/0x3b
[ 49.050966] i2c_detect.isra.0+0xc8/0x257
[ 49.050966] ? __pfx___process_new_driver+0x10/0x10
[ 49.050966] __process_new_driver+0x1a/0x21
[ 49.050966] bus_for_each_dev+0x8b/0xcf
[ 49.050966] ? __pfx___process_new_driver+0x10/0x10
[ 49.050966] i2c_for_each_dev+0x2d/0x49
[ 49.050966] i2c_register_driver+0x51/0x63
[ 49.050966] ? __pfx_jc42_driver_init+0x10/0x10
[ 49.050966] do_one_initcall+0x93/0x182
[ 49.050966] kernel_init_freeable+0x1be/0x204
[ 49.050966] ? __pfx_kernel_init+0x10/0x10
[ 49.050966] kernel_init+0x15/0x110
[ 49.050966] ret_from_fork+0x23/0x35
[ 49.050966] ? __pfx_kernel_init+0x10/0x10
[ 49.050966] ret_from_fork_asm+0x1b/0x30
[ 49.050966] </TASK>
[ 55.889962] usb 1-1: device not accepting address 4, error -110
[ 56.306969] usb 1-1: new high-speed USB device number 5 using ehci-pci
[ 65.525120] watchdog: BUG: soft lockup - CPU#5 stuck for 49s! [kworker/5:1:214]
[ 65.529962] CPU: 5 PID: 214 Comm: kworker/5:1 Tainted: G W L 6.6.34-o5 #1
[ 65.529962] Hardware name: Dell Inc. PowerEdge T110 II/0PM2CW, BIOS 2.10.0 05/24/2018
[ 65.529962] Workqueue: events drain_vmap_area_work
[ 65.529962] RIP: 0010:smp_call_function_many_cond+0x308/0x330
[ 65.529962] Code: 3e 48 63 f0 48 89 df e8 61 fc ff ff 83 f8 07 77 2e 48 63 c8 48 8b 55 00 48 03 14 cd c0 d9 20 bd 8b 4a 08 80 e1 01 74 04 f3 90 <eb> f4 ff c0 eb d1 45 84 f6 74 0a 31 ed 45 31 f6 e9 64 ff ff ff 48
[ 65.529962] RSP: 0000:ffffc900047c3d38 EFLAGS: 00000202
[ 65.529962] RAX: 0000000000000002 RBX: ffff88844fd6d6c8 RCX: 0000000000000001
[ 65.529962] RDX: ffff88844fcafe60 RSI: 0000000000000002 RDI: ffff88844fd6d6c8
[ 65.529962] RBP: ffff88844fd6d6c0 R08: 0000000000000000 R09: 000073746e657665
[ 65.529962] R10: 8080808080808080 R11: fefefefefefefeff R12: ffffffffbba5c992
[ 65.529962] R13: 0000000000000005 R14: 0000000000000001 R15: 0000000000000000
[ 65.529962] FS: 0000000000000000(0000) GS:ffff88844fd40000(0000) knlGS:0000000000000000
[ 65.529962] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 65.529962] CR2: 0000000000000000 CR3: 0000000398444001 CR4: 00000000001706e0
[ 65.529962] Call Trace:
[ 65.529962] <IRQ>
[ 65.529962] ? watchdog_timer_fn+0x1db/0x241
[ 65.529962] ? __hrtimer_run_queues+0xe6/0x18b
[ 65.529962] ? hrtimer_interrupt+0x9b/0x16d
[ 65.529962] ? __sysvec_apic_timer_interrupt+0xc4/0x12e
[ 65.529962] ? sysvec_apic_timer_interrupt+0x84/0xaa
[ 65.529962] </IRQ>
[ 65.529962] <TASK>
[ 65.529962] ? asm_sysvec_apic_timer_interrupt+0x1a/0x20
[ 65.529962] ? on_each_cpu_cond_mask+0x41/0x68
[ 65.529962] ? smp_call_function_many_cond+0x308/0x330
[ 65.529962] ? smp_call_function_many_cond+0x2ea/0x330
[ 65.529962] ? __pfx_do_flush_tlb_all+0x10/0x10
[ 65.721954] on_each_cpu_cond_mask+0x41/0x68
[ 65.721954] ? __pfx_do_flush_tlb_all+0x10/0x10
[ 65.721954] __purge_vmap_area_lazy+0xdb/0x560
[ 65.721954] drain_vmap_area_work+0x1f/0x4e
[ 65.721954] process_scheduled_works+0x193/0x291
[ 65.746962] worker_thread+0x1c5/0x21f
[ 65.746962] ? __pfx_worker_thread+0x10/0x10
[ 65.754961] kthread+0xf6/0xfe
[ 65.754961] ? __pfx_kthread+0x10/0x10
[ 65.754961] ret_from_fork+0x23/0x35
[ 65.754961] ? __pfx_kthread+0x10/0x10
[ 65.754961] ret_from_fork_asm+0x1b/0x30
[ 65.754961] </TASK>
[ 67.665962] usb 1-1: device not accepting address 5, error -110
[ 67.672789] usb usb1-port1: unable to enumerate USB device
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Regression caused by "eeprom: at24: Probe for DDR3 thermal sensor in the SPD case" - "sysfs: cannot create duplicate filename"
2024-07-23 14:12 ` Krzysztof Olędzki
@ 2024-08-03 17:19 ` Heiner Kallweit
2024-08-13 16:28 ` Krzysztof Olędzki
0 siblings, 1 reply; 18+ messages in thread
From: Heiner Kallweit @ 2024-08-03 17:19 UTC (permalink / raw)
To: Krzysztof Olędzki, Greg Kroah-Hartman, Guenter Roeck,
Bartosz Golaszewski
Cc: stable, linux-i2c, linux-hwmon, Linux Kernel Mailing List
On 23.07.2024 16:12, Krzysztof Olędzki wrote:
> On 06.07.2024 at 18:42, Krzysztof Olędzki wrote:
>> On 02.07.2024 at 13:25, Heiner Kallweit wrote:
>>> On 23.06.2024 20: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.
>>
>> <CUT>
>>
>>>
>>> Could you please test whether the attached two experimental patches fix the issue for you?
>>> They serialize client device instantiation per I2C adapter, and include the client device
>>> name in the check whether a bus address is busy.
>>
>> Sadly, they crash the kernel.
>>
>> I will get serial console attached there next week, so will be able to capture the full crash.
>> For now, I was able to obtain a photo. I'm very sorry for the quality, just wanted to provide
>> something for now.
>
> Sorry it took me so long - my attempts to coordinate setting up serial console
> were not successful, so it had to wait for me to go there in person...
>
> I have attached complete dmesg, summary:
>
> [ 10.905953] rtmutex deadlock detected
> [ 10.909959] WARNING: CPU: 5 PID: 83 at kernel/locking/rtmutex.c:1642 __rt_mutex_slowlock_locked.constprop.0+0x10f/0x1a5
> [ 10.920961] CPU: 5 PID: 83 Comm: kworker/u16:3 Not tainted 6.6.34-o5 #1
> [ 10.929970] Hardware name: Dell Inc. PowerEdge T110 II/0PM2CW, BIOS 2.10.0 05/24/2018
> [ 10.938954] Workqueue: events_unbound async_run_entry_fn
>
>
> [ 11.336954] BUG: scheduling while atomic: kworker/u16:3/83/0x00000002
> [ 11.342953] Preemption disabled at:
> [ 11.342953] [<0000000000000000>] 0x0
> [ 11.350953] CPU: 5 PID: 83 Comm: kworker/u16:3 Tainted: G W 6.6.34-o5 #1
> [ 11.361954] Hardware name: Dell Inc. PowerEdge T110 II/0PM2CW, BIOS 2.10.0 05/24/2018
> [ 11.369953] Workqueue: events_unbound async_run_entry_fn
>
Thanks a lot for the comprehensive info. Reason for the deadlock is that calls to
i2c_new_client_device() can be nested. So another solution approach is needed.
I'd appreciate if you could test also the new version below.
>
>
> Krzysztof
Heiner
diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c
index b63f75e44..c1074d409 100644
--- a/drivers/i2c/i2c-core-base.c
+++ b/drivers/i2c/i2c-core-base.c
@@ -915,6 +915,29 @@ int i2c_dev_irq_from_resources(const struct resource *resources,
return 0;
}
+/**
+ * Serialize device instantiation in case it can be instantiated explicitly
+ * and by auto-detection
+ */
+static int i2c_test_and_set_addr_in_instantiation(struct i2c_adapter *adap,
+ const struct i2c_client *client)
+{
+ if (!(client->flags & I2C_CLIENT_TEN) &&
+ !(client->flags & I2C_CLIENT_SLAVE) &&
+ test_and_set_bit(client->addr, adap->addrs_in_instantiation))
+ return -EBUSY;
+
+ return 0;
+}
+
+static void i2c_clear_addr_in_instantiation(struct i2c_adapter *adap,
+ const struct i2c_client *client)
+{
+ if (!(client->flags & I2C_CLIENT_TEN) &&
+ !(client->flags & I2C_CLIENT_SLAVE))
+ clear_bit(client->addr, adap->addrs_in_instantiation);
+}
+
/**
* i2c_new_client_device - instantiate an i2c device
* @adap: the adapter managing the device
@@ -962,6 +985,10 @@ i2c_new_client_device(struct i2c_adapter *adap, struct i2c_board_info const *inf
goto out_err_silent;
}
+ status = i2c_test_and_set_addr_in_instantiation(adap, client);
+ if (status)
+ goto out_err_silent;
+
/* Check for address business */
status = i2c_check_addr_busy(adap, i2c_encode_flags_to_addr(client));
if (status)
@@ -993,6 +1020,8 @@ i2c_new_client_device(struct i2c_adapter *adap, struct i2c_board_info const *inf
dev_dbg(&adap->dev, "client [%s] registered with bus id %s\n",
client->name, dev_name(&client->dev));
+ i2c_clear_addr_in_instantiation(adap, client);
+
return client;
out_remove_swnode:
@@ -1004,6 +1033,7 @@ i2c_new_client_device(struct i2c_adapter *adap, struct i2c_board_info const *inf
dev_err(&adap->dev,
"Failed to register i2c client %s at 0x%02x (%d)\n",
client->name, client->addr, status);
+ i2c_clear_addr_in_instantiation(adap, client);
out_err_silent:
if (need_put)
put_device(&client->dev);
diff --git a/include/linux/i2c.h b/include/linux/i2c.h
index 07e33bbc9..31486455f 100644
--- a/include/linux/i2c.h
+++ b/include/linux/i2c.h
@@ -761,6 +761,9 @@ struct i2c_adapter {
struct regulator *bus_regulator;
struct dentry *debugfs;
+
+ /* covers 7bit addresses only */
+ DECLARE_BITMAP(addrs_in_instantiation, 1 << 7);
};
#define to_i2c_adapter(d) container_of(d, struct i2c_adapter, dev)
--
2.46.0
^ permalink raw reply related [flat|nested] 18+ messages in thread
* Re: Regression caused by "eeprom: at24: Probe for DDR3 thermal sensor in the SPD case" - "sysfs: cannot create duplicate filename"
2024-08-03 17:19 ` Heiner Kallweit
@ 2024-08-13 16:28 ` Krzysztof Olędzki
0 siblings, 0 replies; 18+ messages in thread
From: Krzysztof Olędzki @ 2024-08-13 16:28 UTC (permalink / raw)
To: Heiner Kallweit, Greg Kroah-Hartman, Guenter Roeck,
Bartosz Golaszewski
Cc: stable, linux-i2c, linux-hwmon, Linux Kernel Mailing List
On 03.08.2024 at 10:19, Heiner Kallweit wrote:
> On 23.07.2024 16:12, Krzysztof Olędzki wrote:
>> On 06.07.2024 at 18:42, Krzysztof Olędzki wrote:
>>> On 02.07.2024 at 13:25, Heiner Kallweit wrote:
>>>> On 23.06.2024 20: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.
>>>
>>> <CUT>
>>>
>>>>
>>>> Could you please test whether the attached two experimental patches fix the issue for you?
>>>> They serialize client device instantiation per I2C adapter, and include the client device
>>>> name in the check whether a bus address is busy.
>>>
>>> Sadly, they crash the kernel.
>>>
>>> I will get serial console attached there next week, so will be able to capture the full crash.
>>> For now, I was able to obtain a photo. I'm very sorry for the quality, just wanted to provide
>>> something for now.
>>
>> Sorry it took me so long - my attempts to coordinate setting up serial console
>> were not successful, so it had to wait for me to go there in person...
>>
>> I have attached complete dmesg, summary:
>>
>> [ 10.905953] rtmutex deadlock detected
>> [ 10.909959] WARNING: CPU: 5 PID: 83 at kernel/locking/rtmutex.c:1642 __rt_mutex_slowlock_locked.constprop.0+0x10f/0x1a5
>> [ 10.920961] CPU: 5 PID: 83 Comm: kworker/u16:3 Not tainted 6.6.34-o5 #1
>> [ 10.929970] Hardware name: Dell Inc. PowerEdge T110 II/0PM2CW, BIOS 2.10.0 05/24/2018
>> [ 10.938954] Workqueue: events_unbound async_run_entry_fn
>>
>>
>> [ 11.336954] BUG: scheduling while atomic: kworker/u16:3/83/0x00000002
>> [ 11.342953] Preemption disabled at:
>> [ 11.342953] [<0000000000000000>] 0x0
>> [ 11.350953] CPU: 5 PID: 83 Comm: kworker/u16:3 Tainted: G W 6.6.34-o5 #1
>> [ 11.361954] Hardware name: Dell Inc. PowerEdge T110 II/0PM2CW, BIOS 2.10.0 05/24/2018
>> [ 11.369953] Workqueue: events_unbound async_run_entry_fn
>>
> Thanks a lot for the comprehensive info. Reason for the deadlock is that calls to
> i2c_new_client_device() can be nested. So another solution approach is needed.
> I'd appreciate if you could test also the new version below.
The patch did not apply cleanly for Linux-6.6, so I had to tweak it a little
bit for the include/linux/i2c.h part, but it does seem to work. Everything
gets detected and there are no warning / errors:
[ 8.311414] i2c i2c-12: 4/4 memory slots populated (from DMI)
[ 8.314112] at24 12-0050: 256 byte spd EEPROM, read-only
[ 8.314856] i2c i2c-12: Successfully instantiated SPD at 0x50
[ 8.317513] at24 12-0051: 256 byte spd EEPROM, read-only
[ 8.318252] i2c i2c-12: Successfully instantiated SPD at 0x51
[ 8.320909] at24 12-0052: 256 byte spd EEPROM, read-only
[ 8.322126] i2c i2c-12: Successfully instantiated SPD at 0x52
[ 8.325538] at24 12-0053: 256 byte spd EEPROM, read-only
[ 8.326789] i2c i2c-12: Successfully instantiated SPD at 0x53
# sensors|grep -A2 jc42
jc42-i2c-12-19
Adapter: SMBus I801 adapter at 3000
temp1: +36.5°C (low = +0.0°C)
--
jc42-i2c-12-1b
Adapter: SMBus I801 adapter at 3000
temp1: +35.0°C (low = +0.0°C)
--
jc42-i2c-12-1a
Adapter: SMBus I801 adapter at 3000
temp1: +36.0°C (low = +0.0°C)
--
jc42-i2c-12-18
Adapter: SMBus I801 adapter at 3000
temp1: +36.5°C (low = +0.0°C)
Feel free to add:
Tested-by: Krzysztof Piotr Oledzki <ole@ans.pl>
Thanks,
Krzysztof
^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2024-08-13 16:50 UTC | newest]
Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-23 18:47 Regression caused by "eeprom: at24: Probe for DDR3 thermal sensor in the SPD case" - "sysfs: cannot create duplicate filename" Krzysztof Olędzki
2024-06-24 5:33 ` Guenter Roeck
2024-06-24 8:38 ` Krzysztof Olędzki
2024-06-24 14:54 ` Guenter Roeck
2024-06-24 16:23 ` Guenter Roeck
2024-06-24 20:58 ` Heiner Kallweit
2024-06-25 3:45 ` Guenter Roeck
2024-06-27 11:29 ` Krzysztof Olędzki
2024-06-27 12:12 ` Krzysztof Olędzki
2024-06-27 11:24 ` Krzysztof Olędzki
2024-06-29 21:56 ` Heiner Kallweit
2024-06-24 5:43 ` Greg Kroah-Hartman
2024-06-24 13:35 ` Guenter Roeck
2024-07-02 20:25 ` Heiner Kallweit
2024-07-07 1:42 ` Krzysztof Olędzki
2024-07-23 14:12 ` Krzysztof Olędzki
2024-08-03 17:19 ` Heiner Kallweit
2024-08-13 16:28 ` Krzysztof Olędzki
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox