Re: i2c-i801 hangs indefinitely on IBM x3550

From: Jean Delvare
Date: Fri Jul 01 2016 - 09:05:58 EST


Hi Meelis,

Thanks for the quick reply.

On ven., 2016-07-01 at 15:02 +0300, Meelis Roos wrote:
> > > Tried latest Debian kernel (3.10-3-amd64) and latest upstream kernel
> > > (3.12-rc2) on a decommisioned IBM x3550 server. i2c-i801 is autoloaded
> > > but all access to it seems to wait forever, including stopping reboot
> > > from happening because modprobe is still running and blocked on this.
> > >
> > > 00:1f.3 SMBus: Intel Corporation 631xESB/632xESB/3100 Chipset SMBus Controller (rev 09)
> > > Subsystem: IBM Device 02dd
> > > 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 B routed to IRQ 20
> > > Region 4: I/O ports at 0440 [size=32]
> > > Kernel driver in use: i801_smbus
> > >
> > >
> > > [ 3.028771] i801_smbus 0000:00:1f.3: SMBus using PCI Interrupt
> > > [...]
> > > [ 240.172009] INFO: task modprobe:267 blocked for more than 120 seconds.
> >
> > Most likely SMBus interrupts do not work properly on this machine.
> > Since then a number of improvements have been committed to the i2c-i801
> > driver to detect and workaround corner cases in this area. If you still
> > have this machine, you may want to try to upgrade to kernel v3.19 or
> > later and see if it helps.
>
> The machine is still alive and kicking with latest 4.7-rc4+. However, I
> do not remember the exact scenario for testing.

Well originally you reported that the machine would hang when the
i2c-i801 driver is loaded. I guess this is no longer the case?

> Ran sensors, this works:
>
> $ sensors
> i5k_amb-isa-0000
> Adapter: ISA adapter
> Ch. 0 DIMM 0: +38.5ÂC (low = +104.0ÂC, high = +124.0ÂC)
> Ch. 0 DIMM 1: +33.0ÂC (low = +100.0ÂC, high = +124.0ÂC)
> Ch. 1 DIMM 0: +42.5ÂC (low = +101.0ÂC, high = +124.0ÂC)
> Ch. 1 DIMM 1: +36.5ÂC (low = +99.5ÂC, high = +124.0ÂC)
> Ch. 2 DIMM 0: +58.0ÂC (low = +127.5ÂC, high = +127.5ÂC)
> Ch. 3 DIMM 0: +18.0ÂC (low = +127.5ÂC, high = +127.5ÂC)
>
> coretemp-isa-0000
> Adapter: ISA adapter
> Core 0: +43.0ÂC (high = +86.0ÂC, crit = +100.0ÂC)
> Core 1: +45.0ÂC (high = +86.0ÂC, crit = +100.0ÂC)
>
> aem1-isa-0000
> Adapter: ISA adapter
> power1: 188.16 W (interval = 1.00 s)
> energy1: 720.82 MJ
>
> aem2-isa-0001
> Adapter: ISA adapter
> temp1: +31.0ÂC
> temp2: +20.0ÂC
> power1: 126.22 W (interval = 1.00 s)
> power2: 200.69 W (interval = 1.00 s)
> power3: 26.00 W
> power4: 374.00 W
> power5: 347.00 W
> power6: 265.40 W
> power7: 240.40 W
> energy1: 217.21 MJ
> energy2: 720.82 MJ
>
> ibmpex-isa-0000
> Adapter: ISA adapter
> temp1: +0.0ÂC
> temp2: +0.0ÂC
> temp3: +0.0ÂC
> temp4: +0.0ÂC
> power1: 131.00 W (lowest = 7.00 W, highest = 186.90 W)
> power2: 133.00 W (lowest = 8.50 W, highest = 159.10 W)
> power3: 132.60 W (lowest = 8.70 W, highest = 155.80 W)
> power4: 132.70 W (lowest = 8.80 W, highest = 156.00 W)
> power5: 127.10 W (lowest = 8.80 W, highest = 155.00 W)
> power6: 123.90 W (lowest = 8.90 W, highest = 151.40 W)
> power7: 123.30 W (lowest = 9.00 W, highest = 148.40 W)
> power8: 123.00 W (lowest = 9.30 W, highest = 146.40 W)
> power9: 208.00 W (lowest = 67.00 W, highest = 267.00 W)
> power10: 206.00 W (lowest = 68.00 W, highest = 232.00 W)
> power11: 196.00 W (lowest = 81.00 W, highest = 227.00 W)
>
> But the hwmon sensors seem to be prom ohter places than i2c.

