mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Andrei Warkentin <awarkentin@vmware.com>
To: Jason Wessel <jason.wessel@windriver.com>
Cc: kgdb-bugreport@lists.sourceforge.net,
	linux-kernel@vger.kernel.org,
	Andrei Warkentin <andreiw@vmware.com>
Subject: Re: [PATCH] KDB: Fix usability issues relating to the 'enter' key.
Date: Mon, 27 Feb 2012 15:18:25 -0800 (PST)	[thread overview]
Message-ID: <608420295.1620292.1330384705791.JavaMail.root@zimbra-prod-mbox-2.vmware.com> (raw)
In-Reply-To: <4F4C08D3.8000105@windriver.com>

Hi,

----- Original Message -----
> From: "Jason Wessel" <jason.wessel@windriver.com>
> To: "Andrei Warkentin" <awarkentin@vmware.com>
> Cc: kgdb-bugreport@lists.sourceforge.net, linux-kernel@vger.kernel.org, "Andrei Warkentin" <andreiw@vmware.com>
> Sent: Monday, February 27, 2012 5:50:59 PM
> Subject: Re: [PATCH] KDB: Fix usability issues relating to the 'enter' key.
> 
> Did you try the patch I sent?  It might not address the key repeat
> problem, but this is some thing I had not yet duplicated.  Outside of
> the warning message (which was killed off in the patch), was there
> garbage characters or some notable behavior?  Was it something you
> could see in qemu or only in ESX?

Let me elaborate. The cpu_relax() you added solves the hanging.

> 
> Having authored the keyboard/input handler with some suggestions from
> Dmitry, I was fairly certain it had no way to prevent the leak of the
> up keystroke unless you have the KDB specific capture where it waits
> to act on the "key up" event for an enter keystroke.  The cleanup
> handler only cleans up state events where keys were down at the time
> the debug core became active.  It will not prevent the leak of key
> strokes or state changes while the kernel was stopped.  The goofy
> enter handler was supposed to take care of that.
> 
> I conclusively proved there is event leakage from using the original
> patch you provided. Here is the test case, which you should be able
> to
> execute with qemu or kvm (since you also mentioned that was what you
> were previously using).
> 
> 1) boot the qemu
> 2) Use kgdboc=kbd
> 3) break into the debugger to the kdb prompt
> 4) type "g" but to not press return
> 5) Connect to the qemu back end debug connection with gdb and set a
>    breakpoint at line 402 of atkbd.c which should be the call to:
>    	input_event(dev, EV_MSC, MSC_RAW, code);
> 6) continue the gdb connection
> 7) In the qemu monitor enter the command:
>     sendkey ret 4000
> 
> After 4 seconds when the key is released you will catch the leaked
> event in the atkbd.c, and if you had X running it propagates all the
> way up the input chain.

I know I should have read deeper into the input code. I assumed it performed a reset
on the input device. Assumptions are bad. Sorry.

So here is the thing. With the patch you sent, you would still leak the break
keypress for the keypad enter. This is because the break code for KP ENTER is 0xe0 0x9c,
and the inb(KBD_DATA_REG) done in the goofy handler will read just the 0xe0 part, leaving
0x9c behind, which will be leaked out.

So here is my question - do you want me to fix the existing goofy handler to properly
handle KP ENTER and ENTER repeats? Or do you think it's appropriate to empty out the
FIFO during KDB exit as part of post_exp kgdb_io op? Or reset the input device?

Thanks for investigating this.

A


  reply	other threads:[~2012-02-27 23:18 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-02-17 23:52 Andrei Warkentin
2012-02-25  3:20 ` Andrei Warkentin
2012-02-26 13:10 ` Jason Wessel
2012-02-26 13:58   ` Jason Wessel
2012-02-27  1:04     ` Andrei Warkentin
2012-02-27 22:50       ` Jason Wessel
2012-02-27 23:18         ` Andrei Warkentin [this message]
2012-02-27 23:28           ` Jason Wessel
2012-02-27 23:35             ` Andrei Warkentin
2012-02-28  1:27             ` Andrei Warkentin
2012-02-28  4:26             ` Andrei Warkentin
2012-02-28 13:53               ` Jason Wessel
2012-02-28 17:24                 ` Andrei Warkentin
2012-02-27  1:01   ` Andrei Warkentin

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=608420295.1620292.1330384705791.JavaMail.root@zimbra-prod-mbox-2.vmware.com \
    --to=awarkentin@vmware.com \
    --cc=andreiw@vmware.com \
    --cc=jason.wessel@windriver.com \
    --cc=kgdb-bugreport@lists.sourceforge.net \
    --cc=linux-kernel@vger.kernel.org \
    /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

Powered by JetHome