Re: bpf: RFC for platform specific BPF helper addition

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 23/02/2023 19:46, Alexei Starovoitov wrote:
On Thu, Feb 23, 2023 at 5:23 AM Tero Kristo <tero.kristo@xxxxxxxxxxxxxxx> wrote:
Hi,

Some background first; on x86 platforms there is a free running TSC
counter which can be used to generate extremely accurate profiling time
stamps. Currently this can be used by BPF programs via hooking into perf
subsystem and reading the value there; however this reduces the accuracy
due to latency + jitter involved with long execution chain, and also the
timebase gets converted into relative from the start of the execution of
the program, instead of getting an absolute system level value.
Are you talking about rdtsc or some other counter?
Does it need an arch specific setup?
Yes, this is rdtsc. TSC is setup automatically by the arch, but exporting it to BPF takes a few lines of arch specific code (I did use register_btf_kfunc_id_set() during init, under arch/x86/kernel/tsc.c.)

Now, I do have a pretty trivial patch (under internal review atm. at
Intel) that adds an x86 platform specific bpf helper that can directly
read this timestamp counter without relying to perf subsystem hooks.

Do people have any feedback / insights on this list about addition of
such platform specific BPF helper, basically thumbs up/down for adding
such a thing? Currently I don't think there are any platform specific
helpers in the kernel.
Right. That's one of the reasons we don't add new helpers anymore.
Please use kfunc instead. You can add it to:
arch/x86/net/bpf_jit_comp.c
like:
__bpf_kfunc u64 bpf_read_rdtsc(void)
{ asm ("...
or to arch specific kernel module.

Make sure to add selftests when you submit a patch.

Ok, I can take a look at the selftest side if things nudge forward, however there is some internal pressure to ditch the whole idea of bpf_rdtsc() due to potential of side channel attacks by using BPF, and exploiting the accurate timer in the process. Any thoughts on that side? Using BPF requires root access nowadays so it is sort of on-par to out-of-tree kernel modules.

-Tero




[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux