diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-02-10 19:45:56 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-02-10 19:45:56 -0500 |
commit | 992de5a8eca7cbd3215e3eb2c439b2c11582a58b (patch) | |
tree | 863988f84c1dd57a02fa337ecbce49263a3b9511 /arch/sh | |
parent | b2718bffb4088faf13092db30c1ebf088ddee52e (diff) | |
parent | d5b3cf7139b8770af4ed8bb36a1ab9d290ac39e9 (diff) |
Merge branch 'akpm' (patches from Andrew)
Merge misc updates from Andrew Morton:
"Bite-sized chunks this time, to avoid the MTA ratelimiting woes.
- fs/notify updates
- ocfs2
- some of MM"
That laconic "some MM" is mainly the removal of remap_file_pages(),
which is a big simplification of the VM, and which gets rid of a *lot*
of random cruft and special cases because we no longer support the
non-linear mappings that it used.
From a user interface perspective, nothing has changed, because the
remap_file_pages() syscall still exists, it's just done by emulating the
old behavior by creating a lot of individual small mappings instead of
one non-linear one.
The emulation is slower than the old "native" non-linear mappings, but
nobody really uses or cares about remap_file_pages(), and simplifying
the VM is a big advantage.
* emailed patches from Andrew Morton <akpm@linux-foundation.org>: (78 commits)
memcg: zap memcg_slab_caches and memcg_slab_mutex
memcg: zap memcg_name argument of memcg_create_kmem_cache
memcg: zap __memcg_{charge,uncharge}_slab
mm/page_alloc.c: place zone_id check before VM_BUG_ON_PAGE check
mm: hugetlb: fix type of hugetlb_treat_as_movable variable
mm, hugetlb: remove unnecessary lower bound on sysctl handlers"?
mm: memory: merge shared-writable dirtying branches in do_wp_page()
mm: memory: remove ->vm_file check on shared writable vmas
xtensa: drop _PAGE_FILE and pte_file()-related helpers
x86: drop _PAGE_FILE and pte_file()-related helpers
unicore32: drop pte_file()-related helpers
um: drop _PAGE_FILE and pte_file()-related helpers
tile: drop pte_file()-related helpers
sparc: drop pte_file()-related helpers
sh: drop _PAGE_FILE and pte_file()-related helpers
score: drop _PAGE_FILE and pte_file()-related helpers
s390: drop pte_file()-related helpers
parisc: drop _PAGE_FILE and pte_file()-related helpers
openrisc: drop _PAGE_FILE and pte_file()-related helpers
nios2: drop _PAGE_FILE and pte_file()-related helpers
...
Diffstat (limited to 'arch/sh')
-rw-r--r-- | arch/sh/Kconfig | 2 | ||||
-rw-r--r-- | arch/sh/boards/mach-se/7343/irq.c | 3 | ||||
-rw-r--r-- | arch/sh/boards/mach-se/7722/irq.c | 3 | ||||
-rw-r--r-- | arch/sh/include/asm/pgtable_32.h | 30 | ||||
-rw-r--r-- | arch/sh/include/asm/pgtable_64.h | 9 |
5 files changed, 6 insertions, 41 deletions
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig index 0f09f5285d5e..eb4ef274ae9b 100644 --- a/arch/sh/Kconfig +++ b/arch/sh/Kconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | config SUPERH | 1 | config SUPERH |
2 | def_bool y | 2 | def_bool y |
3 | select ARCH_MIGHT_HAVE_PC_PARPORT | 3 | select ARCH_MIGHT_HAVE_PC_PARPORT |
4 | select EXPERT | 4 | select HAVE_PATA_PLATFORM |
5 | select CLKDEV_LOOKUP | 5 | select CLKDEV_LOOKUP |
6 | select HAVE_IDE if HAS_IOPORT_MAP | 6 | select HAVE_IDE if HAS_IOPORT_MAP |
7 | select HAVE_MEMBLOCK | 7 | select HAVE_MEMBLOCK |
diff --git a/arch/sh/boards/mach-se/7343/irq.c b/arch/sh/boards/mach-se/7343/irq.c index 7646bf0486c2..1087dba9b015 100644 --- a/arch/sh/boards/mach-se/7343/irq.c +++ b/arch/sh/boards/mach-se/7343/irq.c | |||
@@ -14,9 +14,6 @@ | |||
14 | #define DRV_NAME "SE7343-FPGA" | 14 | #define DRV_NAME "SE7343-FPGA" |
15 | #define pr_fmt(fmt) DRV_NAME ": " fmt | 15 | #define pr_fmt(fmt) DRV_NAME ": " fmt |
16 | 16 | ||
17 | #define irq_reg_readl ioread16 | ||
18 | #define irq_reg_writel iowrite16 | ||
19 | |||
20 | #include <linux/init.h> | 17 | #include <linux/init.h> |
21 | #include <linux/irq.h> | 18 | #include <linux/irq.h> |
22 | #include <linux/interrupt.h> | 19 | #include <linux/interrupt.h> |
diff --git a/arch/sh/boards/mach-se/7722/irq.c b/arch/sh/boards/mach-se/7722/irq.c index f5e2af1bf040..00e699232621 100644 --- a/arch/sh/boards/mach-se/7722/irq.c +++ b/arch/sh/boards/mach-se/7722/irq.c | |||
@@ -11,9 +11,6 @@ | |||
11 | #define DRV_NAME "SE7722-FPGA" | 11 | #define DRV_NAME "SE7722-FPGA" |
12 | #define pr_fmt(fmt) DRV_NAME ": " fmt | 12 | #define pr_fmt(fmt) DRV_NAME ": " fmt |
13 | 13 | ||
14 | #define irq_reg_readl ioread16 | ||
15 | #define irq_reg_writel iowrite16 | ||
16 | |||
17 | #include <linux/init.h> | 14 | #include <linux/init.h> |
18 | #include <linux/irq.h> | 15 | #include <linux/irq.h> |
19 | #include <linux/interrupt.h> | 16 | #include <linux/interrupt.h> |
diff --git a/arch/sh/include/asm/pgtable_32.h b/arch/sh/include/asm/pgtable_32.h index 0bce3d81569e..c646e563abce 100644 --- a/arch/sh/include/asm/pgtable_32.h +++ b/arch/sh/include/asm/pgtable_32.h | |||
@@ -26,8 +26,6 @@ | |||
26 | * and timing control which (together with bit 0) are moved into the | 26 | * and timing control which (together with bit 0) are moved into the |
27 | * old-style PTEA on the parts that support it. | 27 | * old-style PTEA on the parts that support it. |
28 | * | 28 | * |
29 | * XXX: Leave the _PAGE_FILE and _PAGE_WT overhaul for a rainy day. | ||
30 | * | ||
31 | * SH-X2 MMUs and extended PTEs | 29 | * SH-X2 MMUs and extended PTEs |
32 | * | 30 | * |
33 | * SH-X2 supports an extended mode TLB with split data arrays due to the | 31 | * SH-X2 supports an extended mode TLB with split data arrays due to the |
@@ -51,7 +49,6 @@ | |||
51 | #define _PAGE_PRESENT 0x100 /* V-bit : page is valid */ | 49 | #define _PAGE_PRESENT 0x100 /* V-bit : page is valid */ |
52 | #define _PAGE_PROTNONE 0x200 /* software: if not present */ | 50 | #define _PAGE_PROTNONE 0x200 /* software: if not present */ |
53 | #define _PAGE_ACCESSED 0x400 /* software: page referenced */ | 51 | #define _PAGE_ACCESSED 0x400 /* software: page referenced */ |
54 | #define _PAGE_FILE _PAGE_WT /* software: pagecache or swap? */ | ||
55 | #define _PAGE_SPECIAL 0x800 /* software: special page */ | 52 | #define _PAGE_SPECIAL 0x800 /* software: special page */ |
56 | 53 | ||
57 | #define _PAGE_SZ_MASK (_PAGE_SZ0 | _PAGE_SZ1) | 54 | #define _PAGE_SZ_MASK (_PAGE_SZ0 | _PAGE_SZ1) |
@@ -105,14 +102,13 @@ static inline unsigned long copy_ptea_attributes(unsigned long x) | |||
105 | /* Mask which drops unused bits from the PTEL value */ | 102 | /* Mask which drops unused bits from the PTEL value */ |
106 | #if defined(CONFIG_CPU_SH3) | 103 | #if defined(CONFIG_CPU_SH3) |
107 | #define _PAGE_CLEAR_FLAGS (_PAGE_PROTNONE | _PAGE_ACCESSED| \ | 104 | #define _PAGE_CLEAR_FLAGS (_PAGE_PROTNONE | _PAGE_ACCESSED| \ |
108 | _PAGE_FILE | _PAGE_SZ1 | \ | 105 | _PAGE_SZ1 | _PAGE_HW_SHARED) |
109 | _PAGE_HW_SHARED) | ||
110 | #elif defined(CONFIG_X2TLB) | 106 | #elif defined(CONFIG_X2TLB) |
111 | /* Get rid of the legacy PR/SZ bits when using extended mode */ | 107 | /* Get rid of the legacy PR/SZ bits when using extended mode */ |
112 | #define _PAGE_CLEAR_FLAGS (_PAGE_PROTNONE | _PAGE_ACCESSED | \ | 108 | #define _PAGE_CLEAR_FLAGS (_PAGE_PROTNONE | _PAGE_ACCESSED | \ |
113 | _PAGE_FILE | _PAGE_PR_MASK | _PAGE_SZ_MASK) | 109 | _PAGE_PR_MASK | _PAGE_SZ_MASK) |
114 | #else | 110 | #else |
115 | #define _PAGE_CLEAR_FLAGS (_PAGE_PROTNONE | _PAGE_ACCESSED | _PAGE_FILE) | 111 | #define _PAGE_CLEAR_FLAGS (_PAGE_PROTNONE | _PAGE_ACCESSED) |
116 | #endif | 112 | #endif |
117 | 113 | ||
118 | #define _PAGE_FLAGS_HARDWARE_MASK (phys_addr_mask() & ~(_PAGE_CLEAR_FLAGS)) | 114 | #define _PAGE_FLAGS_HARDWARE_MASK (phys_addr_mask() & ~(_PAGE_CLEAR_FLAGS)) |
@@ -343,7 +339,6 @@ static inline void set_pte(pte_t *ptep, pte_t pte) | |||
343 | #define pte_not_present(pte) (!((pte).pte_low & _PAGE_PRESENT)) | 339 | #define pte_not_present(pte) (!((pte).pte_low & _PAGE_PRESENT)) |
344 | #define pte_dirty(pte) ((pte).pte_low & _PAGE_DIRTY) | 340 | #define pte_dirty(pte) ((pte).pte_low & _PAGE_DIRTY) |
345 | #define pte_young(pte) ((pte).pte_low & _PAGE_ACCESSED) | 341 | #define pte_young(pte) ((pte).pte_low & _PAGE_ACCESSED) |
346 | #define pte_file(pte) ((pte).pte_low & _PAGE_FILE) | ||
347 | #define pte_special(pte) ((pte).pte_low & _PAGE_SPECIAL) | 342 | #define pte_special(pte) ((pte).pte_low & _PAGE_SPECIAL) |
348 | 343 | ||
349 | #ifdef CONFIG_X2TLB | 344 | #ifdef CONFIG_X2TLB |
@@ -445,7 +440,6 @@ static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) | |||
445 | * Encode and de-code a swap entry | 440 | * Encode and de-code a swap entry |
446 | * | 441 | * |
447 | * Constraints: | 442 | * Constraints: |
448 | * _PAGE_FILE at bit 0 | ||
449 | * _PAGE_PRESENT at bit 8 | 443 | * _PAGE_PRESENT at bit 8 |
450 | * _PAGE_PROTNONE at bit 9 | 444 | * _PAGE_PROTNONE at bit 9 |
451 | * | 445 | * |
@@ -453,9 +447,7 @@ static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) | |||
453 | * swap offset into bits 10:30. For the 64-bit PTE case, we keep the | 447 | * swap offset into bits 10:30. For the 64-bit PTE case, we keep the |
454 | * preserved bits in the low 32-bits and use the upper 32 as the swap | 448 | * preserved bits in the low 32-bits and use the upper 32 as the swap |
455 | * offset (along with a 5-bit type), following the same approach as x86 | 449 | * offset (along with a 5-bit type), following the same approach as x86 |
456 | * PAE. This keeps the logic quite simple, and allows for a full 32 | 450 | * PAE. This keeps the logic quite simple. |
457 | * PTE_FILE_MAX_BITS, as opposed to the 29-bits we're constrained with | ||
458 | * in the pte_low case. | ||
459 | * | 451 | * |
460 | * As is evident by the Alpha code, if we ever get a 64-bit unsigned | 452 | * As is evident by the Alpha code, if we ever get a 64-bit unsigned |
461 | * long (swp_entry_t) to match up with the 64-bit PTEs, this all becomes | 453 | * long (swp_entry_t) to match up with the 64-bit PTEs, this all becomes |
@@ -471,13 +463,6 @@ static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) | |||
471 | #define __pte_to_swp_entry(pte) ((swp_entry_t){ (pte).pte_high }) | 463 | #define __pte_to_swp_entry(pte) ((swp_entry_t){ (pte).pte_high }) |
472 | #define __swp_entry_to_pte(x) ((pte_t){ 0, (x).val }) | 464 | #define __swp_entry_to_pte(x) ((pte_t){ 0, (x).val }) |
473 | 465 | ||
474 | /* | ||
475 | * Encode and decode a nonlinear file mapping entry | ||
476 | */ | ||
477 | #define pte_to_pgoff(pte) ((pte).pte_high) | ||
478 | #define pgoff_to_pte(off) ((pte_t) { _PAGE_FILE, (off) }) | ||
479 | |||
480 | #define PTE_FILE_MAX_BITS 32 | ||
481 | #else | 466 | #else |
482 | #define __swp_type(x) ((x).val & 0xff) | 467 | #define __swp_type(x) ((x).val & 0xff) |
483 | #define __swp_offset(x) ((x).val >> 10) | 468 | #define __swp_offset(x) ((x).val >> 10) |
@@ -485,13 +470,6 @@ static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) | |||
485 | 470 | ||
486 | #define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) >> 1 }) | 471 | #define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) >> 1 }) |
487 | #define __swp_entry_to_pte(x) ((pte_t) { (x).val << 1 }) | 472 | #define __swp_entry_to_pte(x) ((pte_t) { (x).val << 1 }) |
488 | |||
489 | /* | ||
490 | * Encode and decode a nonlinear file mapping entry | ||
491 | */ | ||
492 | #define PTE_FILE_MAX_BITS 29 | ||
493 | #define pte_to_pgoff(pte) (pte_val(pte) >> 1) | ||
494 | #define pgoff_to_pte(off) ((pte_t) { ((off) << 1) | _PAGE_FILE }) | ||
495 | #endif | 473 | #endif |
496 | 474 | ||
497 | #endif /* __ASSEMBLY__ */ | 475 | #endif /* __ASSEMBLY__ */ |
diff --git a/arch/sh/include/asm/pgtable_64.h b/arch/sh/include/asm/pgtable_64.h index dda8c82601b9..07424968df62 100644 --- a/arch/sh/include/asm/pgtable_64.h +++ b/arch/sh/include/asm/pgtable_64.h | |||
@@ -107,7 +107,6 @@ static __inline__ void set_pte(pte_t *pteptr, pte_t pteval) | |||
107 | #define _PAGE_DEVICE 0x001 /* CB0: if uncacheable, 1->device (i.e. no write-combining or reordering at bus level) */ | 107 | #define _PAGE_DEVICE 0x001 /* CB0: if uncacheable, 1->device (i.e. no write-combining or reordering at bus level) */ |
108 | #define _PAGE_CACHABLE 0x002 /* CB1: uncachable/cachable */ | 108 | #define _PAGE_CACHABLE 0x002 /* CB1: uncachable/cachable */ |
109 | #define _PAGE_PRESENT 0x004 /* software: page referenced */ | 109 | #define _PAGE_PRESENT 0x004 /* software: page referenced */ |
110 | #define _PAGE_FILE 0x004 /* software: only when !present */ | ||
111 | #define _PAGE_SIZE0 0x008 /* SZ0-bit : size of page */ | 110 | #define _PAGE_SIZE0 0x008 /* SZ0-bit : size of page */ |
112 | #define _PAGE_SIZE1 0x010 /* SZ1-bit : size of page */ | 111 | #define _PAGE_SIZE1 0x010 /* SZ1-bit : size of page */ |
113 | #define _PAGE_SHARED 0x020 /* software: reflects PTEH's SH */ | 112 | #define _PAGE_SHARED 0x020 /* software: reflects PTEH's SH */ |
@@ -129,7 +128,7 @@ static __inline__ void set_pte(pte_t *pteptr, pte_t pteval) | |||
129 | #define _PAGE_WIRED _PAGE_EXT(0x001) /* software: wire the tlb entry */ | 128 | #define _PAGE_WIRED _PAGE_EXT(0x001) /* software: wire the tlb entry */ |
130 | #define _PAGE_SPECIAL _PAGE_EXT(0x002) | 129 | #define _PAGE_SPECIAL _PAGE_EXT(0x002) |
131 | 130 | ||
132 | #define _PAGE_CLEAR_FLAGS (_PAGE_PRESENT | _PAGE_FILE | _PAGE_SHARED | \ | 131 | #define _PAGE_CLEAR_FLAGS (_PAGE_PRESENT | _PAGE_SHARED | \ |
133 | _PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_WIRED) | 132 | _PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_WIRED) |
134 | 133 | ||
135 | /* Mask which drops software flags */ | 134 | /* Mask which drops software flags */ |
@@ -260,7 +259,6 @@ static __inline__ void set_pte(pte_t *pteptr, pte_t pteval) | |||
260 | */ | 259 | */ |
261 | static inline int pte_dirty(pte_t pte) { return pte_val(pte) & _PAGE_DIRTY; } | 260 | static inline int pte_dirty(pte_t pte) { return pte_val(pte) & _PAGE_DIRTY; } |
262 | static inline int pte_young(pte_t pte) { return pte_val(pte) & _PAGE_ACCESSED; } | 261 | static inline int pte_young(pte_t pte) { return pte_val(pte) & _PAGE_ACCESSED; } |
263 | static inline int pte_file(pte_t pte) { return pte_val(pte) & _PAGE_FILE; } | ||
264 | static inline int pte_write(pte_t pte) { return pte_val(pte) & _PAGE_WRITE; } | 262 | static inline int pte_write(pte_t pte) { return pte_val(pte) & _PAGE_WRITE; } |
265 | static inline int pte_special(pte_t pte){ return pte_val(pte) & _PAGE_SPECIAL; } | 263 | static inline int pte_special(pte_t pte){ return pte_val(pte) & _PAGE_SPECIAL; } |
266 | 264 | ||
@@ -304,11 +302,6 @@ static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) | |||
304 | #define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) }) | 302 | #define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) }) |
305 | #define __swp_entry_to_pte(x) ((pte_t) { (x).val }) | 303 | #define __swp_entry_to_pte(x) ((pte_t) { (x).val }) |
306 | 304 | ||
307 | /* Encode and decode a nonlinear file mapping entry */ | ||
308 | #define PTE_FILE_MAX_BITS 29 | ||
309 | #define pte_to_pgoff(pte) (pte_val(pte)) | ||
310 | #define pgoff_to_pte(off) ((pte_t) { (off) | _PAGE_FILE }) | ||
311 | |||
312 | #endif /* !__ASSEMBLY__ */ | 305 | #endif /* !__ASSEMBLY__ */ |
313 | 306 | ||
314 | #define pfn_pte(pfn, prot) __pte(((pfn) << PAGE_SHIFT) | pgprot_val(prot)) | 307 | #define pfn_pte(pfn, prot) __pte(((pfn) << PAGE_SHIFT) | pgprot_val(prot)) |