From nobody Sun Feb 8 17:04:35 2026 Received: from mail-pf1-f173.google.com (mail-pf1-f173.google.com [209.85.210.173]) (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 1D9184A02 for ; Fri, 19 Dec 2025 02:32:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766111572; cv=none; b=D86kZTA0/h7n7wgjy53jCtKsugh+HH8fnfWD2pwyflrqvimUkOrnt6lCd9vNym6N/j+1ekx5zR9xqlVvfCB+wIspq4FGNFIgYoKsZ0ljaGXynWgExPZ1IZCQKWJQIiVo0mhrO9P/Lf1FExMQsrY++cxyUwHIq776IitxHDIO1xA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766111572; c=relaxed/simple; bh=IMkCBysEZtPi3S7PCliVpVEAK16W0KZDbR3COhrzQhw=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version:Content-Type; b=K735m85XHQ4PsWxNxvOGdWTLBmoxKhJUz627H4mgpchZJ1mIOZtsZf8YGZ91ZQbqOFTPvpT7w5LLJBP6beWTMniZ3VY61va+1mSHg6WldPxAew2bpgsP6/mN9EMU1G4Wx2zISewE6mFuGIC+mVYanFaOfj/xvXRyL4DV2uVzD34= 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=gVhmsT+t; arc=none smtp.client-ip=209.85.210.173 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="gVhmsT+t" Received: by mail-pf1-f173.google.com with SMTP id d2e1a72fcca58-7f0da2dfeaeso1377507b3a.1 for ; Thu, 18 Dec 2025 18:32:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1766111570; x=1766716370; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=8xbrrCfO9i968T+r7xXg4EZ+Azjv88ssekN40Q5n5vo=; b=gVhmsT+tntlPnGhyQYVAX2YeOATkxuJQic6MB6lgsb0V3eAix+yqBTHnZN+jRQIw3D jcSaAC7/K5fsIFssHV0id4OWEs7p4EMXXzatk/2NIwVzeq8P/QCFwYmRKoIotLwAETRa ODOCUu26WuFiixx+EDTVPE5zAm7wBsjvPiYqqeti4jnlXOp4yEyUYepBa/QcrCUcOMiy p55i6EIvK6u75Wl8GCBSbpwpozCidOo6awu/5EoyaTKOdz/VvGVmcieeRz3DyOzfVc+/ MOQ5844kTH2NrImQEoz9ZfYSG8yPW0R1v+rkMz75v2Ml6IDk+z+Fesj0zuBOvRY5T1J0 bXIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766111570; x=1766716370; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=8xbrrCfO9i968T+r7xXg4EZ+Azjv88ssekN40Q5n5vo=; b=BpxBf6JwEpB0ya775NqlYJAxjqHHFvSyk95GNWbmG05M6tBUQAUOdOPzo/YKYjoCWS L1eSP/RFF/JZe/HoD9ZB52hAl9Xs3sk4rxStkuMcGaM3+plqmjv5oiFEqq9L2Clyg/DR hmOFo0U0H7qiAxa3gpGSuGdQQYd2Fqe2ktbYL/XaA7UC5jzp1rXDkbx2mNSpAZpEfKBL CfWw3X6MvnohaRJj6cILIDtB8lTE+ORYdvMuxGdCieh/5q2+pcCy4RnjDNcIEtu+bzgu sqJtcbjc17h4ZGH6waCttZx8eMc53lsZLYqRoKB4eem6nAOrjF7aWFNgBcga8LlSHGQR O4hg== X-Forwarded-Encrypted: i=1; AJvYcCWIggy4DWCAFbS9qOBYrxmMqGrB0+26ltkzDmQcmxRfFJnfoCyxjk4lcos8L51SlEzY8sP3J+a4eNO+RI0=@vger.kernel.org X-Gm-Message-State: AOJu0Yw5wzrsXO6tMk2p2HtPdxild/8mDZjk3gVvle5V+3Zx4i4ev+NI gIdPgcNCdOHZ0A70pSgEsJsrQapQf6OVfi8+Dlw2/RbrAUK+t4rUg3KqB1j+BDUTp+s= X-Gm-Gg: AY/fxX7pGe87GZYZ+bIh5Y98aUxOA0a+6iUVZUiVi7rlrFYTM4W0rzBTAxHDhoLbCpd y21dNGvFQ/dkNbNU1U7+bt/QUPl95Tr1RKKdy9sYiHj/5nkjODhVEMi87hC6FYrlrzSn/9A6cSQ r8TRrn6ot1UlHce7KbCG/j/rgZXWErySPONvbxzm37S8aOR/jDI3vH+JtebHkwRrbYfusiCps9R akGuA9hHq3lM+Xd7x3sCjWxaW3yJhDuxMxmnpbQrLoBR29+3K8JRaBsmFEc+AYLTMO9QYHoNZBg SyPQ7iEYopBHexHIfUuU8Rrl6iIKusZqpDx0xoO0445CO/lLUnlAI2oqznYheQNZJJH5RaEV8Dt Ohsa4ZSUbza8f7CmhJIrxJe8T2r6ogcZsJxmpaU7u3qU1mUtISbaYejbg5Oiwzl9YsAKNfvFCFR fJiTxEZ+2xt4xzPPH2QYbByWTtPEYLA7n0 X-Google-Smtp-Source: AGHT+IFCOXczMerMJV0hfHi0Ssaagcly75PCsqKN8U2PEEhIojdn/YZJNEkU7ukfxmQ3E7b0/2hCQA== X-Received: by 2002:a05:6a20:7d9b:b0:366:5d1a:c736 with SMTP id adf61e73a8af0-376a81dc653mr1297733637.9.1766111570268; Thu, 18 Dec 2025 18:32:50 -0800 (PST) Received: from localhost.localdomain ([180.172.132.17]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c1e79620bd3sm555150a12.4.2025.12.18.18.32.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Dec 2025 18:32:49 -0800 (PST) From: stephen.eta.zhou@gmail.com To: Daniel Lezcano , Thomas Gleixner Cc: groeck7@gmail.com, Stephen Eta Zhou , linux-kernel@vger.kernel.org Subject: [PATCH] Fix an Oops when read_current_timer is called on ARM32 platforms where the SP804 is not registered as the sched_clock. Date: Fri, 19 Dec 2025 10:32:43 +0800 Message-Id: <20251219-fix_timersp804-v1-1-6dd902bb03a9@gmail.com> X-Mailer: git-send-email 2.25.1 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" X-Change-ID: 20251217-fix_timersp804-7910e1c471d4 X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1766108562; l=2968; i=stephen.eta.zhou@gmail.com; s=20250411; h=from:subject:message-id; bh=gbtSJVx2ofZ9yxdR22i2viyteiRRcs6WvTl1asbSvBo=; b=OXA1Hb2jALRCchPVUdsh3Pn7AthR3jrl2QXwqti8p38RZlO/MKGwVWiWiVpw/88OrVsenlfpl 8zmgK9rMwG9BthhnOLajxC3vGiliKyWrow38h9QTPaRIuRVP5jeWoAx X-Developer-Key: i=stephen.eta.zhou@gmail.com; a=ed25519; pk=JMRa8Po5ykvp3C9lVKJCeZ9BuRW6xWwa0Sj4KqnLoOk= Content-Transfer-Encoding: quoted-printable From: Stephen Eta Zhou 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