mbox series

[bpf-next,v10,00/23] Introduce eBPF support for HID devices

Message ID 20220902132938.2409206-1-benjamin.tissoires@redhat.com
Headers show
Series Introduce eBPF support for HID devices | expand

Message

Benjamin Tissoires Sept. 2, 2022, 1:29 p.m. UTC
Hi,

here comes the v10 of the HID-BPF series.

Again, for a full explanation of HID-BPF, please refer to the last patch
in this series (23/23).

Hopefully we are getting closer to merging the bpf-core changes that
are pre-requesite of the HID work.

This revision of the series focused on those bpf-core changes with
a hopefully proper way of fixing access to ctx pointers, and a few more
selftests to cover those changes.

Once those bpf changes are in, the HID changes are pretty much self
consistent, which is a good thing, but I still wonder how we are going
to merge the selftests. I'd rather have the selftests in the bpf tree to
prevent any regression on bpf-core changes, but that might require some
coordination between the HID and bpf trees.

Anyway, let's hope we are getting closer to the end of those revisions :)

Cheers,
Benjamin


Benjamin Tissoires (23):
  selftests/bpf: regroup and declare similar kfuncs selftests in an
    array
  bpf: split btf_check_subprog_arg_match in two
  bpf/verifier: allow all functions to read user provided context
  selftests/bpf: add test for accessing ctx from syscall program type
  bpf/btf: bump BTF_KFUNC_SET_MAX_CNT
  bpf/verifier: allow kfunc to return an allocated mem
  selftests/bpf: Add tests for kfunc returning a memory pointer
  HID: core: store the unique system identifier in hid_device
  HID: export hid_report_type to uapi
  HID: convert defines of HID class requests into a proper enum
  HID: Kconfig: split HID support and hid-core compilation
  HID: initial BPF implementation
  selftests/bpf: add tests for the HID-bpf initial implementation
  HID: bpf: allocate data memory for device_event BPF programs
  selftests/bpf/hid: add test to change the report size
  HID: bpf: introduce hid_hw_request()
  selftests/bpf: add tests for bpf_hid_hw_request
  HID: bpf: allow to change the report descriptor
  selftests/bpf: add report descriptor fixup tests
  selftests/bpf: Add a test for BPF_F_INSERT_HEAD
  samples/bpf: HID: add new hid_mouse example
  samples/bpf: HID: add Surface Dial example
  Documentation: add HID-BPF docs

 Documentation/hid/hid-bpf.rst                 | 513 +++++++++
 Documentation/hid/index.rst                   |   1 +
 drivers/Makefile                              |   2 +-
 drivers/hid/Kconfig                           |  20 +-
 drivers/hid/Makefile                          |   2 +
 drivers/hid/bpf/Kconfig                       |  17 +
 drivers/hid/bpf/Makefile                      |  11 +
 drivers/hid/bpf/entrypoints/Makefile          |  93 ++
 drivers/hid/bpf/entrypoints/README            |   4 +
 drivers/hid/bpf/entrypoints/entrypoints.bpf.c |  66 ++
 .../hid/bpf/entrypoints/entrypoints.lskel.h   | 682 ++++++++++++
 drivers/hid/bpf/hid_bpf_dispatch.c            | 526 ++++++++++
 drivers/hid/bpf/hid_bpf_dispatch.h            |  28 +
 drivers/hid/bpf/hid_bpf_jmp_table.c           | 577 ++++++++++
 drivers/hid/hid-core.c                        |  49 +-
 include/linux/bpf.h                           |  11 +-
 include/linux/bpf_verifier.h                  |   2 +
 include/linux/btf.h                           |  10 +
 include/linux/hid.h                           |  38 +-
 include/linux/hid_bpf.h                       | 148 +++
 include/uapi/linux/hid.h                      |  26 +-
 include/uapi/linux/hid_bpf.h                  |  25 +
 kernel/bpf/btf.c                              | 149 ++-
 kernel/bpf/verifier.c                         |  66 +-
 net/bpf/test_run.c                            |  37 +
 samples/bpf/.gitignore                        |   2 +
 samples/bpf/Makefile                          |  27 +
 samples/bpf/hid_mouse.bpf.c                   | 134 +++
 samples/bpf/hid_mouse.c                       | 161 +++
 samples/bpf/hid_surface_dial.bpf.c            | 161 +++
 samples/bpf/hid_surface_dial.c                | 232 ++++
 tools/include/uapi/linux/hid.h                |  62 ++
 tools/include/uapi/linux/hid_bpf.h            |  25 +
 tools/testing/selftests/bpf/Makefile          |   2 +-
 tools/testing/selftests/bpf/config            |   3 +
 tools/testing/selftests/bpf/prog_tests/hid.c  | 990 ++++++++++++++++++
 .../selftests/bpf/prog_tests/kfunc_call.c     | 182 +++-
 tools/testing/selftests/bpf/progs/hid.c       | 206 ++++
 .../selftests/bpf/progs/kfunc_call_fail.c     | 160 +++
 .../selftests/bpf/progs/kfunc_call_test.c     |  71 ++
 40 files changed, 5416 insertions(+), 105 deletions(-)
 create mode 100644 Documentation/hid/hid-bpf.rst
 create mode 100644 drivers/hid/bpf/Kconfig
 create mode 100644 drivers/hid/bpf/Makefile
 create mode 100644 drivers/hid/bpf/entrypoints/Makefile
 create mode 100644 drivers/hid/bpf/entrypoints/README
 create mode 100644 drivers/hid/bpf/entrypoints/entrypoints.bpf.c
 create mode 100644 drivers/hid/bpf/entrypoints/entrypoints.lskel.h
 create mode 100644 drivers/hid/bpf/hid_bpf_dispatch.c
 create mode 100644 drivers/hid/bpf/hid_bpf_dispatch.h
 create mode 100644 drivers/hid/bpf/hid_bpf_jmp_table.c
 create mode 100644 include/linux/hid_bpf.h
 create mode 100644 include/uapi/linux/hid_bpf.h
 create mode 100644 samples/bpf/hid_mouse.bpf.c
 create mode 100644 samples/bpf/hid_mouse.c
 create mode 100644 samples/bpf/hid_surface_dial.bpf.c
 create mode 100644 samples/bpf/hid_surface_dial.c
 create mode 100644 tools/include/uapi/linux/hid.h
 create mode 100644 tools/include/uapi/linux/hid_bpf.h
 create mode 100644 tools/testing/selftests/bpf/prog_tests/hid.c
 create mode 100644 tools/testing/selftests/bpf/progs/hid.c
 create mode 100644 tools/testing/selftests/bpf/progs/kfunc_call_fail.c

