aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390
diff options
context:
space:
mode:
authorHeiko Carstens <heiko.carstens@de.ibm.com>2014-09-22 02:50:51 -0400
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2014-09-25 04:52:09 -0400
commit6a5c1482e2b700e89f174ddb42434b37f15abccd (patch)
tree4c3e6377eb173f1b7dc0d003de93f9063766a507 /arch/s390
parent70c9d296325b398a87c30de77cc94033a60bdad2 (diff)
s390/mm: remove change bit override support
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390')
-rw-r--r--arch/s390/include/asm/pgtable.h9
-rw-r--r--arch/s390/mm/dump_pagetables.c5
-rw-r--r--arch/s390/mm/hugetlbpage.c2
-rw-r--r--arch/s390/mm/vmem.c3
4 files changed, 6 insertions, 13 deletions
diff --git a/arch/s390/include/asm/pgtable.h b/arch/s390/include/asm/pgtable.h
index 5efb2fe186e7..7c4af56f2b73 100644
--- a/arch/s390/include/asm/pgtable.h
+++ b/arch/s390/include/asm/pgtable.h
@@ -216,7 +216,6 @@ extern unsigned long MODULES_END;
216 */ 216 */
217 217
218/* Hardware bits in the page table entry */ 218/* Hardware bits in the page table entry */
219#define _PAGE_CO 0x100 /* HW Change-bit override */
220#define _PAGE_PROTECT 0x200 /* HW read-only bit */ 219#define _PAGE_PROTECT 0x200 /* HW read-only bit */
221#define _PAGE_INVALID 0x400 /* HW invalid bit */ 220#define _PAGE_INVALID 0x400 /* HW invalid bit */
222#define _PAGE_LARGE 0x800 /* Bit to mark a large pte */ 221#define _PAGE_LARGE 0x800 /* Bit to mark a large pte */
@@ -233,8 +232,8 @@ extern unsigned long MODULES_END;
233#define __HAVE_ARCH_PTE_SPECIAL 232#define __HAVE_ARCH_PTE_SPECIAL
234 233
235/* Set of bits not changed in pte_modify */ 234/* Set of bits not changed in pte_modify */
236#define _PAGE_CHG_MASK (PAGE_MASK | _PAGE_SPECIAL | _PAGE_CO | \ 235#define _PAGE_CHG_MASK (PAGE_MASK | _PAGE_SPECIAL | _PAGE_DIRTY | \
237 _PAGE_DIRTY | _PAGE_YOUNG) 236 _PAGE_YOUNG)
238 237
239/* 238/*
240 * handle_pte_fault uses pte_present, pte_none and pte_file to find out the 239 * handle_pte_fault uses pte_present, pte_none and pte_file to find out the
@@ -353,7 +352,6 @@ extern unsigned long MODULES_END;
353 352
354#define _REGION3_ENTRY_LARGE 0x400 /* RTTE-format control, large page */ 353#define _REGION3_ENTRY_LARGE 0x400 /* RTTE-format control, large page */
355#define _REGION3_ENTRY_RO 0x200 /* page protection bit */ 354#define _REGION3_ENTRY_RO 0x200 /* page protection bit */
356#define _REGION3_ENTRY_CO 0x100 /* change-recording override */
357 355
358/* Bits in the segment table entry */ 356/* Bits in the segment table entry */
359#define _SEGMENT_ENTRY_BITS 0xfffffffffffffe33UL 357#define _SEGMENT_ENTRY_BITS 0xfffffffffffffe33UL
@@ -370,7 +368,6 @@ extern unsigned long MODULES_END;
370#define _SEGMENT_ENTRY_YOUNG 0x1000 /* SW segment young bit */ 368#define _SEGMENT_ENTRY_YOUNG 0x1000 /* SW segment young bit */
371#define _SEGMENT_ENTRY_SPLIT 0x0800 /* THP splitting bit */ 369#define _SEGMENT_ENTRY_SPLIT 0x0800 /* THP splitting bit */
372#define _SEGMENT_ENTRY_LARGE 0x0400 /* STE-format control, large page */ 370#define _SEGMENT_ENTRY_LARGE 0x0400 /* STE-format control, large page */
373#define _SEGMENT_ENTRY_CO 0x0100 /* change-recording override */
374#define _SEGMENT_ENTRY_READ 0x0002 /* SW segment read bit */ 371#define _SEGMENT_ENTRY_READ 0x0002 /* SW segment read bit */
375#define _SEGMENT_ENTRY_WRITE 0x0001 /* SW segment write bit */ 372#define _SEGMENT_ENTRY_WRITE 0x0001 /* SW segment write bit */
376 373
@@ -887,8 +884,6 @@ static inline void set_pte_at(struct mm_struct *mm, unsigned long addr,
887 pgste = pgste_set_pte(ptep, pgste, entry); 884 pgste = pgste_set_pte(ptep, pgste, entry);
888 pgste_set_unlock(ptep, pgste); 885 pgste_set_unlock(ptep, pgste);
889 } else { 886 } else {
890 if (!(pte_val(entry) & _PAGE_INVALID) && MACHINE_HAS_EDAT1)
891 pte_val(entry) |= _PAGE_CO;
892 *ptep = entry; 887 *ptep = entry;
893 } 888 }
894} 889}
diff --git a/arch/s390/mm/dump_pagetables.c b/arch/s390/mm/dump_pagetables.c
index 46d517c3c763..d46cadeda204 100644
--- a/arch/s390/mm/dump_pagetables.c
+++ b/arch/s390/mm/dump_pagetables.c
@@ -54,7 +54,6 @@ static void print_prot(struct seq_file *m, unsigned int pr, int level)
54 return; 54 return;
55 } 55 }
56 seq_printf(m, "%s", pr & _PAGE_PROTECT ? "RO " : "RW "); 56 seq_printf(m, "%s", pr & _PAGE_PROTECT ? "RO " : "RW ");
57 seq_printf(m, "%s", pr & _PAGE_CO ? "CO " : " ");
58 seq_putc(m, '\n'); 57 seq_putc(m, '\n');
59} 58}
60 59
@@ -129,7 +128,7 @@ static void walk_pte_level(struct seq_file *m, struct pg_state *st,
129} 128}
130 129
131#ifdef CONFIG_64BIT 130#ifdef CONFIG_64BIT
132#define _PMD_PROT_MASK (_SEGMENT_ENTRY_PROTECT | _SEGMENT_ENTRY_CO) 131#define _PMD_PROT_MASK _SEGMENT_ENTRY_PROTECT
133#else 132#else
134#define _PMD_PROT_MASK 0 133#define _PMD_PROT_MASK 0
135#endif 134#endif
@@ -157,7 +156,7 @@ static void walk_pmd_level(struct seq_file *m, struct pg_state *st,
157} 156}
158 157
159#ifdef CONFIG_64BIT 158#ifdef CONFIG_64BIT
160#define _PUD_PROT_MASK (_REGION3_ENTRY_RO | _REGION3_ENTRY_CO) 159#define _PUD_PROT_MASK _REGION3_ENTRY_RO
161#else 160#else
162#define _PUD_PROT_MASK 0 161#define _PUD_PROT_MASK 0
163#endif 162#endif
diff --git a/arch/s390/mm/hugetlbpage.c b/arch/s390/mm/hugetlbpage.c
index 389bc17934b7..3c80d2e38f03 100644
--- a/arch/s390/mm/hugetlbpage.c
+++ b/arch/s390/mm/hugetlbpage.c
@@ -88,7 +88,7 @@ void set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
88 pmd_val(pmd) &= ~_SEGMENT_ENTRY_ORIGIN; 88 pmd_val(pmd) &= ~_SEGMENT_ENTRY_ORIGIN;
89 pmd_val(pmd) |= pte_page(pte)[1].index; 89 pmd_val(pmd) |= pte_page(pte)[1].index;
90 } else 90 } else
91 pmd_val(pmd) |= _SEGMENT_ENTRY_LARGE | _SEGMENT_ENTRY_CO; 91 pmd_val(pmd) |= _SEGMENT_ENTRY_LARGE;
92 *(pmd_t *) ptep = pmd; 92 *(pmd_t *) ptep = pmd;
93} 93}
94 94
diff --git a/arch/s390/mm/vmem.c b/arch/s390/mm/vmem.c
index 121aff0a66b7..88475b894a86 100644
--- a/arch/s390/mm/vmem.c
+++ b/arch/s390/mm/vmem.c
@@ -236,8 +236,7 @@ int __meminit vmemmap_populate(unsigned long start, unsigned long end, int node)
236 if (!new_page) 236 if (!new_page)
237 goto out; 237 goto out;
238 pmd_val(*pm_dir) = __pa(new_page) | 238 pmd_val(*pm_dir) = __pa(new_page) |
239 _SEGMENT_ENTRY | _SEGMENT_ENTRY_LARGE | 239 _SEGMENT_ENTRY | _SEGMENT_ENTRY_LARGE;
240 _SEGMENT_ENTRY_CO;
241 address = (address + PMD_SIZE) & PMD_MASK; 240 address = (address + PMD_SIZE) & PMD_MASK;
242 continue; 241 continue;
243 } 242 }