Skip to content

Commit

Permalink
MIPS: nofpu and nodsp only affect CPU0
Browse files Browse the repository at this point in the history
The "nofpu" and "nodsp" kernel command line options currently do not
affect CPUs that are brought online later in the boot process or
hotplugged at runtime.  It is desirable to apply the nofpu/nodsp options
to all CPUs in the system, so that surprising results are not seen when
a process migrates from one CPU to another.

[Ralf: Moved definitions of mips_fpu_disabled, fpu_disable,
mips_dsp_disabled and dsp_disable from setup.c to cpu-probe.c to allow
making mips_fpu_disabled and mips_dsp_disabled static.]

Signed-off-by: Kevin Cernekee <cernekee@gmail.com>
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Patchwork: http://patchwork.linux-mips.org/patch/1169/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
  • Loading branch information
Kevin Cernekee authored and Ralf Baechle committed May 21, 2010
1 parent 4f1e099 commit 0103d23
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 21 deletions.
30 changes: 30 additions & 0 deletions arch/mips/kernel/cpu-probe.c
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,30 @@ static int __init wait_disable(char *s)

__setup("nowait", wait_disable);

static int __cpuinitdata mips_fpu_disabled;

static int __init fpu_disable(char *s)
{
cpu_data[0].options &= ~MIPS_CPU_FPU;
mips_fpu_disabled = 1;

return 1;
}

__setup("nofpu", fpu_disable);

int __cpuinitdata mips_dsp_disabled;

static int __init dsp_disable(char *s)
{
cpu_data[0].ases &= ~MIPS_ASE_DSP;
mips_dsp_disabled = 1;

return 1;
}

__setup("nodsp", dsp_disable);

void __init check_wait(void)
{
struct cpuinfo_mips *c = &current_cpu_data;
Expand Down Expand Up @@ -982,6 +1006,12 @@ __cpuinit void cpu_probe(void)
*/
BUG_ON(current_cpu_type() != c->cputype);

if (mips_fpu_disabled)
c->options &= ~MIPS_CPU_FPU;

if (mips_dsp_disabled)
c->ases &= ~MIPS_ASE_DSP;

if (c->options & MIPS_CPU_FPU) {
c->fpu_id = cpu_get_fpu_id();

Expand Down
21 changes: 0 additions & 21 deletions arch/mips/kernel/setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -569,27 +569,6 @@ void __init setup_arch(char **cmdline_p)
plat_smp_setup();
}

static int __init fpu_disable(char *s)
{
int i;

for (i = 0; i < NR_CPUS; i++)
cpu_data[i].options &= ~MIPS_CPU_FPU;

return 1;
}

__setup("nofpu", fpu_disable);

static int __init dsp_disable(char *s)
{
cpu_data[0].ases &= ~MIPS_ASE_DSP;

return 1;
}

__setup("nodsp", dsp_disable);

unsigned long kernelsp[NR_CPUS];
unsigned long fw_arg0, fw_arg1, fw_arg2, fw_arg3;

Expand Down

0 comments on commit 0103d23

Please sign in to comment.