[PATCH hid v12 00/15] Introduce eBPF support for HID devices

From: Benjamin Tissoires
Date: Thu Nov 03 2022 - 11:59:37 EST


Hi,

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

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

This revision contains most notably few fixes from the various kernel CI
bots. I also took Alexei's review into account, and we do not pollute
tools/include with useless hid headers.

I also removed most of the last checkpatch complains about adding
external kfunc declarations in C files. And this led me to also show in
samples/ how we can link together 2 BPF object files. Impressive how
easy it is :)

Cheers,
Benjamin

Benjamin Tissoires (15):
HID: fix I2C_HID not selected when I2C_HID_OF_ELAN is
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 | 512 +++++++++++
Documentation/hid/index.rst | 1 +
MAINTAINERS | 3 +
drivers/Makefile | 2 +-
drivers/hid/Kconfig | 18 +-
drivers/hid/Makefile | 2 +
drivers/hid/amd-sfh-hid/Kconfig | 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 | 330 +++++++
drivers/hid/bpf/hid_bpf_dispatch.c | 531 +++++++++++
drivers/hid/bpf/hid_bpf_dispatch.h | 28 +
drivers/hid/bpf/hid_bpf_jmp_table.c | 565 ++++++++++++
drivers/hid/hid-core.c | 34 +-
drivers/hid/i2c-hid/Kconfig | 4 +-
include/linux/hid.h | 5 +
include/linux/hid_bpf.h | 163 ++++
samples/hid/.gitignore | 8 +
samples/hid/Makefile | 250 ++++++
samples/hid/Makefile.target | 75 ++
samples/hid/hid_bpf_attach.bpf.c | 18 +
samples/hid/hid_bpf_attach.h | 14 +
samples/hid/hid_bpf_helpers.h | 21 +
samples/hid/hid_mouse.bpf.c | 112 +++
samples/hid/hid_mouse.c | 155 ++++
samples/hid/hid_surface_dial.bpf.c | 134 +++
samples/hid/hid_surface_dial.c | 226 +++++
tools/testing/selftests/Makefile | 1 +
tools/testing/selftests/hid/.gitignore | 4 +
tools/testing/selftests/hid/Makefile | 233 +++++
tools/testing/selftests/hid/config | 20 +
tools/testing/selftests/hid/hid_bpf.c | 845 ++++++++++++++++++
tools/testing/selftests/hid/progs/hid.c | 196 ++++
.../selftests/hid/progs/hid_bpf_helpers.h | 21 +
37 files changed, 4682 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 samples/hid/.gitignore
create mode 100644 samples/hid/Makefile
create mode 100644 samples/hid/Makefile.target
create mode 100644 samples/hid/hid_bpf_attach.bpf.c
create mode 100644 samples/hid/hid_bpf_attach.h
create mode 100644 samples/hid/hid_bpf_helpers.h
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/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
create mode 100644 tools/testing/selftests/hid/progs/hid_bpf_helpers.h

--
2.36.1