From nobody Tue May 21 07:28:32 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmx.de ARC-Seal: i=1; a=rsa-sha256; t=1662501874; cv=none; d=zohomail.com; s=zohoarc; b=hZ/vMecNmRKEtzwsRxmA7txa0gZqiJBsBUh7+BtYjCkpY5QlGYkvF/gnT8ozQkCusZFvya196NQSfCakwdplqtlq2IqYObCdES5bOvnnreVuhhsZRIz2iL1rAxuf0HJeEGoF95OxEttxkW3cEJN185IYZIdzQaHFjlLhPKPBf+A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1662501874; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=MZ8vnj0dFPIVtSu+UMX7tuebqUOGI9+qRnFi6pilYHw=; b=IVW66hZ0DJxhtDi8vskjn0M4CVhiD/tgLoBJk5gi47fEa4QhxepRTn4G627+kswT2fEeEgA13/8Z6EMiUCZrt58Dza0gwoIHVcr/64kZYgRVXcyhgRyeRme/oglihKCgcrpPRtPpumrqDTt9esH0+5V6RAhgcsnGOTcs9qv9i94= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1662501874203751.969034476292; Tue, 6 Sep 2022 15:04:34 -0700 (PDT) Received: from localhost ([::1]:42440 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oVggL-0001U3-03 for importer@patchew.org; Tue, 06 Sep 2022 18:04:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43254) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oVeYY-0004YL-SX; Tue, 06 Sep 2022 15:48:22 -0400 Received: from mout.gmx.net ([212.227.17.22]:50255) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oVeYW-00084X-T3; Tue, 06 Sep 2022 15:48:22 -0400 Received: from btm-mobil4.fritz.box ([88.72.97.126]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MulmF-1pLYHk2cXz-00rrN4; Tue, 06 Sep 2022 21:48:15 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1662493696; bh=AvUMOSQIPIUZRgD26pgYnEloTYd5BX9ObWpseeSEE/c=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=c1HiZcTN5GCcYZq0dFoemFtizZuootibi18Tq1epLlSC7vTNb+mV/LY7N0cMhvGHs n+HLHD/ttVuQqZHeawM8IcxMzG9CiC6wnFMcEH3fgtAiSkDd/KjI3QPTJF+WqU/Wpa 8AUTTrzPTrH1eHSXPgpWawels/cGRETGLW/qnwnU= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c From: Arwed Meyer To: qemu-devel@nongnu.org Cc: qemu-stable@nongnu.org, Arwed Meyer , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Paolo Bonzini Subject: [PATCH 1/4] msmouse: Handle mouse reset Date: Tue, 6 Sep 2022 21:47:52 +0200 Message-Id: <20220906194755.98090-2-arwed.meyer@gmx.de> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220906194755.98090-1-arwed.meyer@gmx.de> References: <20220906194755.98090-1-arwed.meyer@gmx.de> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:BRFqusUK4VPAa1guIHCDqvv3fd9mp5Umyr8GgeulWjSE99DiWf3 HvBACxPt6+mcB5l/mqF7SQVMSAwgFOagPu+udPumeT/75yf781c2WFJ2iDFLf29v/tI0+nN nXnDdNSh2ppA10Y/kGBCKoovFo33e7jCpDUSpnA4TUHp9HKeVrWjyzRL0D9cXmNAxlK8vNv IjCK11WpVSgAqbure8FYA== X-UI-Out-Filterresults: notjunk:1;V03:K0:C9x85MI1MkQ=:XBr/vM4uWPzqbneuiyHD1v sHQDTtEkRzmtZnzY2HE3YWVsvgflR8wEyXo4+5eVlcKLi8nw5rByWmtCc55QaQy+wPUMR9AcP OuXrEeOUfulDeyCdsl9I4zcGT+wDgJcd3g7hEmEwjyHMSE8U1j9lFjwyobgXqnZdyW5+HhhPI mEKWTgW7Ni6om9xa9VvoG+WqE3hcQDzHDRuB6TqAJTPC7rvWn4x0slQzIu9X8Yp9AbjRpPJRR RIb33aoeYC2BexBi+L9TGqKpK++UwoQ9fEFclUu4BfanxeOQVGyVV42DIjMNngtVj1p2OhJi7 n5oLOB6xD1bf7p9xsQaxVU7a+9lhYxkuuPbjow6rpzA4qbWfGFW4oSunpTsjVQNhWzgJF4qgs 72GUg2cnB5EU1D0/vwl8fryosKbuITLCLZ1TxfEeWp5fcCnVyhxc+dnd+U52BwpqnphKnmLK+ 5E/ENvQpP6+WAHHvcvNY3/87JBps7XLbCjOlQN0kQF7M1e413ZeEm6HD6znetqg0a4f3otsVu IWsL3+g7GyK3lKpRM6JiGIeo0m+qhebOIv8eiaxuG2hVomI/rV8mTUYg86tSFa8M8VFM4JnOw pJK8OFPeVJQLNxQBKtY9TTUtJUYQTKCpn+VMg1DOGtn/WN9YTmjdcWfLlHBWSSYhK8RDThZ3B PsXdD9Oa9oPMlE7ctUkzv/BaV14xhUu0zu9aNvChLKgJRs7opqqBIrFznJ4qgKTz1Z18L0IOC x/4UJuBcAn05ICOqQKPi8bhXJ+9al6cuU/LmzIjd7YK6IPHjwjZx3wK9QIwI+CuG3uFD2oesV qUEmOKQMBwEIwnrdVdQhWUHfi7ngjalBD8YMYgPfEWxBG/fUV8lBYoAf18IwHvlsvftXOkTrW 3bQUg4f6MeofHm53O0QISoNiZh68IBn/uql4sn6+wFm2nbnVE6Pv95BRXzLuNB7Fn9p88Gt91 Mh0YB+/wh5ZM6/9iwiILzFOQwv78rnVJq58M/+zIPLzgO8kzcr4cvvznIeVqIx/RN+Zdejzqv 2DcNMSSJfV1z0NqmMYhOe8S5XMjmVZLFTPB0fSwqi/0V6jOHsfN6caZytod4Q5ffiXBsTsz/x RL29HWwHBcdzVFrEIhLDhaxSRt7viySwWFFkxVb2C9E7SMQ4BXL0wRjuO0z+LcvDxiKlGuw+0 Ii1beP4yvP6jWj/dXgMbgwpjKL Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.17.22; envelope-from=arwed.meyer@gmx.de; helo=mout.gmx.net X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Tue, 06 Sep 2022 18:00:42 -0400 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmx.net) X-ZM-MESSAGEID: 1662501874763100004 Content-Type: text/plain; charset="utf-8" Detect mouse reset via RTS or DTR line: Don't send or process anything while in reset. When coming out of reset, send ID sequence first thing. This allows msmouse to be detected by common mouse drivers. Resolves: https://gitlab.com/qemu-project/qemu/-/issues/77 Signed-off-by: Arwed Meyer Reviewed-by: Marc-Andr=C3=A9 Lureau --- chardev/msmouse.c | 65 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 63 insertions(+), 2 deletions(-) diff --git a/chardev/msmouse.c b/chardev/msmouse.c index eb9231dcdb..0ecf26a436 100644 --- a/chardev/msmouse.c +++ b/chardev/msmouse.c @@ -25,17 +25,20 @@ #include "qemu/osdep.h" #include "qemu/module.h" #include "chardev/char.h" +#include "chardev/char-serial.h" #include "ui/console.h" #include "ui/input.h" #include "qom/object.h" -#define MSMOUSE_LO6(n) ((n) & 0x3f) -#define MSMOUSE_HI2(n) (((n) & 0xc0) >> 6) +#define MSMOUSE_LO6(n) ((n) & 0x3f) +#define MSMOUSE_HI2(n) (((n) & 0xc0) >> 6) +#define MSMOUSE_PWR(cm) (cm & (CHR_TIOCM_RTS | CHR_TIOCM_DTR)) struct MouseChardev { Chardev parent; QemuInputHandlerState *hs; + int tiocm; int axis[INPUT_AXIS__MAX]; bool btns[INPUT_BUTTON__MAX]; bool btnc[INPUT_BUTTON__MAX]; @@ -109,6 +112,11 @@ static void msmouse_input_event(DeviceState *dev, Qemu= Console *src, InputMoveEvent *move; InputBtnEvent *btn; + /* Ignore events if serial mouse powered down. */ + if (!MSMOUSE_PWR(mouse->tiocm)) { + return; + } + switch (evt->type) { case INPUT_EVENT_KIND_REL: move =3D evt->u.rel.data; @@ -132,6 +140,11 @@ static void msmouse_input_sync(DeviceState *dev) MouseChardev *mouse =3D MOUSE_CHARDEV(dev); Chardev *chr =3D CHARDEV(dev); + /* Ignore events if serial mouse powered down. */ + if (!MSMOUSE_PWR(mouse->tiocm)) { + return; + } + msmouse_queue_event(mouse); msmouse_chr_accept_input(chr); } @@ -142,6 +155,52 @@ static int msmouse_chr_write(struct Chardev *s, const = uint8_t *buf, int len) return len; } +static int msmouse_ioctl(Chardev *chr, int cmd, void *arg) +{ + MouseChardev *mouse =3D MOUSE_CHARDEV(chr); + int c; + int *targ =3D (int *)arg; + + switch (cmd) { + case CHR_IOCTL_SERIAL_SET_TIOCM: + c =3D mouse->tiocm; + mouse->tiocm =3D *(int *)arg; + if (MSMOUSE_PWR(mouse->tiocm)) { + if (!MSMOUSE_PWR(c)) { + /* + * Power on after reset: send "M3" + * cause we behave like a 3 button logitech + * mouse. + */ + mouse->outbuf[0] =3D 'M'; + mouse->outbuf[1] =3D '3'; + mouse->outlen =3D 2; + /* Start sending data to serial. */ + msmouse_chr_accept_input(chr); + } + break; + } + /* + * Reset mouse buffers on power down. + * Mouse won't send anything without power. + */ + mouse->outlen =3D 0; + memset(mouse->axis, 0, sizeof(mouse->axis)); + for (c =3D INPUT_BUTTON__MAX - 1; c >=3D 0; c--) { + mouse->btns[c] =3D false; + mouse->btnc[c] =3D false; + } + break; + case CHR_IOCTL_SERIAL_GET_TIOCM: + /* Remember line control status. */ + *targ =3D mouse->tiocm; + break; + default: + return -ENOTSUP; + } + return 0; +} + static void char_msmouse_finalize(Object *obj) { MouseChardev *mouse =3D MOUSE_CHARDEV(obj); @@ -166,6 +225,7 @@ static void msmouse_chr_open(Chardev *chr, *be_opened =3D false; mouse->hs =3D qemu_input_handler_register((DeviceState *)mouse, &msmouse_handler); + mouse->tiocm =3D 0; } static void char_msmouse_class_init(ObjectClass *oc, void *data) @@ -175,6 +235,7 @@ static void char_msmouse_class_init(ObjectClass *oc, vo= id *data) cc->open =3D msmouse_chr_open; cc->chr_write =3D msmouse_chr_write; cc->chr_accept_input =3D msmouse_chr_accept_input; + cc->chr_ioctl =3D msmouse_ioctl; } static const TypeInfo char_msmouse_type_info =3D { -- 2.34.1 From nobody Tue May 21 07:28:32 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmx.de ARC-Seal: i=1; a=rsa-sha256; t=1662502018; cv=none; d=zohomail.com; s=zohoarc; b=gL0fYvw8YBADi+52o5e7B69g6qR+8iJ9WEqQScx2Kcv0QaBGOYlntJUneEFTe2N5rPqNPn0SvZLZRX2kt0qUTrh3rH1MYt1xaSFxGQy8z2ADO+e8VpqZWIY4WZ53StHmqIsJPwz0GAy/GYUvItZVZ8l9beqcuLybu/7C1IRg/bk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1662502018; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=LDJ8Pm2etEaxWOx9sw9M8n57N3+21BJpn0EiJ2gkiKU=; b=F+Wa4UxsIzhQxoDxmP6SDdrNb7hajQN04T8KEo/qseYyhWFt8cy0vQ/5D9K+HvAgjJsAsQ/xFIuXs4R2sikSJmihojzAz1bqn/hHxfdhzfLyIwtxPMDQzaYZhVhkOgu1uVpqr8PsDtZh/6AfUJTe4JJvxsUERjeWVfFy98Hcz3I= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1662502018564981.740984614241; Tue, 6 Sep 2022 15:06:58 -0700 (PDT) Received: from localhost ([::1]:54100 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oVgif-0005T4-BL for importer@patchew.org; Tue, 06 Sep 2022 18:06:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43256) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oVeYa-0004Yy-C5; Tue, 06 Sep 2022 15:48:25 -0400 Received: from mout.gmx.net ([212.227.17.22]:34263) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oVeYY-00084l-C9; Tue, 06 Sep 2022 15:48:24 -0400 Received: from btm-mobil4.fritz.box ([88.72.97.126]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MY68T-1osXAy18tJ-00YTXQ; Tue, 06 Sep 2022 21:48:17 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1662493697; bh=uPyd7/rGq79X5CYUYadT3vXFghOORV+xlXGmB3n27+o=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=B50pycN1AFRqGR7YVVEQ2rnTlJaK+HOF4j9LwCCE6/F31k+HRkNUDx0Syx25x4g+p K255TaZrXbwEpobgi7Guxq7oE+QKLZ8KxRyAThJT8NJdWR710MrZnMuQvMd5wFVqs1 iZfJLnXLR1Sw+W5xpPla6bf847c3yZuGdMst8y2Y= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c From: Arwed Meyer To: qemu-devel@nongnu.org Cc: qemu-stable@nongnu.org, Arwed Meyer , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Paolo Bonzini , Pavel Dovgalyuk Subject: [PATCH 2/4] chardev: src buffer const for write functions Date: Tue, 6 Sep 2022 21:47:53 +0200 Message-Id: <20220906194755.98090-3-arwed.meyer@gmx.de> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220906194755.98090-1-arwed.meyer@gmx.de> References: <20220906194755.98090-1-arwed.meyer@gmx.de> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:54+oAnN45h+k17x39v+J4s6svfxHqLuBPOo2gf0NX2Xx8hMhoRr 9tj/hN8SIWza9XlWr1kRrHFuEFoCBsbAHWi2ceuVvDg0jrUIu2qyVptutVLLhjDDAQXiE+Q gZTdavs8tF1q3lOR/ajUcYBvNco/9/Vx91UkCd6dxkcdcAv1CQwpshbfVxe8rPNzG8yV83f ZInP3Qvg2beNAL5AyDluQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:vBJOEPruJkA=:liTGbIuLE1ZYfj/IKt8Yh/ pK28TBD/S6ojTbBeLthVT7V2/RDrWHbBL66hUniw6OENZ5EW5MLU22pSKrPDTRbnT/G2QQdbv 1TC7Wk54Mu0OT43CKXZw6w+S3fFHO3fisObM9Z/yvPiLEBFnZxeu5ZztwtuXzKu0HiPKn50dX ffXxiUjQVP4TCr/0WMFo1gz1HSSiHM3OKncip9fbWhnlyxSanNrz4wn0xbwr0ogna1XwveTp9 E2GDD0umVTRqymtptRmvGuU4MP1ksk9ziCPlp3ghPMRX8c4TbX4Umypa9EhY6v9sWoGDoKET5 Bv0Tff1bNx3THwbKLsUBh1c/UdjQkbAqhdbWpyu/w1voYkMUa94anHJmgGBR+eT05sf79rGN7 VZKpDzTCwimvyo1UZDPl0iM/Z8rUVnXgD3/xT6DKImkPeu+4X+9QMRA/Qo6gQQqm0nYLr7hBN tF9FEaMVtoSRSbE0XWdvGqheYXdm6c1VXJ2PFQ2pz4KfN7nfyJKhTiizjHwHsdyIQn6sF1LgT 5LxuZjZNK/A57+GzuIeqqKEMZbRoau4GTudgN5runwn35WfdNK80++52pynLuhQIqbeT2B7PH 4tkq66dhhonIiWDT4a0j34ocsADBscwsAKdFvN3JwqIFGYZeyHNk+b/qHpxIx9BpAUPchLeNt EWeR/HiceC2tfOID9d4AUBWcjx9vjXYbbwmRxQwoQFc4UC2b1RSPLfmBtmrSKQ3HdvsV/76yZ r4a4xGoenkKtT/g9+fvbMiHnTuWj256G5UM5fnCzV5TeVxxaQYt0JLyK/dZpLmjKCQpgAzxDi NRke3SimtrRD5BDXi1JruxS0vBabgASlJLXIFezIWJvEPZeOb0HfDVwEQZ3thFKa+tX0R8RPf 1MLuQJimM4PekAaCUYkbBGL1hye8UBogUHX+mqu0S9wdcogqgF9UjCtukg6jwtt3li5dvVBlG EASglrpWlCu6XoUnMENf/SFbExpbcO0vgAHZ4CM99s6ssy4a0dNayWZSrlcqTovRw88CbjRNy um4PKhkMzROtQU1AdooqLPYCFP7kxzkBisYJP2DAPVEbTbqUbworgZF+F0afj5jPpgsyxXA5C H4Uoehw25USQ7qd+y7IINllq9xr4P6NbyuJbEzI5MPsa5Vg9sh5en0vIO+BPefuK82o3JFOm9 R/r8S86KpaTBwvQuo/q/DooyrO Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.17.22; envelope-from=arwed.meyer@gmx.de; helo=mout.gmx.net X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Tue, 06 Sep 2022 18:00:42 -0400 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmx.net) X-ZM-MESSAGEID: 1662502020398100001 Content-Type: text/plain; charset="utf-8" Make source buffers const for char be write functions. This allows using buffers returned by fifo as buf parameter and source buff= er should not be changed by write functions anyway. Signed-off-by: Arwed Meyer Reviewed-by: Marc-Andr=C3=A9 Lureau --- chardev/char.c | 4 ++-- include/chardev/char.h | 4 ++-- include/sysemu/replay.h | 2 +- replay/replay-char.c | 2 +- stubs/replay-tools.c | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/chardev/char.c b/chardev/char.c index 0169d8dde4..b005df3ccf 100644 --- a/chardev/char.c +++ b/chardev/char.c @@ -193,7 +193,7 @@ int qemu_chr_be_can_write(Chardev *s) return be->chr_can_read(be->opaque); } -void qemu_chr_be_write_impl(Chardev *s, uint8_t *buf, int len) +void qemu_chr_be_write_impl(Chardev *s, const uint8_t *buf, int len) { CharBackend *be =3D s->be; @@ -202,7 +202,7 @@ void qemu_chr_be_write_impl(Chardev *s, uint8_t *buf, i= nt len) } } -void qemu_chr_be_write(Chardev *s, uint8_t *buf, int len) +void qemu_chr_be_write(Chardev *s, const uint8_t *buf, int len) { if (qemu_chr_replay(s)) { if (replay_mode =3D=3D REPLAY_MODE_PLAY) { diff --git a/include/chardev/char.h b/include/chardev/char.h index a319b5fdff..44cd82e405 100644 --- a/include/chardev/char.h +++ b/include/chardev/char.h @@ -186,7 +186,7 @@ int qemu_chr_be_can_write(Chardev *s); * the caller should call @qemu_chr_be_can_write to determine how much data * the front end can currently accept. */ -void qemu_chr_be_write(Chardev *s, uint8_t *buf, int len); +void qemu_chr_be_write(Chardev *s, const uint8_t *buf, int len); /** * qemu_chr_be_write_impl: @@ -195,7 +195,7 @@ void qemu_chr_be_write(Chardev *s, uint8_t *buf, int le= n); * * Implementation of back end writing. Used by replay module. */ -void qemu_chr_be_write_impl(Chardev *s, uint8_t *buf, int len); +void qemu_chr_be_write_impl(Chardev *s, const uint8_t *buf, int len); /** * qemu_chr_be_update_read_handlers: diff --git a/include/sysemu/replay.h b/include/sysemu/replay.h index 73dee9ccdf..7ec0882b50 100644 --- a/include/sysemu/replay.h +++ b/include/sysemu/replay.h @@ -198,7 +198,7 @@ uint64_t blkreplay_next_id(void); /*! Registers char driver to save it's events */ void replay_register_char_driver(struct Chardev *chr); /*! Saves write to char device event to the log */ -void replay_chr_be_write(struct Chardev *s, uint8_t *buf, int len); +void replay_chr_be_write(struct Chardev *s, const uint8_t *buf, int len); /*! Writes char write return value to the replay log. */ void replay_char_write_event_save(int res, int offset); /*! Reads char write return value from the replay log. */ diff --git a/replay/replay-char.c b/replay/replay-char.c index d2025948cf..a31aded032 100644 --- a/replay/replay-char.c +++ b/replay/replay-char.c @@ -48,7 +48,7 @@ void replay_register_char_driver(Chardev *chr) char_drivers[drivers_count++] =3D chr; } -void replay_chr_be_write(Chardev *s, uint8_t *buf, int len) +void replay_chr_be_write(Chardev *s, const uint8_t *buf, int len) { CharEvent *event =3D g_new0(CharEvent, 1); diff --git a/stubs/replay-tools.c b/stubs/replay-tools.c index f2e72bb225..3e8ca3212d 100644 --- a/stubs/replay-tools.c +++ b/stubs/replay-tools.c @@ -53,7 +53,7 @@ void replay_register_char_driver(struct Chardev *chr) { } -void replay_chr_be_write(struct Chardev *s, uint8_t *buf, int len) +void replay_chr_be_write(struct Chardev *s, const uint8_t *buf, int len) { abort(); } -- 2.34.1 From nobody Tue May 21 07:28:32 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmx.de ARC-Seal: i=1; a=rsa-sha256; t=1662502008; cv=none; d=zohomail.com; s=zohoarc; b=MYUH3xvauCLN6jaaKfCERj6PZlBMSTS0epkQ2fOm55fQ98SQUOzu3PyX6fS9S30hx8HfRhU0IjDac3C/alf+rdPJ4qGdOiTCtp5NMOc3Df3nNqxuGqn0wyc0F2MiroIP0hqfRxuogMNCpXSeTRuamaQxH7i6uBcCJUZxc/axack= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1662502008; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=6kST5jy/mZvdsQyaBm3vGSpCLd8bSqPnQYejESB8SlQ=; b=GAuwI/NfmMcxZCfgjqGAe7xBDnFivOACZsoNQO1HW42vYEq2CX/EZr5dlVlX1ejH3mtgPPCBdFDhLfyKGeNZPRuqNC80VTUuB6A+uS1WO7SRToOmt0nJZDp6/zoU2hqizkjPLy4H7FWymrZ5zHewR0x5MZo7I4gCPqYSQs9pEZg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1662502008720821.6257642205829; Tue, 6 Sep 2022 15:06:48 -0700 (PDT) Received: from localhost ([::1]:40570 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oVgiV-0005IH-JS for importer@patchew.org; Tue, 06 Sep 2022 18:06:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43258) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oVeYb-0004Z3-B6; Tue, 06 Sep 2022 15:48:25 -0400 Received: from mout.gmx.net ([212.227.17.20]:49283) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oVeYZ-000856-CI; Tue, 06 Sep 2022 15:48:25 -0400 Received: from btm-mobil4.fritz.box ([88.72.97.126]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1N79yG-1pRrva3BzY-017XNF; Tue, 06 Sep 2022 21:48:19 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1662493699; bh=+YoYIKdyFLKunPxdaBIY/1hDHzwPMqOoiBiMjWntGtM=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=fhaGYTqlgaXe5FJMNjuVK4+tcOmxOo4vDlpqYLXMnYGddXm0iNp7LnB8U8znOF3Eq 2DhcqkO3TOfx0zIV0/nDacSKdsKIcsCV+K3RbgvEBcqrVosGcyBTNv3mi/pKoom79W C9jVMankfg3QiV8x5UqBQMbOxv/kFs4fwop8C3nk= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c From: Arwed Meyer To: qemu-devel@nongnu.org Cc: qemu-stable@nongnu.org, Arwed Meyer , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Paolo Bonzini Subject: [PATCH 3/4] msmouse: Add pnp data Date: Tue, 6 Sep 2022 21:47:54 +0200 Message-Id: <20220906194755.98090-4-arwed.meyer@gmx.de> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220906194755.98090-1-arwed.meyer@gmx.de> References: <20220906194755.98090-1-arwed.meyer@gmx.de> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:5EJlky3Cq8Ied6qsW9+DPF9tHLy7z+axD3/FRDlpnea9F3Muujy Qqop2c2IUX+KYuywit75Bqf1aJ4s70SW+cn4Ol4tSFcHJx3XKN3xkAoKnuKHhsaWTgZNvlG +pOmeUmyECvnWV26zFMg3Bo9i6jZG13+5XUwRyCxpf4X4bRmo4ucLgabB3XCOocC7uv+q7/ hFDUx+fD/P6jFKnZSBmEQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:1pR2JFxSwLE=:0XNCTL/2wajoVmv8KY/Yh1 WjNyvCd2WEGOPX2dz40gcC7nfS2WF3GThQGPdIJy+Wij1AuK5rXIv58MluA1f4CALiGw0LN4O Wc6ynP8a96xcIHYCSXJ8xr931TGhzR9eR27B47Mq5Eq6UdNn4VzI4asT/O9R/0Ap1sWUXvVV2 tEyKP0JCE/oMmdAtFDcgQcGxxTWrEg1nBZYfrDFRgAd1KGi+bJzE0KcdK3RIVK8V3UqmRnMzK 8hR3WHpGHAQ/vxFM4fae+sKrAikpnAUguKyHosjW/gYbkRsmyuui/b1SrWAhnW1jS26b2t7l3 v7E9osTiOvvUtS6nEDc98Byo3lqvFJ+AlPLMyspNZmiany196FNLHQfFKesFoopYBriwy7pFp PfJomrdBvBockT/BHi1LEli0KNnSnT8hBvXUgkJ35dmeZVCoExeIVTC/Vsa6q8WthFFuB2zOs dspJfJRF4OAHIrLHMYl795bVdDBEv3BhocaLWGgvfCTvDs8dogw7Z2yCXdtbtMAThW2/HepSm aDXN+UyxGoMveZJcoBkiHn/Qb+KqxWz6WEu6iRL86QVHv/mX/adAZUny8IZ8Q/ZdYLrD5Y3ZX Di1HSbxZZsY9qQdoOLU0NbWJ9dRrE9ql1Ad/n4h6usXnJGEYzN20t5ziOpwpDViYY798VtFVl fYWtU2HljHl2tAM47VliBrlBVM4/0F7OnaaZ4dVTMNGHWHGrPBpcTbw8mp6nj/0rP2vNrsLbx 9vSmTcLaolN7apWP4SDIuDBktHTP2K8T8FCNcaW1p+UOKBMlvVvrnyeCxqOlHrCAN1ESCQQQe 5vhdnL35z6HqMCJ69ukMlD1NAx+sdFpi2xjGqNc8dpa/gKmYunTuvDUYQ0W18cZBbRi5bpc/1 mL2X6FxT2QAxJsP2QmR8zqoLMO3m/DE/QvNG31gs8dnijcq8aOgpyGWdsscILhSzpyc8I/L5+ kKXhtlsXW66HPJsR7Dxshhsw0iFG6yaMSc6o1EOWI0mn/uLK/Rhh2zT+9OzeiAsaFJXjvkjLC aXwEa1i2NEJWOEI4JvUnQwlPBdd13BvbQhcEsBUERiHcv0hAMVBn7T4+dDp8kxXg4a42b5oUZ e6Ht0shhh9AmDo7yXzMpO25yTOJRgqZwz3AmoaKysoD3d9pFX2Tdtacq01BGGpZCWAluD11J0 IZH8lAygclPkbxQ9yAbTdfb4oA Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.17.20; envelope-from=arwed.meyer@gmx.de; helo=mout.gmx.net X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Tue, 06 Sep 2022 18:00:42 -0400 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmx.net) X-ZM-MESSAGEID: 1662502010295100001 Content-Type: text/plain; charset="utf-8" Make msmouse send serial pnp data. Enables you to see nice qemu device name in Win9x. Signed-off-by: Arwed Meyer --- chardev/msmouse.c | 101 +++++++++++++++++++++++++++++++--------------- 1 file changed, 68 insertions(+), 33 deletions(-) diff --git a/chardev/msmouse.c b/chardev/msmouse.c index 0ecf26a436..b4ddaee778 100644 --- a/chardev/msmouse.c +++ b/chardev/msmouse.c @@ -24,6 +24,7 @@ #include "qemu/osdep.h" #include "qemu/module.h" +#include "qemu/fifo8.h" #include "chardev/char.h" #include "chardev/char-serial.h" #include "ui/console.h" @@ -34,6 +35,25 @@ #define MSMOUSE_HI2(n) (((n) & 0xc0) >> 6) #define MSMOUSE_PWR(cm) (cm & (CHR_TIOCM_RTS | CHR_TIOCM_DTR)) +/* Serial PnP for 6 bit devices/mice sends all ASCII chars - 0x20 */ +#define M(c) (c - 0x20) +/* Serial fifo size. */ +#define MSMOUSE_BUF_SZ 64 + +/* Mouse ID: Send "M3" cause we behave like a 3 button logitech mouse. */ +const uint8_t mouse_id[] =3D {'M', '3'}; +/* + * PnP start "(", PnP version (1.0), vendor ID, product ID, '\\', + * serial ID (omitted), '\\', MS class name, '\\', driver ID (omitted), '\= \', + * product description, checksum, ")" + * Missing parts are inserted later. + */ +const uint8_t pnp_data[] =3D {M('('), 1, '$', M('Q'), M('M'), M('U'), + M('0'), M('0'), M('0'), M('1'), + M('\\'), M('\\'), + M('M'), M('O'), M('U'), M('S'), M('E'), + M('\\'), M('\\')}; + struct MouseChardev { Chardev parent; @@ -42,8 +62,7 @@ struct MouseChardev { int axis[INPUT_AXIS__MAX]; bool btns[INPUT_BUTTON__MAX]; bool btnc[INPUT_BUTTON__MAX]; - uint8_t outbuf[32]; - int outlen; + Fifo8 outbuf; }; typedef struct MouseChardev MouseChardev; @@ -54,21 +73,15 @@ DECLARE_INSTANCE_CHECKER(MouseChardev, MOUSE_CHARDEV, static void msmouse_chr_accept_input(Chardev *chr) { MouseChardev *mouse =3D MOUSE_CHARDEV(chr); - int len; + uint32_t len_out, len; - len =3D qemu_chr_be_can_write(chr); - if (len > mouse->outlen) { - len =3D mouse->outlen; - } - if (!len) { + len_out =3D qemu_chr_be_can_write(chr); + if (!len_out || fifo8_is_empty(&mouse->outbuf)) { return; } - - qemu_chr_be_write(chr, mouse->outbuf, len); - mouse->outlen -=3D len; - if (mouse->outlen) { - memmove(mouse->outbuf, mouse->outbuf + len, mouse->outlen); - } + len =3D MIN(fifo8_num_used(&mouse->outbuf), len_out); + qemu_chr_be_write(chr, fifo8_pop_buf(&mouse->outbuf, len, &len_out), + len_out); } static void msmouse_queue_event(MouseChardev *mouse) @@ -94,12 +107,11 @@ static void msmouse_queue_event(MouseChardev *mouse) mouse->btnc[INPUT_BUTTON_MIDDLE]) { bytes[3] |=3D (mouse->btns[INPUT_BUTTON_MIDDLE] ? 0x20 : 0x00); mouse->btnc[INPUT_BUTTON_MIDDLE] =3D false; - count =3D 4; + count++; } - if (mouse->outlen <=3D sizeof(mouse->outbuf) - count) { - memcpy(mouse->outbuf + mouse->outlen, bytes, count); - mouse->outlen +=3D count; + if (fifo8_num_free(&mouse->outbuf) >=3D count) { + fifo8_push_all(&mouse->outbuf, bytes, count); } else { /* queue full -> drop event */ } @@ -155,11 +167,22 @@ static int msmouse_chr_write(struct Chardev *s, const= uint8_t *buf, int len) return len; } +static QemuInputHandler msmouse_handler =3D { + .name =3D "QEMU Microsoft Mouse", + .mask =3D INPUT_EVENT_MASK_BTN | INPUT_EVENT_MASK_REL, + .event =3D msmouse_input_event, + .sync =3D msmouse_input_sync, +}; + static int msmouse_ioctl(Chardev *chr, int cmd, void *arg) { MouseChardev *mouse =3D MOUSE_CHARDEV(chr); - int c; + int c, i, j; + uint8_t bytes[MSMOUSE_BUF_SZ / 2]; int *targ =3D (int *)arg; + const uint8_t hexchr[16] =3D {M('0'), M('1'), M('2'), M('3'), M('4'), = M('5'), + M('6'), M('7'), M('8'), M('9'), M('A'), M('B'= ), + M('C'), M('D'), M('E'), M('F')}; switch (cmd) { case CHR_IOCTL_SERIAL_SET_TIOCM: @@ -168,13 +191,30 @@ static int msmouse_ioctl(Chardev *chr, int cmd, void = *arg) if (MSMOUSE_PWR(mouse->tiocm)) { if (!MSMOUSE_PWR(c)) { /* - * Power on after reset: send "M3" - * cause we behave like a 3 button logitech - * mouse. + * Power on after reset: Send ID and PnP data + * No need to check fifo space as it is empty at this poin= t. + */ + fifo8_push_all(&mouse->outbuf, mouse_id, sizeof(mouse_id)); + /* Add PnP data: */ + fifo8_push_all(&mouse->outbuf, pnp_data, sizeof(pnp_data)); + /* + * Add device description from qemu handler name. + * Make sure this all fits into the queue beforehand! */ - mouse->outbuf[0] =3D 'M'; - mouse->outbuf[1] =3D '3'; - mouse->outlen =3D 2; + c =3D M(')'); + for (i =3D 0; msmouse_handler.name[i]; i++) { + bytes[i] =3D M(msmouse_handler.name[i]); + c +=3D bytes[i]; + } + /* Calc more of checksum */ + for (j =3D 0; j < sizeof(pnp_data); j++) { + c +=3D pnp_data[j]; + } + c &=3D 0xff; + bytes[i++] =3D hexchr[c >> 4]; + bytes[i++] =3D hexchr[c & 0x0f]; + bytes[i++] =3D M(')'); + fifo8_push_all(&mouse->outbuf, bytes, i); /* Start sending data to serial. */ msmouse_chr_accept_input(chr); } @@ -184,7 +224,7 @@ static int msmouse_ioctl(Chardev *chr, int cmd, void *a= rg) * Reset mouse buffers on power down. * Mouse won't send anything without power. */ - mouse->outlen =3D 0; + fifo8_reset(&mouse->outbuf); memset(mouse->axis, 0, sizeof(mouse->axis)); for (c =3D INPUT_BUTTON__MAX - 1; c >=3D 0; c--) { mouse->btns[c] =3D false; @@ -206,15 +246,9 @@ static void char_msmouse_finalize(Object *obj) MouseChardev *mouse =3D MOUSE_CHARDEV(obj); qemu_input_handler_unregister(mouse->hs); + fifo8_destroy(&mouse->outbuf); } -static QemuInputHandler msmouse_handler =3D { - .name =3D "QEMU Microsoft Mouse", - .mask =3D INPUT_EVENT_MASK_BTN | INPUT_EVENT_MASK_REL, - .event =3D msmouse_input_event, - .sync =3D msmouse_input_sync, -}; - static void msmouse_chr_open(Chardev *chr, ChardevBackend *backend, bool *be_opened, @@ -226,6 +260,7 @@ static void msmouse_chr_open(Chardev *chr, mouse->hs =3D qemu_input_handler_register((DeviceState *)mouse, &msmouse_handler); mouse->tiocm =3D 0; + fifo8_create(&mouse->outbuf, MSMOUSE_BUF_SZ); } static void char_msmouse_class_init(ObjectClass *oc, void *data) -- 2.34.1 From nobody Tue May 21 07:28:32 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmx.de ARC-Seal: i=1; a=rsa-sha256; t=1662501873; cv=none; d=zohomail.com; s=zohoarc; b=k/E59Ou8R3I9rrlR4X8U5ImREhT5LbZuU9SQ1yc3FA/txLH5zL6fhbD1HUXncVEh+jH2jrC6yaSjD6/1aBoSulIC+pdart6elrx52sfOIrN9/edCvjP40esiM0mtnbIcbFQpqXKaxzbzjlR7oDfq7moHj2LcvmPW2zDZhKVSuLc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1662501873; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=olegijg/zzmn/qwcpcwSdoRjn/mieoR+9bXcKiUMyYg=; b=kSsJDaQkIIHzyJBACg9ApaTYfny0jXAmSbnd0d1SrL3yDKIwhuzEchTA/PO1zHVq0f7PraiZWb/13tVWY1+2Gu84FbuV6qDY8K14CKQUrjTg1s+3emZY8n4LL7CUWQIFLKmbh/rJUWK9tgdIGrFcgzEB3b4UbZrwXxM2A2IRj10= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1662501873105417.9222819086257; Tue, 6 Sep 2022 15:04:33 -0700 (PDT) Received: from localhost ([::1]:42436 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oVggH-0001L0-GN for importer@patchew.org; Tue, 06 Sep 2022 18:04:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43260) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oVeYb-0004Z6-Nt; Tue, 06 Sep 2022 15:48:25 -0400 Received: from mout.gmx.net ([212.227.17.22]:45077) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oVeYZ-00085K-Q0; Tue, 06 Sep 2022 15:48:25 -0400 Received: from btm-mobil4.fritz.box ([88.72.97.126]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MIx3C-1ooyvR2imA-00KRQp; Tue, 06 Sep 2022 21:48:19 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1662493700; bh=6tNsnvyALQCekAEnGgE4v3vfbs9lSzguI1+wfNRfGJU=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=TeFsH9zhZLMiVvcpx6gbmaR3jCP1tE0d5jg0QsIG2GgJF0QfUY5R1Vv+od3355xZL kb2dB93CACWuA2ihEVKWAaLaXOL0epAeoFJz4CXFU/J/tLuIQI0XehfbmbsTmkJ27A qXjPr0dlaghed7BM+4zlYCI2UNnhY2ROlDpcWWEk= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c From: Arwed Meyer To: qemu-devel@nongnu.org Cc: qemu-stable@nongnu.org, Arwed Meyer , "Michael S. Tsirkin" , Paolo Bonzini , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PATCH 4/4] serial: Allow unaligned i/o access Date: Tue, 6 Sep 2022 21:47:55 +0200 Message-Id: <20220906194755.98090-5-arwed.meyer@gmx.de> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220906194755.98090-1-arwed.meyer@gmx.de> References: <20220906194755.98090-1-arwed.meyer@gmx.de> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:bhf11o5juHcWQpPFVfbhgOQ2JaWDQIXkcJsU+LqdpO0kz2f+xAr RbdzozikyQwu4Ax+HNsyvWTrohWQqsZOVw5q/PjHisNCm07uJUda+2DDacsvBxKDePGULhJ 11s68ZpKvBYfL1mTTLlRWXH3jsx8fRNXrdporIoQi9nqYEW6F099HTKhGg166ZZW4X9Ezte DItlCMecSIfClC86253MA== X-UI-Out-Filterresults: notjunk:1;V03:K0:yqGueSSEACE=:7/egKm+A/ZNwCgDv4Q19mz Aj7dnflVj/NtTUK4Y6vVPBp/MmPN3Pzf32RtYaqDhWt84VvIezhImsN9dRmlvZLD/9du66ktW y0tvDJ8xPLmT9Bow65bYCjEWv7+s+3Rnl9+rrNOS5Qcea9lKg/L+Tpf9pR5FbtcDYFYb5NoHY WsJSAHSKtvcsqcyqFv+0qPjrA62XOupK78k3TpeOUpSIfoJqU67VJv7AvTZ24gJTPhxqDQG6t S8E7OtQvGzR2Q2hzY0SNDSmLq25O6uAqx6ED9H2UYetEAQGR5HVjOcqvh3qkCfecHxVVHX9aI Zv/T74ChHz3lnyVC/l74fumPlpDuT89lcx+jIMw0ba1DPr00Nph5lXPSZMllybsO1I8YvjcWw hHVMcxZKisjsM22GQ14c7qTwnfHg8U2+k/ipZzrakBQysZL4E61MjqUt4jHLYlx8WA05yIWkP mKlEljHCN0UsoZTaVD4ji/DpkMk+G0+nkiQ0H/1jENYNoXStyCQiF+rb7C3EEeXAFf6hxnAit asV2SoMpnn1TCsScjHH3Iv+XY81tknvrDXSmBk+qYvLAd2MTEKYl8/wcxKSTBfuTcrCXlJvox EUCYNcZAlB+qQxQBuuMUC013bEWb+Pz6ZChbxYPU66a6hj6VfKCv7Zihiam9RI27IwJ3fwisy GmwHM+eeR485q3pS+oZEN1L7Q5D75bJuTaezTB+1+NLhj7C5rgOktjOr1oMMkUm1hoxyMJJUi lbXfgLEtMwJA3UOD9VwDAsnf6nZj84brWMwOjUpcG9dB1NxSJU8HcHuYERZcaAPqayeis+9Mm kNjbEXWPh5JH++Bbqba320QHE5XxuEG3H77b7dLYpqe8rai1LIksxjMz4+WDQGJ6XEPSpLxkH 2BITL8aoD7lx2CKfA/iK2eqKlJ2S5dHv19pkMC3Cxn09WAge8t74kVJR0ZpVJLxZoM/6B41Qa 9vqsLJnEXgwWQyshIkA1vuOTpLhyqMaO4KO5MSH8Uw90AjQpvu68hSXDkQP0bwSJwUro0ix1k wlN7J4gIJdxY84o4W5nx94Dq30h3hgBfWOwDq0QolvHqqKAf1Mnk+p26Tx/wZNtR21iWH670i CI7qvTMd47ONgMWa4d8b1sktmKZ99NqUCc4s1Ivma6tuyOKgaTrmkk82QXNf2SWPaqalvi/1L Raea5FWYqX/pGAF1Z35pX3uGoD Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.17.22; envelope-from=arwed.meyer@gmx.de; helo=mout.gmx.net X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Tue, 06 Sep 2022 18:00:42 -0400 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmx.net) X-ZM-MESSAGEID: 1662501874741100003 Content-Type: text/plain; charset="utf-8" Unaligned i/o access on serial UART works on real PCs. This is used for example by FreeDOS CTMouse driver. Without this it can't reset and detect serial mice. Resolves: https://gitlab.com/qemu-project/qemu/-/issues/77 Signed-off-by: Arwed Meyer --- hw/char/serial.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hw/char/serial.c b/hw/char/serial.c index 7061aacbce..41b5e61977 100644 --- a/hw/char/serial.c +++ b/hw/char/serial.c @@ -961,6 +961,9 @@ void serial_set_frequency(SerialState *s, uint32_t freq= uency) const MemoryRegionOps serial_io_ops =3D { .read =3D serial_ioport_read, .write =3D serial_ioport_write, + .valid =3D { + .unaligned =3D 1, + }, .impl =3D { .min_access_size =3D 1, .max_access_size =3D 1, -- 2.34.1