diff options
-rw-r--r-- | arch/s390/include/asm/pgtable.h | 7 | ||||
-rw-r--r-- | arch/s390/mm/pgtable.c | 16 |
2 files changed, 18 insertions, 5 deletions
diff --git a/arch/s390/include/asm/pgtable.h b/arch/s390/include/asm/pgtable.h index 5caddd4f7bed..60a7b1a1702f 100644 --- a/arch/s390/include/asm/pgtable.h +++ b/arch/s390/include/asm/pgtable.h | |||
@@ -112,12 +112,15 @@ extern char empty_zero_page[PAGE_SIZE]; | |||
112 | * effect, this also makes sure that 64 bit module code cannot be used | 112 | * effect, this also makes sure that 64 bit module code cannot be used |
113 | * as system call address. | 113 | * as system call address. |
114 | */ | 114 | */ |
115 | |||
116 | extern unsigned long VMALLOC_START; | ||
117 | |||
115 | #ifndef __s390x__ | 118 | #ifndef __s390x__ |
116 | #define VMALLOC_START 0x78000000UL | 119 | #define VMALLOC_SIZE (96UL << 20) |
117 | #define VMALLOC_END 0x7e000000UL | 120 | #define VMALLOC_END 0x7e000000UL |
118 | #define VMEM_MAP_END 0x80000000UL | 121 | #define VMEM_MAP_END 0x80000000UL |
119 | #else /* __s390x__ */ | 122 | #else /* __s390x__ */ |
120 | #define VMALLOC_START 0x3e000000000UL | 123 | #define VMALLOC_SIZE (1UL << 30) |
121 | #define VMALLOC_END 0x3e040000000UL | 124 | #define VMALLOC_END 0x3e040000000UL |
122 | #define VMEM_MAP_END 0x40000000000UL | 125 | #define VMEM_MAP_END 0x40000000000UL |
123 | #endif /* __s390x__ */ | 126 | #endif /* __s390x__ */ |
diff --git a/arch/s390/mm/pgtable.c b/arch/s390/mm/pgtable.c index be6c1cf4ad5a..4ca8e826bf30 100644 --- a/arch/s390/mm/pgtable.c +++ b/arch/s390/mm/pgtable.c | |||
@@ -1,7 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * arch/s390/mm/pgtable.c | 2 | * Copyright IBM Corp. 2007,2009 |
3 | * | ||
4 | * Copyright IBM Corp. 2007 | ||
5 | * Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com> | 3 | * Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com> |
6 | */ | 4 | */ |
7 | 5 | ||
@@ -53,6 +51,18 @@ void clear_table_pgstes(unsigned long *table) | |||
53 | 51 | ||
54 | #endif | 52 | #endif |
55 | 53 | ||
54 | unsigned long VMALLOC_START = VMALLOC_END - VMALLOC_SIZE; | ||
55 | EXPORT_SYMBOL(VMALLOC_START); | ||
56 | |||
57 | static int __init parse_vmalloc(char *arg) | ||
58 | { | ||
59 | if (!arg) | ||
60 | return -EINVAL; | ||
61 | VMALLOC_START = (VMALLOC_END - memparse(arg, &arg)) & PAGE_MASK; | ||
62 | return 0; | ||
63 | } | ||
64 | early_param("vmalloc", parse_vmalloc); | ||
65 | |||
56 | unsigned long *crst_table_alloc(struct mm_struct *mm, int noexec) | 66 | unsigned long *crst_table_alloc(struct mm_struct *mm, int noexec) |
57 | { | 67 | { |
58 | struct page *page = alloc_pages(GFP_KERNEL, ALLOC_ORDER); | 68 | struct page *page = alloc_pages(GFP_KERNEL, ALLOC_ORDER); |