28 Jul, 2016

1 commit

  • 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
    Tested-by: Mark Laws
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Torokhov

    Dmitry Torokhov
     

27 Aug, 2013

1 commit

  • This driver adds support for slidebars found on some Lenovo IdeaPad
    laptops (the slidebars work with SlideNav/Desktop Navigator under
    Windows).

    Fixes: https://bugzilla.kernel.org/show_bug.cgi?id=16004

    Registers 'IdeaPad Slidebar' input device and
    /sys/devices/platform/ideapad_slidebar/slidebar_mode
    for switching slidebar's modes.

    Now works on:
    IdeaPad Y550, Y550P.

    May work on (testing and adding new models is needed):
    Ideapad Y560, Y460, Y450, Y650,
    and, probably, some others.

    Signed-off-by: Andrey Moiseev
    Signed-off-by: Dmitry Torokhov

    Andrey Moiseev
     

30 Jun, 2010

1 commit

  • Otherwise we may run into following:

    drivers/platform/built-in.o: In function `i8042_lock_chip':
    /home/test/ws2/projects/linux-2.6/include/linux/i8042.h:50: multiple definition of `i8042_lock_chip'
    drivers/input/serio/built-in.o:/home/test/ws2/projects/linux-2.6/include/linux/i8042.h:50: first defined here
    ...
    make[1]: *** [drivers/built-in.o] Error 1
    make: *** [drivers] Error 2

    Signed-off-by: Feng Tang
    Signed-off-by: Dmitry Torokhov

    Feng Tang
     

12 Dec, 2009

1 commit


18 Sep, 2009

1 commit

  • The serio ports on i8042 are not completely isolated; while we provide
    enough locking to ensure proper serialization when accessing control
    and data registers AUX and KBD ports can still have an effect on each
    other on PS/2 protocol level. The most prominent effect is that
    issuing a command for the device connected to one port may cause
    abort of the command currently executing by the device connected to
    another port.

    Since i8042 nor serio subsystem are not aware of the details of the
    PS/2 protocol (length of the commands and their replies and so on) the
    locking should be done on libps2 level by adding special handling when
    we see that we are dealing with serio port on i8042.

    Signed-off-by: Dmitry Torokhov

    Dmitry Torokhov
     

22 Oct, 2007

1 commit