This series tries to untangle somewhat convoluted logic in the input event processing in the input core by realizing that input handler can be either a filter, or a handler that handles a single event at a time, or a handler that can handle a sequence of events, but should not mix the 3 behaviors in one handler. This allows us to reduce both filter functionality and single-event handling functionality to batch handling and have the main event handling path to only deal with input_handle->events() batch method. v2: addressed comments from Benjamin: - added missing patch to remove evdev->event() implementation - allow not specifying any event handling method to satisfy kgdboc handler - expanded comment on order of running input handlers when passing events - split pre-allocation into 2 patches and moved removal of count check into 3rd patch. Dmitry Torokhov (7): Input: evdev - remove ->event() method Input: make sure input handlers define only one processing method Input: make events() method return number of events processed Input: simplify event handling logic Input: rearrange input_alloc_device() to prepare for preallocating of vals Input: preallocate memory to hold event values Input: do not check number of events in input_pass_values() drivers/input/evdev.c | 16 +-- drivers/input/input.c | 230 ++++++++++++++++++++++++++++-------------- include/linux/input.h | 7 +- 3 files changed, 163 insertions(+), 90 deletions(-) -- 2.45.2.803.g4e1b14247a-goog