linux-ide.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* 2.4.23 IDE hang on boot with two single-channel controllers
@ 2004-01-26 14:44 Jeremy Jackson
  0 siblings, 0 replies; 6+ messages in thread
From: Jeremy Jackson @ 2004-01-26 14:44 UTC (permalink / raw)
  To: linux-ide

Hi All,

Already posted this to linux-kernel.

kdb shows proc_ide_create() stuck in a loop when booting on a Compaq 
Armada 7730MT while attached to the docking station.

This is a unique IDE hardware setup.  Channel ide0's controller is in 
the laptop, while ide1 is a separate controller (pci device) in the 
docking station and is not always present.

This seems to be triggering a bug in ide-proc.c:

void proc_ide_create(void)
{
#ifdef CONFIG_BLK_DEV_IDEPCI
         ide_pci_host_proc_t *p = ide_pci_host_proc_list;
#endif /* CONFIG_BLK_DEV_IDEPCI */

         proc_ide_root = proc_mkdir("ide", 0);
         if (!proc_ide_root) return;

         create_proc_ide_interfaces();

         create_proc_read_entry("drivers", 0, proc_ide_root,
                                 proc_ide_read_drivers, NULL);

#ifdef CONFIG_BLK_DEV_IDEPCI
         while (p != NULL)  <------------------- INFINITE LOOP HERE
         {
                 if (p->name != NULL && p->set == 1 && p->get_info != NULL)
                 {
                         p->parent = proc_ide_root;
                         create_proc_info_entry(p->name, 0, p->parent, 
p->get_info);
                         p->set = 2;
                 }
                 p = p->next;
         }
#endif /* CONFIG_BLK_DEV_IDEPCI */
}

I'm not sure if the problem is in the loop or bad data being setup 
before it starts.

Assistance fixing it would be appreciated.

Regards,

Jeremy Jackson


^ permalink raw reply	[flat|nested] 6+ messages in thread
* Re: 2.4.23 IDE hang on boot with two single-channel controllers
@ 2004-01-26 15:56 Jeremy Jackson
  2004-02-17 23:34 ` Bartlomiej Zolnierkiewicz
  0 siblings, 1 reply; 6+ messages in thread
From: Jeremy Jackson @ 2004-01-26 15:56 UTC (permalink / raw)
  To: Torben Mathiasen, linux-kernel, linux-ide

[-- Attachment #1: Type: text/plain, Size: 921 bytes --]

Hi,

(watch crossposting when replying all)

I'm hoping to reach the maintainer of the Linux IDE driver for the 
Compaq TriFlex controller.  I have a problem with this driver when used 
with a Compaq Armada 7730MT while docked in the base station.

The driver appears to only support one triflex controller, due to a 
missing check (that other chipset drivers have) that should prevent it 
from registering a /proc interface more than once.  The result is that 
it hangs on boot in proc_ide_create() in an infinite loop.

triflex.c:

static unsigned int __init init_chipset_triflex(struct pci_dev *dev,
                 const char *name)
{
#ifdef CONFIG_PROC_FS
         ide_pci_register_host_proc(&triflex_proc);
#endif
         return 0;
}

It also appears that triflex_get_info() doesn't support more that one 
controller.

I won't go into more detail until I can establish who might care :)

Regards,

Jeremy Jackson

[-- Attachment #2: 2.4.23 IDE hang on boot with two single-channel controllers --]
[-- Type: message/rfc822, Size: 3291 bytes --]

From: Jeremy Jackson <jerj@coplanar.net>
To: linux-ide@vger.kernel.org
Subject: 2.4.23 IDE hang on boot with two single-channel controllers
Date: Mon, 26 Jan 2004 09:44:49 -0500
Message-ID: <401527E1.6040108@coplanar.net>

Hi All,

Already posted this to linux-kernel.

kdb shows proc_ide_create() stuck in a loop when booting on a Compaq 
Armada 7730MT while attached to the docking station.

This is a unique IDE hardware setup.  Channel ide0's controller is in 
the laptop, while ide1 is a separate controller (pci device) in the 
docking station and is not always present.

This seems to be triggering a bug in ide-proc.c:

void proc_ide_create(void)
{
#ifdef CONFIG_BLK_DEV_IDEPCI
         ide_pci_host_proc_t *p = ide_pci_host_proc_list;
#endif /* CONFIG_BLK_DEV_IDEPCI */

         proc_ide_root = proc_mkdir("ide", 0);
         if (!proc_ide_root) return;

         create_proc_ide_interfaces();

         create_proc_read_entry("drivers", 0, proc_ide_root,
                                 proc_ide_read_drivers, NULL);

#ifdef CONFIG_BLK_DEV_IDEPCI
         while (p != NULL)  <------------------- INFINITE LOOP HERE
         {
                 if (p->name != NULL && p->set == 1 && p->get_info != NULL)
                 {
                         p->parent = proc_ide_root;
                         create_proc_info_entry(p->name, 0, p->parent, 
p->get_info);
                         p->set = 2;
                 }
                 p = p->next;
         }
#endif /* CONFIG_BLK_DEV_IDEPCI */
}

I'm not sure if the problem is in the loop or bad data being setup 
before it starts.

Assistance fixing it would be appreciated.

Regards,

Jeremy Jackson

-
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

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2004-07-31 15:37 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-01-26 14:44 2.4.23 IDE hang on boot with two single-channel controllers Jeremy Jackson
  -- strict thread matches above, loose matches on Subject: below --
2004-01-26 15:56 Jeremy Jackson
2004-02-17 23:34 ` Bartlomiej Zolnierkiewicz
2004-02-24 17:49   ` Jeremy Jackson
2004-07-31 14:37   ` Marcelo Tosatti
2004-07-31 15:37     ` Jeremy Jackson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).