summaryrefslogtreecommitdiff
path: root/arch/s390/mm/pgalloc.c
diff options
context:
space:
mode:
authorAlexander Gordeev <agordeev@linux.ibm.com>2020-02-28 11:32:01 +0100
committerVasily Gorbik <gor@linux.ibm.com>2020-03-28 12:46:12 +0100
commit6a3eb35e56b3308966945b76ec1dfbc18537feef (patch)
tree2a10a11c9f08507830ebad5b4982cd1bbe4737ae /arch/s390/mm/pgalloc.c
parentb2745655be3658cd422ba2b07cf19eb64e0c0eaf (diff)
s390/mm: remove page table downgrade support
This update consolidates page table handling code. Because there are hardly any 31-bit binaries left we do not need to optimize for that. No extra efforts are needed to ensure that a compat task does not map anything above 2GB. The TASK_SIZE limit for 31-bit tasks is 2GB already and the generic code does check that a resulting map address would not surpass that limit. Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com> Reviewed-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
Diffstat (limited to 'arch/s390/mm/pgalloc.c')
-rw-r--r--arch/s390/mm/pgalloc.c24
1 files changed, 0 insertions, 24 deletions
diff --git a/arch/s390/mm/pgalloc.c b/arch/s390/mm/pgalloc.c
index af3bddd5e568..4630fb7705ca 100644
--- a/arch/s390/mm/pgalloc.c
+++ b/arch/s390/mm/pgalloc.c
@@ -138,30 +138,6 @@ err_p4d:
return -ENOMEM;
}
-void crst_table_downgrade(struct mm_struct *mm)
-{
- pgd_t *pgd;
-
- /* downgrade should only happen from 3 to 2 levels (compat only) */
- VM_BUG_ON(mm->context.asce_limit != _REGION2_SIZE);
-
- if (current->active_mm == mm) {
- clear_user_asce();
- __tlb_flush_mm(mm);
- }
-
- pgd = mm->pgd;
- mm_dec_nr_pmds(mm);
- mm->pgd = (pgd_t *) (pgd_val(*pgd) & _REGION_ENTRY_ORIGIN);
- mm->context.asce_limit = _REGION3_SIZE;
- mm->context.asce = __pa(mm->pgd) | _ASCE_TABLE_LENGTH |
- _ASCE_USER_BITS | _ASCE_TYPE_SEGMENT;
- crst_table_free(mm, (unsigned long *) pgd);
-
- if (current->active_mm == mm)
- set_user_asce(mm);
-}
-
static inline unsigned int atomic_xor_bits(atomic_t *v, unsigned int bits)
{
unsigned int old, new;