Re: 2.5.74-mm1

Zwane Mwaikambo
2003-07-04T07:47:12Z

On Fri, 4 Jul 2003, Zwane Mwaikambo wrote:

> The second one is correct. So one definite failing piece of code was in
> the cpus_or() path, i'm not so sure about the others. I have attached the
> test case. Bill says his gcc 3.3 works...

Uninlining bitmap_or fixes the test case with -O2 Could you try the
following patch with your kernels?

--- linux-2.5.74-cpumask/include/linux/bitmap.h.orig 2003-07-04 03:48:22.746229592 -0400
+++ linux-2.5.74-cpumask/include/linux/bitmap.h 2003-07-04 03:49:39.606545048 -0400
@@ -100,7 +100,7 @@
bitmap_copy(dst, __shl_tmp, bits);
}

-static inline void bitmap_and(volatile unsigned long *dst, const volatile unsigned long *bitmap1, const volatile unsigned long *bitmap2, int bits)
+static void bitmap_and(volatile unsigned long *dst, const volatile unsigned long *bitmap1, const volatile unsigned long *bitmap2, int bits)
{
int k;

@@ -108,7 +108,7 @@
dst[k] = bitmap1[k] & bitmap2[k];
}

-static inline void bitmap_or(volatile unsigned long *dst, const volatile unsigned long *bitmap1, const volatile unsigned long *bitmap2, int bits)
+static void bitmap_or(volatile unsigned long *dst, const volatile unsigned long *bitmap1, const volatile unsigned long *bitmap2, int bits)
{
int k;

--
function.linuxpower.ca