Sashiko discussions
 help / color / mirror / Atom feed
* Re: [PATCH RFC bpf-next 2/2] selftests/bpf: Add LoongArch support for get_preempt_count()
       [not found] ` <20260420133532.4973DC2BCB4@smtp.kernel.org>
@ 2026-04-21  0:47   ` Tiezhu Yang
  2026-05-15 17:45     ` Ihor Solodrai
  0 siblings, 1 reply; 3+ messages in thread
From: Tiezhu Yang @ 2026-04-21  0:47 UTC (permalink / raw)
  To: sashiko; +Cc: bpf

On 2026/4/20 下午9:35, sashiko-bot@kernel.org wrote:
> Sashiko AI review found 1 potential issue(s):
> - [High] BPF programs including `bpf_experimental.h` will fail to compile on LoongArch due to a non-existent `thread_info` field in `struct task_struct`.
> --
> 
> commit 82453686fe5eacd9f219e2a050dc016b297cfc79
> Author: Tiezhu Yang <yangtiezhu@loongson.cn>
> 
> selftests/bpf: Add LoongArch support for get_preempt_count()
> 
> This commit adds LoongArch support for get_preempt_count() in the BPF
> experimental helpers. It enables bpf_in_interrupt() and related macros to
> work properly on LoongArch systems.
> 
>> diff --git a/tools/testing/selftests/bpf/bpf_experimental.h b/tools/testing/selftests/bpf/bpf_experimental.h
>> index e5c039bc44cb4..5847bbf12d240 100644
>> --- a/tools/testing/selftests/bpf/bpf_experimental.h
>> +++ b/tools/testing/selftests/bpf/bpf_experimental.h
>> @@ -507,6 +507,8 @@ static inline int get_preempt_count(void)
>>   	return bpf_get_lowcore()->preempt_count;
>>   #elif defined(bpf_target_riscv)
>>   	return bpf_get_current_task_btf()->thread_info.preempt_count;
>> +#elif defined(bpf_target_loongarch)
>> +	return bpf_get_current_task_btf()->thread_info.preempt_count;
> 
> Will this compile successfully on LoongArch?
> 
> Since LoongArch does not select CONFIG_THREAD_INFO_IN_TASK, struct
> thread_info is allocated on the kernel stack rather than being embedded
> within struct task_struct. Because of this, the generated BTF and vmlinux.h
> for LoongArch will not contain a thread_info field in task_struct.
> 
> Could this lead to a compiler error indicating that there is no member named
> thread_info in struct task_struct when building BPF selftests?

As mentioned in the cover letter, it needs to apply the kernel patch
"LoongArch: Implement CONFIG_THREAD_INFO_IN_TASK" [1] before testing.

[1] 
https://lore.kernel.org/loongarch/20260420102907.4617-1-yangtiezhu@loongson.cn/

Thanks,
Tiezhu


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH RFC bpf-next 2/2] selftests/bpf: Add LoongArch support for get_preempt_count()
  2026-04-21  0:47   ` [PATCH RFC bpf-next 2/2] selftests/bpf: Add LoongArch support for get_preempt_count() Tiezhu Yang
@ 2026-05-15 17:45     ` Ihor Solodrai
  2026-05-19  3:30       ` Tiezhu Yang
  0 siblings, 1 reply; 3+ messages in thread
From: Ihor Solodrai @ 2026-05-15 17:45 UTC (permalink / raw)
  To: Tiezhu Yang, sashiko; +Cc: bpf

On 4/20/26 5:47 PM, Tiezhu Yang wrote:
> On 2026/4/20 下午9:35, sashiko-bot@kernel.org wrote:
>> Sashiko AI review found 1 potential issue(s):
>> - [High] BPF programs including `bpf_experimental.h` will fail to compile on LoongArch due to a non-existent `thread_info` field in `struct task_struct`.
>> -- 
>>
>> commit 82453686fe5eacd9f219e2a050dc016b297cfc79
>> Author: Tiezhu Yang <yangtiezhu@loongson.cn>
>>
>> selftests/bpf: Add LoongArch support for get_preempt_count()
>>
>> This commit adds LoongArch support for get_preempt_count() in the BPF
>> experimental helpers. It enables bpf_in_interrupt() and related macros to
>> work properly on LoongArch systems.
>>
>>> diff --git a/tools/testing/selftests/bpf/bpf_experimental.h b/tools/testing/selftests/bpf/bpf_experimental.h
>>> index e5c039bc44cb4..5847bbf12d240 100644
>>> --- a/tools/testing/selftests/bpf/bpf_experimental.h
>>> +++ b/tools/testing/selftests/bpf/bpf_experimental.h
>>> @@ -507,6 +507,8 @@ static inline int get_preempt_count(void)
>>>       return bpf_get_lowcore()->preempt_count;
>>>   #elif defined(bpf_target_riscv)
>>>       return bpf_get_current_task_btf()->thread_info.preempt_count;
>>> +#elif defined(bpf_target_loongarch)
>>> +    return bpf_get_current_task_btf()->thread_info.preempt_count;
>>
>> Will this compile successfully on LoongArch?
>>
>> Since LoongArch does not select CONFIG_THREAD_INFO_IN_TASK, struct
>> thread_info is allocated on the kernel stack rather than being embedded
>> within struct task_struct. Because of this, the generated BTF and vmlinux.h
>> for LoongArch will not contain a thread_info field in task_struct.
>>
>> Could this lead to a compiler error indicating that there is no member named
>> thread_info in struct task_struct when building BPF selftests?
> 
> As mentioned in the cover letter, it needs to apply the kernel patch
> "LoongArch: Implement CONFIG_THREAD_INFO_IN_TASK" [1] before testing.

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.

Thanks.

[1] https://lore.kernel.org/bpf/20260428072021.7289-1-yangtiezhu@loongson.cn/

> 
> [1] https://lore.kernel.org/loongarch/20260420102907.4617-1-yangtiezhu@loongson.cn/
> 
> Thanks,
> Tiezhu
> 


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH RFC bpf-next 2/2] selftests/bpf: Add LoongArch support for get_preempt_count()
  2026-05-15 17:45     ` Ihor Solodrai
@ 2026-05-19  3:30       ` Tiezhu Yang
  0 siblings, 0 replies; 3+ messages in thread
From: Tiezhu Yang @ 2026-05-19  3:30 UTC (permalink / raw)
  To: Ihor Solodrai, sashiko; +Cc: bpf

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


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-05-19  3:30 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20260420111516.19982-3-yangtiezhu@loongson.cn>
     [not found] ` <20260420133532.4973DC2BCB4@smtp.kernel.org>
2026-04-21  0:47   ` [PATCH RFC bpf-next 2/2] selftests/bpf: Add LoongArch support for get_preempt_count() Tiezhu Yang
2026-05-15 17:45     ` Ihor Solodrai
2026-05-19  3:30       ` Tiezhu Yang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox