Re: Hang during boot, bisected to commit 96d60303fd

From: Robert Hancock
Date: Mon Jun 07 2010 - 00:35:01 EST


On Fri, Jun 4, 2010 at 8:01 PM, Marc Dionne <marc.c.dionne@xxxxxxxxx> wrote:
> On Fri, Jun 4, 2010 at 9:37 PM, Robert Hancock <hancockrwd@xxxxxxxxx> wrote:
>> Is that the right dmesg? I didn't see where the extra output was. It
>> might be useful to put a WARN_ON(1); inside ahci_start_engine to see
>> the two code paths where it's being called..
>
> The first series of calls to ahci_start_engine have a stack trace that
> looks like this:
>
> Call Trace:
>  [<ffffffff81077002>] warn_slowpath_common+0x85/0x9d
>  [<ffffffff81077034>] warn_slowpath_null+0x1a/0x1c
>  [<ffffffff813572dd>] ahci_start_engine+0x92/0xa4
>  [<ffffffff8135736a>] ahci_start_port+0x7b/0x16c
>  [<ffffffff81357792>] ahci_port_resume+0x52/0x73
>  [<ffffffff81357901>] ahci_port_start+0x14e/0x164
>  [<ffffffff81341dc5>] ata_host_start+0xdf/0x184
>  [<ffffffff81357b35>] ? ahci_interrupt+0x0/0x5f3
>  [<ffffffff8134266f>] ata_host_activate+0x2a/0xdc
>  [<ffffffff81355aab>] ahci_init_one+0x9dd/0x9fe
>  [<ffffffff81170a9c>] ? __sysfs_add_one+0x38/0x9a
>  [<ffffffff812519bd>] ? kobject_get+0x1a/0x22
>  [<ffffffff81269891>] local_pci_probe+0x17/0x1b
>  [<ffffffff8126a63f>] pci_device_probe+0xca/0xfa
>  [<ffffffff81308fbe>] ? driver_sysfs_add+0x4c/0x71
>  [<ffffffff81309110>] driver_probe_device+0xac/0x13b
>  [<ffffffff813091fc>] __driver_attach+0x5d/0x81
>  [<ffffffff8130919f>] ? __driver_attach+0x0/0x81
>  [<ffffffff81308714>] bus_for_each_dev+0x53/0x88
>  [<ffffffff81308f70>] driver_attach+0x1e/0x20
>  [<ffffffff81308bc3>] bus_add_driver+0xb6/0x203
>  [<ffffffff813094ed>] driver_register+0x9e/0x10f
>  [<ffffffff8126a869>] __pci_register_driver+0x58/0xc8
>  [<ffffffff81b6582c>] ? ahci_init+0x0/0x1b
>  [<ffffffff81b65845>] ahci_init+0x19/0x1b
>  [<ffffffff81002069>] do_one_initcall+0x5e/0x159
>  [<ffffffff81b33713>] kernel_init+0x183/0x211
>  [<ffffffff810319a4>] kernel_thread_helper+0x4/0x10
>  [<ffffffff81b33590>] ? kernel_init+0x0/0x211
>  [<ffffffff810319a0>] ? kernel_thread_helper+0x0/0x10
>
> The later calls:
>
> Call Trace:
>  [<ffffffff81077002>] warn_slowpath_common+0x85/0x9d
>  [<ffffffff81077034>] warn_slowpath_null+0x1a/0x1c
>  [<ffffffff813572dd>] ahci_start_engine+0x92/0xa4
>  [<ffffffff81357a0d>] ahci_hardreset+0xc6/0x124
>  [<ffffffff81357947>] ? ahci_hardreset+0x0/0x124
>  [<ffffffff81342e08>] ? ata_std_prereset+0x0/0xb7
>  [<ffffffff8134aeca>] ata_do_reset+0x59/0x62
>  [<ffffffff8134c3fa>] ata_eh_reset+0x512/0xc99
>  [<ffffffff81356baa>] ? ahci_postreset+0x0/0x5d
>  [<ffffffff81357947>] ? ahci_hardreset+0x0/0x124
>  [<ffffffff81358498>] ? ahci_softreset+0x0/0x44
>  [<ffffffff81357947>] ? ahci_hardreset+0x0/0x124
>  [<ffffffff8134d9a1>] ? ata_eh_schedule_probe+0xc5/0xf3
>  [<ffffffff8134dca7>] ata_eh_recover+0x2d8/0xd6d
>  [<ffffffff81356baa>] ? ahci_postreset+0x0/0x5d
>  [<ffffffff81357947>] ? ahci_hardreset+0x0/0x124
>  [<ffffffff81358498>] ? ahci_softreset+0x0/0x44
>  [<ffffffff81342e08>] ? ata_std_prereset+0x0/0xb7
>  [<ffffffff81352ec9>] sata_pmp_error_handler+0xd3/0xa0a
>  [<ffffffff81067f73>] ? dequeue_entity+0x4a/0x183
>  [<ffffffff8108c1ae>] ? __cancel_work_timer+0xad/0x193
>  [<ffffffff8108395e>] ? lock_timer_base+0x2c/0x52
>  [<ffffffff810839ff>] ? try_to_del_timer_sync+0x7b/0x89
>  [<ffffffff81357943>] ahci_error_handler+0x2c/0x30
>  [<ffffffff8134f2c7>] ata_scsi_error+0x33d/0x697
>  [<ffffffff8131bc10>] scsi_error_handler+0xc2/0x3c5
>  [<ffffffff8131bb4e>] ? scsi_error_handler+0x0/0x3c5
>  [<ffffffff8108f451>] kthread+0x7f/0x87
>  [<ffffffff810319a4>] kernel_thread_helper+0x4/0x10
>  [<ffffffff8108f3d2>] ? kthread+0x0/0x87
>  [<ffffffff810319a0>] ? kernel_thread_helper+0x0/0x10

I'm thinking that the hardreset and device classification makes more
sense as a place to do this anyways, since that's the point where we
really know if there's a device connected or not.. Tejun, any
thoughts?
--
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/