qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Eric Blake <eblake@redhat.com>
To: penghao122@sina.com, qemu-devel <qemu-devel@nongnu.org>
Cc: qemu-stable <qemu-stable@nongnu.org>
Subject: Re: [Qemu-devel] [PATCH] keyboard:fix ps2 keyboard can't use
Date: Wed, 06 May 2015 11:03:35 -0600	[thread overview]
Message-ID: <554A4967.2050306@redhat.com> (raw)
In-Reply-To: <20150506162011.55A5049ED81@webmail.sinamail.sina.com.cn>

[-- Attachment #1: Type: text/plain, Size: 4135 bytes --]

On 05/06/2015 10:20 AM, penghao122@sina.com wrote:

Missing a 'v2' in the subject line (hint: git send-email -v2)

Subject line doesn't make sense, and has incorrect spacing after colon.
 What was wrong with my suggestion that I gave on your v1?

keyboard: handle ps2 typing buffer overrun

> Starting a linux guest with ps2 keyboard, if you type many times during leaving 

Trailing whitespace in your commit message.

> grub and into linux kernel,then you can't use keyboard after linux initialization
> finished. Specally when you setup linux guest from iso file,you will type in grub.

s/Specally/Specifically,/

s/file,you/file, you/

> During grub,the work method of ps2 keyboard is like this:

s/grub,the/grub, the/ (in general, space after comma in English prose;
I'll quit pointing it out)

> First, ps2 keyboard driver send command KBD_CCMD_KBD_ENABLE. Second, if there is
> a keyboard input, then ps2 keyboard driver read data. Third, ps2 keyboard driver 
> send command KBD_CCMD_KBD_ENABLE again.
> After leaving grub and before finishing linux kernel ps2 driver initialization, 
> if you type many times, the input data keep saving in ps2 queue of qemu. 
> Before linux kernel initialize ps2 keyboard,linux call i8042_controller_check,
> if i8042_controller_check return fail, then ps2 keyboard driver will never initialize. 
> 
> (i8042.c in kernel 2.6.32 )
> static int i8042_controller_check(void)
> {
>     if (i8042_flush() == I8042_BUFFER_SIZE)
>         return -ENODEV;
>     return 0;
> }
> static int i8042_flush(void)
> {
>     ...
>     while (((str = i8042_read_status()) & I8042_STR_OBF) && (i < I8042_BUFFER_SIZE)) {
>         udelay(50);
>         data = i8042_read_data();
>         i++;
>     }
>     return i;
> }
> During calling i8042_flush it is full in ps2 queue of qemu. ps_read_data will execute 
> kbd_update_irq(s->update_arg, q->count != 0). Because q->count!=0, kbd_update_irq can 
> set I8042_STR_OBF. Then i8042_flush() will return I8042_BUFFER_SIZE.
> Signed-off-by: Hao Peng<penghao122@sina.com>
> ----

Incorrect separator. Git relies on exactly '---' as the division between
commit message and explanatory text, and then ignores any garbage until
the first 'diff' line.  Also missing a diffstat, which 'git
format-patch' will automatically insert as part of the explanatory text.

> diff --git a/hw/input/pckbd.c b/hw/input/pckbd.c
> index 9b9a7d7..f4fbcfc 100644
> --- a/hw/input/pckbd.c
> +++ b/hw/input/pckbd.c
> @@ -207,6 +207,8 @@ static uint64_t kbd_read_status(void *opaque, hwaddr addr,
> KBDState *s = opaque;
> int val;
> val = s->status;
> + if(s->write-cmd == KBD_CCMD_KBD_ENABLE)

Your patch is fatally flawed:

$ git am ../\[Qemu-devel\]\ \[PATCH\]\ keyboard\:fix\ ps2\ keyboard\
can\'t\ use.eml
Applying: keyboard:fix ps2 keyboard can't use
fatal: corrupt patch at line 6
Patch failed at 0001 keyboard:fix ps2 keyboard can't use
The copy of the patch that failed is found in:
   /home/eblake/qemu/.git/rebase-apply/patch
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".

You probably pasted the contents of your patch into an email composer
that adjusted whitespace, and in the process made your patch useless.
PLEASE read http://wiki.qemu.org/Contribute/SubmitAPatch, and follow the
advice there for sending a patch.  While it is possible to send a patch
without using 'git send-email', it is so tricky to get it right that we
strongly encourage new contributors to just use what git already
provides.  In particular, I advise that you FIRST send a patch to
yourself using 'git send-email', and then use 'git am' to apply the
patch locally, to make sure that your configuration is correct and that
your patches will survive a round trip through email.  Once you have
that working, then it is okay to send to the list.

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 604 bytes --]

  reply	other threads:[~2015-05-06 17:03 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-06 16:20 [Qemu-devel] [PATCH] keyboard:fix ps2 keyboard can't use penghao122
2015-05-06 17:03 ` Eric Blake [this message]
2015-05-06 17:05   ` Eric Blake

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=554A4967.2050306@redhat.com \
    --to=eblake@redhat.com \
    --cc=penghao122@sina.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-stable@nongnu.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;
as well as URLs for NNTP newsgroup(s).