From nobody Sun Dec 24 02:38:06 2023 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4SyQFB6LPYz53ch7; Sun, 24 Dec 2023 02:38:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4SyQFB5qN1z3YHc; Sun, 24 Dec 2023 02:38:06 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1703385486; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=HJavWXc0UdOnlgu+tUmNNo7+iJv9RmbB7KquckfV0iE=; b=wupQBaiFDHbgtd+YsYjhCHl05zwX1VN5HpkcSm5z59GcH6sBeQZpc9fLo2ApEgv8wxB2M+ Gh0xRWzck587+M57o9cdDKrQT/NfC5//iWOdleJxTZS4xyYk21+3kSqeFjXSDwODbN1HDy vOrpMiuizPI1I0GL3WmL8/tb/rpuya9GiRKPZUmVZ1rNMshbPjFl8yEkSjNDKHf3ZYmAGm OekPfpC7/wqdI9zwtn66TO/GN/qpSNnXuoEZIw4GhbimWNJqL1bzIHmMsBrDC2CucKZq0J RORKa7Cy2X55MGbCKxKqipUIvbAwFSW7Noac/G0sjVENeb6+meaFFlemKYpyjg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1703385486; a=rsa-sha256; cv=none; b=Wk4fUD4slnX87kOGrjJWgnIRW4GZ/227/q3lMFMWkOrMxWcaeLq7rIvzL6QEtB+JBCVcqq dP861lEDL2qLja3TXzd7N3Ay9U2nrQuOGsE8DtJJ7JrWSse1FsT4QduVniTzm+nYahPbBK A6PIw+526EPBWDExnE6tuKBDaSYGGWuYDPMHowDbNatueVoMTOdQynXZnljdNBa4UmOf4P UcVZNnc9cM6aQSXpcJJBGi+qjCX9Uj0dqR9NItOGu9XxMxt2xcUhgz+eOpkVGSSB2qqLRI MwdmU4qk6MdqqF91WV4FqHJAsBUhFAihRpeGMDDVh4JoXo6Bjd9b7RQDVhA+EQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1703385486; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=HJavWXc0UdOnlgu+tUmNNo7+iJv9RmbB7KquckfV0iE=; b=PeNML2SSCrTIfU53e1B3YijybQK5Dns3wyZ17IQIl4CcpDTaKoRfsNPJSSDow7GenN7kMJ Hfbp/fysN8/+ZogGwmEtPlZpSV6On4snOHEP2zHXnUAyP7pxm+eWijFh74pky17wNuT3be 3ubhrmSUh7WD5YS1LO6WadMIzQZ/kQ6LQbCSZoSl1mPVhcoVvsSq7TNOedK3ahZk79H24K 7uyJ/kW/we5Q5+IL39tNR8S/SLCd6O1Upl7+KQjPevRfY7tqajRHJIxuc5gLZrCzd9DPo1 nmnmJ/wk0CuxK6WlkgeJr6XPDV006Zc897UBHO7tmIEn7/xPsUo+p5aIZbCvQA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4SyQFB4SBgz1PBs; Sun, 24 Dec 2023 02:38:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 3BO2c6Ul000407; Sun, 24 Dec 2023 02:38:06 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 3BO2c6a5000404; Sun, 24 Dec 2023 02:38:06 GMT (envelope-from git) Date: Sun, 24 Dec 2023 02:38:06 GMT Message-Id: <202312240238.3BO2c6a5000404@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Alexander Motin Subject: git: 1a3ee6002f3e - main - acpi_lid: Remove duplicate events List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 1a3ee6002f3e008e0bc29d04c976285434503e19 Auto-Submitted: auto-generated The branch main has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=1a3ee6002f3e008e0bc29d04c976285434503e19 commit 1a3ee6002f3e008e0bc29d04c976285434503e19 Author: Alexander Motin AuthorDate: 2023-12-24 02:33:51 +0000 Commit: Alexander Motin CommitDate: 2023-12-24 02:33:51 +0000 acpi_lid: Remove duplicate events Remove extra acpi_UserNotify() call per event. Filter duplicate notifications received from ACPI without actual status change. Without this on my Dell XPS 13 9310 I saw 4 devd events for either open or close, now only one. MFC after: 1 month --- sys/dev/acpica/acpi_lid.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/sys/dev/acpica/acpi_lid.c b/sys/dev/acpica/acpi_lid.c index 44730879c31e..142791f7282a 100644 --- a/sys/dev/acpica/acpi_lid.c +++ b/sys/dev/acpica/acpi_lid.c @@ -91,7 +91,7 @@ static driver_t acpi_lid_driver = { DRIVER_MODULE(acpi_lid, acpi, acpi_lid_driver, 0, 0); MODULE_DEPEND(acpi_lid, acpi, 1, 1, 1); -static void +static int acpi_lid_status_update(struct acpi_lid_softc *sc) { ACPI_STATUS status; @@ -107,9 +107,12 @@ acpi_lid_status_update(struct acpi_lid_softc *sc) status = acpi_GetInteger(sc->lid_handle, "_LID", &lid_status); if (ACPI_FAILURE(status)) lid_status = 1; /* assume lid is opened */ + else + lid_status = (lid_status != 0); /* range check value */ - /* range check value */ - sc->lid_status = lid_status ? 1 : 0; + if (sc->lid_status == lid_status) + return (EALREADY); + sc->lid_status = lid_status; /* Send notification via devd */ acpi_UserNotify("Lid", sc->lid_handle, sc->lid_status); @@ -119,6 +122,7 @@ acpi_lid_status_update(struct acpi_lid_softc *sc) evdev_push_sw(sc->lid_evdev, SW_LID, lid_status ? 0 : 1); evdev_sync(sc->lid_evdev); #endif + return (0); } static int @@ -146,6 +150,7 @@ acpi_lid_attach(device_t dev) sc = device_get_softc(dev); sc->lid_dev = dev; acpi_lid_handle = sc->lid_handle = acpi_get_handle(dev); + sc->lid_status = -1; #ifdef EVDEV_SUPPORT /* Register evdev device before initial status update */ @@ -219,7 +224,8 @@ acpi_lid_notify_status_changed(void *arg) ACPI_SERIAL_BEGIN(lid); /* Update lid status, if any */ - acpi_lid_status_update(sc); + if (acpi_lid_status_update(sc) != 0) + goto out; acpi_sc = acpi_device_get_parent_softc(sc->lid_dev); if (acpi_sc == NULL) @@ -228,8 +234,6 @@ acpi_lid_notify_status_changed(void *arg) ACPI_VPRINT(sc->lid_dev, acpi_sc, "Lid %s\n", sc->lid_status ? "opened" : "closed"); - acpi_UserNotify("Lid", sc->lid_handle, sc->lid_status); - if (sc->lid_status == 0) EVENTHANDLER_INVOKE(acpi_sleep_event, acpi_sc->acpi_lid_switch_sx); else