aboutsummaryrefslogtreecommitdiff
path: root/arch/x86/kernel/e820_64.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/kernel/e820_64.c')
-rw-r--r--arch/x86/kernel/e820_64.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/arch/x86/kernel/e820_64.c b/arch/x86/kernel/e820_64.c
index 124480c0008..848b2cd2d1d 100644
--- a/arch/x86/kernel/e820_64.c
+++ b/arch/x86/kernel/e820_64.c
@@ -829,10 +829,11 @@ void __init finish_e820_parsing(void)
}
}
-void __init update_memory_range(u64 start, u64 size, unsigned old_type,
+u64 __init update_memory_range(u64 start, u64 size, unsigned old_type,
unsigned new_type)
{
int i;
+ u64 real_updated_size = 0;
BUG_ON(old_type == new_type);
@@ -844,6 +845,7 @@ void __init update_memory_range(u64 start, u64 size, unsigned old_type,
/* totally covered? */
if (ei->addr >= start && ei->size <= size) {
ei->type = new_type;
+ real_updated_size += ei->size;
continue;
}
/* partially covered */
@@ -853,7 +855,9 @@ void __init update_memory_range(u64 start, u64 size, unsigned old_type,
continue;
add_memory_region(final_start, final_end - final_start,
new_type);
+ real_updated_size += final_end - final_start;
}
+ return real_updated_size;
}
void __init update_e820(void)