diff options
Diffstat (limited to 'arch/mips/kernel/smtc.c')
-rw-r--r-- | arch/mips/kernel/smtc.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/arch/mips/kernel/smtc.c b/arch/mips/kernel/smtc.c index 5f5af7d4c890..c16bb6d6c25c 100644 --- a/arch/mips/kernel/smtc.c +++ b/arch/mips/kernel/smtc.c | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <linux/clockchips.h> | 20 | #include <linux/clockchips.h> |
21 | #include <linux/kernel.h> | 21 | #include <linux/kernel.h> |
22 | #include <linux/sched.h> | 22 | #include <linux/sched.h> |
23 | #include <linux/smp.h> | ||
23 | #include <linux/cpumask.h> | 24 | #include <linux/cpumask.h> |
24 | #include <linux/interrupt.h> | 25 | #include <linux/interrupt.h> |
25 | #include <linux/kernel_stat.h> | 26 | #include <linux/kernel_stat.h> |
@@ -464,11 +465,8 @@ void smtc_prepare_cpus(int cpus) | |||
464 | smtc_configure_tlb(); | 465 | smtc_configure_tlb(); |
465 | 466 | ||
466 | for (tc = 0, vpe = 0 ; (vpe < nvpe) && (tc < ntc) ; vpe++) { | 467 | for (tc = 0, vpe = 0 ; (vpe < nvpe) && (tc < ntc) ; vpe++) { |
467 | /* | 468 | if (tcpervpe[vpe] == 0) |
468 | * Set the MVP bits. | 469 | continue; |
469 | */ | ||
470 | settc(tc); | ||
471 | write_vpe_c0_vpeconf0(read_vpe_c0_vpeconf0() | VPECONF0_MVP); | ||
472 | if (vpe != 0) | 470 | if (vpe != 0) |
473 | printk(", "); | 471 | printk(", "); |
474 | printk("VPE %d: TC", vpe); | 472 | printk("VPE %d: TC", vpe); |
@@ -487,6 +485,12 @@ void smtc_prepare_cpus(int cpus) | |||
487 | } | 485 | } |
488 | if (vpe != 0) { | 486 | if (vpe != 0) { |
489 | /* | 487 | /* |
488 | * Allow this VPE to control others. | ||
489 | */ | ||
490 | write_vpe_c0_vpeconf0(read_vpe_c0_vpeconf0() | | ||
491 | VPECONF0_MVP); | ||
492 | |||
493 | /* | ||
490 | * Clear any stale software interrupts from VPE's Cause | 494 | * Clear any stale software interrupts from VPE's Cause |
491 | */ | 495 | */ |
492 | write_vpe_c0_cause(0); | 496 | write_vpe_c0_cause(0); |
@@ -924,6 +928,7 @@ void ipi_decode(struct smtc_ipi *pipi) | |||
924 | int irq = MIPS_CPU_IRQ_BASE + 1; | 928 | int irq = MIPS_CPU_IRQ_BASE + 1; |
925 | 929 | ||
926 | smtc_ipi_nq(&freeIPIq, pipi); | 930 | smtc_ipi_nq(&freeIPIq, pipi); |
931 | |||
927 | switch (type_copy) { | 932 | switch (type_copy) { |
928 | case SMTC_CLOCK_TICK: | 933 | case SMTC_CLOCK_TICK: |
929 | irq_enter(); | 934 | irq_enter(); |