aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sh
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2015-02-10 19:45:56 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2015-02-10 19:45:56 -0500
commit992de5a8eca7cbd3215e3eb2c439b2c11582a58b (patch)
tree863988f84c1dd57a02fa337ecbce49263a3b9511 /arch/sh
parentb2718bffb4088faf13092db30c1ebf088ddee52e (diff)
parentd5b3cf7139b8770af4ed8bb36a1ab9d290ac39e9 (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/Kconfig2
-rw-r--r--arch/sh/boards/mach-se/7343/irq.c3
-rw-r--r--arch/sh/boards/mach-se/7722/irq.c3
-rw-r--r--arch/sh/include/asm/pgtable_32.h30
-rw-r--r--arch/sh/include/asm/pgtable_64.h9
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 @@
1config SUPERH 1config 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 */
261static inline int pte_dirty(pte_t pte) { return pte_val(pte) & _PAGE_DIRTY; } 260static inline int pte_dirty(pte_t pte) { return pte_val(pte) & _PAGE_DIRTY; }
262static inline int pte_young(pte_t pte) { return pte_val(pte) & _PAGE_ACCESSED; } 261static inline int pte_young(pte_t pte) { return pte_val(pte) & _PAGE_ACCESSED; }
263static inline int pte_file(pte_t pte) { return pte_val(pte) & _PAGE_FILE; }
264static inline int pte_write(pte_t pte) { return pte_val(pte) & _PAGE_WRITE; } 262static inline int pte_write(pte_t pte) { return pte_val(pte) & _PAGE_WRITE; }
265static inline int pte_special(pte_t pte){ return pte_val(pte) & _PAGE_SPECIAL; } 263static 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))