Indeed, none of these sensors is on the SMBus.

> mroos@x3550:/sys/bus/i2c/devices$ ls -al
> total 0
> drwxr-xr-x 2 root root 0 Jul 1 14:50 .
> drwxr-xr-x 4 root root 0 Jul 1 14:50 ..
> lrwxrwxrwx 1 root root 0 Jul 1 14:50 i2c-0 -> ../../../devices/pci0000:00/0000:00:1f.3/i2c-0
> lrwxrwxrwx 1 root root 0 Jul 1 14:50 i2c-1 -> ../../../devices/pci0000:00/0000:00:1e.0/0000:01:01.0/i2c-1
> lrwxrwxrwx 1 root root 0 Jul 1 14:50 i2c-2 -> ../../../devices/pci0000:00/0000:00:1e.0/0000:01:01.0/i2c-2
> lrwxrwxrwx 1 root root 0 Jul 1 14:50 i2c-3 -> ../../../devices/pci0000:00/0000:00:1e.0/0000:01:01.0/i2c-3
> lrwxrwxrwx 1 root root 0 Jul 1 14:50 i2c-4 -> ../../../devices/pci0000:00/0000:00:1e.0/0000:01:01.0/i2c-4
>
> So no i2c client drivers.
>
> devices/pci0000:00/0000:00:1f.3/i2c-0 is i801_smbus.

Correct.

> modprobe eeprom + decode-dimms shows not dimm info but here is some i2c
> device now:
> lrwxrwxrwx 1 root root 0 Jul 1 14:51 1-0050 -> ../../../devices/pci0000:00/0000:00:1e.0/0000:01:01.0/i2c-1/1-0050
> lrwxrwxrwx 1 root root 0 Jul 1 14:50 i2c-0 -> ../../../devices/pci0000:00/0000:00:1f.3/i2c-0
> lrwxrwxrwx 1 root root 0 Jul 1 14:50 i2c-1 -> ../../../devices/pci0000:00/0000:00:1e.0/0000:01:01.0/i2c-1
> lrwxrwxrwx 1 root root 0 Jul 1 14:50 i2c-2 -> ../../../devices/pci0000:00/0000:00:1e.0/0000:01:01.0/i2c-2
> lrwxrwxrwx 1 root root 0 Jul 1 14:50 i2c-3 -> ../../../devices/pci0000:00/0000:00:1e.0/0000:01:01.0/i2c-3
> lrwxrwxrwx 1 root root 0 Jul 1 14:50 i2c-4 -> ../../../devices/pci0000:00/0000:00:1e.0/0000:01:01.0/i2c-4

On LGA 2011 Socket systems, the memory sockets have a dedicated SMBus
controller (there was a driver under development for it but I don't
think it ever made it upstream) so it is expected that decode-dimms
doesn't print anything.

> However, this seems to be attached to ATi graphics so probably DDC.

Indeed.

> Reboot is working fine.
>
> SO how do I see if os working? Nothing in dmesg, reboot works so seems
> OK?

Well, upon loading the i2c-i801 driver should say something about
interrupt use. Either:
"SMBus using PCI interrupt"
or:
"SMBus using polling"
and possibly other relevant messages. Can you check your dmesg for these
messages?

--
Jean Delvare
SUSE L3 Support