FreeBSD/src fd9a9cbsys/dev/igc igc_base.h igc_base.c

igc: Disable PCIe L1.2 on I225

I225 devices can incorrectly enter L1 substates while CLKREQ# is
asserted, both while idle and in D3.  Disable ASPM and PCI-PM L1.2 on
I225 to prevent the resulting packet loss.

Keep the I226 workaround ASPM-only because it addresses a separate
traffic exit latency observation.

PR:             265714

(cherry picked from commit 4a28d390f5fbae2483e88805559881b04ccf9a80)
DeltaFile
+22-20sys/dev/igc/if_igc.c
+29-0sys/dev/igc/igc_base.c
+1-0sys/dev/igc/igc_base.h
+52-203 files

FreeBSD/src cf788fbsys/dev/igc igc_base.c

igc: Apply ASPM L1.2 workaround to all I226 devices

Classify I226_LMVP and I226_BLANK_NVM as I226 silicon so they
receive the I226-specific ASPM L1.2 workaround.

PR:             279245
Pull-Request:   https://github.com/freebsd/freebsd-src/pull/2318

(cherry picked from commit cecb0f45cb83349c60514da38fddce83ad042468)
DeltaFile
+5-0sys/dev/igc/igc_base.c
+5-01 files

FreeBSD/src c38cbf6sys/dev/ixgbe if_sriov.c

ixgbe: clear VF head write-back state on reset

VF reset and FLR do not clear the transmit head write-back address
registers.  A previous VF driver can therefore leave DMA write-back
enabled with a stale address for the next driver instance.

After consuming the reset request and disabling the VF queues, clear the
address registers for each queue belonging to that VF.  Derive the queue
count from the active IOV mode so peer queue state is not touched.

Linux commit dbf231af81a7 documents the hardware behavior.  The FreeBSD
implementation follows the local queue mapping and register interfaces.

(cherry picked from commit 6f940ca879cbf691ddf5605d852770cef27847b2)
DeltaFile
+13-0sys/dev/ixgbe/if_sriov.c
+13-01 files

FreeBSD/src a00379esys/dev/ixgbe ixgbe_common.c ixgbe_api.c

ixgbe: dispatch PBA string reads through EEPROM ops

E610 installs a device-specific PBA string reader, but the public API
always calls the generic implementation.  Dispatch through the EEPROM
operation table so device overrides are honored.

Initialize the generic operation for devices that use the ordinary
EEPROM representation.

Obtained from:  Intel ix 3.4.39

(cherry picked from commit 9cf1aa6e68e4b9dd4a77c67b7b902b9221198e7a)
DeltaFile
+3-1sys/dev/ixgbe/ixgbe_api.c
+1-0sys/dev/ixgbe/ixgbe_common.c
+4-12 files

FreeBSD/src 6452e39sys/dev/ixgbe ixgbe_common.c

ixgbe: avoid signed shift when assembling ETrack ID

Obtained from:  Intel ix 3.4.39

(cherry picked from commit 86869d77658aef48b2bab3e57517f88d7bd5389d)
DeltaFile
+4-4sys/dev/ixgbe/ixgbe_common.c
+4-41 files

FreeBSD/src cc7a40bsys/dev/ixgbe ixgbe_common.c

ixgbe: fix host interface timeout detection

The host-interface polling loop was scaled from milliseconds to
microseconds, but its terminal test was left using the unscaled timeout.
Completion at that intermediate iteration can be reported as a timeout,
while actual expiry is not recognized and can accept stale status.

Test against the scaled loop bound used by the polling loop.

Fixes:          f46d75c90f5f ("ixgbe: improve MDIO performance by reducing semaphore/IPC delays")

(cherry picked from commit db2bf4553ce32fdcae00f6e7392a6c2010247dd6)
DeltaFile
+1-1sys/dev/ixgbe/ixgbe_common.c
+1-11 files

FreeBSD/src 91ddf48sys/dev/ixgbe if_sriov.c

ixgbe: disable VF multicast reception for empty list

Clear ROMPE for an empty list and enable it only for a nonempty list.
FreeBSD already clears ROMPE when resetting a VF, so that part of the
DPDK change is not needed.

DPDK commit message

net/ixgbe: fix over using multicast table for VF

VMOLR.ROMPE allows a VF to receive packets matching the shared multicast
table.  Leaving it enabled after the VF removes its last multicast
address lets PF or peer-VF table entries continue selecting that VF.

Signed-off-by: Wei Zhao <wei.zhao1 at intel.com>
Acked-by: Qi Zhang <qi.z.zhang at intel.com>

