Re: [PATCH][RFC] parisc: Use local tlb purges only on PA2.0 machines

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2022-09-25 4:11 p.m., Helge Deller wrote:
n 9/25/22 22:02, John David Anglin wrote:
On 2022-09-25 2:57 p.m., Helge Deller wrote:
+#ifdef CONFIG_PA20
+#define ALT_COND_PACACHE    ALT_COND_ALWAYS
+#else
+#define ALT_COND_PACACHE    ALT_COND_NO_SMP
+#endif
+
  ENTRY_CFI(flush_tlb_all_local)
      /*
       * The pitlbe and pdtlbe instructions should only be used to
@@ -539,15 +545,10 @@ ENTRY_CFI(copy_user_page_asm)

      /* Purge any old translations */

-#ifdef CONFIG_PA20
-    pdtlb,l        %r0(%r28)
-    pdtlb,l        %r0(%r29)
-#else
  0:    pdtlb        %r0(%r28)
  1:    pdtlb        %r0(%r29)
-    ALTERNATIVE(0b, 0b+4, ALT_COND_NO_SMP, INSN_PxTLB)
-    ALTERNATIVE(1b, 1b+4, ALT_COND_NO_SMP, INSN_PxTLB)
-#endif
+    ALTERNATIVE(0b, 0b+4, ALT_COND_PACACHE, INSN_PxTLB)
+    ALTERNATIVE(1b, 1b+4, ALT_COND_PACACHE, INSN_PxTLB)
This doesn't look correct.  If ALT_COND_PACACHE is defined as ALT_COND_NO_SMP, the pdtlb
instructions will be converted to pdtlb,l instructions when running UP.  These are not supported
on PA 1.1.

Your concern is correct, but there is an additonal check in the alternative-coding,
which prevents enabling the local flag if we're not running on a PA2.0 CPU.
So, those ALTERNATIVE() macros will only apply on PA2.0 machines.
You are correct.  Missed that.

That only leaves the bus serialization issue when pdtlb is used on an SMP machine.

Dave


--
John David Anglin  dave.anglin@xxxxxxxx




[Index of Archives]     [Linux SoC]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux