i801: async probe causing problems on Dell S52xxF-ON switches

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

 



Hi all,

I am trying to gain access to the EEPROM of a Dell S5212F-ON switch
running a vanilla 6.1.44 kernel.
The EEPROM is accessed over SMBus on an i801 bus over PCI at "00:1f.4
Class 0c05: 8086:19df i801_smbus".

The environment that I'm working under is ONIE
(https://github.com/opencomputeproject/onie), and the userspace tools
that I'm using to test the access are:
- onie-syseeprom: reads the EEPROM by essentially using a combination
of 'i2c_smbus_write_byte()' and 'i2c_smbus_read_byte()' commands
- i2cdump -y 1 0x50: reads the EEPROM by using
'i2c_smbus_read_byte_data()' commands

Using the i2cdump utility read the EEPROM, but produced garbage
output. However, the garbage data was consistent all the time - even
after reboots.
Using the onie-syseeprom tool failed on the ioctl for the
i2c_smbus_write_byte with ENXIO - in fact all writes always failed
like this.
It is also worth mentioning that there are no errors, warnings or
crashes/traces in the dmesg output of the running kernel. In fact, the
info messages for the i801_smbus look all correct to me and are
exactly the same of confirmed working kernels:

[    2.514373] i801_smbus 0000:00:1f.4: enabling device (0000 -> 0003)
[    2.514594] i801_smbus 0000:00:1f.4: SPD Write Disable is set
[    2.514649] i801_smbus 0000:00:1f.4: SMBus using PCI interrupt

After a long (and painful) exercise of compiling myself up from a
confirmed working 4.9 kernel, I realized that the problem must have
been introduced between kernels 6.0 and 6.1.
Reverting the "i2c: i801: Prefer async probe" commit
(https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=342530f7fe1ada578452c4daa2c9b5902cedf480)
fixed the problem, and my userspace tools started working again as
expected.

Looking at the commit I do not really believe that this should have
that drastic of an impact, and that reverting this commit is probably
only hiding the underlying real problem.
My current semi-educated guess/working theory is that the probing
probably never finished when in async mode or something went wrong
when doing an async probe?

I'm assuming that reverting this commit is definitely not feasible as
I seem to be the first person to run into this issue, and I also
believe that there is probably a hidden problem.

How can I debug this further? Any help is much appreciated.

---
Marcus Heese
Linux Platform Engineer
Hedgehog SONiC Foundation



[Index of Archives]     [Linux GPIO]     [Linux SPI]     [Linux Hardward Monitoring]     [LM Sensors]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux