From nobody Fri Sep 25 17:49:18 2026 Received: from mail-qt1-f172.google.com (mail-qt1-f172.google.com [209.85.160.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 47F8748EC69 for ; Wed, 9 Sep 2026 22:51:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788994328; cv=none; b=gB2A5r9EF883NcuQ5m7XJY/W0lTYGCIjqbdIEpIerL+UXKwZEgHKnjycujTcR3kig8ySDlauPhCE1C6tIAauXs8QYlMS13aXthcYZ+2P9jSNP7NgP/ay+C6E8+2dQKierFgDCvrMggntf1Dk48rYq9WBZlq7dwoVsc+QOXczkHQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788994328; c=relaxed/simple; bh=w61WNGoIZA/H9B+0UvBqxIy2Jaep+YUPmNtGA17Z5/s=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=CpZEWdVpcjc7KIpcibRC5XTsz5OKrVRESuWRspvHc79NltIdvTFITwvgsq9VRj0Y/3fW9dhdYkxc+JHF8vgV/8MXi0gB80T9ZqAaL959Y1GQCt8Mnn6QM0aLNJ2K10HSylNcPA6MB+RvnkyXUARI/BQ4G5DMRGGcsSkhaOsYD5U= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=gourry.net; spf=pass smtp.mailfrom=gourry.net; dkim=pass (2048-bit key) header.d=gourry.net header.i=@gourry.net header.b=MeBpc7kw; arc=none smtp.client-ip=209.85.160.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=gourry.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gourry.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gourry.net header.i=@gourry.net header.b="MeBpc7kw" Received: by mail-qt1-f172.google.com with SMTP id d75a77b69052e-53091987029so33801361cf.3 for ; Wed, 09 Sep 2026 15:51:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gourry.net; s=google; t=1788994311; x=1789599111; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=v83isyAjdugdAGxxYVFRPX3ygevFsOMhNoKrO0tFt3Q=; b=MeBpc7kwl8MqLB5z6n5iVHzQx1veQ4IM9toLUmhGA9TK0cfX3xwiLG1duwcROB5WWV 3t8SJ1UpJGFjz0VXzPg6jTVGK1wTgmj+j4POwyViHI4ijP2CcjiAtIP7SorPKiZ0mCDc 6BET0Oc74wQmklv7fW3R53fsvaveV+uTIKhv8oVG6vD/2+vJBWtn9sOCfFbqcR6ts3de P//tvGElRAsCY/BjUMQ0hU0RH9M5EO0CMWccNDF6r4pj9gaNBMPec1sGRSe94TWO03IJ +U9OLQCSDRovEQ10YsM31o0Y7NNJ+/60enrsA/x2UIeDAkJ/1b56aIuKG1aDF9ta43TD x0jw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788994311; x=1789599111; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=v83isyAjdugdAGxxYVFRPX3ygevFsOMhNoKrO0tFt3Q=; b=Bbq2TFpXlTzRUsvBOlUC05TjkEUSgFIs0Jx/74ifVf3HNyTkDdFBbKbnzY1KtWcQEy 7lfBo6Ci/T2rCNs8BOUB4DzMTV3uzJvxWR9Fhw4kXhUIhMTuLGYllcQneGcCKTvkFmZc SK94ig0dGE5BI5iWStJBxZf8U5rFWWn8GNdFyZfcS+QpNwWEbRoGv+tKY/e/4HmyID3k Nmd5eGgMnThXBcoYLdMgNwDBqQOl1nnl2gaj7bxmN/Dp8qGjyTAOjBz3fWBfEhbtIxgh 4cR9a3Yij0zhCGBbHN/ynrv5badJbAB2UQlBmqtbmTtF1OFlvpL5XIZhYEnnLQufVL8g 92ZQ== X-Gm-Message-State: AFuF++lHo2RFSQuwzhpkCdBKOwUpRJUNYzdhSm1RcOMyP6Z6qED2+sQ5 r5pRiclGRj8JBtNxHVpXIxLMS3rlaqMlhudq6JbeE0zEv5k+NsMvbWczgeicBnL5Z9o= X-Gm-Gg: AYBFou0YwIi7O0LSOeb7dzp03eE2uwvX167eULGz1ocSM+PYRmLhK4JrDaC+4RJZcv5 gKgyjgvsKU6aPnELP6pt29WvK6Gsn1plBQqYZsGtLZHb+4RDXmhCMgrPZ3U2lgDFKQM5vn+78fn D6Sc6zmkcEu+M657ju5WsYY1TpSsV+2HiceNmQCHoDoTZTBODFE77pJjdbpaxHeARmuI/SqzUiA Ix1ERfx5UZz6P3WTO1+Xo4CuciBsfSmo4OlUBtK5dx/l63l0DXt2iQOjdl8uxpBNrYikizH1v/Q PK5mp68/iOhrFPWPAuuNiZT9tmPTCGZhv5JKNwLviIFSu6xz7qdAGmvw/gexQuAtd8AF2cX+Ia5 xQPLZmDhwLhRRnyKRGnz6VFSvlr+D2WXQLgkxYlxsdiC3coR8N8+1S8XEY1Af/fy9RiLiyglHkz cnDvsfcsaqO6y0hjm7TLYZEJxKsE+v8aaOln6g6BgqVFK2wvo2dXb3Q35WN6dy44jnwfamsDQ2E iPRPXFiXC8LTsPxz5llRKsMvBPjGuvM3AeV4iA2LlnjyV606drZ4ds2YD4+ X-Received: by 2002:a05:622a:90a:b0:52e:1e5:4754 with SMTP id d75a77b69052e-53054944d66mr394518201cf.24.1788994311148; Wed, 09 Sep 2026 15:51:51 -0700 (PDT) Received: from gourry-fedora-PF4VCD3F.lan (pool-173-79-60-52.washdc.fios.verizon.net. [173.79.60.52]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-9106412e038sm59976696d6.20.2026.09.09.15.51.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 09 Sep 2026 15:51:49 -0700 (PDT) From: Gregory Price To: linux-rtc@vger.kernel.org Cc: linux-kernel@vger.kernel.org, kernel-team@meta.com, alexandre.belloni@bootlin.com, rui.zhang@intel.com, stable@vger.kernel.org, "Gregory Price (Meta)" Subject: [PATCH 1/2] rtc: cmos: Disable ACPI RTC event before handling it Date: Wed, 9 Sep 2026 18:51:31 -0400 Message-ID: <20260909225132.1392883-2-gourry@gourry.net> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260909225132.1392883-1-gourry@gourry.net> References: <20260909225132.1392883-1-gourry@gourry.net> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Users of RTC_UIE_ON can stop receiving update interrupts when rtc-cmos handles alarms through ACPI. In one 50-run test, 40 runs passed and 10 timed out after receiving between one and four of five expected events. The ACPI ff_rt_clk counter stopped at 218, exactly matching the number of events delivered to userspace, and reported: 218 STS disabled unmasked rtc_handler() runs in the threaded ACPI SCI handler and calls cmos_interrupt(), which schedules rtc->irqwork. The work can run before rtc_handler() returns: ACPI SCI thread rtc->irqwork cmos_interrupt() schedule_work() __rtc_set_alarm() rtc_wake_on() acpi_clear_event() acpi_disable_event() The SCI thread then disables the event that the worker enabled for the next alarm. That alarm sets its status while delivery remains disabled, so no update interrupt reaches userspace. Clear and disable the current ACPI RTC event before cmos_interrupt() schedules the work. The worker can then enable the next event without the handler undoing it. With this ordering, 150 runs delivered all 750 events without a stall. Fixes: 311ee9c151ad ("rtc: cmos: allow using ACPI for RTC alarm instead of = HPET") Cc: stable@vger.kernel.org Assisted-by: LLM Signed-off-by: Gregory Price (Meta) --- drivers/rtc/rtc-cmos.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/rtc/rtc-cmos.c b/drivers/rtc/rtc-cmos.c index f89ab58f5048a..462799667aa18 100644 --- a/drivers/rtc/rtc-cmos.c +++ b/drivers/rtc/rtc-cmos.c @@ -758,7 +758,9 @@ static u32 rtc_handler(void *context) unsigned char rtc_intr; unsigned long flags; =20 - + /* Quiesce this event before rtc->irqwork can arm the next one. */ + acpi_clear_event(ACPI_EVENT_RTC); + acpi_disable_event(ACPI_EVENT_RTC, 0); /* * Always update rtc irq when ACPI is used as RTC Alarm. * Or else, ACPI SCI is enabled during suspend/resume only, @@ -781,8 +783,6 @@ static u32 rtc_handler(void *context) } =20 pm_wakeup_hard_event(dev); - acpi_clear_event(ACPI_EVENT_RTC); - acpi_disable_event(ACPI_EVENT_RTC, 0); return ACPI_INTERRUPT_HANDLED; } =20 --=20 2.53.0-Meta From nobody Fri Sep 25 17:49:18 2026 Received: from mail-qv1-f47.google.com (mail-qv1-f47.google.com [209.85.219.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 59DBB4AF9EC for ; Wed, 9 Sep 2026 22:51:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788994324; cv=none; b=aJAZ5185d18DCS/bFZXuAcIgdqe/He9G18f1971HUmJFBX1fNoIocem5p4ZB1EMFvwdJVM5SYzRzlUUAsIY0gXCYymxau5pnDfFK7WfveGjOfox9ccGfs5hm+JgMunFrN+ebZeE5MNB3HaRSvh+45wP4vfKKp1e7ABlGBwe1uZk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788994324; c=relaxed/simple; bh=aZ9zAg2uTuv7/FU+ETarYrAHc8sT3sPRPWW8umE51eE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=diH8vTZtoQqKnLT5AtchZ6gO93+DWzY3XuR3czroLZlp/pQZ/8ZNCa6QvENwjQQ2qYCV8v1x6AfqXJX+f1BL+1G7K/wHa+Kg9ctUQmQASA3/bP7bClMKj3tOAtdYy6B7NA2HP7akojMWSj4MRolWG73bhjpvEb1mfiyy7OyHlbY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=gourry.net; spf=pass smtp.mailfrom=gourry.net; dkim=pass (2048-bit key) header.d=gourry.net header.i=@gourry.net header.b=uqy8A0Db; arc=none smtp.client-ip=209.85.219.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=gourry.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gourry.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gourry.net header.i=@gourry.net header.b="uqy8A0Db" Received: by mail-qv1-f47.google.com with SMTP id 6a1803df08f44-90ccbed6edcso93190696d6.0 for ; Wed, 09 Sep 2026 15:51:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gourry.net; s=google; t=1788994314; x=1789599114; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=l2wLUzaidHv+rgjS9Vme7RZj9pjhzoFdoBFIa4TcM6o=; b=uqy8A0DbftwZBrWJiYGzrATABjjiIKlS6aSJD9aiT6NbesX+TXF8ZujUA8vpxNqPio kMyg7Yr1NjXJNAIgYl+6aq0Zz0GtX28fdYt0hTpNnBekb7scQyXYMdrfEmWUd5nmbSpt 9kO2oR1F+L9522L+zOMwWrVBM4QFbYehSXuLXGPu5gZhlCzUwjzrIj69j66hhvtHXAF9 a+JZtcCPv639D6YMDqwjAK556wd+/f0l0nR//J8Q/QeLJrxnFj8urFuGRqJaZQoVW2T7 B5J5Ra3RcIgcbAGoJwZ6UoyJU+H5cbFDIllh8JGhU/bPjf3JWqwoVVl3P6A3bGNydXRT VM5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788994314; x=1789599114; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=l2wLUzaidHv+rgjS9Vme7RZj9pjhzoFdoBFIa4TcM6o=; b=rb1ozCI1eR1bmYa73hnYcpAQrqWovPLYj3Li92LVFIivpyqj8zRCzuLjdgo7hDeokW cPNo+FJjI/5w/k9FyZZBjXEqfkE1uTq6C0SjkET8kBeLs26AUBGIOhsG5ODZqVUAaNFv 20lND/8GMvohPPleyzN/6AlhCPxgBd9gCGE70Nmy4gOHGu7jZJIkpCAapJj+3Gxk7ZIe NH7bCsoOsV1LvvfYUFp9xx/wBWMRmvFU0cEoYp/P9udbP2p9Rby/wJQWAailgtpUcEn4 zEpp/6KTsVjYn7a1VECRUqrBeYzWM8Q+q7nyVUnnUlEzNKoS5Z1YhkzH+vLEIQhDiDFZ iW5A== X-Gm-Message-State: AFuF++nXahyHC4OYpKDKSUkljJBre6Zel5irkYD3YtFwXymFUtrUoklR Yt0aUsOzn6hzBDC+FGMPdUkVt2M5vM2oMOCz3KdJY2mpeddx3zH0lFbUneReMZtz0Pg= X-Gm-Gg: AYBFou3otcjC0FCyp/fhMpN/EEllE8IsUetHISkM7WfBwchM9215yNWr6+kVtY8H13f QwI6acwHT0VrvZsmLsYw7MIUvjEz85wLx6Uv5cKmeicw3Uc/gR7yB6npTuDkYBrlHFtDZZDQ7ph 57ejmaoKkUsAsFze5MvNrPIl/t0ie30IlN/oMKMYwkecVsM02ykAKecHZjj3VQxm4ERmSC3sObs MFwQE/7oEAbWUWa7xBhu0CAm0TmGeUnsDWKC6tT6lJ4S8eXl3500E1/NJZdaT+5VOmAdb3xZgMP wPU9/+3srFoFECvNadmCLf9k9k0lDwCsvDLWa654LggXtBfU2uE2PYQ5qd0/RKhSF2CLtGEWcHo nHe1q9nlo2w2rfcNaqHJ11tbqBICQwtpv/TFhDGYuIVH3LG820nUuKOp4e29N5CZrEUBDF207ht ZJSjyUsH6XKE0YJh8cYQVZTd0XhhGntVjOz7GOfyZAVYVBtIuceA/0fGQ3GHwKJlUIx3hOgZmef jCCUCSzvygVP/FyKpCww0A5Hpze34kqsEH8l4a09UciACYT3INapk8UfJUr X-Received: by 2002:a05:6214:daa:b0:910:4b24:a936 with SMTP id 6a1803df08f44-9104b24aa14mr352805826d6.6.1788994313808; Wed, 09 Sep 2026 15:51:53 -0700 (PDT) Received: from gourry-fedora-PF4VCD3F.lan (pool-173-79-60-52.washdc.fios.verizon.net. [173.79.60.52]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-9106412e038sm59976696d6.20.2026.09.09.15.51.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 09 Sep 2026 15:51:52 -0700 (PDT) From: Gregory Price To: linux-rtc@vger.kernel.org Cc: linux-kernel@vger.kernel.org, kernel-team@meta.com, alexandre.belloni@bootlin.com, rui.zhang@intel.com, stable@vger.kernel.org, "Gregory Price (Meta)" Subject: [PATCH 2/2] rtc: cmos: Honor explicit use_acpi_alarm parameter value Date: Wed, 9 Sep 2026 18:51:32 -0400 Message-ID: <20260909225132.1392883-3-gourry@gourry.net> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260909225132.1392883-1-gourry@gourry.net> References: <20260909225132.1392883-1-gourry@gourry.net> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" An explicit rtc_cmos.use_acpi_alarm=3D0 command-line argument is ignored on systems where use_acpi_alarm_quirks() enables ACPI RTC alarms. The argument appears in /proc/cmdline, but the read-only parameter reports Y. The boolean parameter defaults to false, so the driver cannot distinguish an omitted argument from an explicit false value. Use a custom setter to record whether parsing occurred and skip automatic selection when it did. Preserve the bool parameter type metadata. Automatic selection remains unchanged when the parameter is omitted. On the affected system, the explicit false value reports N after this change. The HPET-emulated path completed 100 test runs without a failure while the ACPI RTC event counter remained at zero. Fixes: 36d91a4d401c ("rtc: cmos: introduce quirks to enable use_acpi_alarm = mode") Cc: stable@vger.kernel.org Assisted-by: LLM Signed-off-by: Gregory Price (Meta) --- drivers/rtc/rtc-cmos.c | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/drivers/rtc/rtc-cmos.c b/drivers/rtc/rtc-cmos.c index 462799667aa18..536bdcb79ea1c 100644 --- a/drivers/rtc/rtc-cmos.c +++ b/drivers/rtc/rtc-cmos.c @@ -57,7 +57,28 @@ */ =20 static bool use_acpi_alarm; -module_param(use_acpi_alarm, bool, 0444); +static bool use_acpi_alarm_explicit; + +static int set_use_acpi_alarm(const char *val, const struct kernel_param *= kp) +{ + int ret; + + ret =3D param_set_bool(val, kp); + if (!ret) + use_acpi_alarm_explicit =3D true; + + return ret; +} + +static const struct kernel_param_ops use_acpi_alarm_ops =3D { + .flags =3D KERNEL_PARAM_OPS_FL_NOARG, + .set =3D set_use_acpi_alarm, + .get =3D param_get_bool, +}; + +param_check_bool(use_acpi_alarm, &use_acpi_alarm); +module_param_cb(use_acpi_alarm, &use_acpi_alarm_ops, &use_acpi_alarm, 0444= ); +__MODULE_PARM_TYPE(use_acpi_alarm, "bool"); =20 static inline int cmos_use_acpi_alarm(void) { @@ -822,6 +843,9 @@ static void rtc_wake_off(struct device *dev) #ifdef CONFIG_X86 static void use_acpi_alarm_quirks(void) { + if (use_acpi_alarm_explicit) + return; + if (acpi_gbl_FADT.flags & ACPI_FADT_FIXED_RTC) return; =20 --=20 2.53.0-Meta