From nobody Sat Aug 8 00:38:10 2026 X-Original-To: dev-commits-src-branches@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 4hH2Df5zMLz6mYTf for ; Sat, 08 Aug 2026 00:38:10 +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 "YR1" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4hH2Df5P4lz3lwW for ; Sat, 08 Aug 2026 00:38:10 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1786149490; 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=38Sra3cZrEhkmLxOt5/SGqFyN5Wwb0KqjoVdKWTa+Qo=; b=bZEY8I09d+GQ03VaHs8YLnZxD4t3PbDypCFXmf5LhxhelOHtRGdl73FQnRBflioGmCUB5J pEQTkMh8MojWAENLGdaZnciYwAHfR9WW902PPEliqWnxxxCGdRo2YmPoUdP3EN3LPDiFhY BRj3zICRmwbHjGY4YJe4d+2TTV+EE68Q259jRDNL9oOVv0zvPBL2mEc5aW3SXtSV457OPx 0rF/Ij35ZwmO0MkpXEsib91i0gE0Q+xRpoDf0iTlWYiJX7B5nT9yYTsr9Y1CQ+AVxr5Y8l lTdw6ZPZL+j0xhNRBu+Rxa7bMXe81g4E7SLv+GQ7x+vFpQw15t4VIUm6LmTWUg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1786149490; a=rsa-sha256; cv=none; b=pIojURKctP62VbQtKOepDWFHZg5ZGDwkYGFXYY4x9rpRNtStKVgS2GQV73sgx6nzIP+Dvd DCxGAMU5U0EARVfmXFf+fZRO2uxzRVcGzOO+y/cMDX60JsKd8QmwsiRXdNgCKd7whWZ0nx SsvqYHT5yeReK1vnQjeg9QadNNQb0mxPDRdcklJKkG35GJB4W/8dVwJ1gpmb4LKaITqQPD 5SK/GkF1WFqhzjZ8+fKXFGuBEY5At0GRqaLDOW2FoiUJhiPzz9fcg4t8YHlMwtokL5ZvHe aRaC2clQ0d4+9du9f7LzPf7tX2EChdm1t7a/A5tWr8JayHKbbto/evw3MlZ3tQ== 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=1786149490; 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=38Sra3cZrEhkmLxOt5/SGqFyN5Wwb0KqjoVdKWTa+Qo=; b=XMfcguElHX2whh3oYinokqeYptE4TwH0oopXkpY8Qmw7qclm7EcNQhv8uvEDJK82hKwL5e 4MTy3OKzn9Dhqxm+eMSPvq5MHcR99uLfdamDjYTaLkDjEbN1Afr72pMgKuJalI0Q3eeF/m pVtcg+NLhRzYI9ZKdPBVHu6O1/SB6VFC8cMrouCK7gwSms35miSVThNhVAqcn7bWu3aRJA /eY8UEMdp5E+0yz4brK+ybvqiyewvU6IZ8lac8Qsz9F5iAbt6s06OzX7IXxG59WIQcbB+e A0f10qRQvCaIO9sY5y+cYqmsSxkUoY7vmikZ5Q0HhhgjFQKd5xyAwAt2iNO2Fg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hH2Df4D5lzmr for ; Sat, 08 Aug 2026 00:38:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3fa82 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sat, 08 Aug 2026 00:38:10 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kevin Bowling Subject: git: ebb6b8e7e273 - stable/15 - e1000: restrict conventional PCI DMA to 32 bits List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@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: ebb6b8e7e27367437be0248058920023803d9aac Auto-Submitted: auto-generated Date: Sat, 08 Aug 2026 00:38:10 +0000 Message-Id: <6a767a72.3fa82.4a82fdb7@gitrepo.freebsd.org> The branch stable/15 has been updated by kbowling: URL: https://cgit.FreeBSD.org/src/commit/?id=ebb6b8e7e27367437be0248058920023803d9aac commit ebb6b8e7e27367437be0248058920023803d9aac Author: Kevin Bowling AuthorDate: 2026-07-31 07:02:22 +0000 Commit: Kevin Bowling CommitDate: 2026-08-08 00:33:13 +0000 e1000: restrict conventional PCI DMA to 32 bits Some conventional PCI e1000 configurations hang when given DMA addresses above 4 GB, particularly on systems using AMD HyperTransport-to-PCI bridges. Linux has restricted e1000 to DMA32 in PCI mode since 2011 for the same failure class in commit e508be174ad36b0cf9b324cd04978c2b13c21502. Set iflib's DMA width after determining the negotiated bus type. This covers descriptor and packet-buffer mappings while preserving 64-bit DMA for PCI-X and PCIe devices and providing a conditional tunable. PR: 297064 Reported by: Alexander Leidinger Tested by: Alexander Leidinger (cherry picked from commit 41759495769dff87cd4ebbb257d4054128ea5b42) --- sys/dev/e1000/if_em.c | 21 +++++++++++++++++++++ sys/dev/e1000/if_em.h | 1 + 2 files changed, 22 insertions(+) diff --git a/sys/dev/e1000/if_em.c b/sys/dev/e1000/if_em.c index c5e4676f64c7..0e850feb879d 100644 --- a/sys/dev/e1000/if_em.c +++ b/sys/dev/e1000/if_em.c @@ -1226,6 +1226,27 @@ em_if_attach_pre(if_ctx_t ctx) em_setup_msix(ctx); e1000_get_bus_info(hw); + /* + * Some conventional PCI systems hang when e1000 devices use + * DMA addresses above 4 GB. Keep PCI-mode DMA below that boundary + * by default; PCI-X and PCIe retain 64-bit DMA. + */ + if (hw->bus.type == e1000_bus_type_pci) { + SYSCTL_ADD_BOOL(ctx_list, child, OID_AUTO, "allow_64bit_dma", + CTLFLAG_RDTUN, &sc->allow_64bit_dma, 0, + "Allow 64-bit DMA in conventional PCI mode"); + if (sc->allow_64bit_dma) + device_printf(dev, "64-bit DMA in conventional PCI mode. " + "Some chipsets are unstable.\n"); + else { + scctx->isc_dma_width = 32; + device_printf(dev, "32-bit DMA in conventional PCI mode. " + "Set dev.%s.%d.allow_64bit_dma=1 at boot to enable " + "64-bit DMA if the chipset is stable with it.\n", + device_get_name(dev), device_get_unit(dev)); + } + } + /* Set up some sysctls for the tunable interrupt delays */ if (hw->mac.type < igb_mac_min) { em_add_int_delay_sysctl(sc, "rx_int_delay", diff --git a/sys/dev/e1000/if_em.h b/sys/dev/e1000/if_em.h index c7ebad7adaab..0f2d7baafdc8 100644 --- a/sys/dev/e1000/if_em.h +++ b/sys/dev/e1000/if_em.h @@ -556,6 +556,7 @@ struct e1000_softc { int if_flags; int em_insert_vlan_header; u32 ims; + bool allow_64bit_dma; bool in_detach; u32 flags;