Re: [lm-sensors] hwmon/adt7470 crash on module load (2.6.37-rc1)

From: Randy Dunlap
Date: Fri Nov 05 2010 - 12:23:45 EST


On Fri, 5 Nov 2010 16:17:41 +0100 Jean Delvare wrote:

> Hi Randy,
>
> On Fri, 05 Nov 2010 07:45:19 -0700, Randy Dunlap wrote:
> > On 11/05/10 01:42, Jean Delvare wrote:
> > > Hi Randy,
> > >
> > > On Thu, 4 Nov 2010 17:09:29 -0700, Randy Dunlap wrote:
> > >> Nov 4 15:56:17 control kernel: [ 173.105754] calling adt7470_init+0x0/0x27 [adt7470] @ 4392
> > >> Nov 4 15:56:18 [ 173.113711] i2c-core: driver [adt7470] registered
> > >> control kernel: [ 173.122202] i2c i2c-15: found normal entry for adapter 15, addr 0x2c
> > >> [ 173.105754] c[ 173.136181] i801_smbus 0000:00:1f.3: No response
> > >> [ 173.142478] i2c i2c-15: found normal entry for adapter 15, addr 0x2e
> > >> Nov 4 15:56:18 [ 173.151286] general protection fault: 0000 [#1] SMP DEBUG_PAGEALLOC
> > >
> > > Do you have a device at address 0x2e on this I2C adapter, or not?
> >
> > AFAIK I don't even have an I2C adapter. or is there one in the intel chipset?
>
> The "i2c-15" above suggests that you have at least 16 I2C adapters on
> your system. There are many such adapters in graphics cards, TV cards
> (both analog and digital) and on the mainboard as well. You can get a
> list with:
>
> # modprobe i2c-dev
> # i2cdetect -l
>
> But given the problem you've just reported, I expect the above command
> to crash on 2.6.37-rc1. You could try it on 2.6.36 to at least give me a
> rough idea of what I2C adapters are available on your system. This
> would help me understand what's happening.
>
> Do you have any DVB adapter in this machine?

Nope.

> > > Are you using the adt7470 driver on this system normally, or did you
> > > build it in just for random testing purpose?
> >
> > It's just random module testing.
> >
> > >> [ 173.156502] last sysfs file: /sys/module/hwmon/initstate
> > >> [ 173.156502] CPU 1
> > >> [ 173.156502] Modules linked in: adt7470(+) ipt_MASQUERADE iptable_nat nf_nat af_packet nfsd lockd nfs_acl auth_rpcgss exportfs sco bridge stp llc bnep l2cap crc16 bluetooth rfkill sunrpc ipt_REJECT nf_conntrack_ipv4 nf_defrag_ipv4 iptable_filter ip_tables ip6t_REJECT xt_tcpudp nf_conntrack_ipv6 nf_defrag_ipv6 xt_state nf_conntrack ip6table_filter ip6_tables x_tables ipv6 p4_clockmod freq_table speedstep_lib binfmt_misc dm_mirror dm_region_hash dm_log dm_multipath scsi_dh dm_mod kvm uinput mousedev joydev ppdev snd_intel8x0 snd_ac97_codec ac97_bus snd_seq snd_seq_device snd_pcm usbkbd snd_timer led_class usbmouse usbhid hid iTCO_wdt snd dcdbas iTCO_vendor_support sg sr_mod pcspkr i2c_i801 soundcore rtc_cmos cdrom parport_pc rng_core snd_page_alloc rtc_core tg3 rtc_lib parport 8250_pnp evdev mac_hid shpchp pci_hotplug unix ide_pci_generic ide_core ata_generic pata_acpi ata_piix sd_mod crc_t10dif ext3 jbd mbcache uhci_hcd ohci_hcd ssb mmc_core pcmcia pcmcia_core firmwa!
re_cl
> > >> ass ehci_hcd usbcore nls_base i915 drm_kms_helper intel_agp button intel_gtt video thermal_sys hwmon output [last unloaded: ltc4245]
> > >> [ 173.156502]
> > >> [ 173.156502] Pid: 22, comm: kworker/1:1 Not tainted 2.6.37-rc1 #12 0HH807/OptiPlex GX620
> > >> [ 173.156502] RIP: 0010:[<ffffffff813ea532>] [<ffffffff813ea532>] check_modem_status+0xe7/0x29c
> > >
> > > Several drivers have a function named check_modem_status(), but adt7470 is
> > > not one of them. I'm curious how we can get there if the crash is in
> > > driver adt7470. Stack corruption maybe?
> > >
> > >> [ 173.308056] RSP: 0018:ffff88007c803e18 EFLAGS: 00010006
> > >> [ 173.308056] RAX: 6b6b6b6b6b6b6b6b RBX: ffffffff82a55400 RCX: 0000000000000100
> > >> [ 173.308056] RDX: 00000000260b260a RSI: 0000000000000028 RDI: 0000000000000006
> > >> [ 173.308056] RBP: ffff88007c803e58 R08: 0000000000000006 R09: 395099858027a0e6
> > >>
> > >> <locked up tight here>
> > >
> > > Can we see the kernel config you're running?
> >
> > Sure, it's attached. It's close to allmodconfig, with a few kconfig
> > options changed to =y instead of =m and some others (like debug and self-tests)
> > disabled.
>
> OK. I'll try this config on my system and see if I can reproduce your
> problem. Likely not before tomorrow though, as I have more urgent
> issues to deal with right now.

Ack. However, I can't reproduce the problem today, so maybe you should
go slowly on it. Or maybe the problem is actually somewhere else
(like you hinted at).

I'll test it some more.

| Actually, the following command on 2.6.37-rc1 should work and answer my
| question:
|
| $ grep . /sys/bus/i2c/devices/i2c-*/name

/sys/bus/i2c/devices/i2c-0/name:gmbus disabled
/sys/bus/i2c/devices/i2c-10/name:GPIOE
/sys/bus/i2c/devices/i2c-11/name:gmbus reserveddpd
/sys/bus/i2c/devices/i2c-12/name:GPIOF
/sys/bus/i2c/devices/i2c-13/name:gmbus (null)
/sys/bus/i2c/devices/i2c-14/name:GPIO?
/sys/bus/i2c/devices/i2c-15/name:SMBus I801 adapter at e8a0
/sys/bus/i2c/devices/i2c-1/name:gmbus ssc
/sys/bus/i2c/devices/i2c-2/name:GPIOB
/sys/bus/i2c/devices/i2c-3/name:gmbus vga
/sys/bus/i2c/devices/i2c-4/name:GPIOA
/sys/bus/i2c/devices/i2c-5/name:gmbus panel
/sys/bus/i2c/devices/i2c-6/name:GPIOC
/sys/bus/i2c/devices/i2c-7/name:gmbus dpc
/sys/bus/i2c/devices/i2c-8/name:GPIOD
/sys/bus/i2c/devices/i2c-9/name:gmbus dpb


And the i2c registration sanity check patch didn't catch any problems.

---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/