]> git.proxmox.com Git - mirror_ubuntu-focal-kernel.git/commitdiff
parisc: Flush ITLB in flush_tlb_all_local() only on split TLB machines
authorHelge Deller <deller@gmx.de>
Sat, 20 Jul 2019 22:55:48 +0000 (00:55 +0200)
committerHelge Deller <deller@gmx.de>
Sun, 21 Jul 2019 09:03:02 +0000 (11:03 +0200)
flush_tlb_all_local() flushes the ITLB and DTLB of the CPU.
In case the machine does not have separate ITLBs and DTLBs, use the
alternative functionality to replace the code which flushes the ITLB
with nops while keeping the code which flushes the DTLB.

Signed-off-by: Helge Deller <deller@gmx.de>
arch/parisc/kernel/pacache.S

index ba67893a1d7275ba79a66852a0d089e1cd918ae1..df46b0e5a915fab2cbde7049ad4e4d9e602462fe 100644 (file)
@@ -63,7 +63,7 @@ ENTRY_CFI(flush_tlb_all_local)
 
        /* Flush Instruction Tlb */
 
-       LDREG           ITLB_SID_BASE(%r1), %r20
+88:    LDREG           ITLB_SID_BASE(%r1), %r20
        LDREG           ITLB_SID_STRIDE(%r1), %r21
        LDREG           ITLB_SID_COUNT(%r1), %r22
        LDREG           ITLB_OFF_BASE(%r1), %arg0
@@ -103,6 +103,7 @@ fitonemiddle:                                       /* Loop if LOOP = 1 */
        add             %r21, %r20, %r20                /* increment space */
 
 fitdone:
+       ALTERNATIVE(88b, fitdone, ALT_COND_NO_SPLIT_TLB, INSN_NOP)
 
        /* Flush Data Tlb */