aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kernel
diff options
context:
space:
mode:
authorScott Wood <scottwood@freescale.com>2014-03-07 15:48:35 -0500
committerScott Wood <scottwood@freescale.com>2014-03-19 20:57:13 -0400
commit82d86de25b9c99db546e17c6f7ebf9a691da557e (patch)
tree3d977f76fa266367c7faa95567bc72e199a73db5 /arch/powerpc/kernel
parentc4787d1ecfefce86971c1360ed5cef36af6182db (diff)
powerpc/e6500: Make TLB lock recursive
Once special level interrupts are supported, we may take nested TLB misses -- so allow the same thread to acquire the lock recursively. The lock will not be effective against the nested TLB miss handler trying to write the same entry as the interrupted TLB miss handler, but that's also a problem on non-threaded CPUs that lack TLB write conditional. This will be addressed in the patch that enables crit/mc support by invalidating the TLB on return from level exceptions. Signed-off-by: Scott Wood <scottwood@freescale.com>
Diffstat (limited to 'arch/powerpc/kernel')
-rw-r--r--arch/powerpc/kernel/setup_64.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/setup_64.c b/arch/powerpc/kernel/setup_64.c
index da9c42f53bb1..4933909cc5c0 100644
--- a/arch/powerpc/kernel/setup_64.c
+++ b/arch/powerpc/kernel/setup_64.c
@@ -102,6 +102,8 @@ static void setup_tlb_core_data(void)
102{ 102{
103 int cpu; 103 int cpu;
104 104
105 BUILD_BUG_ON(offsetof(struct tlb_core_data, lock) != 0);
106
105 for_each_possible_cpu(cpu) { 107 for_each_possible_cpu(cpu) {
106 int first = cpu_first_thread_sibling(cpu); 108 int first = cpu_first_thread_sibling(cpu);
107 109