From nobody Fri Aug 21 00:34:22 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 4hR1XH22zVz6pNNt for ; Fri, 21 Aug 2026 00:34:23 +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 4hR1XH0nyhz42qw for ; Fri, 21 Aug 2026 00:34:23 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1787272463; 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=yFcZy9ZxP5bcHFMctL8nqbWGK6NUFcJ/l6gWUwVRXCs=; b=qdAfsXpjoL5l6aaoNIrIPEF1qMlqB/mGn+j0x4zFDzCWVHsHES9K5PPL9MVqDFJlywZb1F gfpF5J+yD3jBYyq4Qz3dtew+dTNE4jI2WweKLLrYo/62O1pj8EfgTkW7/ySx9eBvw90c1V oUFefDPYHfynBNJEslma+I0IP3YuRjCoeszoGjpkK0JgWpcdYxiL6hhVA6MGzGuvnA2al4 7cqt9jkSXQsWx8NLiJ5tRyAh7FTAPvkZ4GgfSCIOdEF10VPRXgf1C0dpOu7pSxAli8Rf9A 1r+EO35zIn+JgfcFG/OxyXlKWmLw6UzAD/nsV1x8vJ+VyIKqWJzHL0dslT6AtQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1787272463; a=rsa-sha256; cv=none; b=s8sZXCw748QaA369XpFGZgsJLwne+ndg7aHZUUzK0ujTzhGami7IRgxRnDbx2d2OwttwtA XQnk5V36E+iup2ZElO55tm/s4LNgQCx4qzJoCk46OVWiLwOKYAQTn6CKgkV3nWJBeoIe6p vO1Knk77J7ERst7UC7h5b9xpCCbHem8kcLkdzJEF3i/jbVuSwqZ1S4ICmcAJ2T4iGvIq15 vZgINd75tJnQRKhdHYM2AFCp3D95/Jql2EOUAOOaV+5T2kn2r+0GpsyBm5lZG0WB8JiKjz bpI61yoUzRE9iXMccUdIKnGw53jEb8/4pjdm7yeJpsBt5xaD/BJKO5b1oIDSjQ== 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=1787272463; 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=yFcZy9ZxP5bcHFMctL8nqbWGK6NUFcJ/l6gWUwVRXCs=; b=eK41Rt3I9A3HMMrxzwNvDdJqmqlrqvS41lciQbcR2WYadnssoJqltTlEJTityI5VSRNWEp whU/WP3wPR/xmnh5LZQSetCh+Xhl9oDhrpN7tO4olvZPLKI87WntVWM5SnR/AC1cy7E4Wg cCkKNRNKrFle8M15/a9RcIbWZzK7nIwfjPiVy2OJ96hRBqupMxzYxvxigZFji/x/IkJ+rS HOFa25Vi+2NtzzSeRz80IZvi+CqEcDR3L2s2p4Mge0KE7H4IEwVVnEhoyT3RIwSXQZ1bhO IsNtSMR22MkqH3iE34MhBKOCIljOsNY2kUvJuWu8zP3kmijd8y06WoaFI4jCng== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hR1XG6fqtzglQ for ; Fri, 21 Aug 2026 00:34:22 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 23142 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 21 Aug 2026 00:34:22 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kevin Bowling Subject: git: d701acea1e63 - stable/15 - 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/15 X-Git-Reftype: branch X-Git-Commit: d701acea1e638304aa8099dd54ea6a639c31490d Auto-Submitted: auto-generated Date: Fri, 21 Aug 2026 00:34:22 +0000 Message-Id: <6a879d0e.23142.44aa18ff@gitrepo.freebsd.org> The branch stable/15 has been updated by kbowling: URL: https://cgit.FreeBSD.org/src/commit/?id=d701acea1e638304aa8099dd54ea6a639c31490d commit d701acea1e638304aa8099dd54ea6a639c31490d Author: Kevin Bowling AuthorDate: 2026-08-14 05:16:41 +0000 Commit: Kevin Bowling CommitDate: 2026-08-21 00:34:12 +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 f40f68a48db9..a3cfd45e72ba 100644 --- a/sys/dev/pci/pci.c +++ b/sys/dev/pci/pci.c @@ -4489,6 +4489,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) & @@ -4706,6 +4713,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;