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