From nobody Sat Aug 8 00:43:56 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 4hH2MQ24Mwz6mZMD for ; Sat, 08 Aug 2026 00:44:02 +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 4hH2MQ18Qyz3wfR for ; Sat, 08 Aug 2026 00:44:02 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1786149842; 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=S7x/SroJhr3/t1UIdUyHZ8dQgo/4GejZe2SzD8fQ4uU=; b=UnLZvFD84nchKzrJDXratkCh/J1ASScZ+FYKkalEWayhFLb8YAcU/NOZRqWVVTW/OfzsWg atTxqe7bt9un9cGTiw8Wk/EPE8Zk2eALdcOrYtUc0oDJRfswj35TMP4PqF7I8ZcsbgSAHt 7QK9sHaJPhCrIZ6lacKjynSmW51t4nPcSu/BmgYvGqEvDPtj3eKYOVFbPNyCcGLKy2b1sU AzAMt/UuHoojJBHglZTuP1nyouwBb2v4x48UjDyjUQLLJ55Dotu+r6uGdzYxd9tp/7e4Hf HDKNR7II6sjgXX4f1IlyvKIuA9ngATBZ/SnOAcSD5UWwLvtOaBuBJdKdKoOysw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1786149842; a=rsa-sha256; cv=none; b=T9n8QB5Uxn2eNcOHOhS9PsgD0M3W/LjZONfGgQEDDwJAjSlnzic1G1tjEpA93vMGaCMJJ2 8k0m0n1rlHFQHcCv4w1Pa3Jsb9Ob3TI/9mPNAIir7IJ+HczmppiMb95dUpcJGJ/kN+0RZi ww8hsy9b3dlFY5xxcuKDmAf/dMKghwrc+ODsXEh7a4NV2rFLdqTBxEN0Bz9OM4kLFa8N9O T0wI9s+yv9+JJAZukyd0hFgDyrowc7K3RZaRndnkSz6r4zNWRwjVTUQ3iWVIszUYkkkoJu h1ka76ZMpmV8O7PHEguXj2vTPvESUIdNAH3xzgNtELsA76aneZdob3vRkRlo6g== 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=1786149842; 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=S7x/SroJhr3/t1UIdUyHZ8dQgo/4GejZe2SzD8fQ4uU=; b=B9tC+iANqIxShp7wQD/ze4Nydzxe92ueY69qO2ls7FDBCbSzwhqUoWQnyYJ3sUBek8Mc3T zksI2HG1d8DpXfJ5er17fie/olMLWYyuSfKFFQ7ad/Qno9Rdsu8XQS9jLji2z/FjmE7QOY EA6CzWeHFGuvM9JUoJ18cI2agzEK7c33ndQTgj88ztH/qZTHwcAHld6Us+E2X5AT02oi2m ABclDi8miX7Q5ub6ZqG9I2oc+Ex8KCJxYHpC/TpUjI3a5Y1KzqR0HJbFwcz8Sg2f3QhZuK 7gGNobxqKc/b19I1+4CJSoykelmJvxxR0SO5w+NC/HF6CQBz/6d0NfC1HX9GQw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hH2MP6kMXzng for ; Sat, 08 Aug 2026 00:44:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 402f8 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sat, 08 Aug 2026 00:43:56 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kevin Bowling Subject: git: 198908895f18 - stable/14 - e1000: restrict conventional PCI DMA to 32 bits 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: 198908895f18c81d4e645199b5992d6e65922c2f Auto-Submitted: auto-generated Date: Sat, 08 Aug 2026 00:43:56 +0000 Message-Id: <6a767bcc.402f8.3953470b@gitrepo.freebsd.org> The branch stable/14 has been updated by kbowling: URL: https://cgit.FreeBSD.org/src/commit/?id=198908895f18c81d4e645199b5992d6e65922c2f commit 198908895f18c81d4e645199b5992d6e65922c2f Author: Kevin Bowling AuthorDate: 2026-07-31 07:02:22 +0000 Commit: Kevin Bowling CommitDate: 2026-08-08 00:39:45 +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 98c2a5c640a7..867f5cc0cd69 100644 --- a/sys/dev/e1000/if_em.c +++ b/sys/dev/e1000/if_em.c @@ -1224,6 +1224,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 16da6684c30d..272bb5a7ba3f 100644 --- a/sys/dev/e1000/if_em.h +++ b/sys/dev/e1000/if_em.h @@ -543,6 +543,7 @@ struct e1000_softc { int if_flags; int em_insert_vlan_header; u32 ims; + bool allow_64bit_dma; bool in_detach; u32 flags;