]> www.infradead.org Git - users/jedix/linux-maple.git/commit
HID: bpf: make hid_bpf_input_report() sleep until the device is ready
authorBenjamin Tissoires <bentiss@kernel.org>
Wed, 26 Jun 2024 13:46:30 +0000 (15:46 +0200)
committerBenjamin Tissoires <bentiss@kernel.org>
Thu, 27 Jun 2024 09:00:48 +0000 (11:00 +0200)
commitfa03f398a8ac46f46927e0b509b302ebe0ed7e8a
tree0a6577f9023e66ff6e8c01317775f865958fc781
parent3ac83fcd6e67c86d25040e6818972f2c36b51d23
HID: bpf: make hid_bpf_input_report() sleep until the device is ready

hid_bpf_input_report() is already marked to be used in sleepable context
only. So instead of hammering with timers the device to hopefully get
an available slot where the device is not sending events, we can make
that kfunc wait for the current event to be terminated before it goes in.

This allows to work with the following pseudo code:

in struct_ops/hid_device_event:
  - schedule a bpf_wq, which calls hid_bpf_input_report()
  - once this struct_ops function terminates, hid_bpf_input_report()
    immediately starts before the next event

Link: https://patch.msgid.link/20240626-hid_hw_req_bpf-v2-9-cfd60fb6c79f@kernel.org
Acked-by: Jiri Kosina <jkosina@suse.com>
Signed-off-by: Benjamin Tissoires <bentiss@kernel.org>
drivers/hid/bpf/hid_bpf_dispatch.c
drivers/hid/hid-core.c
include/linux/hid_bpf.h