Skip to contentSkip to conversation

Input: i8042 - disable active multiplexing by default

PATCH In review Dmitry Torokhov 5 participants 8 messages Oct 10, 2014 – Oct 13, 2014

Subsystems (3)
lore
Share & tools
lore

Dmitry Torokhov

author maintainer
#0 lore raw

PATCH 1/1 Input: i8042 - disable active multiplexing by default

Active multiplexing is a nice feature as it allows several pointing devices (such as touchpad and external mouse) use their native protocols at the same time. Unfortunately many manufacturers do not implement the feature properly even though they advertise it. The problematic implementations are never fixed, since Windows by default does not use this mode, and move from one BIOS/model of laptop to another. When active multiplexing is broken turning it on usually results in touchpad, keyboard, or both unresponsive.

With PS/2 usage on decline (most of PS/2 devices in use nowadays are internal laptop touchpads), I expect number of users who have laptops with working MUX implementation, docking stations with external PS/2 ports, and who are still using external PS/2 mice, to be rather small. Let's flip the default to be OFF and allow activating it through i8042.nomux=0 kernel option. We'll also keep DMI table where we can record known good models.

---
 Documentation/kernel-parameters.txt   |   2 +-
 drivers/input/serio/i8042-x86ia64io.h | 281 +---------------------------------
 drivers/input/serio/i8042.c           |   2 +-
 3 files changed, 10 insertions(+), 275 deletions(-)
Documentation/kernel-parameters.txt +1 -1
index 10d51c2..6b10543 100644
@@ -1237,7 +1237,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
 	i8042.noloop	[HW] Disable the AUX Loopback command while probing
 			     for the AUX port
 	i8042.nomux	[HW] Don't check presence of an active multiplexing
-			     controller
+			     controller. Default: true.
 	i8042.nopnp	[HW] Don't use ACPIPnP / PnPBIOS to discover KBD/AUX
 			     controllers
 	i8042.notimeout	[HW] Ignore timeout condition signalled by controller
drivers/input/serio/i8042-x86ia64io.h +8 -273

298 lines not on this page · raw message

drivers/input/serio/i8042.c +1 -1
index f5a98af..9a97c2b 100644
@@ -39,7 +39,7 @@ static bool i8042_noaux;
 module_param_named(noaux, i8042_noaux, bool, 0);
 MODULE_PARM_DESC(noaux, "Do not probe or use AUX (mouse) port.");
 
-static bool i8042_nomux;
+static bool i8042_nomux = true;
 module_param_named(nomux, i8042_nomux, bool, 0);
 MODULE_PARM_DESC(nomux, "Do not check whether an active multiplexing controller is present.");
 
Signature · 5 lines
2.1.0.rc2.206.gedb03e5


-- 
Dmitry
Acked-by on v1 1/1
#1 lore raw
Quoted 8 lines · Dmitry Torokhov

Active multiplexing is a nice feature as it allows several pointing devices (such as touchpad and external mouse) use their native protocols at the same time. Unfortunately many manufacturers do not implement the feature properly even though they advertise it. The problematic implementations are never fixed, since Windows by default does not use this mode, and move from one BIOS/model of laptop to another. When active multiplexing is broken turning it on usually results in touchpad, keyboard, or both unresponsive.

Quoted 6 lines

With PS/2 usage on decline (most of PS/2 devices in use nowadays are internal laptop touchpads), I expect number of users who have laptops with working MUX implementation, docking stations with external PS/2 ports, and who are still using external PS/2 mice, to be rather small. Let's flip the default to be OFF and allow activating it through i8042.nomux=0 kernel option. We'll also keep DMI table where we can record known good models.

Being responsible for introducing a non-trivial portion of i8042_dmi_nomux_table[] entries:

If nothing else, it'd make my life easier :)

[ ... snip ... ]

drivers/input/serio/i8042.c static bool i8042_noaux; · line 42

Quoted 10 lines
drivers/input/serio/i8042.c +1 -1
index f5a98af..9a97c2b 100644
@@ -39,7 +39,7 @@ static bool i8042_noaux;
 module_param_named(noaux, i8042_noaux, bool, 0);
 MODULE_PARM_DESC(noaux, "Do not probe or use AUX (mouse) port.");
 
-static bool i8042_nomux;
+static bool i8042_nomux = true;

