From nobody Sun Feb 8 16:12:36 2026 Received: from mail-pl1-f179.google.com (mail-pl1-f179.google.com [209.85.214.179]) (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 8121B29B78D for ; Fri, 19 Dec 2025 05:00:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.179 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766120408; cv=none; b=ti1qgCpUcGY6hJ96kOMY0X98RJ4lmndJF5drQwc+Vz0/NECQcxnRQoVpJz1jdz/yCbCcoFpEi1r6db2qLU2FAYQLztVGINo6QjgsGF3gvxXMCkTi7tH0Z3B0bVzOiyKgoFFvHshKwIZkVSPa9qw8Dfi+SE6glkrJPlBE8rYD0os= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766120408; c=relaxed/simple; bh=gbtSJVx2ofZ9yxdR22i2viyteiRRcs6WvTl1asbSvBo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=LFAX7Qw2btuz96a5edoLXOQKEhCegdDmEc0KJewI24oshcKqq0ZHO3STjHY3mP/6oDbX8sOx2tBz6kCsPWDC6uAjdBDFX2A+E3r/VwzbLPB9TvfcsqGOwOicJMdUcOvPRwxP/W3lZD285deKIdAoyN9azGW78/fZsIf39w7Ow30= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=ZF26cWV8; arc=none smtp.client-ip=209.85.214.179 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ZF26cWV8" Received: by mail-pl1-f179.google.com with SMTP id d9443c01a7336-2a1388cdac3so12640415ad.0 for ; Thu, 18 Dec 2025 21:00:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1766120404; x=1766725204; darn=vger.kernel.org; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:from:to:cc:subject:date:message-id:reply-to; bh=93vtSux55mIOgt+QwXNy/vPyL85eksmm9K5E5JAV+6k=; b=ZF26cWV8+F/Mh/1E9GkAkh/us9OAozSPtqeTdw2CiMi5kCA9lfv0Eo/ffred+o3jVQ kPD/d7fE/jjsMJusYl+BpUczpVspcIP13bRCphd0L/kZeEyRZl9hbjU0MM9cGaEHBmNR Yp2srf7YQqcoM4mg+tjZt1PLJdQXWwuCNHHoQi6YHaGS8muVqrxQcS47ZpD7/Ls+LPgn 9vswJlL2IwHjkYe0o1Lwx16zHVyr23DTZVIyF14ldYxDNkxKXhQ5RvwBV5Cbyp1JwdK8 moi0SYeQXxFXMLRvqjC2n7HR/7y9LYlEw6XiHM8X806qCgy9FcCy8FlIXQzHkBDL2PLY UYOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766120404; x=1766725204; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=93vtSux55mIOgt+QwXNy/vPyL85eksmm9K5E5JAV+6k=; b=FOX/TCrRt/SGzYrzZQ2vm7ewea/8wrHIYghzhfkyg2i+gsBc1GvWaRFgmGLDFVTW2n GGOVnHiDTlHs7IOt6lmgqpntdKYkHcNVatqaH1AFdC2GDHMxTRrNhO2XgwHpQmUxPMZz UxW5d+QaZG7r+S5Uo7klncBkYnAr5ZxZlh3UAj3oXmB232xYftVRhZvZt8eeDlfDPAef mJidkdvPTshsyp+GSB4v9kL+MAK7U2i98j65/odeJnxcl7+RLUTwkW8ymrckUI58OjUj ZhfNWe20+w6W0+KYWe9y0wlnbcrSR7+pXvjFoH3oOd/x3uEY6U0n+pMpqmVOvH3rWW+s Fh1g== X-Gm-Message-State: AOJu0YyLaXUQnRQ2NF8O4n0H1m/BnJkL9zyP7InDNBLEmaqzmunTx4+S iWExRwV8L1xEjV0K6h6EGSRhChx8SbBGuqo5u8KW2U65YKaqQHt3xVFw X-Gm-Gg: AY/fxX4HuASGjhr5Cw9fMov2T23XWijjpYpK336ALsezNcyA8KVfmv6Wsv4Ud9jRnAP +9+W38wkbbMa2ArZ8ytXlT8D1gDFTSpI+B7OddCXeqOmOWQOwbMWp/zsJY1u4Dq+A7pUebywy34 jD0hCQuZWRIB05Pz/Kyzk3D50NOKsxQTS7znkYS8nn+wV2Gfaoa6l1imSV1qVggwL37Ln6ek7pw EOdJwTY8AUIEW2XP0z0yadvhUGpBqjYMl9a2aFDoVV5GPxXh8lXk87Gjdf2FXgXGDQC9jRfQPDZ wZTILb7PlCK3bQYlgxz7X8butW3+K830wfYO0AyYMODn2wZtlSq8CEnaIs2rjPcmEkEm+Y+JKnq A8QjFc4o7MPynWqO36+DeJb816200uxMalzHHwSnknHYYRrMF0Cjk+ljQfvaTCeGisTHGS6Emh5 6JSaFO84fTwUO+KR+CuEoKP4QY93KiLA== X-Google-Smtp-Source: AGHT+IFWTylFCV2s8wRF54Xp6V700bLCvyk4gZZAcd0P/7oNi7dt5BUMFD04Z9dfvuvriiAtj1c8Dw== X-Received: by 2002:a05:6a20:9151:b0:35d:cc9a:8bbb with SMTP id adf61e73a8af0-376a94cb49cmr1552026637.47.1766120403476; Thu, 18 Dec 2025 21:00:03 -0800 (PST) Received: from [127.0.1.1] ([180.172.132.17]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7ff7dfabcbcsm946433b3a.31.2025.12.18.21.00.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Dec 2025 21:00:03 -0800 (PST) From: Stephen Eta Zhou Date: Fri, 19 Dec 2025 12:59:59 +0800 Subject: [PATCH] clocksource: timer-sp804: Fix an Oops when read_current_timer is called on ARM32 platforms where the SP804 is not registered as the sched_clock. Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251219-fix_timersp804-v1-1-020e3cde7cf5@gmail.com> X-B4-Tracking: v=1; b=H4sIAM7bRGkC/x2MQQqAIBAAvxJ7TnDFsPpKRIRutYdMNCIQ/550H JiZDIkiU4KxyRDp4cSXr4BtA/ZY/U6CXWVQUnWo0IiN3+Xmk2IKvdTCDCgJrTboNNQoRKrGP5z mUj7mixKOYAAAAA== X-Change-ID: 20251217-fix_timersp804-7910e1c471d4 To: Daniel Lezcano , Thomas Gleixner Cc: linux-kernel@vger.kernel.org, groeck7@gmail.com, Stephen Eta Zhou X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1766120401; l=2968; i=stephen.eta.zhou@gmail.com; s=20250411; h=from:subject:message-id; bh=gbtSJVx2ofZ9yxdR22i2viyteiRRcs6WvTl1asbSvBo=; b=UKCZcT0HgAUFUMlp4XfEi//i7TGA0zfQr7JxYlRgB8eHUq+v3qTrx0Kw8Gt2DUXnND+mB2pN5 6uLGrMf5jg/B5K9YqGau/xIdosoD/9t5Ki9esbcDN2AHRZzlfM9JoMq X-Developer-Key: i=stephen.eta.zhou@gmail.com; a=ed25519; pk=JMRa8Po5ykvp3C9lVKJCeZ9BuRW6xWwa0Sj4KqnLoOk= On SP804, the delay timer shares the same clkevt instance with sched_clock. On some platforms, when sp804_clocksource_and_sched_clock_init is called with use_sched_clock not set to 1, sched_clkevt is not properly initialized. However, sp804_register_delay_timer is invoked unconditionally, and read_current_timer() subsequently calls sp804_read on an uninitialized sched_clkevt, leading to a kernel Oops when accessing sched_clkevt->value. Declare a dedicated clkevt instance exclusively for delay timer, instead of sharing the same clkevt with sched_clock. This ensures that read_current_timer continues to work correctly regardless of whether SP804 is selected as the sched_clock. Fixes: 640594a04f11 ("clocksource/drivers/timer-sp804: Fix read_current_tim= er() issue when clock source is not registered") Signed-off-by: Stephen Eta Zhou --- drivers/clocksource/timer-sp804.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/drivers/clocksource/timer-sp804.c b/drivers/clocksource/timer-= sp804.c index e82a95ea472478ae096b2bf7abea0d65a7bca480..bf4d40058a2a54899804dc97744= bf1255ceb4eb3 100644 --- a/drivers/clocksource/timer-sp804.c +++ b/drivers/clocksource/timer-sp804.c @@ -106,21 +106,25 @@ static u64 notrace sp804_read(void) return ~readl_relaxed(sched_clkevt->value); } =20 +/* Register delay timer backed by the hardware counter */ #ifdef CONFIG_ARM static struct delay_timer delay; +struct sp804_clkevt *delay_clkevt; + static unsigned long sp804_read_delay_timer_read(void) { - return sp804_read(); + return ~readl_relaxed(delay_clkevt->value); } =20 -static void sp804_register_delay_timer(int freq) +static void sp804_register_delay_timer(struct sp804_clkevt *clk, int freq) { + delay_clkevt =3D clk; delay.freq =3D freq; delay.read_current_timer =3D sp804_read_delay_timer_read; register_current_timer_delay(&delay); } #else -static inline void sp804_register_delay_timer(int freq) {} +static inline void sp804_register_delay_timer(struct sp804_clkevt *clk, in= t freq) {} #endif =20 static int __init sp804_clocksource_and_sched_clock_init(void __iomem *bas= e, @@ -135,8 +139,6 @@ static int __init sp804_clocksource_and_sched_clock_ini= t(void __iomem *base, if (rate < 0) return -EINVAL; =20 - sp804_register_delay_timer(rate); - clkevt =3D sp804_clkevt_get(base); =20 writel(0, clkevt->ctrl); @@ -152,6 +154,8 @@ static int __init sp804_clocksource_and_sched_clock_ini= t(void __iomem *base, clocksource_mmio_init(clkevt->value, name, rate, 200, 32, clocksource_mmio_readl_down); =20 + sp804_register_delay_timer(clkevt, rate); + if (use_sched_clock) { sched_clkevt =3D clkevt; sched_clock_register(sp804_read, 32, rate); --- base-commit: 8f0b4cce4481fb22653697cced8d0d04027cb1e8 change-id: 20251217-fix_timersp804-7910e1c471d4 Best regards, --=20 Stephen Eta Zhou