diff options
Diffstat (limited to 'arch/mips/kernel/smtc.c')
-rw-r--r-- | arch/mips/kernel/smtc.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/arch/mips/kernel/smtc.c b/arch/mips/kernel/smtc.c index 8a0626cbb108..c16bb6d6c25c 100644 --- a/arch/mips/kernel/smtc.c +++ b/arch/mips/kernel/smtc.c | |||
@@ -465,11 +465,8 @@ void smtc_prepare_cpus(int cpus) | |||
465 | smtc_configure_tlb(); | 465 | smtc_configure_tlb(); |
466 | 466 | ||
467 | for (tc = 0, vpe = 0 ; (vpe < nvpe) && (tc < ntc) ; vpe++) { | 467 | for (tc = 0, vpe = 0 ; (vpe < nvpe) && (tc < ntc) ; vpe++) { |
468 | /* | 468 | if (tcpervpe[vpe] == 0) |
469 | * Set the MVP bits. | 469 | continue; |
470 | */ | ||
471 | settc(tc); | ||
472 | write_vpe_c0_vpeconf0(read_vpe_c0_vpeconf0() | VPECONF0_MVP); | ||
473 | if (vpe != 0) | 470 | if (vpe != 0) |
474 | printk(", "); | 471 | printk(", "); |
475 | printk("VPE %d: TC", vpe); | 472 | printk("VPE %d: TC", vpe); |
@@ -488,6 +485,12 @@ void smtc_prepare_cpus(int cpus) | |||
488 | } | 485 | } |
489 | if (vpe != 0) { | 486 | if (vpe != 0) { |
490 | /* | 487 | /* |
488 | * Allow this VPE to control others. | ||
489 | */ | ||
490 | write_vpe_c0_vpeconf0(read_vpe_c0_vpeconf0() | | ||
491 | VPECONF0_MVP); | ||
492 | |||
493 | /* | ||
491 | * Clear any stale software interrupts from VPE's Cause | 494 | * Clear any stale software interrupts from VPE's Cause |
492 | */ | 495 | */ |
493 | write_vpe_c0_cause(0); | 496 | write_vpe_c0_cause(0); |