public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] MIPS: cavium-octeon: remove checks for CONFIG_CAVIUM_GDB
@ 2014-05-20 16:16 Paul Bolle
  2014-05-21 20:27 ` Andreas Herrmann
  2014-05-22 13:26 ` Ralf Baechle
  0 siblings, 2 replies; 6+ messages in thread
From: Paul Bolle @ 2014-05-20 16:16 UTC (permalink / raw)
  To: Ralf Baechle; +Cc: linux-mips, linux-kernel

Three checks for CONFIG_CAVIUM_GDB were added in v2.6.29. But the
Kconfig symbol CAVIUM_GDB was never added to the tree. Remove these
checks.

Also remove the last reference to octeon_get_boot_debug_flag(). There is
no definition of that function anyway.

Signed-off-by: Paul Bolle <pebolle@tiscali.nl>
---
Untested.

A follow up might be to remove plat_smp_ops.cpus_done. All these
callbacks are now (basically) nops.

 arch/mips/cavium-octeon/setup.c       | 11 -----------
 arch/mips/cavium-octeon/smp.c         | 17 -----------------
 arch/mips/include/asm/octeon/octeon.h |  1 -
 3 files changed, 29 deletions(-)

diff --git a/arch/mips/cavium-octeon/setup.c b/arch/mips/cavium-octeon/setup.c
index 953ca85f84fa..989781fbae76 100644
--- a/arch/mips/cavium-octeon/setup.c
+++ b/arch/mips/cavium-octeon/setup.c
@@ -729,17 +729,6 @@ void __init prom_init(void)
 	octeon_write_lcd("Linux");
 #endif
 
