Ok, aic7xxx hang solved on one machine with APIC solution
Ok, sched.c hang solved on another machine with patch.
However that patch doesn't solve everything and there are a few other
places where things hang.
*) I20 hangs in the middle of I20 init on -every- system I have from 586
to pIII in recent kernels
*) something hangs just after floppy init, last line is FDC0...
The FDC is immediately prior to where I2O inits so possibly the hang is
actually just following FDC/I2O? Normal boot messages should be like this:
Floppy drive(s): fd0 is 1.44M
FDC 0 is a post-1991 82077
Loading I2O Core - (c) Copyright 1999 Red Hat Software
Linux I2O PCI support (c) 1999 Red Hat Software.
i2o: Checking for PCI I2O controllers...
I2O configuration manager v 0.04.
(C) Copyright 1999 Red Hat Software
I2O Block Storage OSM v0.9
(c) Copyright 1999-2001 Red Hat Software.
i2o_block: Checking for Boot device...
i2o_block: Checking for I2O Block devices...
I2O LAN OSM (C) 1999 University of Helsinki.
early initialization of device teql0 is deferred
loop: loaded (max 8 devices)
Linux Tulip driver version 0.9.15-pre3 (June 1, 2001)
PCI: Found IRQ 5 for device 00:10.0
Any comments or suggestions? 2.4.5-ac19 is the last kernel I have that
works.
David
Ok, the problem is this. I have TEQL packet scheduling in my config,
the kernel runs through this sequence on boot:
net_dev_init()
pktsched_init()
teql_init() [starts a lock with rtnl_lock()]
register_netdevice()
net_dev_init()
pktsched_init()
teql_init() [hangs here...]
Here is the problem. We enter teql_init() again with a rtnl_lock()
already being held. Do any of the authors of these functions want to
jump in here?
David
David Ford wrote:
> [...]
> I2O LAN OSM (C) 1999 University of Helsinki.
> early initialization of device teql0 is deferred
> loop: loaded (max 8 devices)
> Linux Tulip driver version 0.9.15-pre3 (June 1, 2001)
> PCI: Found IRQ 5 for device 00:10.0
>
> Any comments or suggestions? 2.4.5-ac19 is the last kernel I have
> that works.
--- linux-2.4.6.orig/net/core/dev.c Sat Jul 14 17:48:57 2001
+++ linux-2.4.6/net/core/dev.c Wed Jun 20 21:00:55 2001
@@ -2405,6 +2401,9 @@
#ifdef CONFIG_NET_FASTROUTE
dev->fastpath_lock=RW_LOCK_UNLOCKED;
#endif
-
- if (dev_boot_phase)
- net_dev_init();
#ifdef CONFIG_NET_DIVERT
ret = alloc_divert_blk(dev);