Re: mips build failures due to commit 8dd928915a73 (mips: fix up obsolete cpu function usage)

2015-04-27 Thread Paul Martin
On Mon, Apr 27, 2015 at 04:03:48PM +0300, Aaro Koskinen wrote:
> On Tue, Apr 21, 2015 at 08:41:08AM -0700, Guenter Roeck wrote:
> > The following might do it. Note that I can not really test it since I
> > don't have a real mips system, and qemu gets rcu hangs if I enable more
> > than one CPU (I see that with older kernels as well, so it is not a new
> > problem). Someone will have to test the patch on a real multi-core system.
> 
> That works on Octeon+ EBH5600 board (8 cores) with 4.1-rc1.
> 
> Tested-by: Aaro Koskinen 

http://patchwork.linux-mips.org/patch/9828/

I've been using this patch since 21 Apr on the 4.1 merge HEAD on
EdgeRouter Pro (Octeon II, dual core).  It's survived several
builds of gcc (using make -j3).

Tested-by: Paul Martin 

-- 
Paul Martin  http://www.codethink.co.uk/
Senior Software Developer, Codethink Ltd.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: mips build failures due to commit 8dd928915a73 (mips: fix up obsolete cpu function usage)

2015-04-27 Thread Aaro Koskinen
On Tue, Apr 21, 2015 at 08:41:08AM -0700, Guenter Roeck wrote:
> The following might do it. Note that I can not really test it since I
> don't have a real mips system, and qemu gets rcu hangs if I enable more
> than one CPU (I see that with older kernels as well, so it is not a new
> problem). Someone will have to test the patch on a real multi-core system.

That works on Octeon+ EBH5600 board (8 cores) with 4.1-rc1.

Tested-by: Aaro Koskinen 

Thanks,

A.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: mips build failures due to commit 8dd928915a73 (mips: fix up obsolete cpu function usage)

2015-04-27 Thread Aaro Koskinen
On Tue, Apr 21, 2015 at 08:41:08AM -0700, Guenter Roeck wrote:
 The following might do it. Note that I can not really test it since I
 don't have a real mips system, and qemu gets rcu hangs if I enable more
 than one CPU (I see that with older kernels as well, so it is not a new
 problem). Someone will have to test the patch on a real multi-core system.

That works on Octeon+ EBH5600 board (8 cores) with 4.1-rc1.

Tested-by: Aaro Koskinen aaro.koski...@nokia.com

Thanks,

A.
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: mips build failures due to commit 8dd928915a73 (mips: fix up obsolete cpu function usage)

2015-04-27 Thread Paul Martin
On Mon, Apr 27, 2015 at 04:03:48PM +0300, Aaro Koskinen wrote:
 On Tue, Apr 21, 2015 at 08:41:08AM -0700, Guenter Roeck wrote:
  The following might do it. Note that I can not really test it since I
  don't have a real mips system, and qemu gets rcu hangs if I enable more
  than one CPU (I see that with older kernels as well, so it is not a new
  problem). Someone will have to test the patch on a real multi-core system.
 
 That works on Octeon+ EBH5600 board (8 cores) with 4.1-rc1.
 
 Tested-by: Aaro Koskinen aaro.koski...@nokia.com

http://patchwork.linux-mips.org/patch/9828/

I've been using this patch since 21 Apr on the 4.1 merge HEAD on
EdgeRouter Pro (Octeon II, dual core).  It's survived several
builds of gcc (using make -j3).

Tested-by: Paul Martin paul.mar...@codethink.co.uk

-- 
Paul Martin  http://www.codethink.co.uk/
Senior Software Developer, Codethink Ltd.
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: mips build failures due to commit 8dd928915a73 (mips: fix up obsolete cpu function usage)

