From nobody Thu Apr 16 15:04:23 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 4fxLrm0dNPz6ZpCr for ; Thu, 16 Apr 2026 15:04:24 +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 4fxLrl61Tsz4Hff for ; Thu, 16 Apr 2026 15:04:23 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1776351863; 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=Y8QIj6r40T4GeKl9N2Zso6Vfsy+fgKZfibqOrbDAjmo=; b=kNke46Kj8IK0NnfY9/xXGMpE36GO+Mi6uVZFNsICZ1AyrW8qyP/oB2HYnPCbB0eLL2P/Z+ mVjChnfefNyVvt+mER1faFdvUYC/hqtxwePI/Hh2qGa9T0D2o5cV/YQ3a/RZ3f1ufDUKeb 1SNOfsdsa41g7eaiFBDWU2ZBOpWXcHWHK2n5CHZHF5MbOtyj/JgvUIdYrhzrRMCXnr9B97 KCJ/xE4CV4TJCDvO2TVhW5KKVy5cR/0K2GgAQ/TYXDalEG8/1fSA+QOaLpw3OD6qdr48Zh txqUYxDQy24kygQdNo8+GT+ld1A7+ER/0oZ5ksp64jBUupcrVgjoiyJt/v8X9Q== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1776351863; a=rsa-sha256; cv=none; b=DRI7WOeYkwalR2fAwJQsJi348nhhrd+HabmHbB1z74Xx/y+a00PxU0ww2+QszBXk6cE8uI jVizAfXs2Ac0KxTKdYeyBdA+SdHfFxh5NzqOINmCUQN1IEYwI9V4HICY5R4HcgDAOnWYXO WorDtIvZTHyzh5ltpfFtQI4cCRh7VMoGmkN1WTlGYZQVFujrc+2BRqLT/YukFKgBjXhOxW Ebq3c/h4zxNBJSEwg2QqyMrL7ZBjscilbsmi2Ahvmmgy/fT9vJlMXzrgyulgWUKXlx1Maj MJk22GWtLYuIW1lBbfnMBajbbFihH1mnOYKwSimtioteo7avOk5scZMpHh5QOg== 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=1776351863; 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=Y8QIj6r40T4GeKl9N2Zso6Vfsy+fgKZfibqOrbDAjmo=; b=pQjE0wVF/UkBiDNeNCR3xOvZSwO9nJpFTWeMUdWoL/f0qnUh+jH+m9TtCQfT9nB8FjZNg6 09a0aj43oh1D+vP7vq2wChrE/4f0wcY5Ew9lxqQ5mNETSo3hcuxu2py3Xag9l3sDhQt4FE 9AVZoTvjZH69KIMpGuMImaTObgYoqUiCRcFHkI3faLVOZf7M9N6JoZE1UTMXUzJFOoBkXd SGwfay+0LiNVOmHyW1eBPnkQvYRPORZS6tYeeXFne99WqOwzFNc02WSVgZQPMCdVfb7Id1 lr/SYpQbkIcUsQHrQl6E2ag7qbXhhtdILQz8iCy7CvWSwEEeUPMnyQV3uKbirw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fxLrl5HLXz1BxN for ; Thu, 16 Apr 2026 15:04:23 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 1d89d by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 16 Apr 2026 15:04:23 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Colin Percival Subject: git: 644665e4b013 - stable/15 - x86: Add struct ioapic_intsrc.io_valid 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: cperciva X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 644665e4b0136b13d44859f9252368f753ecebd3 Auto-Submitted: auto-generated Date: Thu, 16 Apr 2026 15:04:23 +0000 Message-Id: <69e0fa77.1d89d.29e2702@gitrepo.freebsd.org> The branch stable/15 has been updated by cperciva: URL: https://cgit.FreeBSD.org/src/commit/?id=644665e4b0136b13d44859f9252368f753ecebd3 commit 644665e4b0136b13d44859f9252368f753ecebd3 Author: Colin Percival AuthorDate: 2026-03-20 22:02:29 +0000 Commit: Colin Percival CommitDate: 2026-04-16 15:03:58 +0000 x86: Add struct ioapic_intsrc.io_valid As of this commit, io_valid is always set to 1; but a future commit will set it to 0, at which point IOART_INTMSET will be set to forcibly disable interrupt sources regardless of whether they are requested to be "masked". Reviewed by: kib MFC after: 3 weeks Sponsored by: Amazon Differential Revision: https://reviews.freebsd.org/D56006 (cherry picked from commit 1d0ccd61563d48e914dccf3dd5cf0280d8331ec1) --- sys/x86/x86/io_apic.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/sys/x86/x86/io_apic.c b/sys/x86/x86/io_apic.c index d0f47f82011a..03d85acabb1a 100644 --- a/sys/x86/x86/io_apic.c +++ b/sys/x86/x86/io_apic.c @@ -85,6 +85,7 @@ struct ioapic_intsrc { u_int io_activehi:1; u_int io_edgetrigger:1; u_int io_masked:1; + u_int io_valid:1; int io_bus:4; uint32_t io_lowreg; u_int io_remap_cookie; @@ -193,7 +194,7 @@ _ioapic_eoi_source(struct intsrc *isrc, int locked) ioapic_write(io->io_addr, IOAPIC_REDTBL_LO(src->io_intpin), low1); low1 = src->io_lowreg; - if (src->io_masked != 0) + if (src->io_masked != 0 || src->io_valid == 0) low1 |= IOART_INTMSET; ioapic_write(io->io_addr, IOAPIC_REDTBL_LO(src->io_intpin), low1); @@ -268,7 +269,9 @@ ioapic_enable_source(struct intsrc *isrc) mtx_lock_spin(&icu_lock); if (intpin->io_masked) { - flags = intpin->io_lowreg & ~IOART_INTMASK; + flags = intpin->io_lowreg; + if (intpin->io_valid) + flags &= ~IOART_INTMASK; ioapic_write(io->io_addr, IOAPIC_REDTBL_LO(intpin->io_intpin), flags); intpin->io_masked = 0; @@ -375,7 +378,7 @@ ioapic_program_intpin(struct ioapic_intsrc *intpin) low |= IOART_INTAHI; else low |= IOART_INTALO; - if (intpin->io_masked) + if (intpin->io_masked || !intpin->io_valid) low |= IOART_INTMSET; switch (intpin->io_irq) { case IRQ_EXTINT: @@ -697,11 +700,13 @@ ioapic_create(vm_paddr_t addr, int32_t apic_id, int intbase) intpin->io_activehi = 1; intpin->io_edgetrigger = 1; intpin->io_masked = 1; + intpin->io_valid = 1; } else { intpin->io_bus = APIC_BUS_PCI; intpin->io_activehi = 0; intpin->io_edgetrigger = 0; intpin->io_masked = 1; + intpin->io_valid = 1; } /* @@ -796,6 +801,7 @@ ioapic_set_nmi(ioapic_drv_t io, u_int pin) io->io_pins[pin].io_bus = APIC_BUS_UNKNOWN; io->io_pins[pin].io_irq = IRQ_NMI; io->io_pins[pin].io_masked = 0; + io->io_pins[pin].io_valid = 1; io->io_pins[pin].io_edgetrigger = 1; io->io_pins[pin].io_activehi = 1; if (bootverbose) @@ -817,6 +823,7 @@ ioapic_set_smi(ioapic_drv_t io, u_int pin) io->io_pins[pin].io_bus = APIC_BUS_UNKNOWN; io->io_pins[pin].io_irq = IRQ_SMI; io->io_pins[pin].io_masked = 0; + io->io_pins[pin].io_valid = 1; io->io_pins[pin].io_edgetrigger = 1; io->io_pins[pin].io_activehi = 1; if (bootverbose) @@ -841,6 +848,7 @@ ioapic_set_extint(ioapic_drv_t io, u_int pin) io->io_pins[pin].io_masked = 0; else io->io_pins[pin].io_masked = 1; + io->io_pins[pin].io_valid = 1; io->io_pins[pin].io_edgetrigger = 1; io->io_pins[pin].io_activehi = 1; if (bootverbose)