diff options
Diffstat (limited to 'arch/arm64/kernel/debug-monitors.c')
| -rw-r--r-- | arch/arm64/kernel/debug-monitors.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/arch/arm64/kernel/debug-monitors.c b/arch/arm64/kernel/debug-monitors.c index 636ba8b6240b..14ba23c61153 100644 --- a/arch/arm64/kernel/debug-monitors.c +++ b/arch/arm64/kernel/debug-monitors.c | |||
| @@ -137,7 +137,6 @@ void disable_debug_monitors(enum debug_el el) | |||
| 137 | static void clear_os_lock(void *unused) | 137 | static void clear_os_lock(void *unused) |
| 138 | { | 138 | { |
| 139 | asm volatile("msr oslar_el1, %0" : : "r" (0)); | 139 | asm volatile("msr oslar_el1, %0" : : "r" (0)); |
| 140 | isb(); | ||
| 141 | } | 140 | } |
| 142 | 141 | ||
| 143 | static int os_lock_notify(struct notifier_block *self, | 142 | static int os_lock_notify(struct notifier_block *self, |
| @@ -156,8 +155,9 @@ static struct notifier_block os_lock_nb = { | |||
| 156 | static int debug_monitors_init(void) | 155 | static int debug_monitors_init(void) |
| 157 | { | 156 | { |
| 158 | /* Clear the OS lock. */ | 157 | /* Clear the OS lock. */ |
| 159 | smp_call_function(clear_os_lock, NULL, 1); | 158 | on_each_cpu(clear_os_lock, NULL, 1); |
| 160 | clear_os_lock(NULL); | 159 | isb(); |
| 160 | local_dbg_enable(); | ||
| 161 | 161 | ||
| 162 | /* Register hotplug handler. */ | 162 | /* Register hotplug handler. */ |
| 163 | register_cpu_notifier(&os_lock_nb); | 163 | register_cpu_notifier(&os_lock_nb); |
| @@ -189,7 +189,7 @@ static void clear_regs_spsr_ss(struct pt_regs *regs) | |||
| 189 | 189 | ||
| 190 | /* EL1 Single Step Handler hooks */ | 190 | /* EL1 Single Step Handler hooks */ |
| 191 | static LIST_HEAD(step_hook); | 191 | static LIST_HEAD(step_hook); |
| 192 | DEFINE_RWLOCK(step_hook_lock); | 192 | static DEFINE_RWLOCK(step_hook_lock); |
| 193 | 193 | ||
| 194 | void register_step_hook(struct step_hook *hook) | 194 | void register_step_hook(struct step_hook *hook) |
| 195 | { | 195 | { |
| @@ -276,7 +276,7 @@ static int single_step_handler(unsigned long addr, unsigned int esr, | |||
| 276 | * Use reader/writer locks instead of plain spinlock. | 276 | * Use reader/writer locks instead of plain spinlock. |
| 277 | */ | 277 | */ |
| 278 | static LIST_HEAD(break_hook); | 278 | static LIST_HEAD(break_hook); |
| 279 | DEFINE_RWLOCK(break_hook_lock); | 279 | static DEFINE_RWLOCK(break_hook_lock); |
| 280 | 280 | ||
| 281 | void register_break_hook(struct break_hook *hook) | 281 | void register_break_hook(struct break_hook *hook) |
| 282 | { | 282 | { |
