From nobody Thu Sep 4 16:28:50 2025 X-Original-To: dev-commits-src-main@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 4cHlKb219Nz66NMt; Thu, 04 Sep 2025 16:28:51 +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" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cHlKZ2160z40lc; Thu, 04 Sep 2025 16:28:50 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1757003330; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=W0ptyFDOScMI8681g5yVH7Lc8PHMPeEGu/9eukOHLcA=; b=axt8b8+MV2HZPUrlVQn4LrPmaTbDG+0RUfVu8xcZSwSpaiVcYOiZGmnv8e43dIS5Zy+hmB 2xrYg5I1WRofmGOdGVNyeNT070EPvN0/z/24fTKz2QhI8M+qtuQ3g/i7wUgrVSrEidDVC9 KEyL6MRfpFMbvTIsusUfVxPCyng42XCrKm7tVyNqeiTY2Zt5vlDRSPfJ3LmB+EY+SPqyna arD7yFPyAJt4SAynajgyDVZyAzgB8lbvPYUYx+MEOK/VQcoNeWp+ic0B3c9epeld0hWF9K lk+ijJzJ0yr2psg/fp6SRdLmzdqgfl2JEnlbKMgX83Pw6yUfn+iVEvfU2WIdmg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1757003330; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=W0ptyFDOScMI8681g5yVH7Lc8PHMPeEGu/9eukOHLcA=; b=dXuJs7RwO6zD7n4rF+9SPKu0GFsHml0XQSiR2eE1ziypWUZR7vkqdgwAo1xzr+cpux+RcJ Yep/4xSefGxuwTmTiT7mUXbIdTWWlWrpYIpPicZhTTGiG4DjUaMUzK7LepsyihMh1V35Dk jjjarySEANhNFUmLCT2WwZvFEhqglXhG2P12RR6kE6+cun46CzioEGGhsBuUhmhbksyc10 88PvJFcpW6Ba9sjtBOW+46yhjMbLfGruF4RGa1arfKNgN78yptvuHAp/pw0YexSh6xlEZG q+Ufq0zJ9U7KTF8ix922dvZD3BCpZkEjwof43+g0GjZLtzFX4ewYkY8oGR3M/A== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1757003330; a=rsa-sha256; cv=none; b=Wsi5y2d+m69N+oWoni/u0Qs0ypQbxm/EvMWQa6r/QjwK/F00xBpPCHhmblEYljdiPuiiKi sJGiXXs8/zqMkhiQgFrRF3Hu+yFBAjiAAFRSaMSx1s1ECmbPuSdyo5n4uOQs8s35v6z9Hc d1PcgZsQ1j/O4KVf5VBSiQ06oLvYIW0v7Kmsb6t5ZSmB6fIUCaCAVenvKbTwptXCkqXD2v 71XtI6RMqOTViERpLmiU6YvrgdlJctsThdf+sPwttB8YqKYr46QX0jprq6LXJ3vD88PFrY PZD9H7/IiaGY6RxL1vQhFHV1cN6Y33j0B+CAfSb6iHeNJwQvIvNcVHQDb1VXMg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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 did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cHlKZ1b32z18hk; Thu, 04 Sep 2025 16:28:50 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 584GSoNa033140; Thu, 4 Sep 2025 16:28:50 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 584GSokv033137; Thu, 4 Sep 2025 16:28:50 GMT (envelope-from git) Date: Thu, 4 Sep 2025 16:28:50 GMT Message-Id: <202509041628.584GSokv033137@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Andrew Turner Subject: git: c76b0247a95e - main - arm64: Add a function to check a range of CPU revs List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: andrew X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: c76b0247a95ed090cc0d83b2698228d2937af3e6 Auto-Submitted: auto-generated The branch main has been updated by andrew: URL: https://cgit.FreeBSD.org/src/commit/?id=c76b0247a95ed090cc0d83b2698228d2937af3e6 commit c76b0247a95ed090cc0d83b2698228d2937af3e6 Author: Andrew Turner AuthorDate: 2025-09-04 14:57:41 +0000 Commit: Andrew Turner CommitDate: 2025-09-04 14:58:25 +0000 arm64: Add a function to check a range of CPU revs Add a function that can check if a given midr is within a range of revisions. This will be used to check if a CPU is affected by a known erratum. Sponsored by: Arm Ltd Differential Revision: https://reviews.freebsd.org/D52187 --- sys/arm64/include/cpu.h | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/sys/arm64/include/cpu.h b/sys/arm64/include/cpu.h index 59cda36f275e..f07b67d18abf 100644 --- a/sys/arm64/include/cpu.h +++ b/sys/arm64/include/cpu.h @@ -196,6 +196,31 @@ #define CPU_MATCH_RAW(mask, devid) \ (((mask) & PCPU_GET(midr)) == ((mask) & (devid))) +#if !defined(__ASSEMBLER__) +static inline bool +midr_check_var_part_range(u_int midr, u_int impl, u_int part, u_int var_low, + u_int part_low, u_int var_high, u_int part_high) +{ + /* Check for the correct part */ + if (CPU_IMPL(midr) != impl || CPU_PART(midr) != part) + return (false); + + /* Check if the variant is between var_low and var_high inclusive */ + if (CPU_VAR(midr) < var_low || CPU_VAR(midr) > var_high) + return (false); + + /* If the variant is the low value, check if the part is high enough */ + if (CPU_VAR(midr) == var_low && CPU_PART(midr) < part_low) + return (false); + + /* If the variant is the high value, check if the part is low enough */ + if (CPU_VAR(midr) == var_high && CPU_PART(midr) > part_high) + return (false); + + return (true); +} +#endif + /* * Chip-specific errata. This defines are intended to be * booleans used within if statements. When an appropriate