public inbox for ltp@lists.linux.it
 help / color / mirror / Atom feed
From: Cyril Hrubis <chrubis@suse.cz>
To: ltp@lists.linux.it
Subject: [LTP] [PATCH] kernel/input: fix failure on an old kernel
Date: Tue, 7 Nov 2017 15:20:44 +0100	[thread overview]
Message-ID: <20171107142043.GA32659@rei.lan> (raw)
In-Reply-To: <1507543023-21605-1-git-send-email-yangx.jy@cn.fujitsu.com>

Hi!
> On some old kernels(e.g. v2.6.32), we always triggered the following
> error when running input04 and input05:
> --------------------------------------------------------------------
> TINFO  :  Found uinput dev at /dev/uinput
> TINFO  :  Unexpected ev type=0 code=0 value=0
> TFAIL  :  Data received /dev/inputX
> ---------------------------------------------------------------------
> 
> After investigation, the single EV_SYN event can be processed on an
> old kernel.  However, the EV_SYN event handling has been modfied by
> the following patch:
> '4369c64c79a2("Input: Send events one packet at a time")'
> 
> The patch is designed to reduce the time taken for processing a lot of
> events.  As a side effect, the single EV_SYN event handling depends on
> one or more other events(e.g. EV_REL), so it should be processed
> together with others, since this action is atomic.
> 
> Only when the number of queued events(include EV_SYN) is greater than
> one can these events be processed.
> Please see the kenrel code in drivers/input/input.c, as below:
> --------------------------------------------------------------------
> static void input_handle_event(struct input_dev *dev,
> ...
>     if (disposition & INPUT_FLUSH) {
>             // num_vals: number of values queued in the current frame
>             if (dev->num_vals >= 2)
>                     input_pass_values(dev, dev->vals, dev->num_vals);
>                     dev->num_vals = 0;
> ...
> --------------------------------------------------------------------
> 
> For example, steps to send an empty move and EV_SYN:
> -----------------------------------------------------
> send_event(fd, EV_REL, REL_X, 0);
> send_event(fd, EV_SYN, 0, 0);
> -----------------------------------------------------
> 
> On an old kernel(before v3.7.0), the EV_SYN/SYN_REPORT event can be
> processed independently, so it is passed into /dev/input/eventX.
> 
> On a new kernel(since v3.7.0), the EV_SYN/SYN_REPORT event depends on
> EV_REL/REL_X which is an empty move, so it is ignored.
> 
> We feel this failure is due to the different mechanism of processing
> EV_SYN instead of a kernel bug, so we update no_events_queued() to
> fix it.

Well, I guess that we can change the tests to ignore stray sync events
on older kernels, but new ones empty sync events would be regression.

Hence we should enable the backward compatibility only on old kernels
where the tests actually fails.

-- 
Cyril Hrubis
chrubis@suse.cz

  parent reply	other threads:[~2017-11-07 14:20 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-10-09  9:57 [LTP] [PATCH] kernel/input: fix failure on an old kernel Xiao Yang
2017-11-06  7:52 ` Xiao Yang
2017-11-07 14:20 ` Cyril Hrubis [this message]
2017-11-08 10:37   ` [LTP] [PATCH v2] " Xiao Yang
2017-11-09 13:45     ` Cyril Hrubis
2017-11-13  6:45       ` [LTP] [PATCH v3] " Xiao Yang
2017-12-04  7:45         ` Xiao Yang
2017-12-04 15:33         ` Cyril Hrubis

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20171107142043.GA32659@rei.lan \
    --to=chrubis@suse.cz \
    --cc=ltp@lists.linux.it \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox