From nobody Tue Jun 2 06:42:03 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 4gV1TS0xrwz6h3kF for ; Tue, 02 Jun 2026 06:42:04 +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 "R13" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4gV1TS09Nkz3fhx for ; Tue, 02 Jun 2026 06:42:04 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1780382524; 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=QfkdAQ7FIdWaDxnA5C20X3IJq7d3QLRkCYRWjRHkzDI=; b=nnNeJOPQhypZJrT3fggR+WAat1+YrhZgz77+tTZSSbb93A4llITayvvvMi4ztLmGdORlVP HwdzAQnq17xFagDSoh3U7bTYuErz2PTDUvp0DqY85qUfnyCcjW4deJ2DukpB7s0IR5YxKL 5C9BMOhGkePrRqPnoG2WEeTH6HwHYA2wfxNXxDAlw5djIVNfPmJRm/f3V3Sv2vYu5wKkSi 67Mk5bb091Bf9YvaYGWv3R1j/9bqrpIWmIfwTv/DqivigUrLY3XV2bHugxk0wq/Qr6D528 /UK6ouPYgaGTFrt0G0Eohpq9bSi+P82FRmZzq9uxceUgcjq1EMkUZR97I/RcRw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1780382524; a=rsa-sha256; cv=none; b=l2WZHLZrpnTKmpiiU2rP4uGLfDoMvh2nh/QH4ucSQ7mqfK4+2MzB+gVkR4jxA3myTIcmo6 7Vi1kuLJ8xQ8G1njzG6EY6S8BMKCMdSAiFsG0RxukcZKg0n8hbkzz4IcFq6FnAcNSh9gPT qJvhh/ZusScQ+MYj+/+dJuUHDkASfPd6HvEfWV3EDqfq1Sp6SRM6lLx8CZWwahtZV2qZWW 6kmC2TDlMM+BoHgUGLZ1bwCzXnVLz7NMPiHvVGavoavFkCuJQUmsE3oL1CHr6yLuXv4ELX ql+miMkSZdTIygLbKVn8DkI2fVidS6AtkCnh5ijop3tz/9InbQq2IRTX/7oTXw== 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=1780382524; 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=QfkdAQ7FIdWaDxnA5C20X3IJq7d3QLRkCYRWjRHkzDI=; b=rkQhMU4LRYPiXGazL58+ioVY4wQxyjYt+Y325C08yhMtw9A1DRMh0xbE7mevTFFIbrg4Xl G4Njlxmxh/cW8Sqb8dXkuuwgaFLhD67CF1ZGho5kBtG/M32TzzALKQIzbDYVRLE+PXMxnz YPX4rk1KhQKA1w0QpTz09I7STZtl/Txpf6Qlk1cgAbOuBgBESzWj+Tddkx+PPu//2SXjYM dj4LEC0FXbZ8GvZsq4cQbMDjQX3KaBZsowbDTERHfGPr7ysIMXrQCHAGU2F4Th3+YhKVWx fBby84Ckr3e6CE0I2FiSr4nWusBu/8nUn1D7UOv55QdnA/8mPeAOZKycyXj79g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4gV1TR6dJ3z1CmX for ; Tue, 02 Jun 2026 06:42:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 1a45a by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 02 Jun 2026 06:42:03 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: ShengYi Hung Subject: git: 7b26353a59d6 - main - hwpstate_intel: Disable package control on hybrid CPU 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 List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: aokblast X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 7b26353a59d66dc1bc611fd042a49b9e3bd13699 Auto-Submitted: auto-generated Date: Tue, 02 Jun 2026 06:42:03 +0000 Message-Id: <6a1e7b3b.1a45a.91f6820@gitrepo.freebsd.org> The branch main has been updated by aokblast: URL: https://cgit.FreeBSD.org/src/commit/?id=7b26353a59d66dc1bc611fd042a49b9e3bd13699 commit 7b26353a59d66dc1bc611fd042a49b9e3bd13699 Author: ShengYi Hung AuthorDate: 2026-06-01 09:46:37 +0000 Commit: ShengYi Hung CommitDate: 2026-06-02 06:41:41 +0000 hwpstate_intel: Disable package control on hybrid CPU In package control mode, the performance of all cores depends on the most recent value written to the request field. If the last write comes from an E-core, all cores are forced to align with the E-core performance level, resulting in significant performance degradation. Therefore, package control is disabled on hybrid-core systems. Reviewed by: olce MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Sponsored by: Framework Computer Inc Differential Revision: https://reviews.freebsd.org/D57377 --- sys/x86/cpufreq/hwpstate_intel.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/sys/x86/cpufreq/hwpstate_intel.c b/sys/x86/cpufreq/hwpstate_intel.c index 3d2cc0a5966b..db8600d7b89a 100644 --- a/sys/x86/cpufreq/hwpstate_intel.c +++ b/sys/x86/cpufreq/hwpstate_intel.c @@ -321,9 +321,19 @@ out: return (ret); } +static void +intel_hwpstate_hybrid_cb(void *ctx) +{ + uint32_t *small_cores = ctx; + + atomic_add_32(small_cores, PCPU_GET(small_core)); +} + void intel_hwpstate_identify(driver_t *driver, device_t parent) { + uint32_t small_cores = 0; + if (device_find_child(parent, "hwpstate_intel", DEVICE_UNIT_ANY) != NULL) return; @@ -343,6 +353,17 @@ intel_hwpstate_identify(driver_t *driver, device_t parent) if ((cpu_power_eax & CPUTPM1_HWP) == 0) return; + /* + * On hybrid-core systems, package-level control cannot be used. + * It may cause all cores to run at the E-core frequency because + * the resulting package frequency depends on the last core that + * sets the frequency. + */ + smp_rendezvous_cpus(all_cpus, smp_no_rendezvous_barrier, + intel_hwpstate_hybrid_cb, smp_no_rendezvous_barrier, &small_cores); + if (small_cores > 0 && small_cores < mp_ncores) + hwpstate_pkg_ctrl_enable = false; + if (BUS_ADD_CHILD(parent, 10, "hwpstate_intel", device_get_unit(parent)) == NULL) device_printf(parent, "hwpstate_intel: add child failed\n");