kernel_optimize_test/drivers/input
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
..
gameport x86/asm/tsc: Rename native_read_tsc() to rdtsc() 2015-07-06 15:23:28 +02:00
joystick Input: xpad - validate USB endpoint count during probe 2016-06-29 10:07:47 -07:00
keyboard Input: cros_ec_keyb - cleanup use of dev 2016-07-26 12:09:54 -07:00
misc Merge branch 'for-linus' into next 2016-07-19 11:02:56 -07:00
mouse Merge branch 'for-linus' into next 2016-07-19 11:02:56 -07:00
rmi4 Input: synaptics-rmi4 - do not check for NULL when calling of_node_put() 2016-07-26 12:09:55 -07:00
serio Input: i8042 - break load dependency between atkbd/psmouse and i8042 2016-07-27 14:20:09 -07:00
tablet Input: pegasus_notetaker - set device mode in reset_resume() if in use 2016-07-19 14:33:07 -07:00
touchscreen Input: wacom_w8001 - handle errors from input_mt_init_slots() 2016-07-19 11:42:44 -07:00
apm-power.c
evbug.c
evdev.c Input: evdev - fix bug in checking duplicate clock change request 2015-10-31 10:35:02 -07:00
ff-core.c Input: document and check on implicitly defined FF_MAX_EFFECTS 2015-10-16 15:32:16 -07:00
ff-memless.c [media] fixp-arith: replace sin/cos table by a better precision one 2015-03-02 14:50:06 -03:00
input-compat.c drivers/input: eliminate INPUT_COMPAT_TEST macro 2016-03-25 16:37:42 -07:00
input-compat.h drivers/input: eliminate INPUT_COMPAT_TEST macro 2016-03-25 16:37:42 -07:00
input-leds.c Input: LEDs - skip unnamed LEDs 2015-07-24 09:11:01 -07:00
input-mt.c Input: update input_mt_report_pointer_emulation to support hovering 2016-06-01 14:21:10 -07:00
input-polldev.c Input: implement managed polled input devices 2014-05-14 16:40:04 -07:00
input.c Merge branch 'for-linus' into next 2016-07-19 11:02:56 -07:00
joydev.c Input: joydev - fix possible ERR_PTR() dereferencing 2015-10-06 16:38:40 -07:00
Kconfig Input: synaptics-rmi4 - add support for Synaptics RMI4 devices 2016-03-10 16:02:39 -08:00
Makefile Input: synaptics-rmi4 - add support for Synaptics RMI4 devices 2016-03-10 16:02:39 -08:00
matrix-keymap.c
mousedev.c Input: mousedev - fix race when creating mixed device 2014-03-29 14:44:23 -07:00
sparse-keymap.c treewide: Fix typo in Documentation/DocBook 2014-02-19 14:58:17 +01:00