Merge branch 'linux-next' of git://git.infradead.org/ubifs-2.6 and git://git.infradea...
[pandora-kernel.git] / arch / x86 / kernel / aperture_64.c
index 73fb469..3d2661c 100644 (file)
 #include <asm/amd_nb.h>
 #include <asm/x86_init.h>
 
+/*
+ * Using 512M as goal, in case kexec will load kernel_big
+ * that will do the on-position decompress, and could overlap with
+ * with the gart aperture that is used.
+ * Sequence:
+ * kernel_small
+ * ==> kexec (with kdump trigger path or gart still enabled)
+ * ==> kernel_small (gart area become e820_reserved)
+ * ==> kexec (with kdump trigger path or gart still enabled)
+ * ==> kerne_big (uncompressed size will be big than 64M or 128M)
+ * So don't use 512M below as gart iommu, leave the space for kernel
+ * code for safe.
+ */
+#define GART_MIN_ADDR  (512ULL << 20)
+#define GART_MAX_ADDR  (1ULL   << 32)
+
 int gart_iommu_aperture;
 int gart_iommu_aperture_disabled __initdata;
 int gart_iommu_aperture_allowed __initdata;
@@ -70,21 +86,9 @@ static u32 __init allocate_aperture(void)
         * memory. Unfortunately we cannot move it up because that would
         * make the IOMMU useless.
         */
-       /*
-        * using 512M as goal, in case kexec will load kernel_big
-        * that will do the on position decompress, and  could overlap with
-        * that position with gart that is used.
-        * sequende:
-        * kernel_small
-        * ==> kexec (with kdump trigger path or previous doesn't shutdown gart)
-        * ==> kernel_small(gart area become e820_reserved)
-        * ==> kexec (with kdump trigger path or previous doesn't shutdown gart)
-        * ==> kerne_big (uncompressed size will be big than 64M or 128M)
-        * so don't use 512M below as gart iommu, leave the space for kernel
-        * code for safe
-        */
-       addr = memblock_find_in_range(0, 1ULL<<32, aper_size, 512ULL<<20);
-       if (addr == MEMBLOCK_ERROR || addr + aper_size > 0xffffffff) {
+       addr = memblock_find_in_range(GART_MIN_ADDR, GART_MAX_ADDR,
+                                     aper_size, aper_size);
+       if (addr == MEMBLOCK_ERROR || addr + aper_size > GART_MAX_ADDR) {
                printk(KERN_ERR
                        "Cannot allocate aperture memory hole (%lx,%uK)\n",
                                addr, aper_size>>10);