From nobody Mon Apr 13 19:54:52 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 4fvdRK0mXTz6ZdB3 for ; Mon, 13 Apr 2026 19:54:53 +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 4fvdRJ6MSQz3nDp for ; Mon, 13 Apr 2026 19:54:52 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1776110092; 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=ZfOYi/P1vuuK4A0OvUSharopxbP63rnqrUSn42imH10=; b=eXmDeChLzw+sGIFgzQ1WDEdwPV23HueLRhecYnrJfK8OBMak7neYfMHLViNcy5htEaizWN SJx9vJin8WF2FcqvTljx+wyFAr9D2lgZtyVYW7qgMr0/+9qLtqoQ4yzuiiGCuTfmCZT5C2 uqf3gZUm2rYhiddKIH2nZXaXlFVAdjzHSlTD826PerNDgV/eCsCyhGKe181cbEoiLZFSoQ T1zBVA9n/dwfGY8SO6X0fAeRCxMZpNtEJ3/yBZWbsn5W4ulSPR/tWzon/69viYjJ3WReWs D6kGjS8tDfUrtSoipV3DgasPst751P6gjCtR3IMeunUzgA9CVL+VCp4PVek3wA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1776110092; a=rsa-sha256; cv=none; b=u9sENVMzIQRNcJONKE5xg2kiZQv8wKdTffk98bC/3H6IbVh1ElAxDvZF+jAoDPEbekSzJZ 6O51+MNgxhNQComwApVmrWNOR2X9MbjJVLB5r0tFPUcsW4grAvqWGKNmS4c8sQuMCb/FDi TA1ok4BlZlFDAs7bm+2L5xGVI/b6b//MSxQnPLJWTuiYAColnfWoY447fuWxvwBa0QQwWR LczE3K3vjlOgxI/4h+xaKtIxNfzrCDrT8hS1zs+zAKSKoGy79nyVpHcnbxP4mA/10o+SkO VMiEmapRKNNKFRbUErVF5LNClJWEyBrNYhddXHmh3oZq7pzVfxI4hg2gdbjUdg== 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=1776110092; 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=ZfOYi/P1vuuK4A0OvUSharopxbP63rnqrUSn42imH10=; b=piIhEWytxXAgZHIWn6xCO6pm8ll6WdSxCPCuaSnwMYvD9goBka6x97GKVCgk4IePycCl3m RwIkkBNj0Fj2XerS0VMZXhnZpv65ypcrH8IXXEbUYUpUuXRXnW9MiITYiYgjEn7ZrXiU8T lSERcKVa0fIv4injEpjrPaP4HsPCTJaKIdFrz3kqwq4QvxqtvYPJ3I+ECH3pb/ZrI22O+O i25NxZIM01mWZ5wDTIsbxwE7BNMbOfPgy5G2xRCow4z/4l2nrG8hd3IJEkqswpi24n3Lxj 4v3DG2GCbG+sFtys3X/8hkAjh2bH+2BlrgXqKMXLM9wqKZAp7+DujtQKVn/y9A== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fvdRJ5fN5z3Zj for ; Mon, 13 Apr 2026 19:54:52 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 418ff by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 13 Apr 2026 19:54:52 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Matt Delco From: Alexander Ziaee Subject: git: 296debec8856 - stable/15 - 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/stable/15 X-Git-Reftype: branch X-Git-Commit: 296debec88562255349328e6b501d2687febc950 Auto-Submitted: auto-generated Date: Mon, 13 Apr 2026 19:54:52 +0000 Message-Id: <69dd4a0c.418ff.2a004b63@gitrepo.freebsd.org> The branch stable/15 has been updated by ziaee: URL: https://cgit.FreeBSD.org/src/commit/?id=296debec88562255349328e6b501d2687febc950 commit 296debec88562255349328e6b501d2687febc950 Author: Matt Delco AuthorDate: 2026-03-26 17:22:54 +0000 Commit: Alexander Ziaee CommitDate: 2026-04-13 19:54:16 +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 (cherry picked from commit c505fc1468849150f48484b225b6476d8316de57) --- 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); } /*