]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - arch/x86/kernel/check.c
Merge branch 'master' into csb1725
[mv-sheeva.git] / arch / x86 / kernel / check.c
index fc999e6fc46a34cf1417cd600c11a0e07af1acfd..13a389179514eb4b17c7d5fc6d5100e1996d0770 100644 (file)
@@ -2,7 +2,8 @@
 #include <linux/sched.h>
 #include <linux/kthread.h>
 #include <linux/workqueue.h>
-#include <asm/e820.h>
+#include <linux/memblock.h>
+
 #include <asm/proto.h>
 
 /*
@@ -18,10 +19,12 @@ static int __read_mostly memory_corruption_check = -1;
 static unsigned __read_mostly corruption_check_size = 64*1024;
 static unsigned __read_mostly corruption_check_period = 60; /* seconds */
 
-static struct e820entry scan_areas[MAX_SCAN_AREAS];
+static struct scan_area {
+       u64 addr;
+       u64 size;
+} scan_areas[MAX_SCAN_AREAS];
 static int num_scan_areas;
 
-
 static __init int set_corruption_check(char *arg)
 {
        char *end;
@@ -81,9 +84,9 @@ void __init setup_bios_corruption_check(void)
 
        while (addr < corruption_check_size && num_scan_areas < MAX_SCAN_AREAS) {
                u64 size;
-               addr = find_e820_area_size(addr, &size, PAGE_SIZE);
+               addr = memblock_x86_find_in_range_size(addr, &size, PAGE_SIZE);
 
-               if (!(addr + 1))
+               if (addr == MEMBLOCK_ERROR)
                        break;
 
                if (addr >= corruption_check_size)
@@ -92,7 +95,7 @@ void __init setup_bios_corruption_check(void)
                if ((addr + size) > corruption_check_size)
                        size = corruption_check_size - addr;
 
-               e820_update_range(addr, size, E820_RAM, E820_RESERVED);
+               memblock_x86_reserve_range(addr, addr + size, "SCAN RAM");
                scan_areas[num_scan_areas].addr = addr;
                scan_areas[num_scan_areas].size = size;
                num_scan_areas++;
@@ -105,7 +108,6 @@ void __init setup_bios_corruption_check(void)
 
        printk(KERN_INFO "Scanning %d areas for low memory corruption\n",
               num_scan_areas);
-       update_e820();
 }