From nobody Mon Nov 02 16:27:16 2026 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 4jJHD45dfBz6xxFq for ; Mon, 02 Nov 2026 16:27:16 +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) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 4jJHD4527sz4jp3 for ; Mon, 02 Nov 2026 16:27:16 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1793636836; 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=jOgr44Rq3Rp4LyIbKZvJB7xOgXuX2xmEd6SlettXmOU=; b=gWdQYtwMOfVGGTx2jzHRS60oveA9teLBjCgHW1ffD4pBGQV27tKbTT8cSJsDSZNynsCThy TfrfEs863nlK2bviADV7Ze6YQcKh2Ow0C6fVyAQl8KYvbJNuVuVXCLst4Rj3LGdCsmLh99 j46YBwRmGvzMb6eWpXthKK+chSSPQ4L3X2AyhULIiE6qMpR29LC+R32P31o7iIuHYUvRTZ tovSqVGW3P8M5ZnEoBKAsOkxVLKTMbYVggsMZpFJB6C0En1WQ7Ux0kUn1w1CYdQLbAzVt5 s3h7mWqmK3Ou8DIpy7vwFT3d7oJWjS21vGHZfPp/m9PK6A7vx1sL09ewp38OkA== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1793636836; b=qR1oCPJzMI0drVGBZPqQjTf+5TtkCZ3K78m8czWN3qscTQWtmW0fiIulbctQLZh0ulsYCF OA9RPsM29q/5uKw4/+gg9EQ4xR5/QY3k0LeZ3PwU5VfcW5ZZeGJuHw/kb6rmIDIM3iNsXx kvUn2x9q8RtMU7p7QNX1oxyl0LrNsqQ2hmCuaJmLT7rYDtoszv2/3G2uIEFBjkGkrttcp4 ZZexznDd915RvkXZDiwEBTTiKXzilnon1Lp/wysZOCuSLZ6xV2ydFMXlBWImCv9SKJai7A 4i21f3IaOcOtj46E4TQRmQ5GssNAQovJ21/dIwoKXxXU8Go2VCKKRlRxx6lAcw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1793636836; 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=jOgr44Rq3Rp4LyIbKZvJB7xOgXuX2xmEd6SlettXmOU=; b=hrpUHQIvJUctkJP8UD1V7uJFAiQnA/SqMQNxtKvdbhc0uqzv+DR/+QrXCpM+jqpAagUcvx ZGG9wRM+3OpmV1yoRruYnf3XQf9XI2J+tW0au2CIqAHr9X1owm79YMtMRpex3HJAI9VdwY meuoQ+LSym+B9LzMRcq5q5SvoYxeS0m9y2PEe308nw+sj4VNUNi1GWXniGOFTDwzMTO08E VyqPYa1QG4BUDhJw4bxemDD9AdYEDTHG3bXMNG/Jot1unEGUlZljGdb2o3vzgM4UcCYMGL HHF9sCRjqGVkDZTRCLZQyrNAARdqwPG5rEHp5iCnNDJHLfUX8fKv0MhrazIl7Q== 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 4jJHD44Bmczth4 for ; Mon, 02 Nov 2026 16:27:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 192fe by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 02 Nov 2026 16:27:16 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Cc: Hayzam Sherif From: Mark Johnston Subject: git: 0340fb032881 - main - vmm: Skip TMR rebuilds for edge-to-edge IOAPIC writes List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org List-Id: Commit messages for the main branch of the src repository 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: markj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 0340fb03288166091a8cdf694f5fed20e4c4f9ac Auto-Submitted: auto-generated Date: Mon, 02 Nov 2026 16:27:16 +0000 Message-Id: <6ae8b9e4.192fe.5b728899@gitrepo.freebsd.org> The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=0340fb03288166091a8cdf694f5fed20e4c4f9ac commit 0340fb03288166091a8cdf694f5fed20e4c4f9ac Author: Hayzam Sherif AuthorDate: 2026-11-02 16:21:36 +0000 Commit: Mark Johnston CommitDate: 2026-11-02 16:26:57 +0000 vmm: Skip TMR rebuilds for edge-to-edge IOAPIC writes IOAPIC redirection-table writes rendezvous all active vCPUs to rebuild their vlapic trigger-mode registers when fields other than mask or polarity change. Retargeting an edge-triggered pin incurs this cost even though it does not contribute to the TMR. vioapic_update_tmr() rebuilds the TMR from level-triggered entries only. Skip the rendezvous when the modified entry is edge-triggered both before and after the write. Check the old and new trigger modes so that edge-to-level and level-to-edge transitions still rebuild the TMR. Retain the existing all-vCPU rebuild path, mask/polarity exclusions and remote-IRR handling. Reported by: Wanpeng Qian Reviewed by: Wanpeng Qian , markj MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D60721 --- sys/amd64/vmm/io/vioapic.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/sys/amd64/vmm/io/vioapic.c b/sys/amd64/vmm/io/vioapic.c index a3956785d049..e48f8ba66bcf 100644 --- a/sys/amd64/vmm/io/vioapic.c +++ b/sys/amd64/vmm/io/vioapic.c @@ -370,12 +370,14 @@ vioapic_write(struct vioapic *vioapic, struct vcpu *vcpu, uint32_t addr, pin, vioapic->rtbl[pin].reg); /* - * If any fields in the redirection table entry (except mask - * or polarity) have changed then rendezvous all the vcpus - * to update their vlapic trigger-mode registers. + * Only level-triggered pins contribute to the TMR. If fields + * other than mask or polarity changed and the pin was or is + * level-triggered, rendezvous all the vcpus to update their + * vlapic trigger-mode registers. */ changed = last ^ vioapic->rtbl[pin].reg; - if (changed & ~(IOART_INTMASK | IOART_INTPOL)) { + if ((changed & ~(IOART_INTMASK | IOART_INTPOL)) != 0 && + ((last | vioapic->rtbl[pin].reg) & IOART_TRGRLVL) != 0) { VIOAPIC_CTR1(vioapic, "ioapic pin%d: recalculate " "vlapic trigger-mode register", pin); VIOAPIC_UNLOCK(vioapic);