2013-04-15 08:06:42

by Wang YanQing

[permalink] [raw]
Subject: [PATCH 1/3] x86: reserve_crashkernel: use memblock_is_region_reserved to simplify code

Use memblock_is_region_reserved instead of memblock_find_in_range
to simplify the check codes, and gain a little speed benefit.

Signed-off-by: Wang YanQing <[email protected]>
---
arch/x86/kernel/setup.c | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
index 90d8cc9..9d60c85 100644
--- a/arch/x86/kernel/setup.c
+++ b/arch/x86/kernel/setup.c
@@ -577,11 +577,7 @@ static void __init reserve_crashkernel(void)
}

} else {
- unsigned long long start;
-
- start = memblock_find_in_range(crash_base,
- crash_base + crash_size, crash_size, 1<<20);
- if (start != crash_base) {
+ if (memblock_is_region_reserved(crash_base, crash_size)) {
pr_info("crashkernel reservation failed - memory is in use.\n");
return;
}
--
1.7.12.4.dirty


2013-04-15 20:47:09

by Yinghai Lu

[permalink] [raw]
Subject: Re: [PATCH 1/3] x86: reserve_crashkernel: use memblock_is_region_reserved to simplify code

On Mon, Apr 15, 2013 at 1:06 AM, Wang YanQing <[email protected]> wrote:
> Use memblock_is_region_reserved instead of memblock_find_in_range
> to simplify the check codes, and gain a little speed benefit.
>
> Signed-off-by: Wang YanQing <[email protected]>
> ---
> arch/x86/kernel/setup.c | 6 +-----
> 1 file changed, 1 insertion(+), 5 deletions(-)
>
> diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
> index 90d8cc9..9d60c85 100644
> --- a/arch/x86/kernel/setup.c
> +++ b/arch/x86/kernel/setup.c
> @@ -577,11 +577,7 @@ static void __init reserve_crashkernel(void)
> }
>
> } else {
> - unsigned long long start;
> -
> - start = memblock_find_in_range(crash_base,
> - crash_base + crash_size, crash_size, 1<<20);
> - if (start != crash_base) {
> + if (memblock_is_region_reserved(crash_base, crash_size)) {
> pr_info("crashkernel reservation failed - memory is in use.\n");
> return;
> }

We need to use memblock_find_in_range here.

As the range [crash_base, crash_base+crash_size) could be not in
memblock.memory.

for example, if the ram only have 16G installed, and user just specify
crash_base to 64g.
and there is no [64g...) in memblock.reserved.
But that does not mean that we can use that range.

Thanks

Yinghai