Hi H.Peter,
On 04/03/2013 02:48 AM, H. Peter Anvin wrote:
On 04/02/2013 05:28 AM, Frantisek Hrbata wrote:
diff --git a/arch/x86/include/asm/io.h b/arch/x86/include/asm/io.h
index d8e8eef..39607c6 100644
--- a/arch/x86/include/asm/io.h
+++ b/arch/x86/include/asm/io.h
@@ -242,6 +242,10 @@ static inline void flush_write_buffers(void)
  #endif
  }
+#define ARCH_HAS_VALID_PHYS_ADDR_RANGE
+extern int valid_phys_addr_range(phys_addr_t addr, size_t count);
+extern int valid_mmap_phys_addr_range(unsigned long pfn, size_t count);
+
  #endif /* __KERNEL__ */
extern void native_io_delay(void);
diff --git a/arch/x86/mm/mmap.c b/arch/x86/mm/mmap.c
index 845df68..92ec31c 100644
--- a/arch/x86/mm/mmap.c
+++ b/arch/x86/mm/mmap.c
@@ -31,6 +31,8 @@
  #include <linux/sched.h>
  #include <asm/elf.h>
+#include "physaddr.h"
+
  struct __read_mostly va_alignment va_align = {
        .flags = -1,
  };
@@ -122,3 +124,14 @@ void arch_pick_mmap_layout(struct mm_struct *mm)
                mm->unmap_area = arch_unmap_area_topdown;
        }
  }
+
+int valid_phys_addr_range(phys_addr_t addr, size_t count)
+{
+       return addr + count <= __pa(high_memory);
+}
+
+int valid_mmap_phys_addr_range(unsigned long pfn, size_t count)
+{
+       resource_size_t addr = (pfn << PAGE_SHIFT) + count;
+       return phys_addr_valid(addr);
+}


Why we consider boot_cpu_data.x86_phys_bits instead of e820 map here?


        -hpa


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to