1
0
Fork 0
alistair23-linux/drivers/input/serio
Dmitry Torokhov 4097461897 Input: i8042 - break load dependency between atkbd/psmouse and i8042
As explained in 1407814240-4275-1-git-send-email-decui@microsoft.com we
have a hard load dependency between i8042 and atkbd which prevents
keyboard from working on Gen2 Hyper-V VMs.

> hyperv_keyboard invokes serio_interrupt(), which needs a valid serio
> driver like atkbd.c.  atkbd.c depends on libps2.c because it invokes
> ps2_command().  libps2.c depends on i8042.c because it invokes
> i8042_check_port_owner().  As a result, hyperv_keyboard actually
> depends on i8042.c.
>
> For a Generation 2 Hyper-V VM (meaning no i8042 device emulated), if a
> Linux VM (like Arch Linux) happens to configure CONFIG_SERIO_I8042=m
> rather than =y, atkbd.ko can't load because i8042.ko can't load(due to
> no i8042 device emulated) and finally hyperv_keyboard can't work and
> the user can't input: https://bugs.archlinux.org/task/39820
> (Ubuntu/RHEL/SUSE aren't affected since they use CONFIG_SERIO_I8042=y)

To break the dependency we move away from using i8042_check_port_owner()
and instead allow serio port owner specify a mutex that clients should use
to serialize PS/2 command stream.

Reported-by: Mark Laws <mdl@60hz.org>
Tested-by: Mark Laws <mdl@60hz.org>
Cc: stable@vger.kernel.org
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
2016-07-27 14:20:09 -07:00
..
Kconfig Input: add userio module 2015-10-27 18:55:31 -07:00
Makefile Input: add userio module 2015-10-27 18:55:31 -07:00
altera_ps2.c
ambakmi.c
ams_delta_serio.c Input: ams_delta_serio - fix spelling mistake: "paritiy" -> "parity" 2016-06-23 10:43:59 -07:00
apbps2.c
arc_ps2.c
at32psif.c
ct82c710.c
gscps2.c
hil_mlc.c
hp_sdc.c
hp_sdc_mlc.c
hyperv-keyboard.c Drivers: hv: vmbus: fix the building warning with hyperv-keyboard 2015-12-21 13:07:56 -08:00
i8042-io.h
i8042-ip22io.h
i8042-jazzio.h
i8042-ppcio.h
i8042-snirm.h
i8042-sparcio.h
i8042-unicore32io.h
i8042-x86ia64io.h Input: i8042 - add Fujitsu Lifebook U745 to the nomux list 2016-01-02 21:03:53 -08:00
i8042.c Input: i8042 - break load dependency between atkbd/psmouse and i8042 2016-07-27 14:20:09 -07:00
i8042.h
libps2.c Input: i8042 - break load dependency between atkbd/psmouse and i8042 2016-07-27 14:20:09 -07:00
maceps2.c
olpc_apsp.c
parkbd.c Input: parkbd - clear unused function pointers 2015-11-17 10:00:16 -08:00
pcips2.c
ps2mult.c
q40kbd.c
rpckbd.c
sa1111ps2.c
serio.c Input: serio - drop warnings in case of EPROBE_DEFER from serio_find_driver() 2016-01-27 15:56:24 -08:00
serio_raw.c
serport.c
sun4i-ps2.c
userio.c Input: add userio module 2015-10-27 18:55:31 -07:00
xilinx_ps2.c