auto virtual map patch
Enclosed is a patch for 2.5 that is similar to what is going out with Red Hat AS for ia64. This makes the virtual mem map support "automatic", i.e. it will use a virtual mem map if CONFIG_DISCONTIGMEM is not defined and a gap of greater than 1 GB is found in the physical memory layout.
John Marvin
[email protected]
arch/ia64/config.in renamed from arch/ia64/config.in.old +0 -2
@@ -51,8 +51,6 @@ 64KB CONFIG_IA64_PAGE_SIZE_64KB" 16KB fi -bool 'Virtually mapped mem_map?' CONFIG_VIRTUAL_MEM_MAP n - if [ "$CONFIG_ITANIUM" = "y" ]; then define_bool CONFIG_IA64_BRL_EMU y bool ' Enable Itanium B-step specific code' CONFIG_ITANIUM_BSTEP_SPECIFIC
arch/ia64/kernel/ia64_ksyms.c renamed from arch/ia64/kernel/ia64_ksyms.c.old +4 -0
@@ -57,6 +57,10 @@#include <asm/page.h> EXPORT_SYMBOL (clear_page); +#include <asm/pgtable.h> +EXPORT_SYMBOL (vmalloc_end); +EXPORT_SYMBOL (ia64_page_valid); +#include <asm/processor.h> # ifndef CONFIG_NUMA EXPORT_SYMBOL (_cpu_data);
arch/ia64/mm/fault.c renamed from arch/ia64/mm/fault.c.old +0 -4
@@ -58,7 +58,6 @@if (in_interrupt () || !mm) goto no_context; -#ifdef CONFIG_VIRTUAL_MEM_MAP /* * If fault is in region 5 and we are in the kernel, we may already * have the mmap_sem (VALID_PAGE macro is called during mmap). There
@@ -67,7 +66,6 @@*/ if ((REGION_NUMBER (address) =5 ) && !user_mode (regs)) goto bad_area_no_up; -#endif down_read (&mm->mmap_sem);
@@ -148,9 +146,7 @@ bad_area:up_read (&mm->mmap_sem); -#ifdef CONFIG_VIRTUAL_MEM_MAP bad_area_no_up: -#endif if ((isr &IA64_ISR_SP ) || ((isr &IA64_ISR_NA ) && (isr &IA64_ISR_CODE_MASK ) =IA64_ISR_CODE_LFETCH )) {
arch/ia64/mm/init.c renamed from arch/ia64/mm/init.c.old +65 -48
183 lines not on this page · raw message
include/asm-ia64/page.h renamed from include/asm-ia64/page.h.old +4 -7
@@ -65,13 +65,10 @@# define virt_to_page (kaddr) (mem_map + MAP_NR_DENSE(kaddr))# define page_to_phys (page) ((page - mem_map) << PAGE_SHIFT)#endif -#ifdef CONFIG_VIRTUAL_MEM_MAP -struct page ; -extern int ia64_page_valid (struct page *); -# define VALID_PAGE (page) (((page - mem_map) < max_mapnr) && ia64_page_valid(page)) -#else -# define VALID_PAGE (page) ((page - mem_map) < max_mapnr) -#endif + +struct page ; +extern int ia64_page_valid (struct page *); +#define VALID_PAGE (page) (((page - mem_map) < max_mapnr) && ia64_page_valid(page)) typedef union ia64_va { struct {
include/asm-ia64/pgtable.h renamed from include/asm-ia64/pgtable.h.old +3 -11
@@ -198,13 +198,9 @@#define VMALLOC_START (0xa000000000000000 + 3*PAGE_SIZE)#define VMALLOC_VMADDR (x) ((unsigned long)(x)) -#ifdef CONFIG_VIRTUAL_MEM_MAP -# define VMALLOC_END_INIT (0xa000000000000000 + (1UL << (4*PAGE_SHIFT - 9))) -# define VMALLOC_END vmalloc_end -extern unsigned long vmalloc_end; -#else -# define VMALLOC_END (0xa000000000000000 + (1UL << (4*PAGE_SHIFT - 9))) -#endif +#define VMALLOC_END_INIT (0xa000000000000000 + (1UL << (4*PAGE_SHIFT - 9))) +#define VMALLOC_END vmalloc_end +extern unsigned long vmalloc_end;/* * Conversion functions: convert a page and protection to a page entry,
@@ -448,8 +444,6 @@*/ #define pgtable_cache_init () do { } while (0) -#ifdef CONFIG_VIRTUAL_MEM_MAP -/* arch mem_map init routines are needed due to holes in a virtual mem_map */ #define HAVE_ARCH_MEMMAP_INIT
@@ -460,8 +454,6 @@ struct page *start, struct page *end, int zone, unsigned long start_paddr, int highmem); -#endif /* CONFIG_VIRTUAL_MEM_MAP */ -# endif /* !__ASSEMBLY__ */ /*
Quoted 1 line
Enclosed is a patch for 2.5 that is similar to what is going out with Red
Oops, I meant 2.4.
John