No description
  • C 96.8%
  • Assembly 0.9%
  • Rust 0.7%
  • Shell 0.6%
  • Python 0.5%
  • Other 0.3%
Find a file
Benedek Kupper d6f4941f1b drivers: hid: renegotiate resolution multipliers with device after reset
The scroll resolution multipliers are set in the context of
hidinput_connect(), which is only called at probe time: when the host
changes the value on the device with a SET_REPORT(FEATURE), and the device
accepts it, these multipliers are stored on the host side, and used to
calculate the final scroll event values sent to userspace.

After a USB suspend, the resume operation on many hubs and chipsets
involve a USB reset signal as well. A reset on the device side clears all
previous state information, including the value of the multiplier report.
This reset is not handled by the multiplier handling logic, so what ends up
happening is the host is still expecting high-resolution scroll events,
but the device is reset to default resolution, making the effective,
user-perceived scroll speed incredibly slow.

The solution is to renegotiate the multiplier selection after each reset.

This is not the only bug related to the high-resolution scrolling
implementation in the kernel (the other one is
https://bugzilla.kernel.org/show_bug.cgi?id=220144), but for this one,
there is no device side workaround for, leading to poor user experience with our product:
https://github.com/UltimateHackingKeyboard/firmware/issues/1155
https://github.com/UltimateHackingKeyboard/firmware/issues/1261
https://github.com/UltimateHackingKeyboard/firmware/pull/1355
This patch was tested by an affected user and has been reported to
fix the issue (see discussion in 1355).

Signed-off-by: Benedek Kupper <kupper.benedek@gmail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.com>
History 2025-11-26 17:21:48 +01:00
arch platform-drivers-x86 for v6.18-1 2025-10-04 15:28:18 -07:00
block Summary of significant series in this pull request: 2025-10-02 18:18:33 -07:00
certs sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3 2024-09-20 19:52:48 +03:00
crypto This update includes the following changes: 2025-10-04 14:59:29 -07:00
Documentation hid-for-linus-2025093001 2025-10-04 15:38:04 -07:00
drivers drivers: hid: renegotiate resolution multipliers with device after reset 2025-11-26 17:21:48 +01:00
fs It has been a relatively busy cycle in docsland, with changes all over: 2025-10-03 17:16:13 -07:00
include drivers: hid: renegotiate resolution multipliers with device after reset 2025-11-26 17:21:48 +01:00
init printk changes for 6.18 2025-10-04 11:13:11 -07:00
io_uring Summary of significant series in this pull request: 2025-10-02 18:18:33 -07:00
ipc namespace-6.18-rc1 2025-09-29 11:20:29 -07:00
kernel This update includes the following changes: 2025-10-04 14:59:29 -07:00
lib This update includes the following changes: 2025-10-04 14:59:29 -07:00
LICENSES LICENSES: Replace the obsolete address of the FSF in the GFDL-1.2 2025-07-24 11:15:39 +02:00
mm mm/mm_init: simplify deferred initialization of struct pages 2025-10-04 11:03:10 -07:00
net NFS Client Updates for Linux 6.18 2025-10-03 14:20:40 -07:00
rust dma-mapping updates for Linux 6.18: 2025-10-03 17:41:12 -07:00
samples Summary of significant series in this pull request: 2025-10-02 18:18:33 -07:00
scripts It has been a relatively busy cycle in docsland, with changes all over: 2025-10-03 17:16:13 -07:00
security Hi, 2025-10-04 15:23:29 -07:00
sound platform-drivers-x86 for v6.18-1 2025-10-04 15:28:18 -07:00
tools selftests/hid: add tests for missing release on the Dell Synaptics 2025-10-15 17:27:06 +02:00
usr gen_init_cpio: add -a <data_align> as reflink optimization 2025-08-20 16:02:56 -07:00
virt KVM common changes for 6.18 2025-09-30 13:27:59 -04:00
.clang-format memblock: drop for_each_free_mem_pfn_range_in_zone_from() 2025-09-14 08:49:03 +03:00
.clippy.toml rust: clean Rust 1.88.0's warning about clippy::disallowed_macros configuration 2025-05-07 00:11:47 +02:00
.cocciconfig scripts: add Linux .cocciconfig for coccinelle 2016-07-22 12:13:39 +02:00
.editorconfig .editorconfig: remove trim_trailing_whitespace option 2024-06-13 16:47:52 +02:00
.get_maintainer.ignore MAINTAINERS: remove Alyssa Rosenzweig 2025-09-18 21:17:31 +02:00
.gitattributes .gitattributes: set diff driver for Rust source code files 2023-05-31 17:48:25 +02:00
.gitignore .gitignore: ignore compile_commands.json globally 2025-08-12 15:53:55 -07:00
.mailmap VFIO updates for v6.18-rc1 2025-10-04 08:24:54 -07:00
.pylintrc tools: docs: parse-headers.py: move it from sphinx dir 2025-08-29 15:54:42 -06:00
.rustfmt.toml rust: add .rustfmt.toml 2022-09-28 09:02:20 +02:00
COPYING COPYING: state that all contributions really are covered by this file 2020-02-10 13:32:20 -08:00
CREDITS MAINTAINERS: Delete inactive maintainers from AF_XDP 2025-09-25 13:18:22 +02:00
Kbuild sched: Make migrate_{en,dis}able() inline 2025-09-25 09:57:16 +02:00
Kconfig io_uring: Rename KConfig to Kconfig 2025-02-19 14:53:27 -07:00
MAINTAINERS platform-drivers-x86 for v6.18-1 2025-10-04 15:28:18 -07:00
Makefile It has been a relatively busy cycle in docsland, with changes all over: 2025-10-03 17:16:13 -07:00
README README: Fix spelling 2024-03-18 03:36:32 -06:00

Linux kernel
============

There are several guides for kernel developers and users. These guides can
be rendered in a number of formats, like HTML and PDF. Please read
Documentation/admin-guide/README.rst first.

In order to build the documentation, use ``make htmldocs`` or
``make pdfdocs``.  The formatted documentation can also be read online at:

    https://www.kernel.org/doc/html/latest/

There are various text files in the Documentation/ subdirectory,
several of them using the reStructuredText markup notation.

Please read the Documentation/process/changes.rst file, as it contains the
requirements for building and running the kernel, and information about
the problems which may result by upgrading your kernel.