i386 bootioremap / kexec fix
authorKeith Mannthey <kmannth@us.ibm.com>
Tue, 20 Mar 2007 23:21:48 +0000 (00:21 +0100)
committerAdrian Bunk <bunk@stusta.de>
Tue, 20 Mar 2007 23:21:48 +0000 (00:21 +0100)
With CONFIG_PHYSICAL_START set to a non default values the i386
boot_ioremap code calculated its pte index wrong and users of boot_ioremap
have their areas incorrectly mapped (for me SRAT table not mapped during
early boot).  This patch removes the addr < BOOT_PTE_PTRS constraint.

Signed-off-by: Keith Mannthey <kmannth@us.ibm.com>
Signed-off-by: Adrian Bunk <bunk@stusta.de>
arch/i386/mm/boot_ioremap.c

index 523b30634e0a87c76a32ca57f0977593b3364108..19921c54729e474e5996ff8c455e5040ac7b5382 100644 (file)
  */
 
 #define BOOT_PTE_PTRS (PTRS_PER_PTE*2)
-#define boot_pte_index(address) \
-            (((address) >> PAGE_SHIFT) & (BOOT_PTE_PTRS - 1))
+
+static unsigned long boot_pte_index(unsigned long vaddr)
+{
+       return __pa(vaddr) >> PAGE_SHIFT;
+}
 
 static inline boot_pte_t* boot_vaddr_to_pte(void *address)
 {