[PATCH v1 3/4] tracing/remotes: Add REMOTE_EVENT_CUSTOM_PRINTK() helper

Fuad Tabba tabba at google.com
Sun Jun 14 07:46:00 PDT 2026


On Fri, 12 Jun 2026 at 15:22, Vincent Donnefort <vdonnefort at google.com> wrote:
>
> The current REMOTE_EVENT() takes as a __printk argument a string format
> and a list of arguments, such as RE_STRUCT("foo=%d bar=%d", foo, bar).
> Add a REMOTE_EVENT_CUSTOM_PRINTK() where the __printk argument can be a
> function. This intends to support the creation of a "printk" event for
> the arm64 nVHE/pKVM hypervisor with a dynamic prototype and by extension
> a dynamic print format.
>
> Signed-off-by: Vincent Donnefort <vdonnefort at google.com>

Reviewed-by: Fuad Tabba <tabba at google.com>
Tested-by: Fuad Tabba <tabba at google.com>

Cheers,
/fuad

>
> diff --git a/include/trace/define_remote_events.h b/include/trace/define_remote_events.h
> index 676e803dc144..4f4d58e37b84 100644
> --- a/include/trace/define_remote_events.h
> +++ b/include/trace/define_remote_events.h
> @@ -35,17 +35,26 @@ do {                                                                                        \
>
>  #define RE_PRINTK(__args...) __args
>
> -#define REMOTE_EVENT(__name, __id, __struct, __printk)                                 \
> -       REMOTE_EVENT_FORMAT(__name, __struct);                                          \
> +#define REMOTE_EVENT_PRINT_FUNC(__name, __printk)                                      \
>         static void remote_event_print_##__name(void *evt, struct trace_seq *seq)       \
>         {                                                                               \
>                 struct remote_event_format_##__name __maybe_unused *__entry = evt;      \
>                 trace_seq_puts(seq, #__name);                                           \
> -               remote_printk(__printk);                                                \
> +               __printk;                                                               \
>         }
> +
> +#define REMOTE_EVENT(__name, __id, __struct, __printk)                                 \
> +       REMOTE_EVENT_FORMAT(__name, __struct);                                          \
> +       REMOTE_EVENT_PRINT_FUNC(__name, remote_printk(__printk))
> +
> +#define REMOTE_EVENT_CUSTOM_PRINTK(__name, __id, __struct, __printk)                   \
> +       REMOTE_EVENT_FORMAT(__name, __struct);                                          \
> +       REMOTE_EVENT_PRINT_FUNC(__name, __printk)
> +
>  #include REMOTE_EVENT_INCLUDE(REMOTE_EVENT_INCLUDE_FILE)
>
>  #undef REMOTE_EVENT
> +#undef REMOTE_EVENT_CUSTOM_PRINTK
>  #undef RE_PRINTK
>  #undef re_field
>  #define re_field(__type, __field)                                                      \
> @@ -70,4 +79,8 @@ do {                                                                                  \
>                 .print_fmt      = remote_event_print_fmt_##__name,                      \
>                 .print          = remote_event_print_##__name,                          \
>         }
> +
> +#define REMOTE_EVENT_CUSTOM_PRINTK(__name, __id, __struct, __printk)                   \
> +       REMOTE_EVENT(__name, __id, RE_STRUCT(__struct), "Unknown")
> +
>  #include REMOTE_EVENT_INCLUDE(REMOTE_EVENT_INCLUDE_FILE)
> --
> 2.54.0.1136.gdb2ca164c4-goog
>



More information about the linux-arm-kernel mailing list