x86_64 getmemsize: Recover 0x100000 bytes v3.0.1
authorJohn Marino <draco@marino.st>
Sun, 19 Feb 2012 15:26:19 +0000 (16:26 +0100)
committerJohn Marino <draco@marino.st>
Sun, 19 Feb 2012 15:36:42 +0000 (16:36 +0100)
When binutils 2.20 was brought in, the x86_64 kernel built with it loaded
at 0x200000 instead of 0x100000 as it was previously.  The getmemsize()
function was never updated with the new address so the physical memory
between 0x100000 and 0x200000 has been lost since then.

The hardcoded value has been updated.  In the future, it may be a good
idea to replace with a variable as FreeBSD has done.

sys/platform/pc64/x86_64/machdep.c

index 2857edb..ac879b7 100644 (file)
@@ -1575,7 +1575,7 @@ getmemsize(caddr_t kmdp, u_int64_t first)
                        /*
                         * block out kernel memory as not available.
                         */
-                       if (pa >= 0x100000 && pa < first)
+                       if (pa >= 0x200000 && pa < first)
                                goto do_dump_avail;
 
                        /*