Re: cpu-2.5.64-1

William Lee Irwin III
2003-03-16T09:35:44Z

On Mon, 10 Mar 2003 20:24:57 -0800, William Lee Irwin III wrote:
>> That was a bit too braindead of a translation, yes. But it is x86 arch
>> code so it shouldn't be that large of an issue for big MIPS boxen etc.
>> I'll search & replace for stuff of this kind and wipe it out anyway.

William Lee Irwin III <wli@holomorphy.com> wrote:
> Good, it lets us optimize for 1/32/64/lots of cpus. NR_CPUS > 8 *
> sizeof(unsigned long) is the interesting case, it needs arrays.

Well, I did the arrays and used them for everything but UP. The whole
bitmap stuff is there to back-end the thing. Perhaps excess generality,
but there's actually an eventual follow-on to this, which is nodemasks.
Those I probably can't do for my own machines, but I'm hoping if this
goes anywhere that someone can use the bitmap ADT for them.

As it turns out small SMP can probably still use the stuff I designated
as UP-only, and UP can probably be made even more lightweight. I'm sort
of turned off by all the special-casing, though. It was mostly a hack
to avoid messing too much with the preexisting UP special-cased smp.h
If I absolutely _have_ to special case, well...

On Sun, 16 Mar 2003 00:36:09 -0800,
>> This suggests a "cpumask strategy". Care to share more, like your take
>> on such things as
>> p = req->task;
>> cpu_dest = __ffs(p->cpus_allowed & cpu_online_map);
>> rq_dest = cpu_rq(cpu_dest);
>> in kernel/sched.c?

On Sun, Mar 16, 2003 at 08:19:31PM +1100, Keith Owens wrote:
> That definitely needs encapsulation to handle cpus_allowed etc. being
> arrays. A function to generate the logical and of p->cpus_allowed and
> cpu_online_map and return cpumask_t * is easy. Doing ffs on that
> result will not work, it assumes NR_CPUS fits in a word. Add
> ffs_cpumask(cpumask_t *).

Okay, that's more or less what the patch I did does, it has cpus_and(),
and just s/ffs_cpumask/first_cpu/. I was mostly wondering if you had
higher-level arch wrappers in mind, e.g. cpus_restrict_online() etc.

-- wli