On Wed, Jun 25, 2008 at 5:02 AM, Bernhard Walle <bwalle at suse.de> wrote: > This patch fixes a bug in e820_update_range(): Previously, if a region was > partially covered, then e820_update_range() only added a new E820 range but > didn't update the end/size of the previous range. That lead to duplicate > covering of a region. > > Patch tested on i386 and x86-64 with patch that uses e820_update_range() > to limit the E820 map when "mem" parameter is specified on the command line. > > > Signed-off-by: Bernhard Walle <bwalle at suse.de> > --- > arch/x86/kernel/e820.c | 1 + > 1 files changed, 1 insertions(+), 0 deletions(-) > > diff --git a/arch/x86/kernel/e820.c b/arch/x86/kernel/e820.c > index e285ea3..e466073 100644 > --- a/arch/x86/kernel/e820.c > +++ b/arch/x86/kernel/e820.c > @@ -422,6 +422,7 @@ u64 __init e820_update_range(u64 start, u64 size, unsigned old_type, > final_end = min(start + size, ei->addr + ei->size); > if (final_start >= final_end) > continue; > + ei->size -= final_end - final_start; > e820_add_region(final_start, final_end - final_start, > new_type); > real_updated_size += final_end - final_start; > -- this one is not needed, I sent one updated to Ingo, and it is in tip/setup-memory [PATCH] x86: change size if e820_update/remove_range YH