-#ifdef CONFIG_CAVIUM_GDB
-	/*
-	 * When debugging the linux kernel, force the cores to enter
-	 * the debug exception handler to break in.
-	 */
-	if (octeon_get_boot_debug_flag()) {
-		cvmx_write_csr(CVMX_CIU_DINT, 1 << cvmx_get_core_num());
-		cvmx_read_csr(CVMX_CIU_DINT);
-	}
-#endif
-
 	octeon_setup_delays();
 
 	/*
diff --git a/arch/mips/cavium-octeon/smp.c b/arch/mips/cavium-octeon/smp.c
index 67a078ffc464..78e1abebc854 100644
--- a/arch/mips/cavium-octeon/smp.c
+++ b/arch/mips/cavium-octeon/smp.c
@@ -218,15 +218,6 @@ void octeon_prepare_cpus(unsigned int max_cpus)
  */
 static void octeon_smp_finish(void)
 {
-#ifdef CONFIG_CAVIUM_GDB
-	unsigned long tmp;
-	/* Pulse MCD0 signal on Ctrl-C to stop all the cores. Also set the MCD0
-	   to be not masked by this core so we know the signal is received by
-	   someone */
-	asm volatile ("dmfc0 %0, $22\n"
-		      "ori   %0, %0, 0x9100\n" "dmtc0 %0, $22\n" : "=r" (tmp));
-#endif
-
 	octeon_user_io_init();
 
 	/* to generate the first CPU timer interrupt */
@@ -239,14 +230,6 @@ static void octeon_smp_finish(void)
  */
 static void octeon_cpus_done(void)
 {
-#ifdef CONFIG_CAVIUM_GDB
-	unsigned long tmp;
-	/* Pulse MCD0 signal on Ctrl-C to stop all the cores. Also set the MCD0
-	   to be not masked by this core so we know the signal is received by
-	   someone */
-	asm volatile ("dmfc0 %0, $22\n"
-		      "ori   %0, %0, 0x9100\n" "dmtc0 %0, $22\n" : "=r" (tmp));
-#endif
 }
 
 #ifdef CONFIG_HOTPLUG_CPU
diff --git a/arch/mips/include/asm/octeon/octeon.h b/arch/mips/include/asm/octeon/octeon.h
index f5d77b91537f..d781f9e66884 100644
--- a/arch/mips/include/asm/octeon/octeon.h
+++ b/arch/mips/include/asm/octeon/octeon.h
@@ -211,7 +211,6 @@ union octeon_cvmemctl {
 
 extern void octeon_write_lcd(const char *s);
 extern void octeon_check_cpu_bist(void);
-extern int octeon_get_boot_debug_flag(void);
 extern int octeon_get_boot_uart(void);
 
 struct uart_port;
-- 
1.9.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH] MIPS: cavium-octeon: remove checks for CONFIG_CAVIUM_GDB
  2014-05-20 16:16 [PATCH] MIPS: cavium-octeon: remove checks for CONFIG_CAVIUM_GDB Paul Bolle
@ 2014-05-21 20:27 ` Andreas Herrmann
  2014-05-21 20:44   ` Paul Bolle
  2014-05-22 13:26 ` Ralf Baechle
  1 sibling, 1 reply; 6+ messages in thread
From: Andreas Herrmann @ 2014-05-21 20:27 UTC (permalink / raw)
  To: Paul Bolle; +Cc: Ralf Baechle, linux-mips, linux-kernel

On Tue, May 20, 2014 at 06:16:14PM +0200, Paul Bolle wrote:
> Three checks for CONFIG_CAVIUM_GDB were added in v2.6.29. But the
> Kconfig symbol CAVIUM_GDB was never added to the tree. Remove these
> checks.
> 
> Also remove the last reference to octeon_get_boot_debug_flag(). There is
> no definition of that function anyway.

Hmm, yes, this was added with commit
5b3b16880f404ca54126210ca86141cceeafc0cf (MIPS: Add Cavium OCTEON
processor support files to arch/mips/cavium-octeon.) and incomplete
ever since (in mainline kernel).
 
> Signed-off-by: Paul Bolle <pebolle@tiscali.nl>
> ---
> Untested.

Removing this dead code shouldn't harm. I also did a quick test of a
kernel with your patch with an octeon system -- as expected no issues
observed. (So it's
Tested-by: Andreas Herrmann <andreas.herrmann@caviumnetworks.com>)

> A follow up might be to remove plat_smp_ops.cpus_done. All these
> callbacks are now (basically) nops.

I am not sure about completely removing cpus_done from
plat_smp_ops. Maybe some platform will really make use of this in the
future.


Thanks,
Andreas
 
>  arch/mips/cavium-octeon/setup.c       | 11 -----------
>  arch/mips/cavium-octeon/smp.c         | 17 -----------------
>  arch/mips/include/asm/octeon/octeon.h |  1 -
>  3 files changed, 29 deletions(-)
> 
> diff --git a/arch/mips/cavium-octeon/setup.c b/arch/mips/cavium-octeon/setup.c
> index 953ca85f84fa..989781fbae76 100644
> --- a/arch/mips/cavium-octeon/setup.c
> +++ b/arch/mips/cavium-octeon/setup.c
> @@ -729,17 +729,6 @@ void __init prom_init(void)
>  	octeon_write_lcd("Linux");
>  #endif
>  
> -#ifdef CONFIG_CAVIUM_GDB
> -	/*
> -	 * When debugging the linux kernel, force the cores to enter
> -	 * the debug exception handler to break in.
> -	 */
> -	if (octeon_get_boot_debug_flag()) {
> -		cvmx_write_csr(CVMX_CIU_DINT, 1 << cvmx_get_core_num());
> -		cvmx_read_csr(CVMX_CIU_DINT);
> -	}
> -#endif
> -
>  	octeon_setup_delays();
>  
>  	/*
> diff --git a/arch/mips/cavium-octeon/smp.c b/arch/mips/cavium-octeon/smp.c
> index 67a078ffc464..78e1abebc854 100644
> --- a/arch/mips/cavium-octeon/smp.c
> +++ b/arch/mips/cavium-octeon/smp.c
> @@ -218,15 +218,6 @@ void octeon_prepare_cpus(unsigned int max_cpus)
>   */
>  static void octeon_smp_finish(void)
>  {
> -#ifdef CONFIG_CAVIUM_GDB
> -	unsigned long tmp;
> -	/* Pulse MCD0 signal on Ctrl-C to stop all the cores. Also set the MCD0
> -	   to be not masked by this core so we know the signal is received by
> -	   someone */
> -	asm volatile ("dmfc0 %0, $22\n"
> -		      "ori   %0, %0, 0x9100\n" "dmtc0 %0, $22\n" : "=r" (tmp));
> -#endif
> -
>  	octeon_user_io_init();
>  
>  	/* to generate the first CPU timer interrupt */
> @@ -239,14 +230,6 @@ static void octeon_smp_finish(void)
>   */
>  static void octeon_cpus_done(void)
>  {
> -#ifdef CONFIG_CAVIUM_GDB
> -	unsigned long tmp;
> -	/* Pulse MCD0 signal on Ctrl-C to stop all the cores. Also set the MCD0
> -	   to be not masked by this core so we know the signal is received by
> -	   someone */
> -	asm volatile ("dmfc0 %0, $22\n"
> -		      "ori   %0, %0, 0x9100\n" "dmtc0 %0, $22\n" : "=r" (tmp));
> -#endif
>  }
>  
>  #ifdef CONFIG_HOTPLUG_CPU
> diff --git a/arch/mips/include/asm/octeon/octeon.h b/arch/mips/include/asm/octeon/octeon.h
> index f5d77b91537f..d781f9e66884 100644
> --- a/arch/mips/include/asm/octeon/octeon.h
> +++ b/arch/mips/include/asm/octeon/octeon.h
> @@ -211,7 +211,6 @@ union octeon_cvmemctl {
>  
>  extern void octeon_write_lcd(const char *s);
>  extern void octeon_check_cpu_bist(void);
> -extern int octeon_get_boot_debug_flag(void);
>  extern int octeon_get_boot_uart(void);
>  
>  struct uart_port;
> -- 
> 1.9.0
> 
> 

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] MIPS: cavium-octeon: remove checks for CONFIG_CAVIUM_GDB
  2014-05-21 20:27 ` Andreas Herrmann
@ 2014-05-21 20:44   ` Paul Bolle
  0 siblings, 0 replies; 6+ messages in thread
From: Paul Bolle @ 2014-05-21 20:44 UTC (permalink / raw)
  To: Andreas Herrmann; +Cc: Ralf Baechle, linux-mips, linux-kernel

On Wed, 2014-05-21 at 22:27 +0200, Andreas Herrmann wrote:
> On Tue, May 20, 2014 at 06:16:14PM +0200, Paul Bolle wrote:
> > Three checks for CONFIG_CAVIUM_GDB were added in v2.6.29. But the
> > Kconfig symbol CAVIUM_GDB was never added to the tree. Remove these
> > checks.
> > 
> > Also remove the last reference to octeon_get_boot_debug_flag(). There is
> > no definition of that function anyway.
> 
> Hmm, yes, this was added with commit
> 5b3b16880f404ca54126210ca86141cceeafc0cf (MIPS: Add Cavium OCTEON
> processor support files to arch/mips/cavium-octeon.) and incomplete
> ever since (in mainline kernel).

I've decided not to mention the exact commits, and only mention
releases, if problems are rather old. Ie, v2.6.29 should mean, to most
observers, "a long time ago".
 
> > Signed-off-by: Paul Bolle <pebolle@tiscali.nl>
> > ---
> > Untested.
> 
> Removing this dead code shouldn't harm. I also did a quick test of a
> kernel with your patch with an octeon system -- as expected no issues
> observed. (So it's
> Tested-by: Andreas Herrmann <andreas.herrmann@caviumnetworks.com>)

That's great, thanks!

> > A follow up might be to remove plat_smp_ops.cpus_done. All these
> > callbacks are now (basically) nops.
> 
> I am not sure about completely removing cpus_done from
> plat_smp_ops. Maybe some platform will really make use of this in the
> future.

My view is that cpus_done should just be re-added if that happens.


Paul Bolle


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] MIPS: cavium-octeon: remove checks for CONFIG_CAVIUM_GDB
  2014-05-20 16:16 [PATCH] MIPS: cavium-octeon: remove checks for CONFIG_CAVIUM_GDB Paul Bolle
  2014-05-21 20:27 ` Andreas Herrmann
@ 2014-05-22 13:26 ` Ralf Baechle
  2014-05-23 21:37   ` Andreas Herrmann
  1 sibling, 1 reply; 6+ messages in thread
From: Ralf Baechle @ 2014-05-22 13:26 UTC (permalink / raw)
  To: Paul Bolle; +Cc: linux-mips, linux-kernel

On Tue, May 20, 2014 at 06:16:14PM +0200, Paul Bolle wrote:

> Three checks for CONFIG_CAVIUM_GDB were added in v2.6.29. But the
> Kconfig symbol CAVIUM_GDB was never added to the tree. Remove these
> checks.
> 
> Also remove the last reference to octeon_get_boot_debug_flag(). There is
> no definition of that function anyway.
> 
> Signed-off-by: Paul Bolle <pebolle@tiscali.nl>

Queued for 3.16.  Thanks Paul & Andreas!

> A follow up might be to remove plat_smp_ops.cpus_done. All these
> callbacks are now (basically) nops.

I'll think about it.  The hook is no useful if unused then again now and
then ordering issues in SMP startup of secondary CPUs are showing up and
it may be useful to solve those.  Maybe something like

void __init smp_cpus_done(unsigned int max_cpus)
{
- 	mp_ops->cpus_done();
+ 	if (cpus_done)
+ 		mp_ops->cpus_done();
}

which would make a NULL cpus_done function pointer safe and allow empty definitions
to be removed.

  Ralf

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] MIPS: cavium-octeon: remove checks for CONFIG_CAVIUM_GDB
  2014-05-22 13:26 ` Ralf Baechle
@ 2014-05-23 21:37   ` Andreas Herrmann
  2014-05-27  9:05     ` Ralf Baechle
  0 siblings, 1 reply; 6+ messages in thread
From: Andreas Herrmann @ 2014-05-23 21:37 UTC (permalink / raw)
  To: Ralf Baechle; +Cc: Paul Bolle, linux-mips, linux-kernel

On Thu, May 22, 2014 at 03:26:45PM +0200, Ralf Baechle wrote:
> On Tue, May 20, 2014 at 06:16:14PM +0200, Paul Bolle wrote:
> 
> > Three checks for CONFIG_CAVIUM_GDB were added in v2.6.29. But the
> > Kconfig symbol CAVIUM_GDB was never added to the tree. Remove these
> > checks.
> > 
> > Also remove the last reference to octeon_get_boot_debug_flag(). There is
> > no definition of that function anyway.
> > 
> > Signed-off-by: Paul Bolle <pebolle@tiscali.nl>
> 
> Queued for 3.16.  Thanks Paul & Andreas!
> 
> > A follow up might be to remove plat_smp_ops.cpus_done. All these
> > callbacks are now (basically) nops.
> 
> I'll think about it.  The hook is no useful if unused then again now and
> then ordering issues in SMP startup of secondary CPUs are showing up and
> it may be useful to solve those.  Maybe something like
> 
> void __init smp_cpus_done(unsigned int max_cpus)
> {
> - 	mp_ops->cpus_done();
> + 	if (cpus_done)
> + 		mp_ops->cpus_done();
> }
> 
> which would make a NULL cpus_done function pointer safe and allow empty definitions
> to be removed.

I'd prefer this solution over complete removal of the hook.


Andreas

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] MIPS: cavium-octeon: remove checks for CONFIG_CAVIUM_GDB
  2014-05-23 21:37   ` Andreas Herrmann
