From nobody Thu Jul 23 10:01:18 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 4h5RTq4CVTz6lWD7 for ; Thu, 23 Jul 2026 10:01:19 +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 "YR1" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4h5RTp6t8Pz3X30 for ; Thu, 23 Jul 2026 10:01:18 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1784800879; 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=Us+picdsTkETZ9GN9UtQxGl8f6WjpnOZUNeex3byWis=; b=DiDOl77CS5SmXC35rGYmLI0J3tyWgHADSPSE8Wc+WoKH6gtReJzU2d759Vp+FSlFyOzsIU 0vLzXHZ72N36PGQg6CyuTvG/lF7IPjbxIgdm7cnjRfQGfckoOTv+PypzvopG4DaGfkL8QQ zSiOsA4YTulOsseD3O5QWIT8FcIfkLPR74MqbkosKtAmaz/gx6HhJ/pG47iZHiqMP/gl/C U7gKymOuDKRrA04QPvrfAsfec3uJWW/Ye9f9Dn+awX0NclftaQbTan+p0SmMg2WwNgzZYt yaKK/n9CwU7HRvg/fPsEueiAVdAmXwXllIS7K5vfLFHprGuZ68OIUNZ7/DG5Lg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1784800879; a=rsa-sha256; cv=none; b=ck38OSlFjRqNqX0lm2yw3YBUfBdWIglI2I7LHF6ZuQ5rK45pfp3lNUuQl+HWDbtWa1PKmP 1N7wUjTArUJuGYDD5h8+kXOEhv7gpSzTqj3qn5mojbSBt3q7CFXMLXtinVexHSezu8JPXQ rQMf5c0uZQUCNbOg1nJt1Ri1kMHk1LAKJAwUu2qw0FRlRiaeRGPED3oprJYb+8+Lj/uWHt Xt7yyofEjPwPVl1j0a623+k3KhYF8FDfS1LGNXadJG88hKgzHKZdWCPhnCH+NGYFwaL6aw Kq7IjAZSfoXc1wUJttQF7S9Y9r6c7DlfhLAPuj9EVXSpEiQv6l4QrwC9nh++8w== 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=1784800879; 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=Us+picdsTkETZ9GN9UtQxGl8f6WjpnOZUNeex3byWis=; b=Q64JlLPcR0KTJvixcEoub01pD5fwh8VzbAlM8NiyFZeZelU7yliLIDildzgHq9Or5BdNEA xExsML338Vby4+wt8jhcE5Bmfxs7l675gnI9Nl+iHCq7A1fG6Hriv47Ba9kRymEqZiWcH1 Ty6JYQF8AC9gq6XN3Xi7u0FciKS6l6K87GI1AxW3rISMrPna5mvb82A7bsBCF/hQbt/fyQ DxNvDNY+fEgAiTguuq4sRJAyL6QfClRQ0k23Dvkx2YZ2/D7CLuyUHH/vhR/1uOV/+7Kb5I fMqpXJwMtlk4pysMC1JrfuE09co8VznWy8+IhwjM7J91L4L2mCBm/JMieISNXg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4h5RTp5qmhz1163 for ; Thu, 23 Jul 2026 10:01:18 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3cfdd by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 23 Jul 2026 10:01:18 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Konstantin Belousov From: Olivier Certner Subject: git: a9e4131375f8 - stable/14 - x86/local_apic.c: add lapic_maxlvt() helper 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: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: a9e4131375f87c6933f8321adde95d14f6d3764d Auto-Submitted: auto-generated Date: Thu, 23 Jul 2026 10:01:18 +0000 Message-Id: <6a61e66e.3cfdd.36e8ab3a@gitrepo.freebsd.org> The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=a9e4131375f87c6933f8321adde95d14f6d3764d commit a9e4131375f87c6933f8321adde95d14f6d3764d Author: Konstantin Belousov AuthorDate: 2026-01-19 12:50:09 +0000 Commit: Olivier Certner CommitDate: 2026-07-23 09:59:16 +0000 x86/local_apic.c: add lapic_maxlvt() helper that calculates the max index of the present LVT entry from the value of the LAPIC version register. Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D54773 (cherry picked from commit ad5e3cb950344f9822dbbd90f5ac7c256f97fa4c) --- sys/x86/x86/local_apic.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/sys/x86/x86/local_apic.c b/sys/x86/x86/local_apic.c index 2636b87e78b3..ca2411c112a0 100644 --- a/sys/x86/x86/local_apic.c +++ b/sys/x86/x86/local_apic.c @@ -320,6 +320,16 @@ SYSCTL_INT(_hw_apic, OID_AUTO, ds_idle_timeout, CTLFLAG_RWTUN, static void lapic_calibrate_initcount(struct lapic *la); +/* + * Calculate the max index of the present LVT entry from the value of + * the LAPIC version register. + */ +static int +lapic_maxlvt(uint32_t version) +{ + return ((version & APIC_VER_MAXLVT) >> MAXLVTSHIFT); +} + /* * Use __nosanitizethread to exempt the LAPIC I/O accessors from KCSan * instrumentation. Otherwise, if x2APIC is not available, use of the global @@ -761,7 +771,7 @@ lapic_dump(const char* str) int i; version = lapic_read32(LAPIC_VERSION); - maxlvt = (version & APIC_VER_MAXLVT) >> MAXLVTSHIFT; + maxlvt = lapic_maxlvt(version); printf("cpu%d %s:\n", PCPU_GET(cpuid), str); printf(" ID: 0x%08x VER: 0x%08x LDR: 0x%08x DFR: 0x%08x", lapic_read32(LAPIC_ID), version, @@ -842,7 +852,7 @@ lapic_setup(int boot) la = &lapics[lapic_id()]; KASSERT(la->la_present, ("missing APIC structure")); version = lapic_read32(LAPIC_VERSION); - maxlvt = (version & APIC_VER_MAXLVT) >> MAXLVTSHIFT; + maxlvt = lapic_maxlvt(version); /* Initialize the TPR to allow all interrupts. */ lapic_set_tpr(0); @@ -1003,7 +1013,7 @@ lapic_enable_pmc(void) #endif /* Fail if the PMC LVT is not present. */ - maxlvt = (lapic_read32(LAPIC_VERSION) & APIC_VER_MAXLVT) >> MAXLVTSHIFT; + maxlvt = lapic_maxlvt(lapic_read32(LAPIC_VERSION)); if (maxlvt < APIC_LVT_PMC) return (0); @@ -1030,7 +1040,7 @@ lapic_disable_pmc(void) #endif /* Fail if the PMC LVT is not present. */ - maxlvt = (lapic_read32(LAPIC_VERSION) & APIC_VER_MAXLVT) >> MAXLVTSHIFT; + maxlvt = lapic_maxlvt(lapic_read32(LAPIC_VERSION)); if (maxlvt < APIC_LVT_PMC) return; @@ -1965,7 +1975,7 @@ DB_SHOW_COMMAND_FLAGS(lapic, db_show_lapic, DB_CMD_MEMSAFE) v = lapic_read32(LAPIC_VERSION); db_printf("version = %d.%d\n", (v & APIC_VER_VERSION) >> 4, v & 0xf); - db_printf("max LVT = %d\n", (v & APIC_VER_MAXLVT) >> MAXLVTSHIFT); + db_printf("max LVT = %d\n", lapic_maxlvt(v)); v = lapic_read32(LAPIC_SVR); db_printf("SVR = %02x (%s)\n", v & APIC_SVR_VECTOR, v & APIC_SVR_ENABLE ? "enabled" : "disabled");