Re: 2.6.23-rc1-mm1 - seems OK on Dell Latitude D820, except for tpm_tis

Andrew Morton
2007-07-26T03:37:59Z

On Wed, 25 Jul 2007 18:03:14 -0400 Valdis.Kletnieks@vt.edu wrote:

> On Wed, 25 Jul 2007 04:03:04 PDT, Andrew Morton said:
>
> > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.23-rc1/2.6.23-rc1-mm1/
>
> It built and booted on the first try for my Dell Latitude D820 laptop, Core2
> T7200 x86_64 kernel. Now at about 5 hours of uptime. I guess I got lucky and my
> stock .config doesn't trip over any of the issues others are hitting. I did
> hit *one* problem:
>
> Under 2.6.22-rc6-mm1, 'modprobe tpm_tis' did this:
>
> [ 10.028000] tpm_tis 00:0f: 1.2 TPM (device-id 0x1001, rev-id 2)
> [ 10.088000] tpm_tis 00:0f: Unable to request irq: 8 for probe
>
> and the modprobe returned immediately. Under 23-rc1-mm1, the modprobe
> takes a *long* time:
>
> [ 23.787331] tpm_tis 00:0f: 1.2 TPM (device-id 0x1001, rev-id 2)
> [ 23.787353] tpm0 (IRQ 3) handled a spurious interrupt
> [ 143.803891] tpm_tis 00:0f: tpm_transmit: tpm_send: error -62
> [ 143.803920] tpm0 (IRQ 3) handled a spurious interrupt
> [ 263.736163] tpm_tis 00:0f: tpm_transmit: tpm_send: error -62
> [ 383.668381] tpm_tis 00:0f: tpm_transmit: tpm_send: error -62
> [ 385.667261] tpm_tis 00:0f: tpm_transmit: tpm_send: error -62
>
> then it finally returns. I snuck in a few 'echo t > /proc/sysrq_trigger',
> and it's always waiting here:
>
> [ 193.154317] modprobe S 0000001eeae8252d 5488 1446 1
> [ 193.154321] ffff8100043d7a98 0000000000000082 0000000000000000 ffffffff80795480
> [ 193.154325] ffff8100043d7a48 ffff810003538000 ffffffff806813e0 ffff810003538290
> [ 193.154329] 0000000004173800 0000000000000202 00000000000000ff ffffffff8023ba74
> [ 193.154332] Call Trace:
> [ 193.154336] [<ffffffff8023ba74>] __mod_timer+0xc4/0xd6
> [ 193.154340] [<ffffffff805273cc>] schedule_timeout+0x8d/0xb4
> [ 193.154344] [<ffffffff8023b7be>] process_timeout+0x0/0xb
> [ 193.154347] [<ffffffff805273c7>] schedule_timeout+0x88/0xb4
> [ 193.154353] [<ffffffff880b328a>] :tpm_tis:wait_for_stat+0xb0/0x11a
> [ 193.154356] [<ffffffff802460ef>] autoremove_wake_function+0x0/0x38
> [ 193.154360] [<ffffffff880b31b0>] :tpm_tis:get_burstcount+0x63/0x8d
> [ 193.154365] [<ffffffff880b367e>] :tpm_tis:tpm_tis_send+0x191/0x1d3
> [ 193.154370] [<ffffffff803ba945>] tpm_transmit+0x98/0x1f1
> [ 193.154374] [<ffffffff803baaf2>] transmit_cmd+0x14/0x2e
> [ 193.154377] [<ffffffff803badd8>] tpm_get_timeouts+0xe9/0x13c
> [ 193.154382] [<ffffffff880b3ac5>] :tpm_tis:tpm_tis_init+0x405/0x44c
> [ 193.154387] [<ffffffff880b3b3a>] :tpm_tis:tpm_tis_pnp_init+0x2e/0x30
> [ 193.154391] [<ffffffff8039d8fc>] pnp_device_probe+0x7b/0xa3
> [ 193.154394] [<ffffffff803c691e>] driver_probe_device+0xfa/0x17e
> [ 193.154397] [<ffffffff803c6a4d>] __driver_attach+0x0/0x94
> [ 193.154400] [<ffffffff803c6aa8>] __driver_attach+0x5b/0x94
> [ 193.154403] [<ffffffff803c5cd8>] bus_for_each_dev+0x49/0x7a
> [ 193.154408] [<ffffffff803c6736>] driver_attach+0x1c/0x1e
> [ 193.154410] [<ffffffff803c6046>] bus_add_driver+0x86/0x1a9
> [ 193.154414] [<ffffffff803c6cb3>] driver_register+0x72/0x76
> [ 193.154417] [<ffffffff8039d692>] pnp_register_driver+0x1c/0x1e
> [ 193.154421] [<ffffffff880b8081>] :tpm_tis:init_tis+0x81/0x89
> [ 193.154425] [<ffffffff80251d94>] sys_init_module+0x14db/0x1657
> [ 193.154433] [<ffffffff8020bece>] system_call+0x7e/0x83
>
> Here's my /proc/interrupts:
>
> CPU0 CPU1
> 0: 15121156 0 IO-APIC-edge timer
> 1: 3022 0 IO-APIC-edge i8042
> 3: 0 0 IO-APIC-edge tpm0
> 8: 0 0 IO-APIC-edge rtc
> 9: 2 0 IO-APIC-fasteoi acpi
> 12: 85 0 IO-APIC-edge i8042
> 14: 46529 0 IO-APIC-edge libata
> 15: 94 0 IO-APIC-edge libata
> 16: 1301032 0 IO-APIC-fasteoi nvidia
> 17: 148 0 IO-APIC-fasteoi iwl3945
> 19: 10 0 IO-APIC-fasteoi ohci1394, yenta
> 20: 9548 0 IO-APIC-fasteoi ehci_hcd:usb1, uhci_hcd:usb2
> 21: 10544 0 IO-APIC-fasteoi uhci_hcd:usb3, HDA Intel
> 22: 0 0 IO-APIC-fasteoi uhci_hcd:usb4
> 23: 0 0 IO-APIC-fasteoi uhci_hcd:usb5
> 506: 111 68979 PCI-MSI-edge eth0
> NMI: 0 0
> LOC: 15121050 15120952
> ERR: 0
>
> (tpm0 on 3 is new with 23-rc1-mm1. I have *no* idea why 22-rc6-mm1 tried to
> put it on irq 8. Yes, kernel is currently tainted with nvidia module, but
> at the time of the traceback listed above, I had not yet even gotten the module
> built, so the kernel was untainted at that point).
>

I can't imagine what we did to break tpm_tis, sorry. Nothing has changed
in there for ages.

Perhaps something broke at the bus level. It would be useful to add

--- a/drivers/char/tpm/tpm_tis.c~a
+++ a/drivers/char/tpm/tpm_tis.c
@@ -595,9 +595,11 @@ static int __devinit tpm_tis_pnp_init(st
const struct pnp_device_id *pnp_id)
{
resource_size_t start, len;
+
start = pnp_mem_start(pnp_dev, 0);
len = pnp_mem_len(pnp_dev, 0);
-
+ printk("%s: start=%llu, len=%llu\n",
+ (unsigned long long)start, (unsigned long long)end);
return tpm_tis_init(&pnp_dev->dev, start, len);
}

_

to both a good and a bad kernel, see what it says.