@ 2014-05-27  9:05     ` Ralf Baechle
  0 siblings, 0 replies; 6+ messages in thread
From: Ralf Baechle @ 2014-05-27  9:05 UTC (permalink / raw)
  To: Andreas Herrmann; +Cc: Paul Bolle, linux-mips, linux-kernel

On Fri, May 23, 2014 at 11:37:01PM +0200, Andreas Herrmann wrote:

> > void __init smp_cpus_done(unsigned int max_cpus)
> > {
> > - 	mp_ops->cpus_done();
> > + 	if (cpus_done)
> > + 		mp_ops->cpus_done();
> > }
> > 
> > which would make a NULL cpus_done function pointer safe and allow empty definitions
> > to be removed.
> 
> I'd prefer this solution over complete removal of the hook.

In the end that's what I just did.

Which leaves smp_cpus_done() empty.  I think I'm going to put in a
function to print a summary of CPUs booted but that's for another
patch.

  Ralf

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2014-05-27  9:05 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-05-20 16:16 [PATCH] MIPS: cavium-octeon: remove checks for CONFIG_CAVIUM_GDB Paul Bolle
2014-05-21 20:27 ` Andreas Herrmann
2014-05-21 20:44   ` Paul Bolle
2014-05-22 13:26 ` Ralf Baechle
2014-05-23 21:37   ` Andreas Herrmann
2014-05-27  9:05     ` Ralf Baechle

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox