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.