From nobody Sun Jan 18 19:49:21 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 4dvPLB06XGz6NqSv for ; Sun, 18 Jan 2026 19:49:22 +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" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4dvPL95STrz3ZZb for ; Sun, 18 Jan 2026 19:49:21 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1768765761; 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=IBbGesMBMuA4h4GYtRf0ihEwuRyRGlSQv6Hltm+SjNg=; b=qjh9IWPUGk2zYaufS/AldCHx4ogC4AALo+4DGaBxvCb/fAueC0dZx1gVlDofnHM5kFLpOf 3J/uaVLDoztlOKxz8Dm/o6rpdyxIHpRRQBuWCLMPv87wn4Ew93NykI4lqIDPeyhvwV8Uc0 RW1kE0jEPg2MNSre0ul0Jbd96Mf/8PCEWSOc4X+wVMOD3U3kNIvwTGowXeqSO+otyPomcx P5yhlmROdh9inAp7Zlqrmb5Qkg5l37iHe41U1KvvmcclH6rCzGvnQlTdFHnIGFhsh7W+YR cY8j/p7RgTnsh3Zish3jOp5EC3IP7bxXkY9HMZs/wY2vom6rvrIz2fnro5bPJA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1768765761; 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=IBbGesMBMuA4h4GYtRf0ihEwuRyRGlSQv6Hltm+SjNg=; b=O4km1p7pETvz9x6BT0vohfKNm8CJQlqIjOxKeDgF5hTyQ9dVXb3sCjI3/dAAM7AVK5VylU doGiqHcKB3igraczF1UwzOfO+vuBvzQEnVJ+PRX8sz1eFnFOu267MsNZUr7jzUHJmOtcdS 7eBbbCwEj6sTJpG0f9lDn9361EYSsCOZ1qyKE9Mc5uO7C+6LJX045ZaHvobd1X7VVNa31f lqwugWQnNiWOrsFKlVnfolVnXHbIov328BnSTvZuHKWrelJjSBE6TGexYpkz3cwNbVBMPb u7NG6nvTMoa0EMwn9+rz0M9xz4BR20myUtWYOLFpogofOloNiJiIavbWQ6IBCA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1768765761; a=rsa-sha256; cv=none; b=J1ledAx8L7e16LgSrclC/NauOpocyniwRKSEvFlEncwPaKb1mgOfh4BCDGbAKVj6m5xue9 /TrRBcKuh5k+vyDzmn1uZb56otBp1ItjgWyKjKORJl7kvLLHf83IGK37g2VRDEojv+2E4F 16pwBdJC8X9spSvI5/YJ9oYbryb7FG/l7a+7wsZOW6LltGxxiiLquqNh1yfZl+9FJQfHei g7+pLo9uPaALmvBzNp8iT0j0Mrum2Yz9LpaMVWRZAxu8mzU43snAYoe+g311Bari2iCZ2R qzr/EK5Yz/eYwOqE+4odJoj2lP69UidtTu75YbsJAKNhra8ZcfCokzDqQA61gg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4dvPL94kwmz10N7 for ; Sun, 18 Jan 2026 19:49:21 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 96af by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sun, 18 Jan 2026 19:49:21 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Konstantin Belousov Subject: git: 11f954b021a1 - main - x86: mask all LAPIC vectors early, before BSP interrupts are enabled 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: kib X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 11f954b021a1aadde1d03d40ed5d6b529e14da98 Auto-Submitted: auto-generated Date: Sun, 18 Jan 2026 19:49:21 +0000 Message-Id: <696d3941.96af.1e1bdabc@gitrepo.freebsd.org> The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=11f954b021a1aadde1d03d40ed5d6b529e14da98 commit 11f954b021a1aadde1d03d40ed5d6b529e14da98 Author: Konstantin Belousov AuthorDate: 2025-12-09 02:18:21 +0000 Commit: Konstantin Belousov CommitDate: 2026-01-18 19:47:26 +0000 x86: mask all LAPIC vectors early, before BSP interrupts are enabled If APIC is left in somewhat bad state, with some source hot (not masked and active, e.g. timers after kexec or due to BIOS bug), we get the interrupt too early. Reported by: jmg Reviewed by: markj Tested by: pho Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D54543 --- sys/x86/x86/local_apic.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/sys/x86/x86/local_apic.c b/sys/x86/x86/local_apic.c index aecad4cbd463..053d9814c14c 100644 --- a/sys/x86/x86/local_apic.c +++ b/sys/x86/x86/local_apic.c @@ -428,6 +428,7 @@ lapic_is_x2apic(void) (APICBASE_X2APIC | APICBASE_ENABLED)); } +static void lapic_early_mask_vecs(void); static void lapic_enable(void); static void lapic_resume(struct pic *pic, bool suspend_cancelled); static void lapic_timer_oneshot(struct lapic *); @@ -553,6 +554,7 @@ lapic_init(vm_paddr_t addr) /* Perform basic initialization of the BSP's local APIC. */ lapic_enable(); + lapic_early_mask_vecs(); /* Set BSP's per-CPU local APIC ID. */ PCPU_SET(apic_id, lapic_id()); @@ -791,6 +793,32 @@ lapic_xapic_mode(void) intr_restore(saveintr); } +static void +lapic_early_mask_vec(const struct lvt *l) +{ + uint32_t v; + + if (l->lvt_masked != 0) { + v = lapic_read32(l->lvt_reg); + v |= APIC_LVT_M; + lapic_write32(l->lvt_reg, v); + } +} + +/* Done on BSP only */ +static void +lapic_early_mask_vecs(void) +{ + int elvt_count, i; + + for (i = 0; i < APIC_LVT_MAX; i++) + lapic_early_mask_vec(&lvts[i]); + + elvt_count = amd_read_elvt_count(); + for (i = 0; i < elvt_count; i++) + lapic_early_mask_vec(&elvts[i]); +} + void lapic_setup(int boot) {