• Martin Schwidefsky's avatar
    s390/mm,tlb: safeguard against speculative TLB creation · 02a8f3ab
    Martin Schwidefsky authored
    The principles of operations states that the CPU is allowed to create
    TLB entries for an address space anytime while an ASCE is loaded to
    the control register. This is true even if the CPU is running in the
    kernel and the user address space is not (actively) accessed.
    
    In theory this can affect two aspects of the TLB flush logic.
    For full-mm flushes the ASCE of the dying process is still attached.
    The approach to flush first with IDTE and then just free all page
    tables can in theory lead to stale TLB entries. Use the batched
    free of page tables for the full-mm flushes as well.
    
    For operations that can have a stale ASCE in the control register,
    e.g. a delayed update_user_asce in switch_mm, load the kernel ASCE
    to prevent invalid TLBs from being created.
    Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
    02a8f3ab
pgtable.c 37.8 KB