From nobody Thu Mar 26 19:03:36 2026 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 4fhY8Z1lDLz6WJhr for ; Thu, 26 Mar 2026 19:03:42 +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 "R12" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4fhY8Y6vrFz3GnC for ; Thu, 26 Mar 2026 19:03:41 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774551822; h=from:from: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; bh=JlPe3uW4tM6l6+gYYUok1qMr0Ufw2/Aw14+/j5WUKXc=; b=gKtgrlyFncCimQF/lUNxPWaXSndfVRU0GJekAsM6W0t1+wLlpjnGPgnLQGcr1TT66KUQe3 s78udrWa/QFAJ9UL50WF4IwZMoaxm9zd766LWmoQh0QZGBfzjV30qdwFjB1Yf4SJMTiat5 fyQEqelw+O25ll7JyOaDx+7FFAAndLHSknpkIzxi3ONhLE0hiUJILivOWypu2uoAZaUUK+ JpYt4Q/dDh3Jyp085Y3HvbP2v2+XDDfTeHDIFJZF5ngYY4FVa6p/ggq/Qs+DE1IofbZFZ/ 54TGCHUDjN6zlNASWp22Ah8UAMJezwY4PSBUnF17gu4MwBoYelDuEzzPkNLV/Q== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774551822; a=rsa-sha256; cv=none; b=Nxfcx9Rwfi7V2t8nc7NcPF4qbqs0ITqvnP/LwI5oLFrc8n4IHA9pSHd4m0asKEC2BQj8sI QtBLrzFOZefJz6KKEoqzyZiGGP10MaTniWLDlETFjm9ko0R88VBFW6bQPdR3bclmkXLveF bdaJWt1Cq6XCiKUDNuL+SUEOdYxqnxi+rk8JlTvOxiMhzw3Wyp/Xp1dI+KlBchuP6jYj6z ajmuC1vf20ZhYDwH87x7PXoJY984lgUMQuf29049OIUQCYHlyO1hXTo6Uzi4Jd02JD/iQj SKpYuoQwJrDL0ElYeSBJxWlwl6MT6toh4vkYFp28zuYr5JgV2xKPF0lwIXRD7Q== 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=1774551822; h=from:from: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; bh=JlPe3uW4tM6l6+gYYUok1qMr0Ufw2/Aw14+/j5WUKXc=; b=jmZJu6p5RPMcswrDErVPjtM9f7GI8dedJksEGaZUXEBkbJIys6cOfNCtdcVxEa+1aAVuiG +5+purLNdEESRfE5B1D6QDNdW1ydu3pZ/0pyPmNAo5G05MuC2te+fH4HMy+XLFicYrsNsG D0UVBz7o8+EijQDfabcnSPetUky3omEFp3ng0n6kQmm8nDlvvce3hgTfJ/2bFIwcmYP1cu Av64gxDHAtV0/3h+cpMrB4asWsl0SZzvg5tGxHaXCKwEo4e+6NZ8zjeDg96IjE/9k5abBW Wa5QGPI7kGpB1ZuYZ1Ka0nxJUuG0wGJfUsUxUcMS1wEHYqDy9wPoJ3/Tf4zr+Q== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fhY8Y5wGwz157s for ; Thu, 26 Mar 2026 19:03:41 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 195e1 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 26 Mar 2026 19:03:36 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Cc: Matt Delco From: Alexander Ziaee Subject: git: c505fc146884 - main - x86: Guard clock frequency against a divide by 0 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: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ziaee X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: c505fc1468849150f48484b225b6476d8316de57 Auto-Submitted: auto-generated Date: Thu, 26 Mar 2026 19:03:36 +0000 Message-Id: <69c58308.195e1.1d1363de@gitrepo.freebsd.org> The branch main has been updated by ziaee: URL: https://cgit.FreeBSD.org/src/commit/?id=c505fc1468849150f48484b225b6476d8316de57 commit c505fc1468849150f48484b225b6476d8316de57 Author: Matt Delco AuthorDate: 2026-03-26 17:22:54 +0000 Commit: Alexander Ziaee CommitDate: 2026-03-26 19:02:06 +0000 x86: Guard clock frequency against a divide by 0 We may be running in a Virtual Machine which may not fully support hardware performance counters. If the MPERF counter somehow ends up at zero, return an error and fail gracefully instead of panicking. This patch is part of Google Cloud Engine (GCE) C4-LSSD turnup. Sponsored by: Google Tested by: NetApp (previous) PR: 292808 MFC after: 3 days Co-authored-by: Aymeric Wibo Co-authored-by: Jim Mattson Suggested by: jrtc27 (split out this part) Reviewed by: imp, obiwac, olce Differential Revision: https://reviews.freebsd.org/D56056 --- sys/x86/x86/cpu_machdep.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/sys/x86/x86/cpu_machdep.c b/sys/x86/x86/cpu_machdep.c index 5483fbd6dd4e..775fee97d3cd 100644 --- a/sys/x86/x86/cpu_machdep.c +++ b/sys/x86/x86/cpu_machdep.c @@ -425,6 +425,7 @@ cpu_est_clockrate(int cpu_id, uint64_t *rate) uint64_t tsc1, tsc2; uint64_t acnt, mcnt, perf; register_t reg; + int error = 0; if (pcpu_find(cpu_id) == NULL || rate == NULL) return (EINVAL); @@ -460,6 +461,11 @@ cpu_est_clockrate(int cpu_id, uint64_t *rate) acnt = rdmsr(MSR_APERF); tsc2 = rdtsc(); intr_restore(reg); + if (mcnt == 0) { + tsc_perf_stat = 0; + error = EOPNOTSUPP; + goto err; + } perf = 1000 * acnt / mcnt; *rate = (tsc2 - tsc1) * perf; } else { @@ -470,6 +476,7 @@ cpu_est_clockrate(int cpu_id, uint64_t *rate) *rate = (tsc2 - tsc1) * 1000; } +err: #ifdef SMP if (smp_cpus > 1) { thread_lock(curthread); @@ -478,7 +485,7 @@ cpu_est_clockrate(int cpu_id, uint64_t *rate) } #endif - return (0); + return (error); } /*