i2c-hid: the touchpad crash was a printf format, not the driver
The PSOGM on the ASUS TUF A15 was a page fault in cprintf, from probe(), in the touchpad driver's own success message. cprintf had no field widths: "%04x" printed literally and consumed no argument, so the "%s" after it was handed the product ID as a string pointer. "%lx" misprinted the same way -- "0x4275838976x" for 0xFEDC2000 -- on the line before. The driver's formats are fixed, and cprintf now steps over flags and widths and takes l/ll/z as 64-bit, so a directive it does not render can no longer shift every argument after it. Until now any %ld or %lu printed the number followed by a stray letter. The touchpad on/off entry in the boot menu has served its purpose and is gone; the verbose step trace stays. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01S1giNvrHTrPMPw7V6x1kQ4
This commit is contained in:
parent
b15fb2fdaa
commit
5ea03c4cf5
5 changed files with 43 additions and 45 deletions
|
|
@ -78,13 +78,6 @@
|
|||
// Zero on every ordinary boot, including every boot of a build made without
|
||||
// DEBUG=1 -- where the menu entry does not exist and nothing can set it.
|
||||
#define SCHBOOT_DEBUG_FLAG (SCHBOOT_BASE + 0x102)
|
||||
|
||||
// Drivers switched off at the boot menu, one bit each. For bisecting a machine
|
||||
// that hangs during boot without a rebuild: the newest driver that touches
|
||||
// hardware nobody tested it on is the first suspect, and turning it off from
|
||||
// the menu answers the question on the machine itself.
|
||||
#define SCHBOOT_OFF_FLAGS (SCHBOOT_BASE + 0x103)
|
||||
#define SCHBOOT_OFF_I2C_HID 0x01 // kernel/acpi/i2c_hid.c: touchpads
|
||||
#define SCHBOOT_MEDIA_CD 1
|
||||
|
||||
// Real-mode spelling of the same byte, for cdboot.S which has no 32-bit
|
||||
|
|
|
|||
Loading…
Reference in a new issue