1. 05 Jun, 2024 2 commits
  2. 04 Jun, 2024 12 commits
  3. 03 Jun, 2024 14 commits
  4. 01 Jun, 2024 1 commit
  5. 30 May, 2024 8 commits
  6. 29 May, 2024 3 commits
    • Andrii Nakryiko's avatar
      Merge branch 'bpf-add-a-generic-bits-iterator' · f088cabf
      Andrii Nakryiko authored
      Yafang Shao says:
      
      ====================
      bpf: Add a generic bits iterator
      
      Three new kfuncs, namely bpf_iter_bits_{new,next,destroy}, have been
      added for the new bpf_iter_bits functionality. These kfuncs enable the
      iteration of the bits from a given address and a given number of bits.
      
      - bpf_iter_bits_new
        Initialize a new bits iterator for a given memory area. Due to the
        limitation of bpf memalloc, the max number of bits to be iterated
        over is (4096 * 8).
      - bpf_iter_bits_next
        Get the next bit in a bpf_iter_bits
      - bpf_iter_bits_destroy
        Destroy a bpf_iter_bits
      
      The bits iterator can be used in any context and on any address.
      
      Changes:
      - v7->v8:
        Refine the interface to avoid dealing with endianness (Andrii)
      - v6->v7:
        Fix endianness error for non-long-aligned data (Andrii)
      - v5->v6:
        Add positive tests (Andrii)
      - v4->v5:
        Simplify test cases (Andrii)
      - v3->v4:
        - Fix endianness error on s390x (Andrii)
        - zero-initialize kit->bits_copy and zero out nr_bits (Andrii)
      - v2->v3:
        Optimization for u64/u32 mask (Andrii)
      - v1->v2:
        Simplify the CPU number verification code to avoid the failure on s390x
        (Eduard)
      - bpf: Add bpf_iter_cpumask
        https://lwn.net/Articles/961104/
      - bpf: Add new bpf helper bpf_for_each_cpu
        https://lwn.net/Articles/939939/
      ====================
      
      Link: https://lore.kernel.org/r/20240517023034.48138-1-laoar.shao@gmail.comSigned-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
      f088cabf
    • Yafang Shao's avatar
      selftests/bpf: Add selftest for bits iter · 6ba7acdb
      Yafang Shao authored
      Add test cases for the bits iter:
      
      - Positive cases
        - Bit mask representing a single word (8-byte unit)
        - Bit mask representing data spanning more than one word
        - The index of the set bit
      
      - Nagative cases
        - bpf_iter_bits_destroy() is required after calling
          bpf_iter_bits_new()
        - bpf_iter_bits_destroy() can only destroy an initialized iter
        - bpf_iter_bits_next() must use an initialized iter
        - Bit mask representing zero words
        - Bit mask representing fewer words than expected
        - Case for ENOMEM
        - Case for NULL pointer
      Signed-off-by: default avatarYafang Shao <laoar.shao@gmail.com>
      Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
      Link: https://lore.kernel.org/bpf/20240517023034.48138-3-laoar.shao@gmail.com
      6ba7acdb
    • Yafang Shao's avatar
      bpf: Add bits iterator · 46654159
      Yafang Shao authored
      Add three new kfuncs for the bits iterator:
      - bpf_iter_bits_new
        Initialize a new bits iterator for a given memory area. Due to the
        limitation of bpf memalloc, the max number of words (8-byte units) that
        can be iterated over is limited to (4096 / 8).
      - bpf_iter_bits_next
        Get the next bit in a bpf_iter_bits
      - bpf_iter_bits_destroy
        Destroy a bpf_iter_bits
      
      The bits iterator facilitates the iteration of the bits of a memory area,
      such as cpumask. It can be used in any context and on any address.
      Signed-off-by: default avatarYafang Shao <laoar.shao@gmail.com>
      Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
      Link: https://lore.kernel.org/bpf/20240517023034.48138-2-laoar.shao@gmail.com
      46654159