Obtained from:  DPDK (dc5a6e7422)

(cherry picked from commit 786c71845f80b8bf733d07f9155de9740a8cbc19)
DeltaFile
+4-1sys/dev/ixgbe/if_sriov.c
+4-11 files

FreeBSD/src b1220a1sys/dev/ixgbe if_sriov.c

ixgbe: check negotiated API for VF queue query

The GET_QUEUES handler switches on msg[0], which contains the mailbox
command rather than the negotiated API version.  It therefore cannot
reject API 1.0 or an unnegotiated VF as intended.

Switch on the API version stored for the VF.

(cherry picked from commit 8d1d32942b810d613be45ea78939872711803c3b)
DeltaFile
+1-1sys/dev/ixgbe/if_sriov.c
+1-11 files

FreeBSD/src 0169449sys/dev/ixgbe if_sriov.c

ixgbe: reject VF requests before CTS

A VF that sends a non-reset request before completing reset negotiation
has not received CTS.  The PF ignores the request but currently reports
success, leaving the VF with a false view of the programmed state.

Return failure for the ignored request.  This restores the behavior lost
when the mailbox helpers were renamed.

Fixes:          36c516b31136 ("ixgbe: update if_sriov to use the new mailbox apis")

(cherry picked from commit 9fc83caf48e710c3f6457cab4bdb5e6c76e8be51)
DeltaFile
+1-1sys/dev/ixgbe/if_sriov.c
+1-11 files

FreeBSD/src 3646597sys/dev/ixgbe ixgbe_common.c ixgbe_82598.c

ixgbe: avoid signed overflow in pause time calculation

pause_time is promoted to signed int before multiplication.  Its default
value of 65535 multiplied by 65537 exceeds INT_MAX and triggers UBSAN,
even though the result is assigned to a u32.

Make the multiplier unsigned so the calculation has the intended u32
semantics.  Linux commit 3b70683fc4d6 reported the failure in the generic
path and used the same mechanical correction.  The 82598-specific flow
control operation contains the identical expression, so correct it as well.

(cherry picked from commit 35374c3ec69aa87561431e6236706c485bdeeacc)
DeltaFile
+1-1sys/dev/ixgbe/ixgbe_common.c
+1-1sys/dev/ixgbe/ixgbe_82598.c
+2-22 files

FreeBSD/src b6bff12sys/dev/ixgbe ixgbe_type.h ixgbe_x550.c

ixgbe: fix unaligned access in ixgbe_update_flash_X550()

ixgbe_host_interface_command() treats its buffer as a u32 array.  The
local union contained only byte-sized fields, giving it one-byte stack
alignment and allowing unaligned accesses on strict-align systems.

Add a u32 member to the union to provide the required alignment and
pass that member to ixgbe_host_interface_command().

No functional change is expected on x86.

Obtained from:  Intel ix 3.4.39

(cherry picked from commit 8fa2a7503468abb5f863729c4e244d738239503d)
DeltaFile
+1-2sys/dev/ixgbe/ixgbe_x550.c
+1-0sys/dev/ixgbe/ixgbe_type.h
+2-22 files

FreeBSD/src a6c653esys/dev/ixgbe ixgbe_phy.c

ixgbe: retry incoherent SFP identifier reads

FreeBSD's I2C helper already retries failed transactions.  Limit this
new outer loop to successful reads with an invalid identifier so that
retry budget is not multiplied.

DPDK commit message

net/ixgbe: retry misbehaving SFP read

Some XGS-PON SFPs ACK I2C reads and return uninitialized data while
their microcontroller boots.  A bogus identifier can cause an otherwise
working module to be marked unsupported.

Retry the identifier read several times, checking for both successful
I2C completion and a valid SFP identifier.

Signed-off-by: Stephen Douthit <stephend at silicom-usa.com>
Signed-off-by: Jeff Daly <jeffd at silicom-usa.com>

    [5 lines not shown]
DeltaFile
+17-3sys/dev/ixgbe/ixgbe_phy.c
+17-31 files

FreeBSD/src 8be1e05sys/dev/ixgbe ixgbe_82599.c

ixgbe: check EEPROM read in 82599 D3 path

DPDK commit message

net/ixgbe/base: fix unchecked return value

Check the return value from ixgbe_read_eeprom() before using the
control word to configure link disable during D3.

Fixes:          b7ad3713b958 ("ixgbe/base: allow to disable link on D3")
Cc: stable at dpdk.org

Signed-off-by: Barbara Skobiej <barbara.skobiej at intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov at intel.com>
Acked-by: Bruce Richardson <bruce.richardson at intel.com>

