linux-mips
[Top] [All Lists]

[PATCH] Move Cross VPE writes to a latter stage in loop after a TC is as

To: linux-mips@linux-mips.org
Subject: [PATCH] Move Cross VPE writes to a latter stage in loop after a TC is assigned to VPE.
From: Raghu Gandham <raghu@mips.com>
Date: Wed, 08 Jul 2009 19:22:35 -0700
Cc: raghu@mips.com, chris@mips.com
Original-recipient: rfc822;linux-mips@linux-mips.org
Sender: linux-mips-bounce@linux-mips.org
User-agent: StGIT/0.14.3
From: Kurt Martin <kurt@mips.com>

This patch was part of the series of patches I sent previously. In this 
version, I
accomodated and tested Kevin D.Kissel's  suggestion. Also the case when
no TCs are assigned to a VPE is checked.

Signed-off-by: Chris Dearman <chris@mips.com>
Signed-off-by: Raghu Gandham <raghu@mips.com>
---

 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 8a0626c..c16bb6d 100644
--- a/arch/mips/kernel/smtc.c
+++ b/arch/mips/kernel/smtc.c
@@ -465,11 +465,8 @@ void smtc_prepare_cpus(int cpus)
        smtc_configure_tlb();
 
        for (tc = 0, vpe = 0 ; (vpe < nvpe) && (tc < ntc) ; vpe++) {
-               /*
-                * Set the MVP bits.
-                */
-               settc(tc);
-               write_vpe_c0_vpeconf0(read_vpe_c0_vpeconf0() | VPECONF0_MVP);
+               if (tcpervpe[vpe] == 0)
+                       continue;
                if (vpe != 0)
                        printk(", ");
                printk("VPE %d: TC", vpe);
@@ -488,6 +485,12 @@ void smtc_prepare_cpus(int cpus)
                }
                if (vpe != 0) {
                        /*
+                        * Allow this VPE to control others.
+                        */
+                       write_vpe_c0_vpeconf0(read_vpe_c0_vpeconf0() |
+                                             VPECONF0_MVP);
+
+                       /*
                         * Clear any stale software interrupts from VPE's Cause
                         */
                        write_vpe_c0_cause(0);


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