linux-mips
[Top] [All Lists]

Re: [PATCH 07/36] Don't assume boot CPU is CPU0 if MIPS_DISABLE_BOOT_CPU

To: David Daney <ddaney@caviumnetworks.com>
Subject: Re: [PATCH 07/36] Don't assume boot CPU is CPU0 if MIPS_DISABLE_BOOT_CPU_ZERO set.
From: Ralf Baechle <ralf@linux-mips.org>
Date: Tue, 28 Oct 2008 06:47:43 +0000
Cc: linux-mips@linux-mips.org, Tomaso Paoletti <tpaoletti@caviumnetworks.com>, Paul Gortmaker <Paul.Gortmaker@windriver.com>
In-reply-to: <1225152181-3221-7-git-send-email-ddaney@caviumnetworks.com>
Original-recipient: rfc822;linux-mips@linux-mips.org
References: <490655B6.4030406@caviumnetworks.com> <1225152181-3221-1-git-send-email-ddaney@caviumnetworks.com> <1225152181-3221-2-git-send-email-ddaney@caviumnetworks.com> <1225152181-3221-3-git-send-email-ddaney@caviumnetworks.com> <1225152181-3221-4-git-send-email-ddaney@caviumnetworks.com> <1225152181-3221-5-git-send-email-ddaney@caviumnetworks.com> <1225152181-3221-6-git-send-email-ddaney@caviumnetworks.com> <1225152181-3221-7-git-send-email-ddaney@caviumnetworks.com>
Sender: linux-mips-bounce@linux-mips.org
User-agent: Mutt/1.5.18 (2008-05-17)
On Mon, Oct 27, 2008 at 05:02:39PM -0700, David Daney wrote:

> MIPS SMP code currently assumes that the boot CPU will be CPU0
> of the system.  For some systems, this may not be the case.

It always the logic CPU 0 though the physical number might be different.

> diff --git a/arch/mips/kernel/smp.c b/arch/mips/kernel/smp.c
> index b79ea70..e2597ef 100644
> --- a/arch/mips/kernel/smp.c
> +++ b/arch/mips/kernel/smp.c
> @@ -195,12 +195,14 @@ void __init smp_prepare_cpus(unsigned int max_cpus)
>  /* preload SMP state for boot cpu */
>  void __devinit smp_prepare_boot_cpu(void)
>  {
> +#ifndef MIPS_DISABLE_BOOT_CPU_ZERO
>       /*
>        * This assumes that bootup is always handled by the processor
>        * with the logic and physical number 0.
>        */
>       __cpu_number_map[0] = 0;
>       __cpu_logical_map[0] = 0;
> +#endif

This assignment is redundant anyway - the kernel is starting with the array
zeroed.  So just remove this entire initialization and do your array
initialization in your mp_ops->smp_setup.

And to tell another dirty secret - the arrays currently happen to be unused
though we should use them at some point ...

  Ralf

<Prev in Thread] Current Thread [Next in Thread>