-
- Downloads
s390/mm,tlb: optimize TLB flushing for zEC12
The zEC12 machines introduced the local-clearing control for the IDTE
and IPTE instruction. If the control is set only the TLB of the local
CPU is cleared of entries, either all entries of a single address space
for IDTE, or the entry for a single page-table entry for IPTE.
Without the local-clearing control the TLB flush is broadcasted to all
CPUs in the configuration, which is expensive.
The reset of the bit mask of the CPUs that need flushing after a
non-local IDTE is tricky. As TLB entries for an address space remain
in the TLB even if the address space is detached a new bit field is
required to keep track of attached CPUs vs. CPUs in the need of a
flush. After a non-local flush with IDTE the bit-field of attached CPUs
is copied to the bit-field of CPUs in need of a flush. The ordering
of operations on cpu_attach_mask, attach_count and mm_cpumask(mm) is
such that an underindication in mm_cpumask(mm) is prevented but an
overindication in mm_cpumask(mm) is possible.
Signed-off-by:
Martin Schwidefsky <schwidefsky@de.ibm.com>
Showing
- arch/s390/include/asm/mmu.h 2 additions, 0 deletionsarch/s390/include/asm/mmu.h
- arch/s390/include/asm/mmu_context.h 5 additions, 0 deletionsarch/s390/include/asm/mmu_context.h
- arch/s390/include/asm/pgtable.h 92 additions, 36 deletionsarch/s390/include/asm/pgtable.h
- arch/s390/include/asm/setup.h 3 additions, 0 deletionsarch/s390/include/asm/setup.h
- arch/s390/include/asm/tlbflush.h 95 additions, 20 deletionsarch/s390/include/asm/tlbflush.h
- arch/s390/kernel/early.c 2 additions, 0 deletionsarch/s390/kernel/early.c
- arch/s390/kernel/smp.c 6 additions, 0 deletionsarch/s390/kernel/smp.c
- arch/s390/mm/hugetlbpage.c 1 addition, 4 deletionsarch/s390/mm/hugetlbpage.c
- arch/s390/mm/init.c 5 additions, 2 deletionsarch/s390/mm/init.c
- arch/s390/mm/pgtable.c 2 additions, 2 deletionsarch/s390/mm/pgtable.c
- arch/s390/mm/vmem.c 0 additions, 2 deletionsarch/s390/mm/vmem.c
Loading
Please register or sign in to comment