Comments

Benjamin Tissoires Sept. 20, 2022, 1:43 p.m. UTC | #1
On Fri, Sep 2, 2022 at 3:29 PM Benjamin Tissoires
<benjamin.tissoires@redhat.com> wrote:
>
> Hi,
>
> here comes the v10 of the HID-BPF series.
>
> Again, for a full explanation of HID-BPF, please refer to the last patch
> in this series (23/23).
>
> Hopefully we are getting closer to merging the bpf-core changes that
> are pre-requesite of the HID work.
>
> This revision of the series focused on those bpf-core changes with
> a hopefully proper way of fixing access to ctx pointers, and a few more
> selftests to cover those changes.
>
> Once those bpf changes are in, the HID changes are pretty much self
> consistent, which is a good thing, but I still wonder how we are going
> to merge the selftests. I'd rather have the selftests in the bpf tree to
> prevent any regression on bpf-core changes, but that might require some
> coordination between the HID and bpf trees.
>
> Anyway, let's hope we are getting closer to the end of those revisions :)

FWIW, I have now applied the HID patches 8, 9, and 10 to hid.git. They
are independent of the bpf work and given how close we are to 6.1, we
can take them just now.
Patch 11 is having a conflict with the HID tree, so I'll need to
handle it in v11 for the HID part.

The first few patches have already been applied in the bpf-next tree,
as part of the v11 subset of those patches.

The plan is now to wait for all of these to land in 6.1-rc1, and then
submit only the HID changes as a followup series for 6.2.

Cheers,
Benjamin

