Stian Jordet <liste@xxxxxxxxx> wrote:
>
> lør, 01.11.2003 kl. 22.36 skrev Andrew Morton:
> > Stian Jordet <liste@xxxxxxxxx> wrote:
> > >
> > > Hello,
> > > kernel 2.6.0-test9 works perfect here, but with the latest cset I get
> > > the attached oops at boottime. Hope this helps someone.
> > >
> >
> > Please send your .config.
>
> Here you are :) Thanks for looking into this :)
OK, it goes bang because ptype_all has not been initialised yet.
This is because net_dev_init() is fs_initcall, and irda_init() is
subsys_initcall - irda_init() runs before net_dev_init().
Dave, I'm not sure what's the best thing to do here - I was afraid that the
initcall level shuffling was a bit premature.
IRDA doesn't look flexible (hugs to JT for commenting this nicely):
/*
* The IrDA stack must be initialised *before* drivers get initialised,
* and *before* higher protocols (IrLAN/IrCOMM/IrNET) get initialised,
* otherwise bad things will happen (hashbins will be NULL for example).
* Those modules are at module_init()/device_initcall() level.
*
* On the other hand, it needs to be initialised *after* the basic
* networking, the /proc/net filesystem and sysctl module. Those are
* currently initialised in .../init/main.c (before initcalls).
* Also, IrDA drivers needs to be initialised *after* the random number
* generator (main stack and higher layer init don't need it anymore).
*
* Jean II
*/
So I dunno. Maybe we need to just revert the PNP patch, think
about it some more?
diff -puN drivers/pnp/isapnp/core.c~pnp-initcall-revert
drivers/pnp/isapnp/core.c
--- 25/drivers/pnp/isapnp/core.c~pnp-initcall-revert 2003-11-01
16:02:36.000000000 -0800
+++ 25-akpm/drivers/pnp/isapnp/core.c 2003-11-01 16:02:54.000000000 -0800
@@ -1160,7 +1160,7 @@ int __init isapnp_init(void)
return 0;
}
-fs_initcall(isapnp_init);
+device_initcall(isapnp_init);
/* format is: noisapnp */
diff -puN net/core/dev.c~pnp-initcall-revert net/core/dev.c
--- 25/net/core/dev.c~pnp-initcall-revert 2003-11-01 16:02:36.000000000
-0800
+++ 25-akpm/net/core/dev.c 2003-11-01 16:02:54.000000000 -0800
@@ -3067,7 +3067,7 @@ out:
return rc;
}
-fs_initcall(net_dev_init);
+subsys_initcall(net_dev_init);
EXPORT_SYMBOL(__dev_get);
EXPORT_SYMBOL(__dev_get_by_flags);
_
|