diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-06-15 19:52:35 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-06-15 19:52:35 -0400 |
| commit | a95f9b6e092ed862278e08266207c7ab231076b4 (patch) | |
| tree | c5daf86ce89b3033c051dfc7b2955981d6add16d /mm | |
| parent | a41b0e71563166762ee9d4905f3aa518a9348ed4 (diff) | |
| parent | 4a1e001d2bb75c47a9cdbbfb66ae51daff1ddcba (diff) | |
Merge branch 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull core updates (RCU and locking) from Ingo Molnar:
"Most of the diffstat comes from the RCU slow boot regression fixes,
but there's also a debuggability improvements/fixes."
* 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
memblock: Document memblock_is_region_{memory,reserved}()
rcu: Precompute RCU_FAST_NO_HZ timer offsets
rcu: Move RCU_FAST_NO_HZ per-CPU variables to rcu_dynticks structure
rcu: Update RCU_FAST_NO_HZ tracing for lazy callbacks
rcu: RCU_FAST_NO_HZ detection of callback adoption
spinlock: Indicate that a lockup is only suspected
kdump: Execute kmsg_dump(KMSG_DUMP_PANIC) after smp_send_stop()
panic: Make panic_on_oops configurable
Diffstat (limited to 'mm')
| -rw-r--r-- | mm/memblock.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/mm/memblock.c b/mm/memblock.c index 952123eba433..32a0a5e4d79d 100644 --- a/mm/memblock.c +++ b/mm/memblock.c | |||
| @@ -867,6 +867,16 @@ int __init_memblock memblock_is_memory(phys_addr_t addr) | |||
| 867 | return memblock_search(&memblock.memory, addr) != -1; | 867 | return memblock_search(&memblock.memory, addr) != -1; |
| 868 | } | 868 | } |
| 869 | 869 | ||
| 870 | /** | ||
| 871 | * memblock_is_region_memory - check if a region is a subset of memory | ||
| 872 | * @base: base of region to check | ||
| 873 | * @size: size of region to check | ||
| 874 | * | ||
| 875 | * Check if the region [@base, @base+@size) is a subset of a memory block. | ||
| 876 | * | ||
| 877 | * RETURNS: | ||
| 878 | * 0 if false, non-zero if true | ||
| 879 | */ | ||
| 870 | int __init_memblock memblock_is_region_memory(phys_addr_t base, phys_addr_t size) | 880 | int __init_memblock memblock_is_region_memory(phys_addr_t base, phys_addr_t size) |
| 871 | { | 881 | { |
| 872 | int idx = memblock_search(&memblock.memory, base); | 882 | int idx = memblock_search(&memblock.memory, base); |
| @@ -879,6 +889,16 @@ int __init_memblock memblock_is_region_memory(phys_addr_t base, phys_addr_t size | |||
| 879 | memblock.memory.regions[idx].size) >= end; | 889 | memblock.memory.regions[idx].size) >= end; |
| 880 | } | 890 | } |
| 881 | 891 | ||
| 892 | /** | ||
| 893 | * memblock_is_region_reserved - check if a region intersects reserved memory | ||
| 894 | * @base: base of region to check | ||
| 895 | * @size: size of region to check | ||
| 896 | * | ||
| 897 | * Check if the region [@base, @base+@size) intersects a reserved memory block. | ||
| 898 | * | ||
| 899 | * RETURNS: | ||
| 900 | * 0 if false, non-zero if true | ||
| 901 | */ | ||
| 882 | int __init_memblock memblock_is_region_reserved(phys_addr_t base, phys_addr_t size) | 902 | int __init_memblock memblock_is_region_reserved(phys_addr_t base, phys_addr_t size) |
| 883 | { | 903 | { |
| 884 | memblock_cap_size(base, &size); | 904 | memblock_cap_size(base, &size); |
