From patchwork Thu Sep 15 20:06:24 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Herv=C3=A9_Poussineau?= X-Patchwork-Id: 9334697 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 2FB5860839 for ; Thu, 15 Sep 2016 20:33:04 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 2347B29B60 for ; Thu, 15 Sep 2016 20:33:04 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 17E3629B68; Thu, 15 Sep 2016 20:33:04 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=2.0 tests=BAYES_00,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 6C8D229B60 for ; Thu, 15 Sep 2016 20:33:02 +0000 (UTC) Received: from localhost ([::1]:37196 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bkd4F-0003hG-TA for patchwork-qemu-devel@patchwork.kernel.org; Thu, 15 Sep 2016 16:15:31 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60633) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bkcw8-0006nZ-7F for qemu-devel@nongnu.org; Thu, 15 Sep 2016 16:07:17 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bkcw2-00038S-TM for qemu-devel@nongnu.org; Thu, 15 Sep 2016 16:07:06 -0400 Received: from smtp2-g21.free.fr ([212.27.42.2]:46771) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bkcw2-00037k-LZ for qemu-devel@nongnu.org; Thu, 15 Sep 2016 16:07:02 -0400 Received: from localhost.localdomain (unknown [82.227.227.196]) by smtp2-g21.free.fr (Postfix) with ESMTP id 505D52003B4; Thu, 15 Sep 2016 22:07:00 +0200 (CEST) From: =?UTF-8?q?Herv=C3=A9=20Poussineau?= To: qemu-devel@nongnu.org Date: Thu, 15 Sep 2016 22:06:24 +0200 Message-Id: <1473969987-5890-3-git-send-email-hpoussin@reactos.org> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1473969987-5890-1-git-send-email-hpoussin@reactos.org> References: <1473969987-5890-1-git-send-email-hpoussin@reactos.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Windows NT kernel [generic] [fuzzy] X-Received-From: 212.27.42.2 Subject: [Qemu-devel] [PATCH v2 2/5] ps2: correctly handle 'get/set scancode' command X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Gerd Hoffmann , "Michael S. Tsirkin" Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP When getting scancode, current scancode must be preceded from reply ack. When setting scancode, we must reject invalid scancodes. Signed-off-by: Hervé Poussineau --- hw/input/ps2.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/hw/input/ps2.c b/hw/input/ps2.c index 00a1792..2105e51 100644 --- a/hw/input/ps2.c +++ b/hw/input/ps2.c @@ -296,16 +296,18 @@ void ps2_write_keyboard(void *opaque, int val) break; case KBD_CMD_SCANCODE: if (val == 0) { + ps2_queue(&s->common, KBD_REPLY_ACK); if (s->scancode_set == 1) ps2_put_keycode(s, 0x43); else if (s->scancode_set == 2) ps2_put_keycode(s, 0x41); else if (s->scancode_set == 3) ps2_put_keycode(s, 0x3f); - } else { - if (val >= 1 && val <= 3) - s->scancode_set = val; + } else if (val >= 1 && val <= 3) { + s->scancode_set = val; ps2_queue(&s->common, KBD_REPLY_ACK); + } else { + ps2_queue(&s->common, KBD_REPLY_RESEND); } s->common.write_cmd = -1; break;