Re: [RFC PATCH v4 2/2] arm64: tlb: Use the TLBI RANGE feature in arm64

From: Robin Murphy
Date: Tue Jul 07 2020 - 14:12:15 EST


On 2020-07-07 18:46, Catalin Marinas wrote:
On Tue, Jul 07, 2020 at 06:43:35PM +0100, Marc Zyngier wrote:
On 2020-07-07 18:36, Catalin Marinas wrote:
On Mon, Jun 01, 2020 at 10:47:13PM +0800, Zhenyu Ye wrote:
@@ -59,6 +69,47 @@
__ta; \
})

+/*
+ * __TG defines translation granule of the system, which is decided
by
+ * PAGE_SHIFT. Used by TTL.
+ * - 4KB : 1
+ * - 16KB : 2
+ * - 64KB : 3
+ */
+#define __TG ((PAGE_SHIFT - 12) / 2 + 1)

Nitpick: maybe something like __TLBI_TG to avoid clashes in case someone
else defines a __TG macro.

I have commented on this in the past, and still maintain that this
would be better served by a switch statement similar to what is used
for TTL already (I don't think this magic formula exists in the
ARM ARM).

Good point, it would be cleaner indeed.

FWIW, we use the somewhat obtuse "(shift - 10) / 2" in the SMMUv3 driver, but that's because we support multiple different granules at runtime and want to generate efficient code. Anything based on PAGE_SHIFT that resolves to a compile-time constant has no excuse for not being written in a clear and obvious manner ;)

Robin.