Patchwork via82cxxx: fix typo for VT6415 PCIE PATA IDE Host Controller support.

login
register
mail settings
Submitter Yann Dirson
Date July 18, 2010, 11:13 p.m.
Message ID <1279494644-3762-1-git-send-email-ydirson@altern.org>
Download mbox | patch
Permalink /patch/59174/
State Accepted
Delegated to: David Miller
Headers show

Comments

David Miller - July 18, 2010, 11:11 p.m.
From: Yann Dirson <ydirson@altern.org>
Date: Mon, 19 Jul 2010 01:13:24 +0200

> Without this fix, init of the via82cxxx driver causes a oops with a
> stack resembling the one below, and the boot blocks between init of
> USB devices and launch of init (was easy to bisect by booting with
> init=/bin/sh).
...
> The typo was introduced in a354ae8747d0687093ce244e76b15b6174d2f098,
> and affects 2.6.33-rc4 and later.
> 
> Signed-off-by: Yann Dirson <ydirson@altern.org>

Applied, thanks!
--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Yann Dirson - July 18, 2010, 11:13 p.m.
Without this fix, init of the via82cxxx driver causes a oops with a
stack resembling the one below, and the boot blocks between init of
USB devices and launch of init (was easy to bisect by booting with
init=/bin/sh).

 Pid: 279, comm: work_for_cpu Not tainted 2.6.34.1-00003-ga42ea77 #2
 Call Trace:
  [<ffffffff81045691>] ? warn_slowpath_common+0x76/0x8c
  [<ffffffff810456f9>] ? warn_slowpath_fmt+0x40/0x45
  [<ffffffff812eb5a1>] ? printk+0x40/0x47
  [<ffffffff8108e1fd>] ? enable_irq+0x3e/0x64
  [<ffffffffa0003900>] ? ide_probe_port+0x55c/0x589 [ide_core]
  [<ffffffffa0003f22>] ? ide_host_register+0x273/0x628 [ide_core]
  [<ffffffffa00083e3>] ? ide_pci_init_two+0x4da/0x5c5 [ide_core]
  [<ffffffff8106117e>] ? up+0xe/0x36
  [<ffffffff81045d7e>] ? release_console_sem+0x17e/0x1ae
  [<ffffffff812d945b>] ? klist_iter_exit+0x14/0x1e
  [<ffffffff8120ed23>] ? bus_find_device+0x75/0x83
  [<ffffffffa0022832>] ? via_init_one+0x269/0x28a [via82cxxx]
  [<ffffffffa00223a2>] ? init_chipset_via82cxxx+0x0/0x1ea [via82cxxx]
  [<ffffffff81059f25>] ? do_work_for_cpu+0x0/0x1b
  [<ffffffff81190c65>] ? local_pci_probe+0x12/0x16
  [<ffffffff81059f30>] ? do_work_for_cpu+0xb/0x1b
  [<ffffffff8105d0dd>] ? kthread+0x75/0x7d
  [<ffffffff810097e4>] ? kernel_thread_helper+0x4/0x10
  [<ffffffff8105d068>] ? kthread+0x0/0x7d
  [<ffffffff810097e0>] ? kernel_thread_helper+0x0/0x10
 ---[ end trace 89c8cb70379b5bda ]---

The typo was introduced in a354ae8747d0687093ce244e76b15b6174d2f098,
and affects 2.6.33-rc4 and later.

Signed-off-by: Yann Dirson <ydirson@altern.org>
---
 drivers/ide/via82cxxx.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
Yann Dirson - July 18, 2010, 11:28 p.m.
On Mon, Jul 19, 2010 at 01:13:24AM +0200, Yann Dirson wrote:
> Without this fix, init of the via82cxxx driver causes a oops with a
> stack resembling the one below, and the boot blocks between init of
> USB devices and launch of init (was easy to bisect by booting with
> init=/bin/sh).

Looks like I was a bit too quick - this backtrace is not one of those
I got without this fix (they never made it to the disk), but happens
with the fix applied.

> 
>  Pid: 279, comm: work_for_cpu Not tainted 2.6.34.1-00003-ga42ea77 #2
>  Call Trace:
>   [<ffffffff81045691>] ? warn_slowpath_common+0x76/0x8c
>   [<ffffffff810456f9>] ? warn_slowpath_fmt+0x40/0x45
>   [<ffffffff812eb5a1>] ? printk+0x40/0x47
>   [<ffffffff8108e1fd>] ? enable_irq+0x3e/0x64
>   [<ffffffffa0003900>] ? ide_probe_port+0x55c/0x589 [ide_core]
>   [<ffffffffa0003f22>] ? ide_host_register+0x273/0x628 [ide_core]
>   [<ffffffffa00083e3>] ? ide_pci_init_two+0x4da/0x5c5 [ide_core]
>   [<ffffffff8106117e>] ? up+0xe/0x36
>   [<ffffffff81045d7e>] ? release_console_sem+0x17e/0x1ae
>   [<ffffffff812d945b>] ? klist_iter_exit+0x14/0x1e
>   [<ffffffff8120ed23>] ? bus_find_device+0x75/0x83
>   [<ffffffffa0022832>] ? via_init_one+0x269/0x28a [via82cxxx]
>   [<ffffffffa00223a2>] ? init_chipset_via82cxxx+0x0/0x1ea [via82cxxx]
>   [<ffffffff81059f25>] ? do_work_for_cpu+0x0/0x1b
>   [<ffffffff81190c65>] ? local_pci_probe+0x12/0x16
>   [<ffffffff81059f30>] ? do_work_for_cpu+0xb/0x1b
>   [<ffffffff8105d0dd>] ? kthread+0x75/0x7d
>   [<ffffffff810097e4>] ? kernel_thread_helper+0x4/0x10
>   [<ffffffff8105d068>] ? kthread+0x0/0x7d
>   [<ffffffff810097e0>] ? kernel_thread_helper+0x0/0x10
>  ---[ end trace 89c8cb70379b5bda ]---
> 
> The typo was introduced in a354ae8747d0687093ce244e76b15b6174d2f098,
> and affects 2.6.33-rc4 and later.
> 
> Signed-off-by: Yann Dirson <ydirson@altern.org>
> ---
>  drivers/ide/via82cxxx.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/ide/via82cxxx.c b/drivers/ide/via82cxxx.c
> index 101f400..d2a0997 100644
> --- a/drivers/ide/via82cxxx.c
> +++ b/drivers/ide/via82cxxx.c
> @@ -79,7 +79,7 @@ static struct via_isa_bridge {
>  	{ "vt8261",	PCI_DEVICE_ID_VIA_8261,     0x00, 0x2f, ATA_UDMA6, VIA_BAD_AST },
>  	{ "vt8237s",	PCI_DEVICE_ID_VIA_8237S,    0x00, 0x2f, ATA_UDMA6, VIA_BAD_AST },
>  	{ "vt6410",	PCI_DEVICE_ID_VIA_6410,     0x00, 0x2f, ATA_UDMA6, VIA_BAD_AST },
> -	{ "vt6415",	PCI_DEVICE_ID_VIA_6410,     0x00, 0xff, ATA_UDMA6, VIA_BAD_AST },
> +	{ "vt6415",	PCI_DEVICE_ID_VIA_6415,     0x00, 0xff, ATA_UDMA6, VIA_BAD_AST },
>  	{ "vt8251",	PCI_DEVICE_ID_VIA_8251,     0x00, 0x2f, ATA_UDMA6, VIA_BAD_AST },
>  	{ "vt8237",	PCI_DEVICE_ID_VIA_8237,     0x00, 0x2f, ATA_UDMA6, VIA_BAD_AST },
>  	{ "vt8237a",	PCI_DEVICE_ID_VIA_8237A,    0x00, 0x2f, ATA_UDMA6, VIA_BAD_AST },
> -- 
> 1.7.1
--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
David Miller - July 18, 2010, 11:56 p.m.
From: Yann Dirson <ydirson@free.fr>
Date: Mon, 19 Jul 2010 01:28:38 +0200

> On Mon, Jul 19, 2010 at 01:13:24AM +0200, Yann Dirson wrote:
>> Without this fix, init of the via82cxxx driver causes a oops with a
>> stack resembling the one below, and the boot blocks between init of
>> USB devices and launch of init (was easy to bisect by booting with
>> init=/bin/sh).
> 
> Looks like I was a bit too quick - this backtrace is not one of those
> I got without this fix (they never made it to the disk), but happens
> with the fix applied.

The fix is still correct, so I'll leave it in the tree.
--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Yann Dirson - July 19, 2010, 10:07 p.m.
On Sun, Jul 18, 2010 at 04:56:20PM -0700, David Miller wrote:
> From: Yann Dirson <ydirson@free.fr>
> Date: Mon, 19 Jul 2010 01:28:38 +0200
> 
> > On Mon, Jul 19, 2010 at 01:13:24AM +0200, Yann Dirson wrote:
> >> Without this fix, init of the via82cxxx driver causes a oops with a
> >> stack resembling the one below, and the boot blocks between init of
> >> USB devices and launch of init (was easy to bisect by booting with
> >> init=/bin/sh).
> > 
> > Looks like I was a bit too quick - this backtrace is not one of those
> > I got without this fix (they never made it to the disk), but happens
> > with the fix applied.
> 
> The fix is still correct, so I'll leave it in the tree.

OK, so let's hunt the remaining problem.

Indeed I had not taken too much care of the context in the logs - full
excerpt below, unbalanced enable for an IRQ which is shared with other
things (ehci_hcd:usb1, ehci_hcd:usb3, ehci_hcd:usb5, ide0, ide1,
firewire_ohci).  Not sure if that matters, but I recall the oops I got
before correcting the ID typo involved ohci.

OTOH, we see here that the system believes in existence of "ide1",
although the vt6415 appears to be single-channel
(http://www.via.com.tw/en/products/peripherals/pci_pcie/vt6415/)

I'll be adding a couple of printks and retest with frame-pointers, but
in case someone already knows what's going on... :)

 WARNING: at kernel/irq/manage.c:274 enable_irq+0x3e/0x64()
 Hardware name: System Product Name
 Unbalanced enable for IRQ 17
 Modules linked in: usbhid hid sd_mod crc_t10dif ohci_hcd thermal r8169 mii firewire_ohci(+) ahci firewire_core crc_itu_t ehci_hcd libata scsi_mod thermal_sys usbcore nls_base via82cxxx(+) ide_core
 Pid: 279, comm: work_for_cpu Not tainted 2.6.34.1-00003-ga42ea77 #2
 Call Trace:
  [<ffffffff81045691>] ? warn_slowpath_common+0x76/0x8c
  [<ffffffff810456f9>] ? warn_slowpath_fmt+0x40/0x45
  [<ffffffff812eb5a1>] ? printk+0x40/0x47
  [<ffffffff8108e1fd>] ? enable_irq+0x3e/0x64
  [<ffffffffa0003900>] ? ide_probe_port+0x55c/0x589 [ide_core]
  [<ffffffffa0003f22>] ? ide_host_register+0x273/0x628 [ide_core]
  [<ffffffffa00083e3>] ? ide_pci_init_two+0x4da/0x5c5 [ide_core]
  [<ffffffff8106117e>] ? up+0xe/0x36
  [<ffffffff81045d7e>] ? release_console_sem+0x17e/0x1ae
  [<ffffffff812d945b>] ? klist_iter_exit+0x14/0x1e
  [<ffffffff8120ed23>] ? bus_find_device+0x75/0x83
  [<ffffffffa0022832>] ? via_init_one+0x269/0x28a [via82cxxx]
  [<ffffffffa00223a2>] ? init_chipset_via82cxxx+0x0/0x1ea [via82cxxx]
  [<ffffffff81059f25>] ? do_work_for_cpu+0x0/0x1b
  [<ffffffff81190c65>] ? local_pci_probe+0x12/0x16
  [<ffffffff81059f30>] ? do_work_for_cpu+0xb/0x1b
  [<ffffffff8105d0dd>] ? kthread+0x75/0x7d
  [<ffffffff810097e4>] ? kernel_thread_helper+0x4/0x10
  [<ffffffff8105d068>] ? kthread+0x0/0x7d
  [<ffffffff810097e0>] ? kernel_thread_helper+0x0/0x10


--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
David Miller - Sept. 7, 2010, 5:02 a.m.
From: Yann Dirson <ydirson@free.fr>
Date: Tue, 20 Jul 2010 00:07:37 +0200

> OTOH, we see here that the system believes in existence of "ide1",
> although the vt6415 appears to be single-channel
> (http://www.via.com.tw/en/products/peripherals/pci_pcie/vt6415/)

I think this is unlikely as the ATA layer pata_via.c driver also
does not mark this device as single-channel.

Have you tried just booting up with the ATA driver enabled instead
of the IDE layer one?  Please do that as it might help narrow this
down.
--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/drivers/ide/via82cxxx.c b/drivers/ide/via82cxxx.c
index 101f400..d2a0997 100644
--- a/drivers/ide/via82cxxx.c
+++ b/drivers/ide/via82cxxx.c
@@ -79,7 +79,7 @@  static struct via_isa_bridge {
 	{ "vt8261",	PCI_DEVICE_ID_VIA_8261,     0x00, 0x2f, ATA_UDMA6, VIA_BAD_AST },
 	{ "vt8237s",	PCI_DEVICE_ID_VIA_8237S,    0x00, 0x2f, ATA_UDMA6, VIA_BAD_AST },
 	{ "vt6410",	PCI_DEVICE_ID_VIA_6410,     0x00, 0x2f, ATA_UDMA6, VIA_BAD_AST },
-	{ "vt6415",	PCI_DEVICE_ID_VIA_6410,     0x00, 0xff, ATA_UDMA6, VIA_BAD_AST },
+	{ "vt6415",	PCI_DEVICE_ID_VIA_6415,     0x00, 0xff, ATA_UDMA6, VIA_BAD_AST },
 	{ "vt8251",	PCI_DEVICE_ID_VIA_8251,     0x00, 0x2f, ATA_UDMA6, VIA_BAD_AST },
 	{ "vt8237",	PCI_DEVICE_ID_VIA_8237,     0x00, 0x2f, ATA_UDMA6, VIA_BAD_AST },
 	{ "vt8237a",	PCI_DEVICE_ID_VIA_8237A,    0x00, 0x2f, ATA_UDMA6, VIA_BAD_AST },