Re: [patch 1/3] fastboot: Create a "asynchronous" initlevel

From: Daniel Walker
Date: Sat Jul 19 2008 - 00:28:21 EST


On Fri, 2008-07-18 at 20:44 -0700, Arjan van de Ven wrote:
> On Fri, 18 Jul 2008 18:22:20 -0700
> Daniel Walker <dwalker@xxxxxxxxxx> wrote:
>
> > On Fri, 2008-07-18 at 15:16 -0700, Arjan van de Ven wrote:
> > > +static void __init do_initcalls(void)
> > > +{
> > > + initcall_t *call;
> > > + static DECLARE_WORK(async_work, do_async_initcalls);
> > > + int phase = 0; /* 0 = levels 0 - 6, 1 = level 6a, 2 = after
> > > level 6a */
> > > +
> > > + async_init_wq = create_singlethread_workqueue("kasyncinit");
> > > +
> >
> > Could you spawning one thread per cpu, and queuing the work evenly?
>
> not without loosing the ordering.....
>

Your right .. You would think there wouldn't be expectations on the
ordering, but certain sub-systems do have dependencies .. I think it's
really a problem in our initcall system where I've seen lots of initcall
problems popup when drivers select "module_init()" but when the driver
is built in they loose the mandatory module load ordering (shows up in
allyesconfig). Then if the ordering gets mixed in the initcall you end
up with failures.

Daniel

--
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/