mirror of https://gitee.com/openkylin/linux.git
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>
This commit is contained in:
parent
70c9d29632
commit
6a5c1482e2
|
@ -216,7 +216,6 @@ extern unsigned long MODULES_END;
|
|||
*/
|
||||
|
||||
/* Hardware bits in the page table entry */
|
||||
#define _PAGE_CO 0x100 /* HW Change-bit override */
|
||||
#define _PAGE_PROTECT 0x200 /* HW read-only bit */
|
||||
#define _PAGE_INVALID 0x400 /* HW invalid bit */
|
||||
#define _PAGE_LARGE 0x800 /* Bit to mark a large pte */
|
||||
|
@ -233,8 +232,8 @@ extern unsigned long MODULES_END;
|
|||
#define __HAVE_ARCH_PTE_SPECIAL
|
||||
|
||||
/* Set of bits not changed in pte_modify */
|
||||
#define _PAGE_CHG_MASK (PAGE_MASK | _PAGE_SPECIAL | _PAGE_CO | \
|
||||
_PAGE_DIRTY | _PAGE_YOUNG)
|
||||
#define _PAGE_CHG_MASK (PAGE_MASK | _PAGE_SPECIAL | _PAGE_DIRTY | \
|
||||
_PAGE_YOUNG)
|
||||
|
||||
/*
|
||||
* handle_pte_fault uses pte_present, pte_none and pte_file to find out the
|
||||
|
@ -353,7 +352,6 @@ extern unsigned long MODULES_END;
|
|||
|
||||
#define _REGION3_ENTRY_LARGE 0x400 /* RTTE-format control, large page */
|
||||
#define _REGION3_ENTRY_RO 0x200 /* page protection bit */
|
||||
#define _REGION3_ENTRY_CO 0x100 /* change-recording override */
|
||||
|
||||
/* Bits in the segment table entry */
|
||||
#define _SEGMENT_ENTRY_BITS 0xfffffffffffffe33UL
|
||||
|
@ -370,7 +368,6 @@ extern unsigned long MODULES_END;
|
|||
#define _SEGMENT_ENTRY_YOUNG 0x1000 /* SW segment young bit */
|
||||
#define _SEGMENT_ENTRY_SPLIT 0x0800 /* THP splitting bit */
|
||||
#define _SEGMENT_ENTRY_LARGE 0x0400 /* STE-format control, large page */
|
||||
#define _SEGMENT_ENTRY_CO 0x0100 /* change-recording override */
|
||||
#define _SEGMENT_ENTRY_READ 0x0002 /* SW segment read bit */
|
||||
#define _SEGMENT_ENTRY_WRITE 0x0001 /* SW segment write bit */
|
||||
|
||||
|
@ -887,8 +884,6 @@ static inline void set_pte_at(struct mm_struct *mm, unsigned long addr,
|
|||
pgste = pgste_set_pte(ptep, pgste, entry);
|
||||
pgste_set_unlock(ptep, pgste);
|
||||
} else {
|
||||
if (!(pte_val(entry) & _PAGE_INVALID) && MACHINE_HAS_EDAT1)
|
||||
pte_val(entry) |= _PAGE_CO;
|
||||
*ptep = entry;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -54,7 +54,6 @@ static void print_prot(struct seq_file *m, unsigned int pr, int level)
|
|||
return;
|
||||
}
|
||||
seq_printf(m, "%s", pr & _PAGE_PROTECT ? "RO " : "RW ");
|
||||
seq_printf(m, "%s", pr & _PAGE_CO ? "CO " : " ");
|
||||
seq_putc(m, '\n');
|
||||
}
|
||||
|
||||
|
@ -129,7 +128,7 @@ static void walk_pte_level(struct seq_file *m, struct pg_state *st,
|
|||
}
|
||||
|
||||
#ifdef CONFIG_64BIT
|
||||
#define _PMD_PROT_MASK (_SEGMENT_ENTRY_PROTECT | _SEGMENT_ENTRY_CO)
|
||||
#define _PMD_PROT_MASK _SEGMENT_ENTRY_PROTECT
|
||||
#else
|
||||
#define _PMD_PROT_MASK 0
|
||||
#endif
|
||||
|
@ -157,7 +156,7 @@ static void walk_pmd_level(struct seq_file *m, struct pg_state *st,
|
|||
}
|
||||
|
||||
#ifdef CONFIG_64BIT
|
||||
#define _PUD_PROT_MASK (_REGION3_ENTRY_RO | _REGION3_ENTRY_CO)
|
||||
#define _PUD_PROT_MASK _REGION3_ENTRY_RO
|
||||
#else
|
||||
#define _PUD_PROT_MASK 0
|
||||
#endif
|
||||
|
|
|
@ -88,7 +88,7 @@ void set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
|
|||
pmd_val(pmd) &= ~_SEGMENT_ENTRY_ORIGIN;
|
||||
pmd_val(pmd) |= pte_page(pte)[1].index;
|
||||
} else
|
||||
pmd_val(pmd) |= _SEGMENT_ENTRY_LARGE | _SEGMENT_ENTRY_CO;
|
||||
pmd_val(pmd) |= _SEGMENT_ENTRY_LARGE;
|
||||
*(pmd_t *) ptep = pmd;
|
||||
}
|
||||
|
||||
|
|
|
@ -236,8 +236,7 @@ int __meminit vmemmap_populate(unsigned long start, unsigned long end, int node)
|
|||
if (!new_page)
|
||||
goto out;
|
||||
pmd_val(*pm_dir) = __pa(new_page) |
|
||||
_SEGMENT_ENTRY | _SEGMENT_ENTRY_LARGE |
|
||||
_SEGMENT_ENTRY_CO;
|
||||
_SEGMENT_ENTRY | _SEGMENT_ENTRY_LARGE;
|
||||
address = (address + PMD_SIZE) & PMD_MASK;
|
||||
continue;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue