Commit cfdf6456 authored by Arnaldo Carvalho de Melo's avatar Arnaldo Carvalho de Melo
Browse files

tools headers: Sync uapi/linux/prctl.h with the kernel source



To pick up the changes in these csets:

  5ca243f6 ("prctl: add arch-agnostic prctl()s for indirect branch tracking")
  28621ec2 ("rseq: Add prctl() to enable time slice extensions")

That don't introduced these new prctls:

  $ tools/perf/trace/beauty/prctl_option.sh > before.txt
  $ cp include/uapi/linux/prctl.h tools/perf/trace/beauty/include/uapi/linux/prctl.h
  $ tools/perf/trace/beauty/prctl_option.sh > after.txt
  $ diff -u before.txt after.txt
  --- before.txt	2026-02-27 09:07:16.435611457 -0300
  +++ after.txt	2026-02-27 09:07:28.189816531 -0300
  @@ -73,6 +73,10 @@
   	[76] = "LOCK_SHADOW_STACK_STATUS",
   	[77] = "TIMER_CREATE_RESTORE_IDS",
   	[78] = "FUTEX_HASH",
  +	[79] = "RSEQ_SLICE_EXTENSION",
  +	[80] = "GET_INDIR_BR_LP_STATUS",
  +	[81] = "SET_INDIR_BR_LP_STATUS",
  +	[82] = "LOCK_INDIR_BR_LP_STATUS",
   };
   static const char *prctl_set_mm_options[] = {
   	[1] = "START_CODE",
  $

That now will be used to decode the syscall option and also to compose
filters, for instance:

  [root@five ~]# perf trace -e syscalls:sys_enter_prctl --filter option==SET_NAME
       0.000 Isolated Servi/3474327 syscalls:sys_enter_prctl(option: SET_NAME, arg2: 0x7f23f13b7aee)
       0.032 DOM Worker/3474327 syscalls:sys_enter_prctl(option: SET_NAME, arg2: 0x7f23deb25670)
       7.920 :3474328/3474328 syscalls:sys_enter_prctl(option: SET_NAME, arg2: 0x7f23e24fbb10)
       7.935 StreamT~s #374/3474328 syscalls:sys_enter_prctl(option: SET_NAME, arg2: 0x7f23e24fb970)
       8.400 Isolated Servi/3474329 syscalls:sys_enter_prctl(option: SET_NAME, arg2: 0x7f23e24bab10)
       8.418 StreamT~s #374/3474329 syscalls:sys_enter_prctl(option: SET_NAME, arg2: 0x7f23e24ba970)
  ^C[root@five ~]#

This addresses these perf build warnings:

  Warning: Kernel ABI header differences:
    diff -u tools/perf/trace/beauty/include/uapi/linux/prctl.h include/uapi/linux/prctl.h

Please see tools/include/uapi/README for further details.

Cc: Deepak Gupta <debug@rivosinc.com>
Cc: Paul Walmsley <pjw@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@kernel.org>
Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 0031c068
Loading
Loading
Loading
Loading
+37 −0
Original line number Diff line number Diff line
@@ -386,4 +386,41 @@ struct prctl_mm_map {
# define PR_FUTEX_HASH_SET_SLOTS	1
# define PR_FUTEX_HASH_GET_SLOTS	2

/* RSEQ time slice extensions */
#define PR_RSEQ_SLICE_EXTENSION			79
# define PR_RSEQ_SLICE_EXTENSION_GET		1
# define PR_RSEQ_SLICE_EXTENSION_SET		2
/*
 * Bits for RSEQ_SLICE_EXTENSION_GET/SET
 * PR_RSEQ_SLICE_EXT_ENABLE:	Enable
 */
# define PR_RSEQ_SLICE_EXT_ENABLE		0x01

/*
 * Get the current indirect branch tracking configuration for the current
 * thread, this will be the value configured via PR_SET_INDIR_BR_LP_STATUS.
 */
#define PR_GET_INDIR_BR_LP_STATUS      80

/*
 * Set the indirect branch tracking configuration. PR_INDIR_BR_LP_ENABLE will
 * enable cpu feature for user thread, to track all indirect branches and ensure
 * they land on arch defined landing pad instruction.
 * x86 - If enabled, an indirect branch must land on an ENDBRANCH instruction.
 * arch64 - If enabled, an indirect branch must land on a BTI instruction.
 * riscv - If enabled, an indirect branch must land on an lpad instruction.
 * PR_INDIR_BR_LP_DISABLE will disable feature for user thread and indirect
 * branches will no more be tracked by cpu to land on arch defined landing pad
 * instruction.
 */
#define PR_SET_INDIR_BR_LP_STATUS      81
# define PR_INDIR_BR_LP_ENABLE		   (1UL << 0)

/*
 * Prevent further changes to the specified indirect branch tracking
 * configuration.  All bits may be locked via this call, including
 * undefined bits.
 */
#define PR_LOCK_INDIR_BR_LP_STATUS      82

#endif /* _LINUX_PRCTL_H */