Obtained from:  DPDK (eb3684b191)

(cherry picked from commit a8598143803d8db60568844cae86b0f330e49a1e)
DeltaFile
+5-3sys/dev/ixgbe/ixgbe_82599.c
+5-31 files

FreeBSD/src 44193b7sys/dev/ixgbe if_ix.c

ixgbe: avoid flow control counter overflow

DPDK commit message

net/ixgbe: fix flow control frame byte adjustment

LXONTXC and LXOFFTXC are 32-bit counters for transmitted XON and XOFF
packets.  Their deltas are summed and used to adjust the transmitted
packet and byte counters.

Perform the addition in 64 bits so it cannot wrap before the result is
used for the byte adjustment.

Found by Linux Verification Center (linuxtesting.org) with SVACE.

Fixes:          af75078fece3 ("first public release")
Cc: stable at dpdk.org

Signed-off-by: Daniil Iskhakov <dish at amicon.ru>

    [5 lines not shown]
DeltaFile
+3-3sys/dev/ixgbe/if_ix.c
+3-31 files

FreeBSD/src 9603e94sys/dev/ixgbe ixgbe_e610.c

ixgbe: copy ACI buffer before command retry

DPDK commit message

net/ixgbe/base: add missing buffer copy for ACI

Add the missing buffer copy in ixgbe_aci_send_cmd().

The retry path saves the original descriptor and allocates storage for
the command buffer so both can be restored before another attempt.  It
did not copy the original command buffer into that storage.

Fixes:          25b48e569f2f
Cc: stable at dpdk.org

Signed-off-by: Dan Nowlin <dan.nowlin at intel.com>
Signed-off-by: Yuan Wang <yuanx.wang at intel.com>
Acked-by: Bruce Richardson <bruce.richardson at intel.com>


    [3 lines not shown]
DeltaFile
+1-0sys/dev/ixgbe/ixgbe_e610.c
+1-01 files

FreeBSD/src 8f6561esys/dev/ixgbe if_ixv.c

ixv: fix multicast address enumeration

if_foreach_llmaddr() adds each callback return value to its running
count.  Returning the incremented count made the address indices grow
as 0, 1, 3, 7, and so on, eventually writing beyond the multicast
address array.

Return one address per callback and stop copying when the array is
full, matching the ixv-1.6.12 driver.

Fixes:          ff06a8dbb677 ("Mechanically convert ixgbe(4) to IfAPI")

(cherry picked from commit 6020de5ad154d54c8b9a838f28612c2182330c67)
DeltaFile
+4-2sys/dev/ixgbe/if_ixv.c
+4-21 files

FreeBSD/src d86590bsys/dev/ixgbe ixgbe_mbx.c

ixgbe: fail fast on VF-held PF mailboxes

The active PF mailbox operations use the legacy helpers.  The mailbox API
import changed check_for_msg into a read-only probe and added up to 2,000
500-microsecond lock retries.  If a VF leaves VFU set, the PF cannot acquire
the lock, busy-waits for up to one second, and leaves VFREQ pending so the
delay can repeat.

Give the legacy checker its old consume-on-check behavior so a failed read
does not leave VFREQ asserted.  If VFU is already set, fail immediately
instead of retrying, while preserving retries for PF-side contention.  Do
not force RVFU, which would discard peer transaction state.

(cherry picked from commit 2a678cfeb5838978ef3a1907c686142d03237e15)
DeltaFile
+23-3sys/dev/ixgbe/ixgbe_mbx.c
+23-31 files

FreeBSD/src 15253bdsys/dev/ixgbe ixgbe_vf.c ixgbe_mbx.c

ixgbe: respect peer mailbox ownership

A VF currently treats an existing VFU bit as a successful acquisition,
while the PF checks its own PFU bit before claiming the mailbox.  Check
both the local and peer ownership bits before setting local ownership.
This prevents same-side callers from sharing the mailbox and avoids an
acquisition attempt while the peer owns it.

VFLR does not clear VFMAILBOX.VFU.  Clear stale VF ownership and cached
mailbox status after the reset indication settles and before sending the
reset request, so the ownership check cannot strand a reinitialized VF.

Adapt only the live ownership checks from Intel ix 3.4.39.  Do not import
its upgraded-mailbox changes, which are not active in FreeBSD.

Obtained from:  Intel ix 3.4.39

(cherry picked from commit 409601911b327426a34a6f28b31fdd5d95d1d275)
DeltaFile
+8-2sys/dev/ixgbe/ixgbe_mbx.c
+7-0sys/dev/ixgbe/ixgbe_vf.c
+15-22 files

