diff options
author | Christopher Kenna <cjk@cs.unc.edu> | 2012-10-19 00:29:15 -0400 |
---|---|---|
committer | Christopher Kenna <cjk@cs.unc.edu> | 2012-10-19 00:29:15 -0400 |
commit | 2326b2b05adee72ad7fa811e3a766355c732cfda (patch) | |
tree | 20abd3f4f192b29739ea11f8aa1d243839430cbf /litmus/lockdown.c | |
parent | 3b286b3c7d25f2abd71ccb7853d1398430a65552 (diff) |
Try and debug the queue.wip-mc
Diffstat (limited to 'litmus/lockdown.c')
-rw-r--r-- | litmus/lockdown.c | 83 |
1 files changed, 56 insertions, 27 deletions
diff --git a/litmus/lockdown.c b/litmus/lockdown.c index f1da7b4145d..bd24b5839bc 100644 --- a/litmus/lockdown.c +++ b/litmus/lockdown.c | |||
@@ -9,16 +9,70 @@ | |||
9 | #include <linux/math64.h> | 9 | #include <linux/math64.h> |
10 | #include <linux/vmalloc.h> | 10 | #include <linux/vmalloc.h> |
11 | #include <linux/slab.h> | 11 | #include <linux/slab.h> |
12 | #include <linux/sched.h> | ||
12 | 13 | ||
14 | #include <litmus/litmus.h> | ||
13 | #include <litmus/clock.h> | 15 | #include <litmus/clock.h> |
14 | 16 | ||
17 | #ifdef CONFIG_CPU_V7 | ||
15 | #include <asm/hardware/cache-l2x0.h> | 18 | #include <asm/hardware/cache-l2x0.h> |
16 | #include <asm/cacheflush.h> | 19 | #include <asm/cacheflush.h> |
20 | #endif | ||
17 | 21 | ||
18 | #include <litmus/color.h> | 22 | #include <litmus/color.h> |
19 | #include <litmus/debug_trace.h> | 23 | #include <litmus/debug_trace.h> |
20 | #include <litmus/lockdown.h> | 24 | #include <litmus/lockdown.h> |
21 | 25 | ||
26 | |||
27 | #define MAX_NR_WAYS 16 | ||
28 | |||
29 | /* | ||
30 | * unlocked_way[i] : allocation can occur in way i | ||
31 | * | ||
32 | * 0 = allocation can occur in the corresponding way | ||
33 | * 1 = allocation cannot occur in the corresponding way | ||
34 | */ | ||
35 | u32 unlocked_way[MAX_NR_WAYS] = { | ||
36 | 0xFFFFFFFE, /* way 0 unlocked */ | ||
37 | 0xFFFFFFFD, | ||
38 | 0xFFFFFFFB, | ||
39 | 0xFFFFFFF7, | ||
40 | 0xFFFFFFEF, /* way 4 unlocked */ | ||
41 | 0xFFFFFFDF, | ||
42 | 0xFFFFFFBF, | ||
43 | 0xFFFFFF7F, | ||
44 | 0xFFFFFEFF, /* way 8 unlocked */ | ||
45 | 0xFFFFFDFF, | ||
46 | 0xFFFFFBFF, | ||
47 | 0xFFFFF7FF, | ||
48 | 0xFFFFEFFF, /* way 12 unlocked */ | ||
49 | 0xFFFFDFFF, | ||
50 | 0xFFFFBFFF, | ||
51 | 0xFFFF7FFF, | ||
52 | }; | ||
53 | |||
54 | #ifndef CONFIG_CPU_V7 | ||
55 | u32 color_read_in_mem(u32 lock_val, u32 unlock_val, void *start, void *end) | ||
56 | { | ||
57 | TRACE_CUR("Dummy read_in_mem: lock_val: 0x%x unlock_val: 0x%x " | ||
58 | "start: 0x%p end: 0x%p\n", lock_val, unlock_val, | ||
59 | start, end); | ||
60 | return 0; | ||
61 | } | ||
62 | |||
63 | void set_lockdown(u32 lockdown_state) | ||
64 | { | ||
65 | TRACE_CUR("Dummy set_lockdown function lockdown_state: 0x%x\n", | ||
66 | lockdown_state); | ||
67 | } | ||
68 | |||
69 | void litmus_setup_lockdown(void __iomem *base, u32 id) | ||
70 | { | ||
71 | printk("LITMUS^RT Dummy Lockdown\n"); | ||
72 | } | ||
73 | |||
74 | #else | ||
75 | |||
22 | static void __iomem *cache_base; | 76 | static void __iomem *cache_base; |
23 | static void __iomem *lockreg_d; | 77 | static void __iomem *lockreg_d; |
24 | static void __iomem *lockreg_i; | 78 | static void __iomem *lockreg_i; |
@@ -38,8 +92,6 @@ struct mutex lockdown_proc; | |||
38 | void __iomem *__v = cache_base + L2X0_LOCKDOWN_WAY_I_BASE + \ | 92 | void __iomem *__v = cache_base + L2X0_LOCKDOWN_WAY_I_BASE + \ |
39 | __cpu * L2X0_LOCKDOWN_STRIDE; __v; }) | 93 | __cpu * L2X0_LOCKDOWN_STRIDE; __v; }) |
40 | 94 | ||
41 | #define MAX_NR_WAYS 16 | ||
42 | |||
43 | void set_lockdown(u32 lockdown_state) | 95 | void set_lockdown(u32 lockdown_state) |
44 | { | 96 | { |
45 | writel_relaxed(lockdown_state, lockreg_d); | 97 | writel_relaxed(lockdown_state, lockreg_d); |
@@ -91,31 +143,6 @@ void color_flush_page(void *vaddr) | |||
91 | v7_flush_kern_dcache_area(vaddr, PAGE_SIZE); | 143 | v7_flush_kern_dcache_area(vaddr, PAGE_SIZE); |
92 | } | 144 | } |
93 | 145 | ||
94 | /* | ||
95 | * unlocked_way[i] : allocation can occur in way i | ||
96 | * | ||
97 | * 0 = allocation can occur in the corresponding way | ||
98 | * 1 = allocation cannot occur in the corresponding way | ||
99 | */ | ||
100 | u32 unlocked_way[MAX_NR_WAYS] = { | ||
101 | 0xFFFFFFFE, /* way 0 unlocked */ | ||
102 | 0xFFFFFFFD, | ||
103 | 0xFFFFFFFB, | ||
104 | 0xFFFFFFF7, | ||
105 | 0xFFFFFFEF, /* way 4 unlocked */ | ||
106 | 0xFFFFFFDF, | ||
107 | 0xFFFFFFBF, | ||
108 | 0xFFFFFF7F, | ||
109 | 0xFFFFFEFF, /* way 8 unlocked */ | ||
110 | 0xFFFFFDFF, | ||
111 | 0xFFFFFBFF, | ||
112 | 0xFFFFF7FF, | ||
113 | 0xFFFFEFFF, /* way 12 unlocked */ | ||
114 | 0xFFFFDFFF, | ||
115 | 0xFFFFBFFF, | ||
116 | 0xFFFF7FFF, | ||
117 | }; | ||
118 | |||
119 | static void print_lockdown_registers(void) | 146 | static void print_lockdown_registers(void) |
120 | { | 147 | { |
121 | int i; | 148 | int i; |
@@ -641,3 +668,5 @@ void litmus_setup_lockdown(void __iomem *base, u32 id) | |||
641 | 668 | ||
642 | test_lockdown(NULL); | 669 | test_lockdown(NULL); |
643 | } | 670 | } |
671 | |||
672 | #endif | ||