Tero Kristo wrote: > Hello, > > This patch series adds a new x86 arch specific BPF helper, bpf_rdtsc() > which can be used for reading the hardware time stamp counter (TSC.) > Currently the same counter is directly accessible from userspace > (using RDTSC instruction), and kernel space using various rdtsc_*() > APIs, however eBPF lacks the support. > > The main usage for the TSC counter is for various profiling and timing > purposes, getting accurate cycle counter values. The counter can be > currently read from BPF programs by using the existing perf subsystem > services (bpf_perf_event_read()), however its usage is cumbersome at > best. Additionally, the perf subsystem provides relative value only > for the counter, but absolute values are desired by some use cases > like Wult [1]. The absolute value of TSC can be read with BPF programs > currently via some kprobe / bpf_core_read() magic (see [2], [3], [4] for > example), but this relies on accessing kernel internals and is not > stable API, and is pretty cumbersome. Thus, this patch proposes a new > arch x86 specific BPF helper to avoid the above issues. > > -Tero > > [1] https://github.com/intel/wult > [2] https://github.com/intel/wult/blob/c92237c95b898498faf41e6644983102d1fe5156/helpers/wult-tdt-helper/tdt-bpf.c#L102 > [3] https://github.com/intel/wult/blob/c92237c95b898498faf41e6644983102d1fe5156/helpers/wult-tdt-helper/tdt-bpf.c#L133 > [4] https://github.com/intel/wult/blob/c92237c95b898498faf41e6644983102d1fe5156/helpers/wult-tdt-helper/tdt-bpf.c#L488 > > > Makes a lot of sense to me. Acked-by: John Fastabend <john.fastabend@xxxxxxxxx>