Message ID | 20230610035053.117605-1-void@manifault.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 5ba3a7a851e3ebffc4cb8f052a4581c4d8af3ae3 |
Delegated to: | BPF |
Headers | show |
Series | [bpf-next,1/5] bpf: Add bpf_cpumask_first_and() kfunc | expand |
On 6/9/23 8:50 PM, David Vernet wrote: > We currently provide bpf_cpumask_first(), bpf_cpumask_any(), and > bpf_cpumask_any_and() kfuncs. bpf_cpumask_any() and > bpf_cpumask_any_and() are confusing misnomers in that they actually just > call cpumask_first() and cpumask_first_and() respectively. > > We'll replace them with bpf_cpumask_any_distribute() and > bpf_cpumask_any_distribute_and() kfuncs in a subsequent patch, so let's > ensure feature parity by adding a bpf_cpumask_first_and() kfunc to > account for bpf_cpumask_any_and() being removed. > > Signed-off-by: David Vernet <void@manifault.com> Acked-by: Yonghong Song <yhs@fb.com>
Hello: This series was applied to bpf/bpf-next.git (master) by Alexei Starovoitov <ast@kernel.org>: On Fri, 9 Jun 2023 22:50:49 -0500 you wrote: > We currently provide bpf_cpumask_first(), bpf_cpumask_any(), and > bpf_cpumask_any_and() kfuncs. bpf_cpumask_any() and > bpf_cpumask_any_and() are confusing misnomers in that they actually just > call cpumask_first() and cpumask_first_and() respectively. > > We'll replace them with bpf_cpumask_any_distribute() and > bpf_cpumask_any_distribute_and() kfuncs in a subsequent patch, so let's > ensure feature parity by adding a bpf_cpumask_first_and() kfunc to > account for bpf_cpumask_any_and() being removed. > > [...] Here is the summary with links: - [bpf-next,1/5] bpf: Add bpf_cpumask_first_and() kfunc https://git.kernel.org/bpf/bpf-next/c/5ba3a7a851e3 - [bpf-next,2/5] selftests/bpf: Add test for new bpf_cpumask_first_and() kfunc https://git.kernel.org/bpf/bpf-next/c/58476d8a24bd - [bpf-next,3/5] bpf: Replace bpf_cpumask_any* with bpf_cpumask_any_distribute* https://git.kernel.org/bpf/bpf-next/c/f983be917332 - [bpf-next,4/5] selftests/bpf: Update bpf_cpumask_any* tests to use bpf_cpumask_any_distribute* https://git.kernel.org/bpf/bpf-next/c/5a73efc7d1b4 - [bpf-next,5/5] bpf/docs: Update documentation for new cpumask kfuncs https://git.kernel.org/bpf/bpf-next/c/25085b4e9251 You are awesome, thank you!
diff --git a/kernel/bpf/cpumask.c b/kernel/bpf/cpumask.c index 7efdf5d770ca..9416c8ac8a04 100644 --- a/kernel/bpf/cpumask.c +++ b/kernel/bpf/cpumask.c @@ -131,6 +131,21 @@ __bpf_kfunc u32 bpf_cpumask_first_zero(const struct cpumask *cpumask) return cpumask_first_zero(cpumask); } +/** + * bpf_cpumask_first_and() - Return the index of the first nonzero bit from the + * AND of two cpumasks. + * @src1: The first cpumask. + * @src2: The second cpumask. + * + * Find the index of the first nonzero bit of the AND of two cpumasks. + * struct bpf_cpumask pointers may be safely passed to @src1 and @src2. + */ +__bpf_kfunc u32 bpf_cpumask_first_and(const struct cpumask *src1, + const struct cpumask *src2) +{ + return cpumask_first_and(src1, src2); +} + /** * bpf_cpumask_set_cpu() - Set a bit for a CPU in a BPF cpumask. * @cpu: The CPU to be set in the cpumask. @@ -406,6 +421,7 @@ BTF_ID_FLAGS(func, bpf_cpumask_release, KF_RELEASE) BTF_ID_FLAGS(func, bpf_cpumask_acquire, KF_ACQUIRE | KF_TRUSTED_ARGS) BTF_ID_FLAGS(func, bpf_cpumask_first, KF_RCU) BTF_ID_FLAGS(func, bpf_cpumask_first_zero, KF_RCU) +BTF_ID_FLAGS(func, bpf_cpumask_first_and, KF_RCU) BTF_ID_FLAGS(func, bpf_cpumask_set_cpu, KF_RCU) BTF_ID_FLAGS(func, bpf_cpumask_clear_cpu, KF_RCU) BTF_ID_FLAGS(func, bpf_cpumask_test_cpu, KF_RCU)
We currently provide bpf_cpumask_first(), bpf_cpumask_any(), and bpf_cpumask_any_and() kfuncs. bpf_cpumask_any() and bpf_cpumask_any_and() are confusing misnomers in that they actually just call cpumask_first() and cpumask_first_and() respectively. We'll replace them with bpf_cpumask_any_distribute() and bpf_cpumask_any_distribute_and() kfuncs in a subsequent patch, so let's ensure feature parity by adding a bpf_cpumask_first_and() kfunc to account for bpf_cpumask_any_and() being removed. Signed-off-by: David Vernet <void@manifault.com> --- kernel/bpf/cpumask.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+)