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); |