Re: [PATCH RFC bpf-next 2/2] selftests/bpf: Add LoongArch support for get_preempt_count()
Tiezhu Yang <[email protected]> Tue, 19 May 2026 11:30:37 +0800
| Newsgroups | dev.linux.lists.sashiko,org.kernel.vger.bpf |
|---|---|
| Message-ID | <[email protected]> |
On 2026/5/16 上午1:45, Ihor Solodrai wrote: > On 4/20/26 5:47 PM, Tiezhu Yang wrote: ... > Hi Tiezhu, > > I think it makes sense to include the selftests changes in the > series implementing CONFIG_THREAD_INFO_IN_TASK for loongarch [1]. > > With respect to riscv part of this, I suggest you drop it unless you > have the means to run the tests. Landing without any testing is silly. > > Also I think you may drop the RFC tag. AFAIU you're trying to bring > loongarch to parity with mainstream arch-es, and that shouldn't be > controversial. Hi Ihor, Thanks for your reply and suggestions. 1. riscv part: Given that riscv already supports CONFIG_THREAD_INFO_IN_TASK and there is preempt_count member in struct thread_info, it can get the preempt count via bpf_get_current_task_btf()->thread_info.preempt_count. But this is only in theory, I did not test it on riscv TBH and there is no "Tested-by" from the community so far. I will drop it in the next version. 2. loongarch part: Since LoongArch is transitioning to CONFIG_THREAD_INFO_IN_TASK, I have found a proper way to handle this special status. Use bpf_core_field_exists() to provide compatibility for both legacy and future kernels. A struct flavor "task_struct___local" is introduced to bypass static compiler checks when thread_info is missing from the base task_struct. For the newer kernels that select CONFIG_THREAD_INFO_IN_TASK, it reads preempt_count from the thread_info embedded within task_struct. For the older kernels without selecting CONFIG_THREAD_INFO_IN_TASK, it retrieves the thread_info pointer from the bottom of the kernel stack(task->stack) and then reads the preempt_count. This ensures the BPF selftests remain functional across various LoongArch kernel versions. "./test_progs -t exe_ctx" passes on LoongArch regardless of whether CONFIG_THREAD_INFO_IN_TASK is set. I will send new version ASAP. Thanks, Tiezhu