From nobody Fri Aug 21 00:45:00 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 4hR1mY10Gbz6pPMd for ; Fri, 21 Aug 2026 00:45:01 +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 "YR2" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4hR1mX4WFhz45Ts for ; Fri, 21 Aug 2026 00:45:00 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1787273100; 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=JLhM4qhRXwD0o9EvOpGz5+iOoevGY0jUj4Eo297hD1M=; b=rNT+zKI/EvNPPsA4J3rHjTUq6RhBYYi3bYUJTGznwpUcs4r8fjwl0I6TOBUmZamwdeJlCb O7KMHW40emqRS2AGkheDtjTgjsygmGapvj4k0BQGRE3Rei246fzW430QmAeEMB/qUSJlUK TqjIivvHA/eNQKJt+APapmSHF/qBoicIEvLM3ZYw8B5YpNy9PT9EgR1LLhey0INq6FWfqt TlaK7jp49ousAIH+ksQKsz5tqUAtlcXD5fqQxsE52CliUBCuibY0BVIabS6Hyx1BAdnutV qaDoQr3nTrWlRcfsGnM8N/XAO4tZWSqAQpTqXzQzRdGYGg30XjDebbzYt08XJw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1787273100; a=rsa-sha256; cv=none; b=SborKfGVPhUwFLN4dlZeC7FsVfdgRPM1w6/seGu7ApCuFAras+ci1F0pKJ8wDjddTm5Bgn SuIUEC7yRLDBt3tcm+ovbk+6+hpotS/I0rpfr9cI9APYwcMzenJ4wUWfqA76/VKh0qjhwm xerdX853Rg2J8NAOROh7Rq9pHSPF3SbU+8XkOsSUNEdyqRPS3laPcTSWbDv/9ftWjkV2cH sv+heJT0BzvAiw0rbhV+li8SLVRcV4vEVSOCQGKp/13tFgioawMKt0B2gTJcCdXPK9G5gD Lm2qozndhUD+7UMvNz4/xRfneW/ufAbRQwoEmTcxyPaP+cUf39VLNOxjofy8Ag== 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=1787273100; 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=JLhM4qhRXwD0o9EvOpGz5+iOoevGY0jUj4Eo297hD1M=; b=Hy7n6ISEm0VJ/a+bHKFGBwMwE7LH/vGRrCLKu6+ElB1FRpWkIL+YwunAKCC/r3FS1ftoep EglgauMy9LdpfobTSb2YYN5KoSmvcwpEvb0MHI5meFmpT0J0sTvxYdDPA5UnZHLxgdYgFv Hmlk9Vst8F5IzaBCLSIlKyYBB0Vg8QTEx6QxlPvUXnOtxddyd6XpZ9adWtszI7IRcL/lph C49dzsrTckDF4Y9Pxbu3Tc2yjggsBNVVxyzo6ky7jhAH0APXqAa5Aky/ueq1U9qsq6ArTx mAoQ9IwAyPty4z/4sbeMBRo4+a6Fzp4jGZ8sSoc1xnBs1h3y53Wn6hK31MkdGQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hR1mX2vNmzhVr for ; Fri, 21 Aug 2026 00:45:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 24577 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 21 Aug 2026 00:45:00 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kevin Bowling Subject: git: e1b0391424c6 - stable/14 - pci: Do not reconcile MPS across PCI domains 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: kbowling X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: e1b0391424c6cf44cc0756547a4506e5cf49fd82 Auto-Submitted: auto-generated Date: Fri, 21 Aug 2026 00:45:00 +0000 Message-Id: <6a879f8c.24577.6789887d@gitrepo.freebsd.org> The branch stable/14 has been updated by kbowling: URL: https://cgit.FreeBSD.org/src/commit/?id=e1b0391424c6cf44cc0756547a4506e5cf49fd82 commit e1b0391424c6cf44cc0756547a4506e5cf49fd82 Author: Kevin Bowling AuthorDate: 2026-08-14 05:16:41 +0000 Commit: Kevin Bowling CommitDate: 2026-08-21 00:44:32 +0000 pci: Do not reconcile MPS across PCI domains A PCI function can provide a host bridge into a synthetic PCI domain. Intel VMD does this: the host facing VMD function remains in its original domain while the hidden Root Ports and endpoints appear in a separate domain. The VMD function's Device Control does not describe an upstream link in that synthetic hierarchy. The hierarchy wide cold pass incorrectly used the VMD function's MPS to reprogram the hidden ports and their endpoints. Stop both cold reconciliation and runtime path walks at a PCI domain boundary. The real Root Ports within the VMD domain continue to reconcile their endpoints normally. Reviewed by: imp Tested by: Michael Butler Fixes: 8e9fe9996a1f ("pci: Reconcile MPS before attaching PCIe devices") Sponsored by: BBOX.io Differential Revision: https://reviews.freebsd.org/D58837 (cherry picked from commit 57293f4541cdea8e4158f751a4439f69b3ec1711) --- sys/dev/pci/pci.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/sys/dev/pci/pci.c b/sys/dev/pci/pci.c index 714e0498294f..e96508ab0fe8 100644 --- a/sys/dev/pci/pci.c +++ b/sys/dev/pci/pci.c @@ -4468,6 +4468,13 @@ pcie_path_mps(device_t dev, uint16_t *mpsp) pcib = device_get_parent(bus); if (pcib == NULL || !is_pci_device(pcib)) break; + /* + * A PCI function may expose a host bridge for a synthetic PCI + * domain. Its Device Control belongs to the parent domain and + * does not describe an upstream link in the synthetic hierarchy. + */ + if (pci_get_domain(pcib) != pci_get_domain(dev)) + break; dinfo = device_get_ivars(pcib); if (dinfo->cfg.pcie.pcie_location != 0) { mps = pcie_read_config(pcib, PCIER_DEVICE_CTL, 2) & @@ -4685,6 +4692,13 @@ pcie_reconcile_link_mps(device_t bus) pcib = device_get_parent(bus); if (!is_pci_device(pcib)) return; + /* + * A PCI function may provide a host bridge into a separate domain, + * as Intel VMD does. Do not treat the function's host-facing PCIe + * Device Control as the upstream end of a link in the child domain. + */ + if (pci_get_domain(pcib) != pcib_get_domain(bus)) + return; upinfo = device_get_ivars(pcib); if (upinfo->cfg.pcie.pcie_location == 0) return;