diff options
author | Heiko Carstens <heiko.carstens@de.ibm.com> | 2014-09-22 02:50:51 -0400 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2014-09-25 04:52:09 -0400 |
commit | 6a5c1482e2b700e89f174ddb42434b37f15abccd (patch) | |
tree | 4c3e6377eb173f1b7dc0d003de93f9063766a507 /arch/s390 | |
parent | 70c9d296325b398a87c30de77cc94033a60bdad2 (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.h | 9 | ||||
-rw-r--r-- | arch/s390/mm/dump_pagetables.c | 5 | ||||
-rw-r--r-- | arch/s390/mm/hugetlbpage.c | 2 | ||||
-rw-r--r-- | arch/s390/mm/vmem.c | 3 |
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 | } |