diff options
Diffstat (limited to 'arch/sh/mm/cache.c')
| -rw-r--r-- | arch/sh/mm/cache.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/arch/sh/mm/cache.c b/arch/sh/mm/cache.c index b8607fa7ae12..0f4095d7ac8b 100644 --- a/arch/sh/mm/cache.c +++ b/arch/sh/mm/cache.c | |||
| @@ -2,7 +2,7 @@ | |||
| 2 | * arch/sh/mm/cache.c | 2 | * arch/sh/mm/cache.c |
| 3 | * | 3 | * |
| 4 | * Copyright (C) 1999, 2000, 2002 Niibe Yutaka | 4 | * Copyright (C) 1999, 2000, 2002 Niibe Yutaka |
| 5 | * Copyright (C) 2002 - 2009 Paul Mundt | 5 | * Copyright (C) 2002 - 2010 Paul Mundt |
| 6 | * | 6 | * |
| 7 | * Released under the terms of the GNU GPL v2.0. | 7 | * Released under the terms of the GNU GPL v2.0. |
| 8 | */ | 8 | */ |
| @@ -41,8 +41,17 @@ static inline void cacheop_on_each_cpu(void (*func) (void *info), void *info, | |||
| 41 | int wait) | 41 | int wait) |
| 42 | { | 42 | { |
| 43 | preempt_disable(); | 43 | preempt_disable(); |
| 44 | smp_call_function(func, info, wait); | 44 | |
| 45 | /* | ||
| 46 | * It's possible that this gets called early on when IRQs are | ||
| 47 | * still disabled due to ioremapping by the boot CPU, so don't | ||
| 48 | * even attempt IPIs unless there are other CPUs online. | ||
| 49 | */ | ||
| 50 | if (num_online_cpus() > 1) | ||
| 51 | smp_call_function(func, info, wait); | ||
| 52 | |||
| 45 | func(info); | 53 | func(info); |
| 54 | |||
| 46 | preempt_enable(); | 55 | preempt_enable(); |
| 47 | } | 56 | } |
| 48 | 57 | ||
