Re: [PATCH hid v11 00/14] Introduce eBPF support for HID devices

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Benjamin,

Tested this on top of 6.1-rc1 against my HID-USI work, appears to be good. Also tried out the HID selftests, and they pass, so for the whole series:

Tested-by: Tero Kristo <tero.kristo@xxxxxxxxxxxxxxx>

On 25/10/2022 12:34, Benjamin Tissoires wrote:
Hi,

and here comes the v11 of the HID-BPF series.

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

Now that the bpf-core changes are all merged in v6.1, it is
time to have that series entirely relying on HID, so it can get
merged into the HID tree.

Compared to v10, the most notable change is in the selftests and the
samples: they are now namespaced into hid, not bpf.

This means that HID-BPF has no more conflicts with the bpf tree.

One other interesting change is in patch 4/14. I managed to reduce
the scope of the embedded bpf programs, by tricking the refcount.
I am planning on submitting an RFC for embedding those changes in
bpf core (a map that doesn't increment refcount and a cleanup mechanism)
but this can come as a later improvement.
This new kind of maps and mechanisms might also be useful for other
subsystems.

Cheers,
Benjamin

Benjamin Tissoires (14):
   HID: Kconfig: split HID support and hid-core compilation
   HID: initial BPF implementation
   selftests: add tests for the HID-bpf initial implementation
   HID: bpf jmp table: simplify the logic of cleaning up programs
   HID: bpf: allocate data memory for device_event BPF programs
   selftests/hid: add test to change the report size
   HID: bpf: introduce hid_hw_request()
   selftests/hid: add tests for bpf_hid_hw_request
   HID: bpf: allow to change the report descriptor
   selftests/hid: add report descriptor fixup tests
   selftests/hid: Add a test for BPF_F_INSERT_HEAD
   samples/hid: add new hid BPF example
   samples/hid: add Surface Dial example
   Documentation: add HID-BPF docs

  Documentation/hid/hid-bpf.rst                 | 513 +++++++++++
  Documentation/hid/index.rst                   |   1 +
  MAINTAINERS                                   |   3 +
  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 |  34 +
  .../hid/bpf/entrypoints/entrypoints.lskel.h   | 368 ++++++++
  drivers/hid/bpf/hid_bpf_dispatch.c            | 526 +++++++++++
  drivers/hid/bpf/hid_bpf_dispatch.h            |  28 +
  drivers/hid/bpf/hid_bpf_jmp_table.c           | 572 ++++++++++++
  drivers/hid/hid-core.c                        |  32 +-
  include/linux/hid.h                           |   5 +
  include/linux/hid_bpf.h                       | 148 +++
  include/uapi/linux/hid_bpf.h                  |  25 +
  samples/hid/.gitignore                        |   8 +
  samples/hid/Makefile                          | 246 +++++
  samples/hid/Makefile.target                   |  75 ++
  samples/hid/hid_mouse.bpf.c                   | 134 +++
  samples/hid/hid_mouse.c                       | 160 ++++
  samples/hid/hid_surface_dial.bpf.c            | 161 ++++
  samples/hid/hid_surface_dial.c                | 231 +++++
  tools/include/uapi/linux/hid.h                |  62 ++
  tools/include/uapi/linux/hid_bpf.h            |  25 +
  tools/testing/selftests/Makefile              |   1 +
  tools/testing/selftests/hid/.gitignore        |   4 +
  tools/testing/selftests/hid/Makefile          | 242 +++++
  tools/testing/selftests/hid/config            |  20 +
  tools/testing/selftests/hid/hid_bpf.c         | 846 ++++++++++++++++++
  tools/testing/selftests/hid/progs/hid.c       | 206 +++++
  34 files changed, 4815 insertions(+), 10 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/hid/.gitignore
  create mode 100644 samples/hid/Makefile
  create mode 100644 samples/hid/Makefile.target
  create mode 100644 samples/hid/hid_mouse.bpf.c
  create mode 100644 samples/hid/hid_mouse.c
  create mode 100644 samples/hid/hid_surface_dial.bpf.c
  create mode 100644 samples/hid/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/hid/.gitignore
  create mode 100644 tools/testing/selftests/hid/Makefile
  create mode 100644 tools/testing/selftests/hid/config
  create mode 100644 tools/testing/selftests/hid/hid_bpf.c
  create mode 100644 tools/testing/selftests/hid/progs/hid.c




[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux