diff options
Diffstat (limited to 'arch/s390')
| -rw-r--r-- | arch/s390/Kconfig | 2 | ||||
| -rw-r--r-- | arch/s390/include/asm/cacheflush.h | 23 | ||||
| -rw-r--r-- | arch/s390/include/asm/tlb.h | 1 | ||||
| -rw-r--r-- | arch/s390/lib/uaccess_std.c | 10 | ||||
| -rw-r--r-- | arch/s390/mm/pgtable.c | 3 |
5 files changed, 9 insertions, 30 deletions
diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig index ff19efdf6fef..636bcb81d068 100644 --- a/arch/s390/Kconfig +++ b/arch/s390/Kconfig | |||
| @@ -406,7 +406,7 @@ config QDIO | |||
| 406 | If unsure, say Y. | 406 | If unsure, say Y. |
| 407 | 407 | ||
| 408 | config CHSC_SCH | 408 | config CHSC_SCH |
| 409 | def_tristate y | 409 | def_tristate m |
| 410 | prompt "Support for CHSC subchannels" | 410 | prompt "Support for CHSC subchannels" |
| 411 | help | 411 | help |
| 412 | This driver allows usage of CHSC subchannels. A CHSC subchannel | 412 | This driver allows usage of CHSC subchannels. A CHSC subchannel |
diff --git a/arch/s390/include/asm/cacheflush.h b/arch/s390/include/asm/cacheflush.h index 405cc97c6249..7e1f77620624 100644 --- a/arch/s390/include/asm/cacheflush.h +++ b/arch/s390/include/asm/cacheflush.h | |||
| @@ -1,29 +1,8 @@ | |||
| 1 | #ifndef _S390_CACHEFLUSH_H | 1 | #ifndef _S390_CACHEFLUSH_H |
| 2 | #define _S390_CACHEFLUSH_H | 2 | #define _S390_CACHEFLUSH_H |
| 3 | 3 | ||
| 4 | /* Keep includes the same across arches. */ | ||
| 5 | #include <linux/mm.h> | ||
| 6 | |||
| 7 | /* Caches aren't brain-dead on the s390. */ | 4 | /* Caches aren't brain-dead on the s390. */ |
| 8 | #define flush_cache_all() do { } while (0) | 5 | #include <asm-generic/cacheflush.h> |
| 9 | #define flush_cache_mm(mm) do { } while (0) | ||
| 10 | #define flush_cache_dup_mm(mm) do { } while (0) | ||
| 11 | #define flush_cache_range(vma, start, end) do { } while (0) | ||
| 12 | #define flush_cache_page(vma, vmaddr, pfn) do { } while (0) | ||
| 13 | #define ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE 0 | ||
| 14 | #define flush_dcache_page(page) do { } while (0) | ||
| 15 | #define flush_dcache_mmap_lock(mapping) do { } while (0) | ||
| 16 | #define flush_dcache_mmap_unlock(mapping) do { } while (0) | ||
| 17 | #define flush_icache_range(start, end) do { } while (0) | ||
| 18 | #define flush_icache_page(vma,pg) do { } while (0) | ||
| 19 | #define flush_icache_user_range(vma,pg,adr,len) do { } while (0) | ||
| 20 | #define flush_cache_vmap(start, end) do { } while (0) | ||
| 21 | #define flush_cache_vunmap(start, end) do { } while (0) | ||
| 22 | |||
| 23 | #define copy_to_user_page(vma, page, vaddr, dst, src, len) \ | ||
| 24 | memcpy(dst, src, len) | ||
| 25 | #define copy_from_user_page(vma, page, vaddr, dst, src, len) \ | ||
| 26 | memcpy(dst, src, len) | ||
| 27 | 6 | ||
| 28 | #ifdef CONFIG_DEBUG_PAGEALLOC | 7 | #ifdef CONFIG_DEBUG_PAGEALLOC |
| 29 | void kernel_map_pages(struct page *page, int numpages, int enable); | 8 | void kernel_map_pages(struct page *page, int numpages, int enable); |
diff --git a/arch/s390/include/asm/tlb.h b/arch/s390/include/asm/tlb.h index f1f644f2240a..9074a54c4d10 100644 --- a/arch/s390/include/asm/tlb.h +++ b/arch/s390/include/asm/tlb.h | |||
| @@ -22,6 +22,7 @@ | |||
| 22 | */ | 22 | */ |
| 23 | 23 | ||
| 24 | #include <linux/mm.h> | 24 | #include <linux/mm.h> |
| 25 | #include <linux/pagemap.h> | ||
| 25 | #include <linux/swap.h> | 26 | #include <linux/swap.h> |
| 26 | #include <asm/processor.h> | 27 | #include <asm/processor.h> |
| 27 | #include <asm/pgalloc.h> | 28 | #include <asm/pgalloc.h> |
diff --git a/arch/s390/lib/uaccess_std.c b/arch/s390/lib/uaccess_std.c index 07deaeee14c8..a6c4f7ed24a4 100644 --- a/arch/s390/lib/uaccess_std.c +++ b/arch/s390/lib/uaccess_std.c | |||
| @@ -125,9 +125,9 @@ static size_t copy_in_user_std(size_t size, void __user *to, | |||
| 125 | unsigned long tmp1; | 125 | unsigned long tmp1; |
| 126 | 126 | ||
| 127 | asm volatile( | 127 | asm volatile( |
| 128 | " sacf 256\n" | ||
| 128 | " "AHI" %0,-1\n" | 129 | " "AHI" %0,-1\n" |
| 129 | " jo 5f\n" | 130 | " jo 5f\n" |
| 130 | " sacf 256\n" | ||
| 131 | " bras %3,3f\n" | 131 | " bras %3,3f\n" |
| 132 | "0:"AHI" %0,257\n" | 132 | "0:"AHI" %0,257\n" |
| 133 | "1: mvc 0(1,%1),0(%2)\n" | 133 | "1: mvc 0(1,%1),0(%2)\n" |
| @@ -142,9 +142,8 @@ static size_t copy_in_user_std(size_t size, void __user *to, | |||
| 142 | "3:"AHI" %0,-256\n" | 142 | "3:"AHI" %0,-256\n" |
| 143 | " jnm 2b\n" | 143 | " jnm 2b\n" |
| 144 | "4: ex %0,1b-0b(%3)\n" | 144 | "4: ex %0,1b-0b(%3)\n" |
| 145 | " sacf 0\n" | ||
| 146 | "5: "SLR" %0,%0\n" | 145 | "5: "SLR" %0,%0\n" |
| 147 | "6:\n" | 146 | "6: sacf 0\n" |
| 148 | EX_TABLE(1b,6b) EX_TABLE(2b,0b) EX_TABLE(4b,0b) | 147 | EX_TABLE(1b,6b) EX_TABLE(2b,0b) EX_TABLE(4b,0b) |
| 149 | : "+a" (size), "+a" (to), "+a" (from), "=a" (tmp1) | 148 | : "+a" (size), "+a" (to), "+a" (from), "=a" (tmp1) |
| 150 | : : "cc", "memory"); | 149 | : : "cc", "memory"); |
| @@ -156,9 +155,9 @@ static size_t clear_user_std(size_t size, void __user *to) | |||
| 156 | unsigned long tmp1, tmp2; | 155 | unsigned long tmp1, tmp2; |
| 157 | 156 | ||
| 158 | asm volatile( | 157 | asm volatile( |
| 158 | " sacf 256\n" | ||
| 159 | " "AHI" %0,-1\n" | 159 | " "AHI" %0,-1\n" |
| 160 | " jo 5f\n" | 160 | " jo 5f\n" |
| 161 | " sacf 256\n" | ||
| 162 | " bras %3,3f\n" | 161 | " bras %3,3f\n" |
| 163 | " xc 0(1,%1),0(%1)\n" | 162 | " xc 0(1,%1),0(%1)\n" |
| 164 | "0:"AHI" %0,257\n" | 163 | "0:"AHI" %0,257\n" |
| @@ -178,9 +177,8 @@ static size_t clear_user_std(size_t size, void __user *to) | |||
| 178 | "3:"AHI" %0,-256\n" | 177 | "3:"AHI" %0,-256\n" |
| 179 | " jnm 2b\n" | 178 | " jnm 2b\n" |
| 180 | "4: ex %0,0(%3)\n" | 179 | "4: ex %0,0(%3)\n" |
| 181 | " sacf 0\n" | ||
| 182 | "5: "SLR" %0,%0\n" | 180 | "5: "SLR" %0,%0\n" |
| 183 | "6:\n" | 181 | "6: sacf 0\n" |
| 184 | EX_TABLE(1b,6b) EX_TABLE(2b,0b) EX_TABLE(4b,0b) | 182 | EX_TABLE(1b,6b) EX_TABLE(2b,0b) EX_TABLE(4b,0b) |
| 185 | : "+a" (size), "+a" (to), "=a" (tmp1), "=a" (tmp2) | 183 | : "+a" (size), "+a" (to), "=a" (tmp1), "=a" (tmp2) |
| 186 | : : "cc", "memory"); | 184 | : : "cc", "memory"); |
diff --git a/arch/s390/mm/pgtable.c b/arch/s390/mm/pgtable.c index 0c719c61972e..e1850c28cd68 100644 --- a/arch/s390/mm/pgtable.c +++ b/arch/s390/mm/pgtable.c | |||
| @@ -336,7 +336,8 @@ void page_table_free(struct mm_struct *mm, unsigned long *table) | |||
| 336 | page->flags ^= bits; | 336 | page->flags ^= bits; |
| 337 | if (page->flags & FRAG_MASK) { | 337 | if (page->flags & FRAG_MASK) { |
| 338 | /* Page now has some free pgtable fragments. */ | 338 | /* Page now has some free pgtable fragments. */ |
| 339 | list_move(&page->lru, &mm->context.pgtable_list); | 339 | if (!list_empty(&page->lru)) |
| 340 | list_move(&page->lru, &mm->context.pgtable_list); | ||
| 340 | page = NULL; | 341 | page = NULL; |
| 341 | } else | 342 | } else |
| 342 | /* All fragments of the 4K page have been freed. */ | 343 | /* All fragments of the 4K page have been freed. */ |