FreeBSD/src 573ae89sys/dev/ixgbe ixgbe_type.h ixgbe_common.c

ixgbe: isolate VF reset state

IXGBE_VF_INDEX() selects a 32-VF register bank.  PFMBMEM() selects
one mailbox per VF, while ixgbe_toggle_txdctl() calculates queue
offsets from a VF number.  Passing the bank index aliases VF1-31 to
VF0 and VF32-63 to VF1.  Resetting one VF can therefore clear the peer
mailbox and leave its transmit queues disabled.

The VF raises its reset event before posting its mailbox request.  The
PF checks reset events before mailbox messages.  If both are pending,
clearing PFMBMEM during generic reset handling can erase the request
before ixgbe_read_mbx() consumes it.  Clear the mailbox only from the
reset-message handler after the request has been read.

Use the VF number for queue toggling and document that API contract.

(cherry picked from commit 4b67335676b09249c8ef5ea5508655c0b5733618)
DeltaFile
+6-14sys/dev/ixgbe/if_sriov.c
+3-3sys/dev/ixgbe/ixgbe_api.c
+1-1sys/dev/ixgbe/ixgbe_type.h
+1-1sys/dev/ixgbe/ixgbe_common.c
+1-1sys/dev/ixgbe/ixgbe_api.h
+12-205 files

FreeBSD/src a9d71b7sys/dev/igc igc_base.h igc_base.c

igc: Disable ASPM L1.2 on I226 to prevent RX stalls

I226 parts advertise support for the PCIe L1.2 link substate, but a
hardware erratum makes the exit latency from that low-power state
longer than the packet buffer can absorb under load. This stalls the
inbound packet stream. Disabling ASPM system-wide (BIOS or OS ASPM
policy) does not fix it. The L1.2 enable bit must be cleared directly
in the device's own PCIe L1 PM extended capability.

Add igc_is_device_id_i226() to identify affected parts and
igc_disable_broken_aspm_l1_2() to clear the ASPM L1.2 enable bit
on attach and after resume, since PCIe config space can be
reset across a suspend/resume cycle.

Adapted from the Linux igc driver:

  0325143b59c6 igc: disable L1.2 PCI-E link substate to avoid
               performance issue
  1468c1f97cf3 igc: fix disabling L1.2 PCI-E link substate on I226

    [9 lines not shown]
DeltaFile
+44-0sys/dev/igc/if_igc.c
+21-0sys/dev/igc/igc_base.c
+1-0sys/dev/igc/igc_base.h
+66-03 files

FreeBSD/src 56cdca6sys/dev/pci pcireg.h

pci: Add L1 PM definitions

Add register/bit definitions for the L1 PM substates capability
(PCIZ_L1PM) to pcireg.h.

Signed-off-by: Michael Adler <madler at tapil.com>

Pull-Request:   https://github.com/freebsd/freebsd-src/pull/2318

(cherry picked from commit 04f8a6aeeba5cbaa48be7134765ee49d5b1b9857)
DeltaFile
+14-0sys/dev/pci/pcireg.h
+14-01 files

FreeBSD/src ebb6b8esys/dev/e1000 if_em.h if_em.c

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 <netchild at FreeBSD.org>
Tested by:      Alexander Leidinger <netchild at FreeBSD.org>

(cherry picked from commit 41759495769dff87cd4ebbb257d4054128ea5b42)
DeltaFile
+21-0sys/dev/e1000/if_em.c
+1-0sys/dev/e1000/if_em.h
+22-02 files

LLVM/project a8f2f79clang/include/clang/CIR CIRGenerator.h

