Re: [PATCH] [PATCH/RESEND] driver core: remove polling for driver_probe_done(v4)

From: Arjan van de Ven
Date: Fri Feb 20 2009 - 23:44:16 EST


On Sat, 21 Feb 2009 09:28:34 +0800
Ming Lei <tom.leiming@xxxxxxxxx> wrote:
> >
> > you broke it i this revision though
> >
> >> -int wait_for_device_probe(void)
> >> +void driver_wait_probe_done(void)
> >> {
> >> - /* wait for the known devices to complete their probing */
> >> - while (driver_probe_done() != 0)
> >> - msleep(100);
> >> - async_synchronize_full();
> >> - return 0;
> >> + pr_debug("%s: probe_count = %d\n", __func__,
> >> + atomic_read(&probe_count));
> >> + wait_event(probe_waitqueue, atomic_read(&probe_count) == 0);
> >
> >
> > You lost the async_synchronize_full()!
>
> I patch patch-v2.6.29-rc5-next-20090220.gz against v2.6.29-rc5
> directly to build
> the linux-next tree(it is quicker for me),so I don't know why you add
> async_synchronize_full()
> in driver core and seems it doesn't matter with driver core.

I do not add it; you removed it!
(it is needed to synchronize both the pending probes AND the
asynchronous work; that is the point of the consolidation patches to do
all of this in one place)

>
> Would you mind that I resend a patch,which does
> async_synchronize_full() after
> driver_wait_probe_done() in do_mounts.c or do_mounts_md.c ?

that is not the right solution. The patch that introduced
wait_for_device_probe() was there to make sure it all happens in one
central location. To then decentralize this 2nd function call to all
locations that call the function does not make sense to me.....


--
Arjan van de Ven Intel Open Source Technology Centre
For development, discussion and tips for power savings,
visit http://www.lesswatts.org
--
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/