aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-sparc64
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2006-01-31 21:31:38 -0500
committerDavid S. Miller <davem@sunset.davemloft.net>2006-03-20 04:11:18 -0500
commitbd40791e1d289d807b8580abe1f117e9c62894e4 (patch)
tree2b47e24c8dc0e668dfd7ba0e3879165180c49c65 /include/asm-sparc64
parent98c5584cfc47932c4f3ccf5eee2e0bae1447b85e (diff)
[SPARC64]: Dynamically grow TSB in response to RSS growth.
As the RSS grows, grow the TSB in order to reduce the likelyhood of hash collisions and thus poor hit rates in the TSB. This definitely needs some serious tuning. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/asm-sparc64')
-rw-r--r--include/asm-sparc64/mmu.h1
-rw-r--r--include/asm-sparc64/mmu_context.h7
2 files changed, 8 insertions, 0 deletions
diff --git a/include/asm-sparc64/mmu.h b/include/asm-sparc64/mmu.h
index 2effeba2476c..76008ff6a90b 100644
--- a/include/asm-sparc64/mmu.h
+++ b/include/asm-sparc64/mmu.h
@@ -100,6 +100,7 @@ struct tsb {
100typedef struct { 100typedef struct {
101 unsigned long sparc64_ctx_val; 101 unsigned long sparc64_ctx_val;
102 struct tsb *tsb; 102 struct tsb *tsb;
103 unsigned long tsb_rss_limit;
103 unsigned long tsb_nentries; 104 unsigned long tsb_nentries;
104 unsigned long tsb_reg_val; 105 unsigned long tsb_reg_val;
105 unsigned long tsb_map_vaddr; 106 unsigned long tsb_map_vaddr;
diff --git a/include/asm-sparc64/mmu_context.h b/include/asm-sparc64/mmu_context.h
index 0a950f151d2b..1d232678821d 100644
--- a/include/asm-sparc64/mmu_context.h
+++ b/include/asm-sparc64/mmu_context.h
@@ -32,6 +32,13 @@ static inline void tsb_context_switch(struct mm_struct *mm)
32 mm->context.tsb_map_pte); 32 mm->context.tsb_map_pte);
33} 33}
34 34
35extern void tsb_grow(struct mm_struct *mm, unsigned long mm_rss, gfp_t gfp_flags);
36#ifdef CONFIG_SMP
37extern void smp_tsb_sync(struct mm_struct *mm);
38#else
39#define smp_tsb_sync(__mm) do { } while (0)
40#endif
41
35/* Set MMU context in the actual hardware. */ 42/* Set MMU context in the actual hardware. */
36#define load_secondary_context(__mm) \ 43#define load_secondary_context(__mm) \
37 __asm__ __volatile__("stxa %0, [%1] %2\n\t" \ 44 __asm__ __volatile__("stxa %0, [%1] %2\n\t" \