mm: trace: name protection key encoding bits

Protection keys are encoded in architecture-specific HIGH_ARCH_* VMA flag
bits.  show_vma_flags(), which is used by VMA tracepoints and %pGv, does
not name those bits, leaving them as raw hexadecimal values.

Name the protection-key encoding bits pkey_bit0 through pkey_bit4 under
CONFIG_ARCH_HAS_PKEYS.  The names make clear that these are bits of one
protection-key value rather than independent protection keys.  For
example, protection key 3 is represented as:

  pkey_bit0|pkey_bit1

Honor CONFIG_ARCH_PKEY_BITS when exposing bit 3 and bit 4 so only bits
provided by the architecture are included.

Link: https://lore.kernel.org/1871da32001243b37147bac5af02d2f2ec64304e.1788330432.git.zhaomeijing@lixiang.com
Signed-off-by: Meijing Zhao <zhaomeijing@lixiang.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Cc: Lorenzo Stoakes <ljs@kernel.org>
Cc: "Masami Hiramatsu (Google)" <mhiramat@kernel.org>
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
This commit is contained in:
Meijing Zhao 2026-09-02 14:45:10 +08:00 committed by Andrew Morton
parent a971ac3a0a
commit 1875204543

View File

@ -202,6 +202,24 @@ IF_HAVE_PG_ARCH_3(arch_3)
# define IF_HAVE_VM_DROPPABLE(flag, name)
#endif
#ifdef CONFIG_ARCH_HAS_PKEYS
# define IF_HAVE_VM_PKEY(flag, name) {flag, name},
#if CONFIG_ARCH_PKEY_BITS > 3
# define IF_HAVE_VM_PKEY3(flag, name) {flag, name},
#else
# define IF_HAVE_VM_PKEY3(flag, name)
#endif
#if CONFIG_ARCH_PKEY_BITS > 4
# define IF_HAVE_VM_PKEY4(flag, name) {flag, name},
#else
# define IF_HAVE_VM_PKEY4(flag, name)
#endif
#else
# define IF_HAVE_VM_PKEY(flag, name)
# define IF_HAVE_VM_PKEY3(flag, name)
# define IF_HAVE_VM_PKEY4(flag, name)
#endif
#ifdef CONFIG_ARM64_MTE
# define IF_HAVE_VM_MTE(flag, name) {flag, name},
#else
@ -250,6 +268,11 @@ IF_HAVE_VM_SOFTDIRTY(VM_SOFTDIRTY, "softdirty" ) \
{VM_HUGEPAGE, "hugepage" }, \
{VM_NOHUGEPAGE, "nohugepage" }, \
IF_HAVE_VM_DROPPABLE(VM_DROPPABLE, "droppable" ) \
IF_HAVE_VM_PKEY(VM_PKEY_BIT0, "pkey_bit0") \
IF_HAVE_VM_PKEY(VM_PKEY_BIT1, "pkey_bit1") \
IF_HAVE_VM_PKEY(VM_PKEY_BIT2, "pkey_bit2") \
IF_HAVE_VM_PKEY3(VM_PKEY_BIT3, "pkey_bit3") \
IF_HAVE_VM_PKEY4(VM_PKEY_BIT4, "pkey_bit4") \
IF_HAVE_VM_MTE(VM_MTE, "mte") \
IF_HAVE_VM_MTE(VM_MTE_ALLOWED, "mte_allowed") \
IF_HAVE_VM_SHADOW_STACK(VM_SHADOW_STACK, "shadow_stack") \