Re: cpu-2.5.64-1

William Lee Irwin III
2003-03-16T11:22:28Z

On Sun, 16 Mar 2003 02:10:55 -0800, William Lee Irwin III wrote:
>> Hmm. It shouldn't make a difference with respect to optimizing them.
>> My API passes transparently by reference:
>> #define cpu_isset(cpu, map) test_bit(cpu, (map).mask)

On Sun, Mar 16, 2003 at 10:12:24PM +1100, Keith Owens wrote:
> Some of the 64 bit archs implement test_bit() as taking int * instead
> of long *. That generates unoptimized code for the case of NR_CPUS <
> 64.
> #if NR_CPUS < 64
> #define cpu_isset(cpu, map) (map.mask & (1UL << (cpu)))
> ...
> generates better code on those architectures. Yet another special case :(

NUMA-Q is 32-bit so maybe there's more to be done, but never mind that.
But in general, what else can I do for you here? IIRC the MIPS tree is
still stuck around 2.5.47, and I've got little or no idea about the
status of larger MIPS boxen in 2.4.x and much less of one for 2.5.x.
I might need a little more to go on.

One of the major sticking points I appear to have developed here is
that I need to go around sweeping arch code for this stuff, but I don't
have the boxen and can barely build the trees (if at all) for non-x86.
What's the state of 2.5.x on the big machines where you're at?

Another thought I had was wrapping things in structures for both small
and large, even UP systems so proper typechecking is enforced at all
times. That would probably need a great deal of arch sweeping to do,
especially as a number of arches are UP-only (non-SMP case's motive #2).

I'm glad that _someone_ is talking, the lack of feedback on this has
been a bit depressing, especially given its "we needed this 5 years ago"
(from multiple vendors/arches) nature and general triviality.

-- wli