On 9/9/25 01:35, Alexei Starovoitov wrote: > On Mon, Sep 8, 2025 at 7:37 AM Leon Hwang <leon.hwang@xxxxxxxxx> wrote: >> [...] >> @@ -313,11 +312,7 @@ int bpf_percpu_array_copy(struct bpf_map *map, void *key, void *value) >> size = array->elem_size; >> rcu_read_lock(); >> pptr = array->pptrs[index & array->index_mask]; >> - for_each_possible_cpu(cpu) { >> - copy_map_value_long(map, value + off, per_cpu_ptr(pptr, cpu)); >> - check_and_init_map_value(map, value + off); >> - off += size; >> - } >> + bpf_percpu_copy_data(map, pptr, value, size); > > Same issue as before. This is not equivalent. > Stop this "refactoring". > Got it. I’ll drop this refactoring and keep the original per-CPU copy logic as is, and focus only on adding the BPF_F_CPU / BPF_F_ALL_CPUS support. Thanks, Leon