forked from Minki/linux
4097461897
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> |
||
---|---|---|
.. | ||
altera_ps2.c | ||
ambakmi.c | ||
ams_delta_serio.c | ||
apbps2.c | ||
arc_ps2.c | ||
at32psif.c | ||
ct82c710.c | ||
gscps2.c | ||
hil_mlc.c | ||
hp_sdc_mlc.c | ||
hp_sdc.c | ||
hyperv-keyboard.c | ||
i8042-io.h | ||
i8042-ip22io.h | ||
i8042-jazzio.h | ||
i8042-ppcio.h | ||
i8042-snirm.h | ||
i8042-sparcio.h | ||
i8042-unicore32io.h | ||
i8042-x86ia64io.h | ||
i8042.c | ||
i8042.h | ||
Kconfig | ||
libps2.c | ||
maceps2.c | ||
Makefile | ||
olpc_apsp.c | ||
parkbd.c | ||
pcips2.c | ||
ps2mult.c | ||
q40kbd.c | ||
rpckbd.c | ||
sa1111ps2.c | ||
serio_raw.c | ||
serio.c | ||
serport.c | ||
sun4i-ps2.c | ||
userio.c | ||
xilinx_ps2.c |