2015-04-21 Thread Florian Fainelli
2015-04-21 8:41 GMT-07:00 Guenter Roeck :
> On Tue, Apr 21, 2015 at 01:45:35PM +0930, Rusty Russell wrote:
>> Aaro Koskinen  writes:
>> > Hi,
>> >
>> > On Mon, Apr 20, 2015 at 12:40:28PM -0700, Guenter Roeck wrote:
>> >> the upstream kernel fails to build mips:nlm_xlp_defconfig,
>> >> mips:nlm_xlp_defconfig, mips:cavium_octeon_defconfig, and possibly
>> >> other targets, with errors such as
>> >>
>> >> arch/mips/kernel/smp.c:211:2: error:
>> >>passing argument 2 of 'cpumask_set_cpu' discards 'volatile' qualifier
>> >>from pointer target type
>> >> arch/mips/kernel/process.c:52:2: error:
>> >>passing argument 2 of 'cpumask_test_cpu' discards 'volatile' qualifier
>> >>from pointer target type
>> >> arch/mips/cavium-octeon/smp.c:242:2: error:
>> >>passing argument 2 of 'cpumask_clear_cpu' discards 'volatile' qualifier
>> >>from pointer target type
>> >>
>> >> The problem was introduced with commit 8dd928915a73 (" mips: fix up
>> >> obsolete cpu function usage"). I would send a patch to fix it, but I
>> >> am not sure if removing 'volatile' from the variable declaration(s)
>> >> would be a good idea.
>> >
>> > I think removing volatile from cpu_callin_map declaration should be OK,
>> > since test_cpu (only reader) uses test_bit which takes care of it:
>> >
>> > static inline int test_bit(int nr, const volatile unsigned long *addr)
>>
>> No, that got replaced too, with cpumask_test_cpu AFAICT.
>>
>> You can open-code it, like so:
>>
>> test_bit(0, cpumask_bits(cpu_callin_map));
>>
>> But you probably want to put a barrier in that loop instead of relying
>> on volatile.
>>
> The following might do it. Note that I can not really test it since I don't 
> have
> a real mips system, and qemu gets rcu hangs if I enable more than one CPU (I 
> see
> that with older kernels as well, so it is not a new problem). Someone will 
> have
> to test the patch on a real multi-core system.

Would be nice to get this merged ASAP as a build failure is not great.
See below for the tested tag, thanks for the fix!

>
> Guenter
>
> ---
> From 94026cc98a6b7b3567780a5443674c71202e2497 Mon Sep 17 00:00:00 2001
> From: Guenter Roeck 
> Date: Tue, 21 Apr 2015 08:31:01 -0700
> Subject: [PATCH] mips: Fix SMP builds
>
> Mips SMP builds fail with error messages similar to the following.
>
> arch/mips/kernel/smp.c:211:2: error:
> passing argument 2 of 'cpumask_set_cpu' discards 'volatile'
> qualifier from pointer target type
> arch/mips/kernel/process.c:52:2: error:
> passing argument 2 of 'cpumask_test_cpu' discards 'volatile'
> qualifier from pointer target type
> arch/mips/cavium-octeon/smp.c:242:2: error:
> passing argument 2 of 'cpumask_clear_cpu' discards 'volatile'
> qualifier from pointer target type
>
> cpu_callin_map is declared as volatile variable, but passed to various
> functions with non-volatile arguments. Make it non-volatile and add a
> memory barrier at the one location where volatile might be needed.
>
> Fixes: 8dd928915a73 ("mips: fix up obsolete cpu function usage")
> Cc: Rusty Russell 
> Signed-off-by: Guenter Roeck 

On Netlogic XLP-FVP (8 cores):

Tested-by: Florian Fainelli 

> ---
>  arch/mips/include/asm/smp.h | 2 +-
>  arch/mips/kernel/smp.c  | 6 --
>  2 files changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/arch/mips/include/asm/smp.h b/arch/mips/include/asm/smp.h
> index bb02fac9b4fa..2b25d1ba1ea0 100644
> --- a/arch/mips/include/asm/smp.h
> +++ b/arch/mips/include/asm/smp.h
> @@ -45,7 +45,7 @@ extern int __cpu_logical_map[NR_CPUS];
>  #define SMP_DUMP   0x8
>  #define SMP_ASK_C0COUNT0x10
>
> -extern volatile cpumask_t cpu_callin_map;
> +extern cpumask_t cpu_callin_map;
>
>  /* Mask of CPUs which are currently definitely operating coherently */
>  extern cpumask_t cpu_coherent_mask;
> diff --git a/arch/mips/kernel/smp.c b/arch/mips/kernel/smp.c
> index 193ace7955fb..158191394770 100644
> --- a/arch/mips/kernel/smp.c
> +++ b/arch/mips/kernel/smp.c
> @@ -43,7 +43,7 @@
>  #include 
>  #include 
>
> -volatile cpumask_t cpu_callin_map; /* Bitmask of started secondaries */
> +cpumask_t cpu_callin_map;  /* Bitmask of started secondaries */
>
>  int __cpu_number_map[NR_CPUS]; /* Map physical to logical */
>  EXPORT_SYMBOL(__cpu_number_map);
> @@ -218,8 +218,10 @@ int __cpu_up(unsigned int cpu, struct task_struct *tidle)
> /*
>  * Trust is futile.  We should really have timeouts ...
>  */
> -   while (!cpumask_test_cpu(cpu, _callin_map))
> +   while (!cpumask_test_cpu(cpu, _callin_map)) {
> udelay(100);
> +   mb();
> +   }
>
> synchronise_count_master(cpu);
> return 0;
> --
> 2.1.0
>



-- 
Florian
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Re: mips build failures due to commit 8dd928915a73 (mips: fix up obsolete cpu function usage)

2015-04-21 Thread Guenter Roeck
On Tue, Apr 21, 2015 at 01:45:35PM +0930, Rusty Russell wrote:
> Aaro Koskinen  writes:
> > Hi,
> >
> > On Mon, Apr 20, 2015 at 12:40:28PM -0700, Guenter Roeck wrote:
> >> the upstream kernel fails to build mips:nlm_xlp_defconfig,
> >> mips:nlm_xlp_defconfig, mips:cavium_octeon_defconfig, and possibly
> >> other targets, with errors such as
> >> 
> >> arch/mips/kernel/smp.c:211:2: error:
> >>passing argument 2 of 'cpumask_set_cpu' discards 'volatile' qualifier
> >>from pointer target type
> >> arch/mips/kernel/process.c:52:2: error:
> >>passing argument 2 of 'cpumask_test_cpu' discards 'volatile' qualifier
> >>from pointer target type
> >> arch/mips/cavium-octeon/smp.c:242:2: error:
> >>passing argument 2 of 'cpumask_clear_cpu' discards 'volatile' qualifier
> >>from pointer target type
> >> 
> >> The problem was introduced with commit 8dd928915a73 (" mips: fix up
> >> obsolete cpu function usage"). I would send a patch to fix it, but I
> >> am not sure if removing 'volatile' from the variable declaration(s)
> >> would be a good idea.
> >
> > I think removing volatile from cpu_callin_map declaration should be OK,
> > since test_cpu (only reader) uses test_bit which takes care of it:
> >
> > static inline int test_bit(int nr, const volatile unsigned long *addr)
> 
> No, that got replaced too, with cpumask_test_cpu AFAICT.
> 
> You can open-code it, like so:
> 
> test_bit(0, cpumask_bits(cpu_callin_map));
> 
> But you probably want to put a barrier in that loop instead of relying
> on volatile.
> 
The following might do it. Note that I can not really test it since I don't have
a real mips system, and qemu gets rcu hangs if I enable more than one CPU (I see
that with older kernels as well, so it is not a new problem). Someone will have
to test the patch on a real multi-core system.

Guenter

---
>From 94026cc98a6b7b3567780a5443674c71202e2497 Mon Sep 17 00:00:00 2001
From: Guenter Roeck 
Date: Tue, 21 Apr 2015 08:31:01 -0700
Subject: [PATCH] mips: Fix SMP builds

Mips SMP builds fail with error messages similar to the following.

arch/mips/kernel/smp.c:211:2: error:
passing argument 2 of 'cpumask_set_cpu' discards 'volatile'
qualifier from pointer target type
arch/mips/kernel/process.c:52:2: error:
passing argument 2 of 'cpumask_test_cpu' discards 'volatile'
qualifier from pointer target type
arch/mips/cavium-octeon/smp.c:242:2: error:
passing argument 2 of 'cpumask_clear_cpu' discards 'volatile'
qualifier from pointer target type

cpu_callin_map is declared as volatile variable, but passed to various
functions with non-volatile arguments. Make it non-volatile and add a
memory barrier at the one location where volatile might be needed.

Fixes: 8dd928915a73 ("mips: fix up obsolete cpu function usage")
Cc: Rusty Russell 
Signed-off-by: Guenter Roeck 
---
 arch/mips/include/asm/smp.h | 2 +-
 arch/mips/kernel/smp.c  | 6 --
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/arch/mips/include/asm/smp.h b/arch/mips/include/asm/smp.h
index bb02fac9b4fa..2b25d1ba1ea0 100644
--- a/arch/mips/include/asm/smp.h
+++ b/arch/mips/include/asm/smp.h
@@ -45,7 +45,7 @@ extern int __cpu_logical_map[NR_CPUS];
 #define SMP_DUMP   0x8
 #define SMP_ASK_C0COUNT0x10
 
-extern volatile cpumask_t cpu_callin_map;
+extern cpumask_t cpu_callin_map;
 
 /* Mask of CPUs which are currently definitely operating coherently */
 extern cpumask_t cpu_coherent_mask;
diff --git a/arch/mips/kernel/smp.c b/arch/mips/kernel/smp.c
index 193ace7955fb..158191394770 100644
--- a/arch/mips/kernel/smp.c
+++ b/arch/mips/kernel/smp.c
@@ -43,7 +43,7 @@
 #include 
 #include 
 
-volatile cpumask_t cpu_callin_map; /* Bitmask of started secondaries */
+cpumask_t cpu_callin_map;  /* Bitmask of started secondaries */
 
 int __cpu_number_map[NR_CPUS]; /* Map physical to logical */
 EXPORT_SYMBOL(__cpu_number_map);
@@ -218,8 +218,10 @@ int __cpu_up(unsigned int cpu, struct task_struct *tidle)
/*
 * Trust is futile.  We should really have timeouts ...
 */
-   while (!cpumask_test_cpu(cpu, _callin_map))
+   while (!cpumask_test_cpu(cpu, _callin_map)) {
udelay(100);
+   mb();
+   }
 
synchronise_count_master(cpu);
return 0;
-- 
2.1.0

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: mips build failures due to commit 8dd928915a73 (mips: fix up obsolete cpu function usage)

2015-04-21 Thread Rusty Russell
Aaro Koskinen  writes:
> Hi,
>
> On Mon, Apr 20, 2015 at 12:40:28PM -0700, Guenter Roeck wrote:
>> the upstream kernel fails to build mips:nlm_xlp_defconfig,
>> mips:nlm_xlp_defconfig, mips:cavium_octeon_defconfig, and possibly
>> other targets, with errors such as
>> 
>> arch/mips/kernel/smp.c:211:2: error:
>>  passing argument 2 of 'cpumask_set_cpu' discards 'volatile' qualifier
>>  from pointer target type
>> arch/mips/kernel/process.c:52:2: error:
>>  passing argument 2 of 'cpumask_test_cpu' discards 'volatile' qualifier
>>  from pointer target type
>> arch/mips/cavium-octeon/smp.c:242:2: error:
>>  passing argument 2 of 'cpumask_clear_cpu' discards 'volatile' qualifier
>>  from pointer target type
>> 
>> The problem was introduced with commit 8dd928915a73 (" mips: fix up
>> obsolete cpu function usage"). I would send a patch to fix it, but I
>> am not sure if removing 'volatile' from the variable declaration(s)
>> would be a good idea.
>
> I think removing volatile from cpu_callin_map declaration should be OK,
> since test_cpu (only reader) uses test_bit which takes care of it:
>
>   static inline int test_bit(int nr, const volatile unsigned long *addr)

No, that got replaced too, with cpumask_test_cpu AFAICT.

You can open-code it, like so:

test_bit(0, cpumask_bits(cpu_callin_map));

But you probably want to put a barrier in that loop instead of relying
on volatile.

Thanks,
Rusty.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: mips build failures due to commit 8dd928915a73 (mips: fix up obsolete cpu function usage)

2015-04-21 Thread Rusty Russell
Aaro Koskinen aaro.koski...@iki.fi writes:
 Hi,

 On Mon, Apr 20, 2015 at 12:40:28PM -0700, Guenter Roeck wrote:
 the upstream kernel fails to build mips:nlm_xlp_defconfig,
 mips:nlm_xlp_defconfig, mips:cavium_octeon_defconfig, and possibly
 other targets, with errors such as
 
 arch/mips/kernel/smp.c:211:2: error:
  passing argument 2 of 'cpumask_set_cpu' discards 'volatile' qualifier
  from pointer target type
 arch/mips/kernel/process.c:52:2: error:
  passing argument 2 of 'cpumask_test_cpu' discards 'volatile' qualifier
  from pointer target type
 arch/mips/cavium-octeon/smp.c:242:2: error:
  passing argument 2 of 'cpumask_clear_cpu' discards 'volatile' qualifier
  from pointer target type
 
 The problem was introduced with commit 8dd928915a73 ( mips: fix up
 obsolete cpu function usage). I would send a patch to fix it, but I
 am not sure if removing 'volatile' from the variable declaration(s)
 would be a good idea.

 I think removing volatile from cpu_callin_map declaration should be OK,
 since test_cpu (only reader) uses test_bit which takes care of it:

   static inline int test_bit(int nr, const volatile unsigned long *addr)

No, that got replaced too, with cpumask_test_cpu AFAICT.

You can open-code it, like so:

test_bit(0, cpumask_bits(cpu_callin_map));

But you probably want to put a barrier in that loop instead of relying
on volatile.

Thanks,
Rusty.
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: mips build failures due to commit 8dd928915a73 (mips: fix up obsolete cpu function usage)

2015-04-21 Thread Guenter Roeck
On Tue, Apr 21, 2015 at 01:45:35PM +0930, Rusty Russell wrote:
 Aaro Koskinen aaro.koski...@iki.fi writes:
  Hi,
 
  On Mon, Apr 20, 2015 at 12:40:28PM -0700, Guenter Roeck wrote:
  the upstream kernel fails to build mips:nlm_xlp_defconfig,
  mips:nlm_xlp_defconfig, mips:cavium_octeon_defconfig, and possibly
  other targets, with errors such as
  
  arch/mips/kernel/smp.c:211:2: error:
 passing argument 2 of 'cpumask_set_cpu' discards 'volatile' qualifier
 from pointer target type
  arch/mips/kernel/process.c:52:2: error:
 passing argument 2 of 'cpumask_test_cpu' discards 'volatile' qualifier
 from pointer target type
  arch/mips/cavium-octeon/smp.c:242:2: error:
 passing argument 2 of 'cpumask_clear_cpu' discards 'volatile' qualifier
 from pointer target type
  
  The problem was introduced with commit 8dd928915a73 ( mips: fix up
  obsolete cpu function usage). I would send a patch to fix it, but I
  am not sure if removing 'volatile' from the variable declaration(s)
  would be a good idea.
 
  I think removing volatile from cpu_callin_map declaration should be OK,
  since test_cpu (only reader) uses test_bit which takes care of it:
 
  static inline int test_bit(int nr, const volatile unsigned long *addr)
 
 No, that got replaced too, with cpumask_test_cpu AFAICT.
 
 You can open-code it, like so:
 
 test_bit(0, cpumask_bits(cpu_callin_map));
 
 But you probably want to put a barrier in that loop instead of relying
 on volatile.
 
The following might do it. Note that I can not really test it since I don't have
a real mips system, and qemu gets rcu hangs if I enable more than one CPU (I see
that with older kernels as well, so it is not a new problem). Someone will have
to test the patch on a real multi-core system.

Guenter

---
From 94026cc98a6b7b3567780a5443674c71202e2497 Mon Sep 17 00:00:00 2001
From: Guenter Roeck li...@roeck-us.net
Date: Tue, 21 Apr 2015 08:31:01 -0700
Subject: [PATCH] mips: Fix SMP builds

Mips SMP builds fail with error messages similar to the following.

arch/mips/kernel/smp.c:211:2: error:
passing argument 2 of 'cpumask_set_cpu' discards 'volatile'
qualifier from pointer target type
arch/mips/kernel/process.c:52:2: error:
passing argument 2 of 'cpumask_test_cpu' discards 'volatile'
qualifier from pointer target type
arch/mips/cavium-octeon/smp.c:242:2: error:
passing argument 2 of 'cpumask_clear_cpu' discards 'volatile'
qualifier from pointer target type

cpu_callin_map is declared as volatile variable, but passed to various
functions with non-volatile arguments. Make it non-volatile and add a
memory barrier at the one location where volatile might be needed.

Fixes: 8dd928915a73 (mips: fix up obsolete cpu function usage)
Cc: Rusty Russell ru...@rustcorp.com.au
Signed-off-by: Guenter Roeck li...@roeck-us.net
---
 arch/mips/include/asm/smp.h | 2 +-
 arch/mips/kernel/smp.c  | 6 --
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/arch/mips/include/asm/smp.h b/arch/mips/include/asm/smp.h
index bb02fac9b4fa..2b25d1ba1ea0 100644
--- a/arch/mips/include/asm/smp.h
+++ b/arch/mips/include/asm/smp.h
@@ -45,7 +45,7 @@ extern int __cpu_logical_map[NR_CPUS];
 #define SMP_DUMP   0x8
 #define SMP_ASK_C0COUNT0x10
 
-extern volatile cpumask_t cpu_callin_map;
+extern cpumask_t cpu_callin_map;
 
 /* Mask of CPUs which are currently definitely operating coherently */
 extern cpumask_t cpu_coherent_mask;
diff --git a/arch/mips/kernel/smp.c b/arch/mips/kernel/smp.c
index 193ace7955fb..158191394770 100644
--- a/arch/mips/kernel/smp.c
+++ b/arch/mips/kernel/smp.c
@@ -43,7 +43,7 @@
 #include asm/time.h
 #include asm/setup.h
 
-volatile cpumask_t cpu_callin_map; /* Bitmask of started secondaries */
+cpumask_t cpu_callin_map;  /* Bitmask of started secondaries */
 
 int __cpu_number_map[NR_CPUS]; /* Map physical to logical */
 EXPORT_SYMBOL(__cpu_number_map);
@@ -218,8 +218,10 @@ int __cpu_up(unsigned int cpu, struct task_struct *tidle)
/*
 * Trust is futile.  We should really have timeouts ...
 */
-   while (!cpumask_test_cpu(cpu, cpu_callin_map))
+   while (!cpumask_test_cpu(cpu, cpu_callin_map)) {
udelay(100);
+   mb();
+   }
 
synchronise_count_master(cpu);
return 0;
-- 
2.1.0

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: mips build failures due to commit 8dd928915a73 (mips: fix up obsolete cpu function usage)

2015-04-21 Thread Florian Fainelli
2015-04-21 8:41 GMT-07:00 Guenter Roeck li...@roeck-us.net:
 On Tue, Apr 21, 2015 at 01:45:35PM +0930, Rusty Russell wrote:
 Aaro Koskinen aaro.koski...@iki.fi writes:
  Hi,
 
  On Mon, Apr 20, 2015 at 12:40:28PM -0700, Guenter Roeck wrote:
  the upstream kernel fails to build mips:nlm_xlp_defconfig,
  mips:nlm_xlp_defconfig, mips:cavium_octeon_defconfig, and possibly
  other targets, with errors such as
 
  arch/mips/kernel/smp.c:211:2: error:
 passing argument 2 of 'cpumask_set_cpu' discards 'volatile' qualifier
 from pointer target type
  arch/mips/kernel/process.c:52:2: error:
 passing argument 2 of 'cpumask_test_cpu' discards 'volatile' qualifier
 from pointer target type
  arch/mips/cavium-octeon/smp.c:242:2: error:
 passing argument 2 of 'cpumask_clear_cpu' discards 'volatile' qualifier
 from pointer target type
 
  The problem was introduced with commit 8dd928915a73 ( mips: fix up
  obsolete cpu function usage). I would send a patch to fix it, but I
  am not sure if removing 'volatile' from the variable declaration(s)
  would be a good idea.
 
  I think removing volatile from cpu_callin_map declaration should be OK,
  since test_cpu (only reader) uses test_bit which takes care of it:
 
  static inline int test_bit(int nr, const volatile unsigned long *addr)

 No, that got replaced too, with cpumask_test_cpu AFAICT.

 You can open-code it, like so:

 test_bit(0, cpumask_bits(cpu_callin_map));

 But you probably want to put a barrier in that loop instead of relying
 on volatile.

 The following might do it. Note that I can not really test it since I don't 
 have
 a real mips system, and qemu gets rcu hangs if I enable more than one CPU (I 
 see
 that with older kernels as well, so it is not a new problem). Someone will 
 have
 to test the patch on a real multi-core system.

Would be nice to get this merged ASAP as a build failure is not great.
See below for the tested tag, thanks for the fix!


 Guenter

 ---
 From 94026cc98a6b7b3567780a5443674c71202e2497 Mon Sep 17 00:00:00 2001
 From: Guenter Roeck li...@roeck-us.net
 Date: Tue, 21 Apr 2015 08:31:01 -0700
 Subject: [PATCH] mips: Fix SMP builds

 Mips SMP builds fail with error messages similar to the following.

 arch/mips/kernel/smp.c:211:2: error:
 passing argument 2 of 'cpumask_set_cpu' discards 'volatile'
 qualifier from pointer target type
 arch/mips/kernel/process.c:52:2: error:
 passing argument 2 of 'cpumask_test_cpu' discards 'volatile'
 qualifier from pointer target type
 arch/mips/cavium-octeon/smp.c:242:2: error:
 passing argument 2 of 'cpumask_clear_cpu' discards 'volatile'
 qualifier from pointer target type

 cpu_callin_map is declared as volatile variable, but passed to various
 functions with non-volatile arguments. Make it non-volatile and add a
 memory barrier at the one location where volatile might be needed.

 Fixes: 8dd928915a73 (mips: fix up obsolete cpu function usage)
 Cc: Rusty Russell ru...@rustcorp.com.au
 Signed-off-by: Guenter Roeck li...@roeck-us.net

On Netlogic XLP-FVP (8 cores):

Tested-by: Florian Fainelli f.faine...@gmail.com

 ---
  arch/mips/include/asm/smp.h | 2 +-
  arch/mips/kernel/smp.c  | 6 --
  2 files changed, 5 insertions(+), 3 deletions(-)

 diff --git a/arch/mips/include/asm/smp.h b/arch/mips/include/asm/smp.h
 index bb02fac9b4fa..2b25d1ba1ea0 100644
 --- a/arch/mips/include/asm/smp.h
 +++ b/arch/mips/include/asm/smp.h
 @@ -45,7 +45,7 @@ extern int __cpu_logical_map[NR_CPUS];
  #define SMP_DUMP   0x8
  #define SMP_ASK_C0COUNT0x10

 -extern volatile cpumask_t cpu_callin_map;
 +extern cpumask_t cpu_callin_map;

  /* Mask of CPUs which are currently definitely operating coherently */
  extern cpumask_t cpu_coherent_mask;
 diff --git a/arch/mips/kernel/smp.c b/arch/mips/kernel/smp.c
 index 193ace7955fb..158191394770 100644
 --- a/arch/mips/kernel/smp.c
 +++ b/arch/mips/kernel/smp.c
 @@ -43,7 +43,7 @@
  #include asm/time.h
  #include asm/setup.h

 -volatile cpumask_t cpu_callin_map; /* Bitmask of started secondaries */
 +cpumask_t cpu_callin_map;  /* Bitmask of started secondaries */

  int __cpu_number_map[NR_CPUS]; /* Map physical to logical */
  EXPORT_SYMBOL(__cpu_number_map);
 @@ -218,8 +218,10 @@ int __cpu_up(unsigned int cpu, struct task_struct *tidle)
 /*
  * Trust is futile.  We should really have timeouts ...
  */
 -   while (!cpumask_test_cpu(cpu, cpu_callin_map))
 +   while (!cpumask_test_cpu(cpu, cpu_callin_map)) {
 udelay(100);
 +   mb();
 +   }

 synchronise_count_master(cpu);
 return 0;
 --
 2.1.0




-- 
Florian
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: mips build failures due to commit 8dd928915a73 (mips: fix up obsolete cpu function usage)

2015-04-20 Thread Guenter Roeck

On 04/20/2015 02:09 PM, Aaro Koskinen wrote:

Hi,

On Mon, Apr 20, 2015 at 12:40:28PM -0700, Guenter Roeck wrote:

the upstream kernel fails to build mips:nlm_xlp_defconfig,
mips:nlm_xlp_defconfig, mips:cavium_octeon_defconfig, and possibly
other targets, with errors such as

arch/mips/kernel/smp.c:211:2: error:
passing argument 2 of 'cpumask_set_cpu' discards 'volatile' qualifier
from pointer target type
arch/mips/kernel/process.c:52:2: error:
passing argument 2 of 'cpumask_test_cpu' discards 'volatile' qualifier
from pointer target type
arch/mips/cavium-octeon/smp.c:242:2: error:
passing argument 2 of 'cpumask_clear_cpu' discards 'volatile' qualifier
from pointer target type

The problem was introduced with commit 8dd928915a73 (" mips: fix up
obsolete cpu function usage"). I would send a patch to fix it, but I
am not sure if removing 'volatile' from the variable declaration(s)
would be a good idea.


I think removing volatile from cpu_callin_map declaration should be OK,
since test_cpu (only reader) uses test_bit which takes care of it:

static inline int test_bit(int nr, const volatile unsigned long *addr)



I ran two tests with nlm_xlp_defconfig:

- add volatile to the second argument of cpumask_set_cpu() and 
cpumask_test_cpu():
  vmlinux image size 194664946
- remove volatile from cpu_callin_map:
  vmlinux image size 194664066

Given that, I am not sure I understand the impact of removing volatile
from cpu_callin_map. Maybe it is just better optimization without
volatile. Maybe there is no impact. Maybe the use of volatile is wrong
to start with ('Volatile Considered Harmful' comes into mind).
Maybe the use of volatile for cpu_callin_map is wrong for other architectures
as well (powerpc, ia64). Either case, I don't know to code well enough to
make this call.

Guenter

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: mips build failures due to commit 8dd928915a73 (mips: fix up obsolete cpu function usage)

2015-04-20 Thread Aaro Koskinen
Hi,

On Mon, Apr 20, 2015 at 12:40:28PM -0700, Guenter Roeck wrote:
> the upstream kernel fails to build mips:nlm_xlp_defconfig,
> mips:nlm_xlp_defconfig, mips:cavium_octeon_defconfig, and possibly
> other targets, with errors such as
> 
> arch/mips/kernel/smp.c:211:2: error:
>   passing argument 2 of 'cpumask_set_cpu' discards 'volatile' qualifier
>   from pointer target type
> arch/mips/kernel/process.c:52:2: error:
>   passing argument 2 of 'cpumask_test_cpu' discards 'volatile' qualifier
>   from pointer target type
> arch/mips/cavium-octeon/smp.c:242:2: error:
>   passing argument 2 of 'cpumask_clear_cpu' discards 'volatile' qualifier
>   from pointer target type
> 
> The problem was introduced with commit 8dd928915a73 (" mips: fix up
> obsolete cpu function usage"). I would send a patch to fix it, but I
> am not sure if removing 'volatile' from the variable declaration(s)
> would be a good idea.

I think removing volatile from cpu_callin_map declaration should be OK,
since test_cpu (only reader) uses test_bit which takes care of it:

static inline int test_bit(int nr, const volatile unsigned long *addr)

A.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: mips build failures due to commit 8dd928915a73 (mips: fix up obsolete cpu function usage)

2015-04-20 Thread Guenter Roeck
On Mon, Apr 20, 2015 at 10:06:42PM +0200, Ralf Baechle wrote:
> On Mon, Apr 20, 2015 at 12:40:28PM -0700, Guenter Roeck wrote:
> 
> > the upstream kernel fails to build mips:nlm_xlp_defconfig,
> > mips:nlm_xlp_defconfig, mips:cavium_octeon_defconfig, and possibly
> > other targets, with errors such as
> > 
> > arch/mips/kernel/smp.c:211:2: error:
> > passing argument 2 of 'cpumask_set_cpu' discards 'volatile' qualifier
> > from pointer target type
> > arch/mips/kernel/process.c:52:2: error:
> > passing argument 2 of 'cpumask_test_cpu' discards 'volatile' qualifier
> > from pointer target type
> > arch/mips/cavium-octeon/smp.c:242:2: error:
> > passing argument 2 of 'cpumask_clear_cpu' discards 'volatile' qualifier
> > from pointer target type
> > 
> > The problem was introduced with commit 8dd928915a73 (" mips: fix up 
> > obsolete cpu
> > function usage"). I would send a patch to fix it, but I am not sure if 
> > removing
> > 'volatile' from the variable declaration(s) would be a good idea.
> > 
> > I don't recall seeing the problem in -next, but unless I am missing 
> > something,
> > the patch never made it into -next to start with.
> 
> It was posted on March 2nd as part of a larger series.  Only this patch
> 9/16 was send to linux-mips and when I tested the patch it failed.  Back
> then I blamed it on not having patches 1 to 8 in my test tree so I didn't
> diver deeper into the issue and dropped the patch ...
> 

Hi Ralf,

The patch failed all by itself, no context needed ;-). Anyway, since it was part
of a larger series, I would assume that it should have been added to -next as
part of that series, not through the mips tree. For whatever reason that did not
happen ... and as far as I can see, many if not all mips smp builds now fail
in the upstream kernel.

Any idea what the fix should be ?

Thanks,
Guenter
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: mips build failures due to commit 8dd928915a73 (mips: fix up obsolete cpu function usage)

2015-04-20 Thread Ralf Baechle
On Mon, Apr 20, 2015 at 12:40:28PM -0700, Guenter Roeck wrote:

> the upstream kernel fails to build mips:nlm_xlp_defconfig,
> mips:nlm_xlp_defconfig, mips:cavium_octeon_defconfig, and possibly
> other targets, with errors such as
> 
> arch/mips/kernel/smp.c:211:2: error:
>   passing argument 2 of 'cpumask_set_cpu' discards 'volatile' qualifier
>   from pointer target type
> arch/mips/kernel/process.c:52:2: error:
>   passing argument 2 of 'cpumask_test_cpu' discards 'volatile' qualifier
>   from pointer target type
> arch/mips/cavium-octeon/smp.c:242:2: error:
>   passing argument 2 of 'cpumask_clear_cpu' discards 'volatile' qualifier
>   from pointer target type
> 
> The problem was introduced with commit 8dd928915a73 (" mips: fix up obsolete 
> cpu
> function usage"). I would send a patch to fix it, but I am not sure if 
> removing
> 'volatile' from the variable declaration(s) would be a good idea.
> 
> I don't recall seeing the problem in -next, but unless I am missing something,
> the patch never made it into -next to start with.

It was posted on March 2nd as part of a larger series.  Only this patch
9/16 was send to linux-mips and when I tested the patch it failed.  Back
then I blamed it on not having patches 1 to 8 in my test tree so I didn't
diver deeper into the issue and dropped the patch ...

  Ralf
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


mips build failures due to commit 8dd928915a73 (mips: fix up obsolete cpu function usage)

2015-04-20 Thread Guenter Roeck
Hi,

the upstream kernel fails to build mips:nlm_xlp_defconfig,
mips:nlm_xlp_defconfig, mips:cavium_octeon_defconfig, and possibly
other targets, with errors such as

arch/mips/kernel/smp.c:211:2: error:
passing argument 2 of 'cpumask_set_cpu' discards 'volatile' qualifier
from pointer target type
arch/mips/kernel/process.c:52:2: error:
passing argument 2 of 'cpumask_test_cpu' discards 'volatile' qualifier
from pointer target type
arch/mips/cavium-octeon/smp.c:242:2: error:
passing argument 2 of 'cpumask_clear_cpu' discards 'volatile' qualifier
from pointer target type

The problem was introduced with commit 8dd928915a73 (" mips: fix up obsolete cpu
function usage"). I would send a patch to fix it, but I am not sure if removing
'volatile' from the variable declaration(s) would be a good idea.

I don't recall seeing the problem in -next, but unless I am missing something,
the patch never made it into -next to start with.

Guenter
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: mips build failures due to commit 8dd928915a73 (mips: fix up obsolete cpu function usage)

2015-04-20 Thread Aaro Koskinen
Hi,

On Mon, Apr 20, 2015 at 12:40:28PM -0700, Guenter Roeck wrote:
 the upstream kernel fails to build mips:nlm_xlp_defconfig,
 mips:nlm_xlp_defconfig, mips:cavium_octeon_defconfig, and possibly
 other targets, with errors such as
 
 arch/mips/kernel/smp.c:211:2: error:
   passing argument 2 of 'cpumask_set_cpu' discards 'volatile' qualifier
   from pointer target type
 arch/mips/kernel/process.c:52:2: error:
   passing argument 2 of 'cpumask_test_cpu' discards 'volatile' qualifier
   from pointer target type
 arch/mips/cavium-octeon/smp.c:242:2: error:
   passing argument 2 of 'cpumask_clear_cpu' discards 'volatile' qualifier
   from pointer target type
 
 The problem was introduced with commit 8dd928915a73 ( mips: fix up
 obsolete cpu function usage). I would send a patch to fix it, but I
 am not sure if removing 'volatile' from the variable declaration(s)
 would be a good idea.

I think removing volatile from cpu_callin_map declaration should be OK,
since test_cpu (only reader) uses test_bit which takes care of it:

static inline int test_bit(int nr, const volatile unsigned long *addr)

A.
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: mips build failures due to commit 8dd928915a73 (mips: fix up obsolete cpu function usage)

2015-04-20 Thread Guenter Roeck

On 04/20/2015 02:09 PM, Aaro Koskinen wrote:

Hi,

On Mon, Apr 20, 2015 at 12:40:28PM -0700, Guenter Roeck wrote:

the upstream kernel fails to build mips:nlm_xlp_defconfig,
mips:nlm_xlp_defconfig, mips:cavium_octeon_defconfig, and possibly
other targets, with errors such as

arch/mips/kernel/smp.c:211:2: error:
passing argument 2 of 'cpumask_set_cpu' discards 'volatile' qualifier
from pointer target type
arch/mips/kernel/process.c:52:2: error:
passing argument 2 of 'cpumask_test_cpu' discards 'volatile' qualifier
from pointer target type
arch/mips/cavium-octeon/smp.c:242:2: error:
passing argument 2 of 'cpumask_clear_cpu' discards 'volatile' qualifier
from pointer target type

The problem was introduced with commit 8dd928915a73 ( mips: fix up
obsolete cpu function usage). I would send a patch to fix it, but I
am not sure if removing 'volatile' from the variable declaration(s)
would be a good idea.


I think removing volatile from cpu_callin_map declaration should be OK,
since test_cpu (only reader) uses test_bit which takes care of it:

static inline int test_bit(int nr, const volatile unsigned long *addr)



I ran two tests with nlm_xlp_defconfig:

- add volatile to the second argument of cpumask_set_cpu() and 
cpumask_test_cpu():
  vmlinux image size 194664946
- remove volatile from cpu_callin_map:
  vmlinux image size 194664066

Given that, I am not sure I understand the impact of removing volatile
from cpu_callin_map. Maybe it is just better optimization without
volatile. Maybe there is no impact. Maybe the use of volatile is wrong
to start with ('Volatile Considered Harmful' comes into mind).
Maybe the use of volatile for cpu_callin_map is wrong for other architectures
as well (powerpc, ia64). Either case, I don't know to code well enough to
make this call.

Guenter

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: mips build failures due to commit 8dd928915a73 (mips: fix up obsolete cpu function usage)

2015-04-20 Thread Guenter Roeck
On Mon, Apr 20, 2015 at 10:06:42PM +0200, Ralf Baechle wrote:
 On Mon, Apr 20, 2015 at 12:40:28PM -0700, Guenter Roeck wrote:
 
  the upstream kernel fails to build mips:nlm_xlp_defconfig,
  mips:nlm_xlp_defconfig, mips:cavium_octeon_defconfig, and possibly
  other targets, with errors such as
  
  arch/mips/kernel/smp.c:211:2: error:
  passing argument 2 of 'cpumask_set_cpu' discards 'volatile' qualifier
  from pointer target type
  arch/mips/kernel/process.c:52:2: error:
  passing argument 2 of 'cpumask_test_cpu' discards 'volatile' qualifier
  from pointer target type
  arch/mips/cavium-octeon/smp.c:242:2: error:
  passing argument 2 of 'cpumask_clear_cpu' discards 'volatile' qualifier
  from pointer target type
  
  The problem was introduced with commit 8dd928915a73 ( mips: fix up 
  obsolete cpu
  function usage). I would send a patch to fix it, but I am not sure if 
  removing
  'volatile' from the variable declaration(s) would be a good idea.
  
  I don't recall seeing the problem in -next, but unless I am missing 
  something,
  the patch never made it into -next to start with.
 
 It was posted on March 2nd as part of a larger series.  Only this patch
 9/16 was send to linux-mips and when I tested the patch it failed.  Back
 then I blamed it on not having patches 1 to 8 in my test tree so I didn't
 diver deeper into the issue and dropped the patch ...
 

Hi Ralf,

The patch failed all by itself, no context needed ;-). Anyway, since it was part
of a larger series, I would assume that it should have been added to -next as
part of that series, not through the mips tree. For whatever reason that did not
happen ... and as far as I can see, many if not all mips smp builds now fail
in the upstream kernel.

Any idea what the fix should be ?

Thanks,
Guenter
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


mips build failures due to commit 8dd928915a73 (mips: fix up obsolete cpu function usage)

2015-04-20 Thread Guenter Roeck
Hi,

the upstream kernel fails to build mips:nlm_xlp_defconfig,
mips:nlm_xlp_defconfig, mips:cavium_octeon_defconfig, and possibly
other targets, with errors such as

arch/mips/kernel/smp.c:211:2: error:
passing argument 2 of 'cpumask_set_cpu' discards 'volatile' qualifier
from pointer target type
arch/mips/kernel/process.c:52:2: error:
passing argument 2 of 'cpumask_test_cpu' discards 'volatile' qualifier
from pointer target type
arch/mips/cavium-octeon/smp.c:242:2: error:
passing argument 2 of 'cpumask_clear_cpu' discards 'volatile' qualifier
from pointer target type

The problem was introduced with commit 8dd928915a73 ( mips: fix up obsolete cpu
function usage). I would send a patch to fix it, but I am not sure if removing
'volatile' from the variable declaration(s) would be a good idea.

I don't recall seeing the problem in -next, but unless I am missing something,
the patch never made it into -next to start with.

Guenter
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: mips build failures due to commit 8dd928915a73 (mips: fix up obsolete cpu function usage)

2015-04-20 Thread Ralf Baechle
On Mon, Apr 20, 2015 at 12:40:28PM -0700, Guenter Roeck wrote:

 the upstream kernel fails to build mips:nlm_xlp_defconfig,
 mips:nlm_xlp_defconfig, mips:cavium_octeon_defconfig, and possibly
 other targets, with errors such as
 
 arch/mips/kernel/smp.c:211:2: error:
   passing argument 2 of 'cpumask_set_cpu' discards 'volatile' qualifier
   from pointer target type
 arch/mips/kernel/process.c:52:2: error:
   passing argument 2 of 'cpumask_test_cpu' discards 'volatile' qualifier
   from pointer target type
 arch/mips/cavium-octeon/smp.c:242:2: error:
   passing argument 2 of 'cpumask_clear_cpu' discards 'volatile' qualifier
   from pointer target type
 
 The problem was introduced with commit 8dd928915a73 ( mips: fix up obsolete 
 cpu
 function usage). I would send a patch to fix it, but I am not sure if 
 removing
 'volatile' from the variable declaration(s) would be a good idea.
 
 I don't recall seeing the problem in -next, but unless I am missing something,
 the patch never made it into -next to start with.

It was posted on March 2nd as part of a larger series.  Only this patch
9/16 was send to linux-mips and when I tested the patch it failed.  Back
then I blamed it on not having patches 1 to 8 in my test tree so I didn't
diver deeper into the issue and dropped the patch ...

  Ralf
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/