Hmmm ... perhaps if we want to be really friendly, we should warn (and I definitely don't mean WARN(), but rather pr_info() or something) if we encounter that the cmdline contains 'i8042.nomux=1'.

Thanks,

Signature · 2 lines
Jiri Kosina
SUSE Labs
author maintainer
#2 lore raw
Quoted 33 lines · Jiri Kosina
Quoted 8 lines · Dmitry Torokhov

Active multiplexing is a nice feature as it allows several pointing devices (such as touchpad and external mouse) use their native protocols at the same time. Unfortunately many manufacturers do not implement the feature properly even though they advertise it. The problematic implementations are never fixed, since Windows by default does not use this mode, and move from one BIOS/model of laptop to another. When active multiplexing is broken turning it on usually results in touchpad, keyboard, or both unresponsive.

Quoted 6 lines

With PS/2 usage on decline (most of PS/2 devices in use nowadays are internal laptop touchpads), I expect number of users who have laptops with working MUX implementation, docking stations with external PS/2 ports, and who are still using external PS/2 mice, to be rather small. Let's flip the default to be OFF and allow activating it through i8042.nomux=0 kernel option. We'll also keep DMI table where we can record known good models.

Being responsible for introducing a non-trivial portion of i8042_dmi_nomux_table[] entries:

If nothing else, it'd make my life easier :)

[ ... snip ... ]

Quoted 8 lines
drivers/input/serio/i8042.c +0 -0
index f5a98af..9a97c2b 100644
@@ -39,7 +39,7 @@ static bool i8042_noaux;
 module_param_named(noaux, i8042_noaux, bool, 0);
 MODULE_PARM_DESC(noaux, "Do not probe or use AUX (mouse) port.");
 
Quoted 6 lines

drivers/input/serio/i8042.c static bool i8042_noaux; · line 42

Quoted 2 lines
drivers/input/serio/i8042.c +1 -1
-static bool i8042_nomux;
+static bool i8042_nomux = true;

Hmmm ... perhaps if we want to be really friendly, we should warn (and I definitely don't mean WARN(), but rather pr_info() or something) if we encounter that the cmdline contains 'i8042.nomux=1'.

Warn about what? That they do not need this option anymore? They might if they downgrade the kernel. I would not bother...

Thanks.

Signature · 1 line
Dmitry
#3 lore raw
In reply to Dmitry Torokhov
Quoted 9 lines · Dmitry Torokhov

/*
- * Some Fujitsu notebooks are having trouble with touchpads if
- * active multiplexing mode is activated. Luckily they don't have
- * external PS/2 ports so we can safely disable it.
- * ... apparently some Toshibas don't like MUX mode either and
- * die horrible death on reboot.
+ * Some laptops do increment active multiplexing mode correctly;
+ * unfortunately they are in minority.
*/

s/increment/implement/ ?

Dave

author maintainer
#4 lore raw
Quoted 12 lines · Dave Jones
Quoted 9 lines · Dmitry Torokhov

/*
- * Some Fujitsu notebooks are having trouble with touchpads if
- * active multiplexing mode is activated. Luckily they don't have
- * external PS/2 ports so we can safely disable it.
- * ... apparently some Toshibas don't like MUX mode either and
- * die horrible death on reboot.
+ * Some laptops do increment active multiplexing mode correctly;
+ * unfortunately they are in minority.
*/

Quoted 1 line

s/increment/implement/ ?

Thanks Dave, I'll fix it up.

Signature · 1 line
Dmitry
Acked-by
#5 lore raw

Hi,

Quoted 13 lines · Dmitry Torokhov
Quoted 12 lines · Dave Jones
Quoted 9 lines · Dmitry Torokhov

/*
- * Some Fujitsu notebooks are having trouble with touchpads if
- * active multiplexing mode is activated. Luckily they don't have
- * external PS/2 ports so we can safely disable it.
- * ... apparently some Toshibas don't like MUX mode either and
- * die horrible death on reboot.
+ * Some laptops do increment active multiplexing mode correctly;
+ * unfortunately they are in minority.
*/

Quoted 3 lines
Quoted 1 line

s/increment/implement/ ?

Thanks Dave, I'll fix it up.

The patch looks good to me, and with the above fixup is:

Regards,

Hans

#6 lore raw
In reply to Dmitry Torokhov
Quoted 8 lines · Dmitry Torokhov

Active multiplexing is a nice feature as it allows several pointing devices (such as touchpad and external mouse) use their native protocols at the same time. Unfortunately many manufacturers do not implement the feature properly even though they advertise it. The problematic implementations are never fixed, since Windows by default does not use this mode, and move from one BIOS/model of laptop to another. When active multiplexing is broken turning it on usually results in touchpad, keyboard, or both unresponsive.

Quoted 8 lines

With PS/2 usage on decline (most of PS/2 devices in use nowadays are internal laptop touchpads), I expect number of users who have laptops with working MUX implementation, docking stations with external PS/2 ports, and who are still using external PS/2 mice, to be rather small. Let's flip the default to be OFF and allow activating it through i8042.nomux=0 kernel option. We'll also keep DMI table where we can record known good models.

Could we keep the old default / blacklist for the old laptops? We did something like that for ACPI, based on year of the bios.

Old laptops are not being made any more, so blacklist will not grow too fast...

Pavel

Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
author maintainer
#7 lore raw

Hi Pavel,

Quoted 16 lines · Pavel Machek
Quoted 15 lines · Dmitry Torokhov

Active multiplexing is a nice feature as it allows several pointing devices (such as touchpad and external mouse) use their native protocols at the same time. Unfortunately many manufacturers do not implement the feature properly even though they advertise it. The problematic implementations are never fixed, since Windows by default does not use this mode, and move from one BIOS/model of laptop to another. When active multiplexing is broken turning it on usually results in touchpad, keyboard, or both unresponsive.

With PS/2 usage on decline (most of PS/2 devices in use nowadays are internal laptop touchpads), I expect number of users who have laptops with working MUX implementation, docking stations with external PS/2 ports, and who are still using external PS/2 mice, to be rather small. Let's flip the default to be OFF and allow activating it through i8042.nomux=0 kernel option. We'll also keep DMI table where we can record known good models.

Quoted 5 lines
Quoted 1 line

Could we keep the old default / blacklist for the old laptops? We did something like that for ACPI, based on year of the bios.

I would prefer not to. Unlike ACPI we do not see any improvement or decline in quality of MUX implementation over time. The implementations were buggy 10 years ago, 5 years go and they are buggy now. So there is not a point in time to draw a line at.

Quoted 2 lines

Old laptops are not being made any more, so blacklist will not grow too fast...

It is already quite big and I do not believe we've gotten nearly all of them. I guess in many cases people would try Linux, find that keyboard/mouse do not work at all and they are done and not bother filing bugs/reaching out on LKML, etc.

Again, the only people would might be negatively affected are people who have proper implementation of active MUX, who use both touchpad and external mouse at the same time and want touchpad in native mode, and who use PS/2 external mice.

Thanks.

Signature · 1 line
Dmitry