diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2009-07-23 19:15:10 -0400 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2009-08-19 20:12:37 -0400 |
commit | fcce810986b3f32a8322faf240f8cc5560a4c463 (patch) | |
tree | 4ee99143e18a008c52a274d74c1cc11055983bc6 /arch/powerpc/include/asm/cputhreads.h | |
parent | 6c1719942e19936044c4673b18afa26e45a02320 (diff) |
powerpc/mm: Add HW threads support to no_hash TLB management
The current "no hash" MMU context management code is written with
the assumption that one CPU == one TLB. This is not the case on
implementations that support HW multithreading, where several
linux CPUs can share the same TLB.
This adds some basic support for this to our context management
and our TLB flushing code.
It also cleans up the optional debugging output a bit
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/include/asm/cputhreads.h')
-rw-r--r-- | arch/powerpc/include/asm/cputhreads.h | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/arch/powerpc/include/asm/cputhreads.h b/arch/powerpc/include/asm/cputhreads.h index fb11b0c459b8..a8e18447c62b 100644 --- a/arch/powerpc/include/asm/cputhreads.h +++ b/arch/powerpc/include/asm/cputhreads.h | |||
@@ -5,6 +5,15 @@ | |||
5 | 5 | ||
6 | /* | 6 | /* |
7 | * Mapping of threads to cores | 7 | * Mapping of threads to cores |
8 | * | ||
9 | * Note: This implementation is limited to a power of 2 number of | ||
10 | * threads per core and the same number for each core in the system | ||
11 | * (though it would work if some processors had less threads as long | ||
12 | * as the CPU numbers are still allocated, just not brought offline). | ||
13 | * | ||
14 | * However, the API allows for a different implementation in the future | ||
15 | * if needed, as long as you only use the functions and not the variables | ||
16 | * directly. | ||
8 | */ | 17 | */ |
9 | 18 | ||
10 | #ifdef CONFIG_SMP | 19 | #ifdef CONFIG_SMP |
@@ -67,5 +76,12 @@ static inline int cpu_first_thread_in_core(int cpu) | |||
67 | return cpu & ~(threads_per_core - 1); | 76 | return cpu & ~(threads_per_core - 1); |
68 | } | 77 | } |
69 | 78 | ||
79 | static inline int cpu_last_thread_in_core(int cpu) | ||
80 | { | ||
81 | return cpu | (threads_per_core - 1); | ||
82 | } | ||
83 | |||
84 | |||
85 | |||
70 | #endif /* _ASM_POWERPC_CPUTHREADS_H */ | 86 | #endif /* _ASM_POWERPC_CPUTHREADS_H */ |
71 | 87 | ||