Received: by 2002:a05:6a10:2726:0:0:0:0 with SMTP id ib38csp2237774pxb; Wed, 30 Mar 2022 20:18:33 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyAO+QzvgfCDt7+imYcFTT/YNn9qwVxY3MRUycqrq1OVKXqhoHGt6c0wxdEV8DSRyLjNHIj X-Received: by 2002:a05:6a00:2448:b0:4f7:a138:29c7 with SMTP id d8-20020a056a00244800b004f7a13829c7mr36649545pfj.32.1648696712788; Wed, 30 Mar 2022 20:18:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1648696712; cv=none; d=google.com; s=arc-20160816; b=YyRniTRIZ8axdHDhAFW8lZnvbLhxLPR790w44aBNgAhr/m6YKcBCHzQ0C4uSp19Exf 4FAs4tOnhY47YzegDVOymsSf32y4gPSccABIb7Ey9iSrLlRZ2Iiq+VtxsEUmZP6qBYWi Gy0u7h2/encx4ggOeczIuqRZTfCy4iT5upjXgsG0X4DFx8YvRVP3o3mrP/7zAH4ex9ps DaYl14nWzRDPMHkslH66r9SecLDJHO0JFO+kxnE9oX0FJSKmgqMDYbBHgt1gvQiLAs1O NS8bKZGkgq0wRNdHk2vI636+ItdRdJ0wFGnN/olp6XiSAf/J0KUvtscDffjZROWYagPs +UZQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=R8ZlO0VauIu1u6RvxqV5Szsexi27VynyC33g+KbYM1A=; b=CMZmUP4pWMHBAMiMKjoohda0FDNS7OdmlvMOSW/c7hkqAgfu+ZWPZlewaO/93DUna7 W30zCAfrf3tAN7CqwzeNnRez4f+pAQASbvBdHcRwrwGDwO81PsO40fNlHG0U+nZKrkIG yG+8b7jWJOR9FKsGA1yRqnIEBArTF5QiirTvyiUke/LRA8mdQ64B8bdcMt5cxFYS0Mex C4pOtIhVZvqwHpWtiJIUWmWxitUUTaLvhBKdFSy7ncC9KxH6Ku69e5uQfyl88+rocoxr NZJZzNMa/hXKZR1schZak95yNybAeuNds6hJuZVMppZhlFyhyYEoc1LNqBp8ct5dZNzV 40vA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id h8-20020a170902b94800b001549a184a7dsi22143911pls.513.2022.03.30.20.18.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Mar 2022 20:18:32 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 2B69B105A87; Wed, 30 Mar 2022 19:50:37 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1352434AbiCaCCP (ORCPT + 99 others); Wed, 30 Mar 2022 22:02:15 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57086 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232001AbiCaCCK (ORCPT ); Wed, 30 Mar 2022 22:02:10 -0400 Received: from nksmu.kylinos.cn (mailgw.kylinos.cn [123.150.8.42]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DD12E59A54; Wed, 30 Mar 2022 19:00:22 -0700 (PDT) X-UUID: ee198aa9a1fa471997daaec4c548884a-20220331 X-UUID: ee198aa9a1fa471997daaec4c548884a-20220331 Received: from cs2c.com.cn [(172.17.111.24)] by nksmu.kylinos.cn (envelope-from ) (Generic MTA) with ESMTP id 1578035730; Thu, 31 Mar 2022 09:59:24 +0800 X-ns-mid: postfix-62450B31-852272900 Received: from localhost.localdomain (unknown [172.20.12.156]) by cs2c.com.cn (NSMail) with ESMTPA id AAEC6383C640; Thu, 31 Mar 2022 02:00:17 +0000 (UTC) From: Zongmin Zhou To: linux-graphics-maintainer@vmware.com, pv-drivers@vmware.com, dmitry.torokhov@gmail.com Cc: linux-input@vger.kernel.org, linux-kernel@vger.kernel.org, zhouzongmin@kylinos.cn Subject: [RESEND PATCH] input/vmmouse: Add vmmouse_reset() function to disable vmmouse before entering suspend mode Date: Thu, 31 Mar 2022 09:59:55 +0800 Message-Id: <20220331015955.1066872-1-zhouzongmin@kylinos.cn> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220322021046.1087954-1-zhouzongmin@kylinos.cn> References: <20220322021046.1087954-1-zhouzongmin@kylinos.cn> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RDNS_NONE, SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE,UNPARSEABLE_RELAY autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Details: When I use VirtualPS/2 VMMouse on virtual machine, There will be an error message after resume from suspend mode. like below: vmmouse: Unable to re-enable mouse when reconnecting, err: -6 And vmmouse will be unusable,so have to do full rescan to find a another driver to use for the port. This error is due to QEMU still generate PS2 events to notify kernel driver to read from queue, but kernel can't process the data in suspend mode, resulting a surge of s->nb_queue value, which ultimately led to an error getting VMMOUSE_VERSION_ID after resume. Test scenario: 1)virtual machine started with qemu command "vmport=on", it will use VirtualPS/2 VMMouse. 2)click suspend botton to enter suspend mode. 3)resume and will get the error message from dmesg. Fixed by: Disabling the vmmouse in its reset handler, It will notify qemu to stop vmmouse and remove handler. Signed-off-by: Zongmin Zhou --- drivers/input/mouse/vmmouse.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/drivers/input/mouse/vmmouse.c b/drivers/input/mouse/vmmouse.c index 42443ffba7c4..ea9eff7c8099 100644 --- a/drivers/input/mouse/vmmouse.c +++ b/drivers/input/mouse/vmmouse.c @@ -365,6 +365,19 @@ int vmmouse_detect(struct psmouse *psmouse, bool set_properties) return 0; } +/** + * vmmouse_reset - Disable vmmouse and reset + * + * @psmouse: Pointer to the psmouse struct + * + * Tries to disable vmmouse mode before enter suspend. + */ +static void vmmouse_reset(struct psmouse *psmouse) +{ + vmmouse_disable(psmouse); + psmouse_reset(psmouse); +} + /** * vmmouse_disconnect - Take down vmmouse driver * @@ -472,6 +485,7 @@ int vmmouse_init(struct psmouse *psmouse) psmouse->protocol_handler = vmmouse_process_byte; psmouse->disconnect = vmmouse_disconnect; psmouse->reconnect = vmmouse_reconnect; + psmouse->cleanup = vmmouse_reset; return 0; -- 2.25.1