Re: [PATCH] net: sched: dev_deactivate_many(): use msleep(1) instead of yield() to wait for outstanding qdisc_run calls

From: David Miller
Date: Thu Mar 06 2014 - 16:06:32 EST


From: Marc Kleine-Budde <mkl@xxxxxxxxxxxxxx>
Date: Wed, 5 Mar 2014 00:49:47 +0100

> @@ -839,7 +839,7 @@ void dev_deactivate_many(struct list_head *head)
> /* Wait for outstanding qdisc_run calls. */
> list_for_each_entry(dev, head, unreg_list)
> while (some_qdisc_is_busy(dev))
> - yield();
> + msleep(1)
> }

I don't understand this.

yield() should really _mean_ yield.

The intent of a yield() call, like this one here, is unambiguously
that the current thread cannot do anything until some other thread
gets onto the cpu and makes forward progress.

Therefore it should allow lower priority threads to run, not just
equal or higher priority ones.
--
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/