>
> Cheers,
> Benjamin
>
>
> Benjamin Tissoires (23):
>   selftests/bpf: regroup and declare similar kfuncs selftests in an
>     array
>   bpf: split btf_check_subprog_arg_match in two
>   bpf/verifier: allow all functions to read user provided context
>   selftests/bpf: add test for accessing ctx from syscall program type
>   bpf/btf: bump BTF_KFUNC_SET_MAX_CNT
>   bpf/verifier: allow kfunc to return an allocated mem
>   selftests/bpf: Add tests for kfunc returning a memory pointer
>   HID: core: store the unique system identifier in hid_device
>   HID: export hid_report_type to uapi
>   HID: convert defines of HID class requests into a proper enum
>   HID: Kconfig: split HID support and hid-core compilation
>   HID: initial BPF implementation
>   selftests/bpf: add tests for the HID-bpf initial implementation
>   HID: bpf: allocate data memory for device_event BPF programs
>   selftests/bpf/hid: add test to change the report size
>   HID: bpf: introduce hid_hw_request()
>   selftests/bpf: add tests for bpf_hid_hw_request
>   HID: bpf: allow to change the report descriptor
>   selftests/bpf: add report descriptor fixup tests
>   selftests/bpf: Add a test for BPF_F_INSERT_HEAD
>   samples/bpf: HID: add new hid_mouse example
>   samples/bpf: HID: add Surface Dial example
>   Documentation: add HID-BPF docs
>
>  Documentation/hid/hid-bpf.rst                 | 513 +++++++++
>  Documentation/hid/index.rst                   |   1 +
>  drivers/Makefile                              |   2 +-
>  drivers/hid/Kconfig                           |  20 +-
>  drivers/hid/Makefile                          |   2 +
>  drivers/hid/bpf/Kconfig                       |  17 +
>  drivers/hid/bpf/Makefile                      |  11 +
>  drivers/hid/bpf/entrypoints/Makefile          |  93 ++
>  drivers/hid/bpf/entrypoints/README            |   4 +
>  drivers/hid/bpf/entrypoints/entrypoints.bpf.c |  66 ++
>  .../hid/bpf/entrypoints/entrypoints.lskel.h   | 682 ++++++++++++
>  drivers/hid/bpf/hid_bpf_dispatch.c            | 526 ++++++++++
>  drivers/hid/bpf/hid_bpf_dispatch.h            |  28 +
>  drivers/hid/bpf/hid_bpf_jmp_table.c           | 577 ++++++++++
>  drivers/hid/hid-core.c                        |  49 +-
>  include/linux/bpf.h                           |  11 +-
>  include/linux/bpf_verifier.h                  |   2 +
>  include/linux/btf.h                           |  10 +
>  include/linux/hid.h                           |  38 +-
>  include/linux/hid_bpf.h                       | 148 +++
>  include/uapi/linux/hid.h                      |  26 +-
>  include/uapi/linux/hid_bpf.h                  |  25 +
>  kernel/bpf/btf.c                              | 149 ++-
>  kernel/bpf/verifier.c                         |  66 +-
>  net/bpf/test_run.c                            |  37 +
>  samples/bpf/.gitignore                        |   2 +
>  samples/bpf/Makefile                          |  27 +
>  samples/bpf/hid_mouse.bpf.c                   | 134 +++
>  samples/bpf/hid_mouse.c                       | 161 +++
>  samples/bpf/hid_surface_dial.bpf.c            | 161 +++
>  samples/bpf/hid_surface_dial.c                | 232 ++++
>  tools/include/uapi/linux/hid.h                |  62 ++
>  tools/include/uapi/linux/hid_bpf.h            |  25 +
>  tools/testing/selftests/bpf/Makefile          |   2 +-
>  tools/testing/selftests/bpf/config            |   3 +
>  tools/testing/selftests/bpf/prog_tests/hid.c  | 990 ++++++++++++++++++
>  .../selftests/bpf/prog_tests/kfunc_call.c     | 182 +++-
>  tools/testing/selftests/bpf/progs/hid.c       | 206 ++++
>  .../selftests/bpf/progs/kfunc_call_fail.c     | 160 +++
>  .../selftests/bpf/progs/kfunc_call_test.c     |  71 ++
>  40 files changed, 5416 insertions(+), 105 deletions(-)
>  create mode 100644 Documentation/hid/hid-bpf.rst
>  create mode 100644 drivers/hid/bpf/Kconfig
>  create mode 100644 drivers/hid/bpf/Makefile
>  create mode 100644 drivers/hid/bpf/entrypoints/Makefile
>  create mode 100644 drivers/hid/bpf/entrypoints/README
>  create mode 100644 drivers/hid/bpf/entrypoints/entrypoints.bpf.c
>  create mode 100644 drivers/hid/bpf/entrypoints/entrypoints.lskel.h
>  create mode 100644 drivers/hid/bpf/hid_bpf_dispatch.c
>  create mode 100644 drivers/hid/bpf/hid_bpf_dispatch.h
>  create mode 100644 drivers/hid/bpf/hid_bpf_jmp_table.c
>  create mode 100644 include/linux/hid_bpf.h
>  create mode 100644 include/uapi/linux/hid_bpf.h
>  create mode 100644 samples/bpf/hid_mouse.bpf.c
>  create mode 100644 samples/bpf/hid_mouse.c
>  create mode 100644 samples/bpf/hid_surface_dial.bpf.c
>  create mode 100644 samples/bpf/hid_surface_dial.c
>  create mode 100644 tools/include/uapi/linux/hid.h
>  create mode 100644 tools/include/uapi/linux/hid_bpf.h
>  create mode 100644 tools/testing/selftests/bpf/prog_tests/hid.c
>  create mode 100644 tools/testing/selftests/bpf/progs/hid.c
>  create mode 100644 tools/testing/selftests/bpf/progs/kfunc_call_fail.c
>
> --
> 2.36.1
>