From nobody Tue Sep 29 04:12:24 2026 Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 24B7C42885E; Wed, 12 Aug 2026 15:11:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=193.142.43.55 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786547474; cv=none; b=bAvST/dh3V4heUth65/Zk08TqoUtJgTUZcAJ7l1TR1/G328ayWz3AfFllTo0S5HdhDozMY3kjUVsESqKhV5XdLD9z9bQJ4w5mGY6WqusPmmFko1K9lZjd1upFQ9QjMogiwDOPP7NhsPv4tezUnFZIrXG9LPH0PPGnCw9PHji0ag= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786547474; c=relaxed/simple; bh=alXgRYdcWS5i+MBlRYW7hU+AB1Net1gsssVvSrs6UD0=; h=Date:From:To:Subject:Cc:In-Reply-To:References:MIME-Version: Message-ID:Content-Type; b=vEfCJmmVAqLcXy2dls8zZHj6dfRaYlNTCidZqedzXER9gyEiUTJPlDvhEuLKSCI9Uimw65UsCDxkjHKJ7I4iSpqCdGyyPFmjiBba1/Xc2myPdBuBwKNMR2TMgwCF8yzctd1qqmm0Z5lVOnOLWADz27dYJZHV6mc8LKZShw4WJ88= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de; spf=pass smtp.mailfrom=linutronix.de; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=LwfjRDOP; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=jObGZopx; arc=none smtp.client-ip=193.142.43.55 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linutronix.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="LwfjRDOP"; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="jObGZopx" Date: Wed, 12 Aug 2026 15:10:59 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1786547461; h=from:from:sender:sender:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=XWTRb5pEy2mA0ynZEjxsWl2uSdcgofkQYNCfbYbQ2+I=; b=LwfjRDOPyv0gjpNhFUFNj7YPxS6+lxkV34JA3absV5qpoj0tTA/fpyVUiwOt7gksT2WFKX kCAD9rwBqWeMoUKDjAOYkLu/Bm6hBqAft5n4ZtSIqLPp8ns56pa+SpVg6xBA6g1nDm6qQZ gR1rSBby6uynzAZ/PDLR19KpFy9sr+u78fcl/zak+ZXInLIMsosPyN2VV+jcoXOMvIW279 PlZr/4LFIQqC2iLS8aQsOPscIQSBD6zwhPAuOt+txw55q2Jbf1WwEK/k5kP1K6Eyi4EvHb +nS7vLmJLmJoO2YbgG/hfIM79tqf+YAJYCd5VoLK16qdv/cZnCtppmM86kJCrA== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1786547461; h=from:from:sender:sender:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=XWTRb5pEy2mA0ynZEjxsWl2uSdcgofkQYNCfbYbQ2+I=; b=jObGZopx5qZJDoWWUwgvksddym5P2nhGT5Hm+lNbtknGzIbCGp6XpU+wDpynH6Qu59l7tn 7GDlHAM+MtXAvvDw== From: "tip-bot2 for Marc Zyngier" Sender: tip-bot2@linutronix.de Reply-to: linux-kernel@vger.kernel.org To: linux-tip-commits@vger.kernel.org Subject: [tip: timers/urgent] clocksource/drivers/arm_arch_timer: Workaround bcm2712 broken EL2 virtual timer Cc: John , Daniel Drake , Marek Szyprowski , Marc Zyngier , Thomas Gleixner , Gary Guo , Florian Fainelli , Daniel Lezcano , x86@kernel.org, linux-kernel@vger.kernel.org In-Reply-To: <20260710080958.491620-1-maz@kernel.org> References: <20260710080958.491620-1-maz@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-ID: <178654745996.442315.18445733771449352303.tip-bot2@tip-bot2> Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails Precedence: bulk Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable The following commit has been merged into the timers/urgent branch of tip: Commit-ID: 94f39e4c017e66130e476268bdaa0bf61e914fa2 Gitweb: https://git.kernel.org/tip/94f39e4c017e66130e476268bdaa0bf61= e914fa2 Author: Marc Zyngier AuthorDate: Fri, 10 Jul 2026 09:09:58 +01:00 Committer: Thomas Gleixner CommitterDate: Wed, 12 Aug 2026 17:09:29 +02:00 clocksource/drivers/arm_arch_timer: Workaround bcm2712 broken EL2 virtual t= imer It appears that the bcm2712 SoC found in the relatively popular RPi5 has a broken EL2 virtual timer. Tthe reason why the timer isn't working is unknown (the timer is ticking, but the interrupt never fires), and the SoC vendor doesn't communicate on the reason why this isn't working, leaving users and maintainers in the dark. Paper over the issue by detecting the broken HW, falling back to the physical timer instead, and let the user know about it. Also taint the kernel as the machine is definitely not compliant with the spec, and it's unknown what else is wrong with it. Reported-by: John Reported-by: Daniel Drake Reported-by: Marek Szyprowski Signed-off-by: Marc Zyngier Signed-off-by: Thomas Gleixner Tested-by: Gary Guo Acked-by: Florian Fainelli Cc: Daniel Lezcano Link: https://patch.msgid.link/20260710080958.491620-1-maz@kernel.org --- drivers/clocksource/arm_arch_timer.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/drivers/clocksource/arm_arch_timer.c b/drivers/clocksource/arm= _arch_timer.c index 4adf756..7b4a98d 100644 --- a/drivers/clocksource/arm_arch_timer.c +++ b/drivers/clocksource/arm_arch_timer.c @@ -1090,6 +1090,27 @@ static int __init arch_timer_common_init(void) return arch_timer_arch_init(); } =20 +static bool __init has_broken_el2_vtimer(void) +{ + /* + * SoCs described here have been found to be broken, though no + * explanation has been volunteered by the vendor. Let the user know + * we're papering over the vendor's lack of communication. + */ + static const char * const broken_el2_vtimer[] __initconst =3D { + "brcm,bcm2712", + NULL + }; + + if (of_machine_compatible_match(broken_el2_vtimer)) { + add_taint(TAINT_CPU_OUT_OF_SPEC, LOCKDEP_STILL_OK); + pr_warn_once(HW_ERR "Known broken EL2 virtual timer, ignoring it\n"); + return true; + } + + return false; +} + /** * arch_timer_select_ppi() - Select suitable PPI for the current system. * @@ -1115,7 +1136,8 @@ static int __init arch_timer_common_init(void) static enum arch_timer_ppi_nr __init arch_timer_select_ppi(void) { if (is_kernel_in_hyp_mode()) { - if (arch_timer_ppi[ARCH_TIMER_HYP_VIRT_PPI]) + if (arch_timer_ppi[ARCH_TIMER_HYP_VIRT_PPI] && + !has_broken_el2_vtimer()) return ARCH_TIMER_HYP_VIRT_PPI; =20 pr_warn_once(FW_BUG "VHE-capable CPU without EL2 virtual timer interrupt= \n");