2010-11-05 00:10:10

by Randy Dunlap

[permalink] [raw]
Subject: hwmon/adt7470 crash on module load (2.6.37-rc1)



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
[ 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 firmware_clas!
s 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
[ 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>

---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***


2010-11-05 08:42:37

by Jean Delvare

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

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?

Are you using the adt7470 driver on this system normally, or did you
build it in just for random testing purpose?

> [ 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 firmware_clas!
> s 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?

--
Jean Delvare

2010-11-05 14:47:22

by Randy Dunlap

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

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?

> 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 firmware_cl
!
> as!
>> s 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.



--
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***


Attachments:
config-2637-rc1 (116.13 kB)

2010-11-05 15:17:56

by Jean Delvare

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

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?

> > 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 firmware_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.

--
Jean Delvare

2010-11-05 16:09:17

by Jean Delvare

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

On Fri, 5 Nov 2010 16:17:41 +0100, Jean Delvare wrote:
> 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.

Actually, the following command on 2.6.37-rc1 should work and answer my
question:

$ grep . /sys/bus/i2c/devices/i2c-*/name

--
Jean Delvare

2010-11-05 16:23:24

by Randy Dunlap

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

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 ***

2010-11-05 16:58:47

by Guenter Roeck

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

On Fri, 2010-11-05 at 12:21 -0400, Randy Dunlap wrote:
> 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 firm!
wa!
> 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?

The above two lines look a bit fishy to me.

Wonder if 7b5337ddbaf7e4b71ef6fd6307c6f9ef84f636e9 or one of the other
recent changes in drivers/gpu/drm/i915/intel_i2c.c caused some havoc.

Guenter

> /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 ***
>
> _______________________________________________
> lm-sensors mailing list
> [email protected]
> http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

2010-11-05 17:51:46

by Jean Delvare

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

On Fri, 5 Nov 2010 09:58:01 -0700, Guenter Roeck wrote:
> On Fri, 2010-11-05 at 12:21 -0400, Randy Dunlap wrote:
> > /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?
>
> The above two lines look a bit fishy to me.

I had the exact same thought. And "reserveddpd" looks odd as well.

> Wonder if 7b5337ddbaf7e4b71ef6fd6307c6f9ef84f636e9 or one of the other
> recent changes in drivers/gpu/drm/i915/intel_i2c.c caused some havoc.

Thanks for the pointer. But if Randy is running 2.6.37-rc1, he doesn't
have this commit yet. Upgrading to 2.6.37-rc1-git3 might be a good
idea. Especially as rc1 also lacks
cb8ea7527b813dd6e19fb07328f7867a5f0a8d0a, if I understand what git
name-rev is telling me. Apparently the "GMBUS" code was reverted
(whatever it is) because it caused trouble. Maybe this is the trouble
Randy just met.

Looking at the code, I indeed see a couple things which need fixing.
Randy, please test this patch (on top of rc1-git3) Hopefully it will
fix your adapter names, and possibly solve your crash (but if you
couldn't reproduce it, you won't be able to confirm this.)

From: Jean Delvare <[email protected]>
Subject: drm/i915: Fix I2C adapter registration

Fix many small bugs in I2C adapter registration:
* Properly reject unsupported GPIO pin.
* Fix improper use of I2C_NAME_SIZE (which is the size of
i2c_client.name, not i2c_adapter.name.)
* Prefix adapter names with "i915" so that the user knows what the
I2C channel is connected to.
* Fix swapped characters in the string used to name the GPIO-based
adapter.
* Add missing comma in gmbus name table.

Signed-off-by: Jean Delvare <[email protected]>
---
drivers/gpu/drm/i915/intel_i2c.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)

--- linux-2.6.37-rc1.orig/drivers/gpu/drm/i915/intel_i2c.c 2010-11-02 09:19:35.000000000 +0100
+++ linux-2.6.37-rc1/drivers/gpu/drm/i915/intel_i2c.c 2010-11-05 18:38:15.000000000 +0100
@@ -160,7 +160,7 @@ intel_gpio_create(struct drm_i915_privat
};
struct intel_gpio *gpio;

- if (pin < 1 || pin > 7)
+ if (pin >= ARRAY_SIZE(map_pin_to_reg) || !map_pin_to_reg[pin])
return NULL;

gpio = kzalloc(sizeof(struct intel_gpio), GFP_KERNEL);
@@ -172,7 +172,8 @@ intel_gpio_create(struct drm_i915_privat
gpio->reg += PCH_GPIOA - GPIOA;
gpio->dev_priv = dev_priv;

- snprintf(gpio->adapter.name, I2C_NAME_SIZE, "GPIO%c", "?BACDEF?"[pin]);
+ snprintf(gpio->adapter.name, sizeof(gpio->adapter.name), "i915 GPIO%c",
+ "?BACDE?F"[pin]);
gpio->adapter.owner = THIS_MODULE;
gpio->adapter.algo_data = &gpio->algo;
gpio->adapter.dev.parent = &dev_priv->dev->pdev->dev;
@@ -349,7 +350,7 @@ int intel_setup_gmbus(struct drm_device
"panel",
"dpc",
"dpb",
- "reserved"
+ "reserved",
"dpd",
};
struct drm_i915_private *dev_priv = dev->dev_private;
@@ -366,8 +367,8 @@ int intel_setup_gmbus(struct drm_device
bus->adapter.owner = THIS_MODULE;
bus->adapter.class = I2C_CLASS_DDC;
snprintf(bus->adapter.name,
- I2C_NAME_SIZE,
- "gmbus %s",
+ sizeof(bus->adapter.name),
+ "i915 gmbus %s",
names[i]);

bus->adapter.dev.parent = &dev->pdev->dev;

--
Jean Delvare