Re: [PATCH] explicitly bind idle tasks

From: Zwane Mwaikambo
Date: Tue Mar 01 2005 - 22:14:12 EST


On Tue, 1 Mar 2005, Nathan Lynch wrote:

> On Sun, Feb 27, 2005 at 02:49:28PM -0800, Andrew Morton wrote:
> > Benjamin Herrenschmidt <benh@xxxxxxxxxxxxxxxxxxx> wrote:
> > >
> > > > - if (cpu_is_offline(smp_processor_id()) &&
> > > > + if (cpu_is_offline(_smp_processor_id()) &&
> > > > system_state == SYSTEM_RUNNING)
> > > > cpu_die();
> > > > }
> > > > _
> > >
> > > This is the idle loop. Is that ever supposed to be preempted ?
> >
> > Nope, it's a false positive. We had to do the same in x86's idle loop and
> > probably others will hit it.
>
> Perhaps I'm missing something, but is there any reason we can't do
> the following? I've tested it on ppc64, doesn't seem to break anything.
>
> With hotplug cpu and preempt, we tend to see smp_processor_id warnings
> from idle loop code because it's always checking whether its cpu has
> gone offline. Replacing every use of smp_processor_id with
> _smp_processor_id in all idle loop code is one solution; another way
> is explicitly binding idle threads to their cpus (the smp_processor_id
> warning does not fire if the caller is bound only to the calling cpu).
> This has the (admittedly slight) advantage of letting us know if an
> idle thread ever runs on the wrong cpu.

Makes sense to me, for some reason i thought the smp_processor_id()
function did a cpu_rq->idle check of some sort.

Thanks,
Zwane

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