[CIR] Forward-declare mlir::ModuleOp in CIRGenerator.h (#214767)

Add missing forward decl for `CIRGenerator.h` to make it self
contained..

Found this while trying to create an Clang FrontEnd action in an
out-of-tree project.
Went with a forward decl since its already done in the file +
recommendations from
https://llvm.org/docs/CodingStandards.html#minimal-list-of-includes
DeltaFile
+1-0clang/include/clang/CIR/CIRGenerator.h
+1-01 files

NetBSD/src J3Il7PJtests/usr.bin/grep t_grep.sh

   grep(1): Nix xfail on new test for PR 60552 screw case.

   I was planning to do this in the same commit that fixes it, to keep
   the history of bugs and fixes tidy, but gutteridge@ beat me to
   committing the fix.

   PR bin/60552: /usr/bin/grep failure under AMD64
VersionDeltaFile
1.11+1-11tests/usr.bin/grep/t_grep.sh
+1-111 files

FreeBSD/ports 17af07fgames/linux-steam-utils Makefile distinfo

games/linux-steam-utils: Update 20260711 => 20260731

This is an in-between release upgrade that fixes the client being stuck
in an infinite loop.

PR:             297340
Sponsored by:   UNIS Labs
MFH:            2026Q3

(cherry picked from commit 4af71030cbb62b8b56e4b1aee1b3d73a0104c1fe)
DeltaFile
+3-3games/linux-steam-utils/distinfo
+2-1games/linux-steam-utils/Makefile
+5-42 files

FreeBSD/ports 7ad2fe0games/linux-steam-utils Makefile distinfo

games/linux-steam-utils: Update 20251220 => 20260711

Commit log:
https://github.com/shkhln/linuxulator-steam-utils/compare/20251220...20260711

PR:             296788
Sponsored by:   UNIS Labs

(cherry picked from commit 9b9d93c537d6c0a358dc922ad3cabfe023d16887)
DeltaFile
+3-3games/linux-steam-utils/distinfo
+1-1games/linux-steam-utils/Makefile
+4-42 files

LLVM/project 74d4235bolt/include/bolt/Core Exceptions.h, bolt/lib/Core Exceptions.cpp

[BOLT] Parse .eh_frame CFI programs on demand to reduce memory

BOLT read the entire .eh_frame up front via DwCtx->getEHFrame(), which
parses and caches the CFI instruction program of every CIE/FDE in the
binary for the whole run. On a large binary, this dominated
file-object discovery: CFIProgram::parse accounted for ~6.5 GB and the
cached DWARFDebugFrame ~6.9 GB of live memory. Yet the CFI programs
are only consumed in CFIReaderWriter::fillCFIInfoFor, and only for the
functions BOLT actually disassembles. discoverFileObjects itself needs
nothing but each FDE's address and range for function-boundary checks.

Here we parse .eh_frame for its index only, and decode each function's
CFI program on demand, lazily, only for the functions that really need
it. In a large binary, DWARFDebugFrame::parse drops from 6922.2 MB
to 587.6 MB, the residual being the lightweight FDE/CIE index (entries
without instruction programs), and readSpecialSections falls from
7078.7 MB to 738.6 MB on the tested binary for which BOLT's RSS is
about 80-120GB.
DeltaFile
+26-8bolt/lib/Core/Exceptions.cpp
+20-5bolt/lib/Rewrite/RewriteInstance.cpp
+21-3bolt/include/bolt/Core/Exceptions.h
+67-163 files

Illumos/gate 043d968usr/src/lib/fm/topo/modules/common/zen topo_zen_tn.c topo_zen.c, usr/src/uts/intel/io/amdzen amdzen.h amdzen_topo.h

18297 fmtopo not enumerating AMD CPU info on some systems
Reviewed by: Robert Mustacchi <rm at fingolfin.org>
Reviewed by: Luqman Aden <luqman at oxide.computer>
Reviewed by: Dan Cross <cross at oxidecomputer.com>
Approved by: Dan McDonald <danmcd at edgecast.io>
DeltaFile
+35-13usr/src/uts/intel/io/amdzen/amdzen.c
+25-3usr/src/lib/fm/topo/modules/common/zen/topo_zen.c
+19-5usr/src/lib/fm/topo/modules/common/zen/topo_zen_tn.c
+8-1usr/src/uts/intel/io/amdzen/amdzen_topo.h
+2-1usr/src/uts/intel/io/amdzen/amdzen.h
+89-235 files

FreeBSD/src fd79bf6usr.bin/du du.c du.1

du: Print progress information to stderr

* On SIGINFO, print the current path to stderr rather than stdout.

* Do so immediately, instead of the next time we finish a directory.

* Document this behavior in the manual page.

PR:             296861
MFC after:      1 week
Fixes:          d1588599c024 ("Report the next directory being scanned ...")
Reviewed by:    wollman
Differential Revision:  https://reviews.freebsd.org/D58702
DeltaFile
+11-1usr.bin/du/du.1
+4-4usr.bin/du/du.c
+15-52 files

NetBSD/src 7jDlD5ksys/nfs nfs_vnops.c

   nfs: Avoid UB in integer shift amounts.

   Just use ilog2 explicitly here, instead of writing out a loop with
   shifts and increments to compute it more slowly and buggily.  Note
   the confusing fencepost adjustment.  Clamp _PC_FILESIZEBITS at the
   actual size of off_t since we can't go beyond that.

   PR kern/60554: nfs: integer shift UB in pathconf(_PC_FILESIZEBITS)
VersionDeltaFile
1.329+23-12sys/nfs/nfs_vnops.c
+23-121 files