diff options
Diffstat (limited to 'arch/x86/kernel/alternative.c')
-rw-r--r-- | arch/x86/kernel/alternative.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/arch/x86/kernel/alternative.c b/arch/x86/kernel/alternative.c index de7353c0ce9c..3c13284ff86d 100644 --- a/arch/x86/kernel/alternative.c +++ b/arch/x86/kernel/alternative.c | |||
@@ -390,6 +390,22 @@ void alternatives_smp_switch(int smp) | |||
390 | mutex_unlock(&smp_alt); | 390 | mutex_unlock(&smp_alt); |
391 | } | 391 | } |
392 | 392 | ||
393 | /* Return 1 if the address range is reserved for smp-alternatives */ | ||
394 | int alternatives_text_reserved(void *start, void *end) | ||
395 | { | ||
396 | struct smp_alt_module *mod; | ||
397 | u8 **ptr; | ||
398 | |||
399 | list_for_each_entry(mod, &smp_alt_modules, next) { | ||
400 | if (mod->text > end || mod->text_end < start) | ||
401 | continue; | ||
402 | for (ptr = mod->locks; ptr < mod->locks_end; ptr++) | ||
403 | if (start <= *ptr && end >= *ptr) | ||
404 | return 1; | ||
405 | } | ||
406 | |||
407 | return 0; | ||
408 | } | ||
393 | #endif | 409 | #endif |
394 | 410 | ||
395 | #ifdef CONFIG_PARAVIRT | 411 | #ifdef CONFIG_PARAVIRT |