Skip to content

[RFE] [ARM64] Enable CONFIG_FUNCTION_TRACER for observability support #1974

@tidusete

Description

@tidusete

Current situation
Currently, Flatcar ARM64 kernel builds (tested on Stable 4459.2.1 and Beta 4459.1.2) do not have the Function Tracer enabled.

While the base CONFIG_FTRACE=y is set, the specific CONFIG_FUNCTION_TRACER flag is not set. As a result, the file /sys/kernel/debug/tracing/available_filter_functions is missing from the tracefs / debugfs mounts.

This contrasts with:

Flatcar x86 builds: Where this is enabled by default.

Impact
The lack of available_filter_functions causes critical failures in standard security and observability agents (e.g., tools using eBPF or ftrace for system monitoring).

These tools rely on reading available_filter_functions during initialization to determine which kernel functions are safe to hook (via kprobes or fentry). Because the file is missing, these agents crash or fail to start entirely, making it impossible to run standard security stacks on Flatcar ARM64 nodes.

Ideal future situation
The ARM64 kernel configuration should have CONFIG_FUNCTION_TRACER=y and CONFIG_DYNAMIC_FTRACE=y enabled.

This would populate /sys/kernel/debug/tracing/available_filter_functions, ensuring feature parity with x86 builds and allowing ecosystem tools to function correctly on ARM64.

Implementation options
Update the ARM64 kernel configuration to enable:

CONFIG_FUNCTION_TRACER=y

CONFIG_DYNAMIC_FTRACE=y

Additional information
Reproduction Data: Verified on Flatcar Container Linux by Kinvolk stable 4459.2.1 for Openstack (ARM64):

flatcar-test ~ # zcat /proc/config.gz | grep CONFIG_FUNCTION_TRACER
# CONFIG_FUNCTION_TRACER is not set
flatcar-test ~ # ls -la /sys/kernel/debug/tracing/available_filter_functions
ls: cannot access '/sys/kernel/debug/tracing/available_filter_functions': No such file or directory

Related Context: This seems to be a continuation of the work done in flatcar/scripts#2600 where syscall tracing was enabled. Enabling Function Tracer is the necessary next step to provide full tracing support on this architecture.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Status

    Implemented

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions