Commit 220d8e10 authored by Heiko Carstens's avatar Heiko Carstens
Browse files

s390/mm: Remove cpu_has_idte()



Remove cpu_has_idte(). The IDTE instruction is part of the
Dat-Enhancement facility 1, which is always available.
Therefore remove the helper and now superfluous code.

Acked-by: default avatarAlexander Gordeev <agordeev@linux.ibm.com>
Reviewed-by: default avatarClaudio Imbrenda <imbrenda@linux.ibm.com>
Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
parent 73c4b5d7
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -27,7 +27,6 @@ int cpu_have_feature(unsigned int nr);
#define cpu_has_edat1()		test_facility(8)
#define cpu_has_edat2()		test_facility(78)
#define cpu_has_gs()		test_facility(133)
#define cpu_has_idte()		test_facility(3)
#define cpu_has_nx()		test_facility(130)
#define cpu_has_rdp()		test_facility(194)
#define cpu_has_seq_insn()	test_facility(85)
+2 −5
Original line number Diff line number Diff line
@@ -54,7 +54,7 @@ static inline void __tlb_flush_mm(struct mm_struct *mm)
	cpumask_copy(mm_cpumask(mm), &mm->context.cpu_attach_mask);
	barrier();
	gmap_asce = READ_ONCE(mm->context.gmap_asce);
	if (cpu_has_idte() && gmap_asce != -1UL) {
	if (gmap_asce != -1UL) {
		if (gmap_asce)
			__tlb_flush_idte(gmap_asce);
		__tlb_flush_idte(mm->context.asce);
@@ -68,10 +68,7 @@ static inline void __tlb_flush_mm(struct mm_struct *mm)

static inline void __tlb_flush_kernel(void)
{
	if (cpu_has_idte())
	__tlb_flush_idte(init_mm.context.asce);
	else
		__tlb_flush_global();
}

static inline void __tlb_flush_mm_lazy(struct mm_struct * mm)
+4 −11
Original line number Diff line number Diff line
@@ -138,10 +138,7 @@ EXPORT_SYMBOL_GPL(gmap_create);

static void gmap_flush_tlb(struct gmap *gmap)
{
	if (cpu_has_idte())
	__tlb_flush_idte(gmap->asce);
	else
		__tlb_flush_global();
}

static void gmap_radix_tree_free(struct radix_tree_root *root)
@@ -1988,10 +1985,8 @@ static void gmap_pmdp_xchg(struct gmap *gmap, pmd_t *pmdp, pmd_t new,
	if (machine_has_tlb_guest())
		__pmdp_idte(gaddr, (pmd_t *)pmdp, IDTE_GUEST_ASCE, gmap->asce,
			    IDTE_GLOBAL);
	else if (cpu_has_idte())
		__pmdp_idte(gaddr, (pmd_t *)pmdp, 0, 0, IDTE_GLOBAL);
	else
		__pmdp_csp(pmdp);
		__pmdp_idte(gaddr, (pmd_t *)pmdp, 0, 0, IDTE_GLOBAL);
	set_pmd(pmdp, new);
}

@@ -2066,7 +2061,7 @@ void gmap_pmdp_idte_local(struct mm_struct *mm, unsigned long vmaddr)
			if (machine_has_tlb_guest())
				__pmdp_idte(gaddr, pmdp, IDTE_GUEST_ASCE,
					    gmap->asce, IDTE_LOCAL);
			else if (cpu_has_idte())
			else
				__pmdp_idte(gaddr, pmdp, 0, 0, IDTE_LOCAL);
			*pmdp = __pmd(_SEGMENT_ENTRY_EMPTY);
		}
@@ -2099,10 +2094,8 @@ void gmap_pmdp_idte_global(struct mm_struct *mm, unsigned long vmaddr)
			if (machine_has_tlb_guest())
				__pmdp_idte(gaddr, pmdp, IDTE_GUEST_ASCE,
					    gmap->asce, IDTE_GLOBAL);
			else if (cpu_has_idte())
				__pmdp_idte(gaddr, pmdp, 0, 0, IDTE_GLOBAL);
			else
				__pmdp_csp(pmdp);
				__pmdp_idte(gaddr, pmdp, 0, 0, IDTE_GLOBAL);
			*pmdp = __pmd(_SEGMENT_ENTRY_EMPTY);
		}
		spin_unlock(&gmap->guest_table_lock);
+1 −3
Original line number Diff line number Diff line
@@ -78,10 +78,8 @@ static void pgt_set(unsigned long *old, unsigned long new, unsigned long addr,
		}
		table = (unsigned long *)((unsigned long)old & mask);
		crdte(*old, new, table, dtt, addr, get_lowcore()->kernel_asce.val);
	} else if (cpu_has_idte()) {
		cspg(old, *old, new);
	} else {
		csp((unsigned int *)old + 1, *old, new);
		cspg(old, *old, new);
	}
}

+2 −12
Original line number Diff line number Diff line
@@ -360,14 +360,10 @@ static inline void pmdp_idte_global(struct mm_struct *mm,
			    mm->context.asce, IDTE_GLOBAL);
		if (mm_has_pgste(mm) && mm->context.allow_gmap_hpage_1m)
			gmap_pmdp_idte_global(mm, addr);
	} else if (cpu_has_idte()) {
	} else {
		__pmdp_idte(addr, pmdp, 0, 0, IDTE_GLOBAL);
		if (mm_has_pgste(mm) && mm->context.allow_gmap_hpage_1m)
			gmap_pmdp_idte_global(mm, addr);
	} else {
		__pmdp_csp(pmdp);
		if (mm_has_pgste(mm) && mm->context.allow_gmap_hpage_1m)
			gmap_pmdp_csp(mm, addr);
	}
}

@@ -487,14 +483,8 @@ static inline void pudp_idte_global(struct mm_struct *mm,
	if (machine_has_tlb_guest())
		__pudp_idte(addr, pudp, IDTE_NODAT | IDTE_GUEST_ASCE,
			    mm->context.asce, IDTE_GLOBAL);
	else if (cpu_has_idte())
		__pudp_idte(addr, pudp, 0, 0, IDTE_GLOBAL);
	else
		/*
		 * Invalid bit position is the same for pmd and pud, so we can
		 * reuse _pmd_csp() here
		 */
		__pmdp_csp((pmd_t *) pudp);
		__pudp_idte(addr, pudp, 0, 0, IDTE_GLOBAL);
}

static inline pud_t pudp_flush_direct(struct mm_struct *mm,