2006-08-03 03:31:44

by Kamezawa Hiroyuki

[permalink] [raw]
Subject: [PATCH] memory hotadd fixes [2/5] change find_next_system_ram's return value manner

find_next_system_ram() returns valid memory range which meets requested
area, only used by memory-hot-add.
This function always rewrite requested resource even if returned area is
not fully fit in requested one. And sometimes the returnd resource is larger
than requested area. This annoyes the caller.
This patch changes the returned value to fit in requested area.

Signed-Off-By: KAMEZAWA Hiroyuki <[email protected]>

kernel/resource.c | 6 ++++--
1 files changed, 4 insertions(+), 2 deletions(-)

Index: linux-2.6.18-rc3/kernel/resource.c
===================================================================
--- linux-2.6.18-rc3.orig/kernel/resource.c 2006-08-01 16:11:56.000000000 +0900
+++ linux-2.6.18-rc3/kernel/resource.c 2006-08-01 16:38:45.000000000 +0900
@@ -261,8 +261,10 @@
if (!p)
return -1;
/* copy data */
- res->start = p->start;
- res->end = p->end;
+ if (res->start < p->start)
+ res->start = p->start;
+ if (res->end > p->end)
+ res->end = p->end;
return 0;
}
#endif


2006-08-04 00:05:25

by Keith Mannthey

[permalink] [raw]
Subject: Re: [PATCH] memory hotadd fixes [2/5] change find_next_system_ram's return value manner

On Thu, 2006-08-03 at 12:33 +0900, KAMEZAWA Hiroyuki wrote:
> find_next_system_ram() returns valid memory range which meets requested
> area, only used by memory-hot-add.
> This function always rewrite requested resource even if returned area is
> not fully fit in requested one. And sometimes the returnd resource is larger
> than requested area. This annoyes the caller.
> This patch changes the returned value to fit in requested area.
>
> Signed-Off-By: KAMEZAWA Hiroyuki <[email protected]>
>
> kernel/resource.c | 6 ++++--
> 1 files changed, 4 insertions(+), 2 deletions(-)
>
> Index: linux-2.6.18-rc3/kernel/resource.c
> ===================================================================
> --- linux-2.6.18-rc3.orig/kernel/resource.c 2006-08-01 16:11:56.000000000 +0900
> +++ linux-2.6.18-rc3/kernel/resource.c 2006-08-01 16:38:45.000000000 +0900
> @@ -261,8 +261,10 @@
> if (!p)
> return -1;
> /* copy data */
> - res->start = p->start;
> - res->end = p->end;
> + if (res->start < p->start)
> + res->start = p->start;
> + if (res->end > p->end)
> + res->end = p->end;
> return 0;
> }
> #endif


This is a needed fix for me. It looks and works great on x86_64.

Acked-By: Keith Mannthey <[email protected]>