LLVM/project 4b85bb8clang/test/Parser GH214128.cpp

Update test CH214128.cpp added in #219799 to work in C++20 mode. (#220016)

Internally we have changed our compiler to default to C++20 mode instead
of C++17 which causes the test added in #219799 to fail.

With the test as it currently is, compiling with C++20 mode gives the
following output:
```
GH214128.cpp:3:6: error: expected '>'                                                                
    3 | i < 0                                                                                                                                    
      |      ^                                                                                                                                   
GH214128.cpp:3:3: note: to match this '<'                                                            
    3 | i < 0                                                                                                                                    
      |   ^                                                                                                                                      
GH214128.cpp:8:1: error: expected unqualified-id                                                     
    8 | void f() {                                                                                                                               
      | ^                                                                                                                                        
2 errors generated.
```

    [23 lines not shown]
DeltaFile
+11-5clang/test/Parser/GH214128.cpp
+11-51 files

LLVM/project 6b7a864llvm/lib/Transforms/ObjCARC ObjCARCOpts.cpp, llvm/test/Transforms/ObjCARC basic.ll test_autorelease_pool.ll

[ObjCARC] Move autorelease-to-release conversion to pool pop site instead of converting in place (#152353)

Instead of converting objc_autorelease(x) to objc_release(x) in place
(which requires checking for uses of x between the autorelease and the
pool pop), insert the release just before the matching
autoreleasePoolPop. This is safe because objc_autorelease does not
change the refcount; it only registers the object for a deferred release
at pool drain time. Removing the autorelease and placing an explicit
release at the drain point is semantically equivalent.
DeltaFile
+112-9llvm/lib/Transforms/ObjCARC/ObjCARCOpts.cpp
+59-6llvm/test/Transforms/ObjCARC/test_autorelease_pool.ll
+1-1llvm/test/Transforms/ObjCARC/basic.ll
+172-163 files

LLVM/project b043e59clang/lib/ScalableStaticAnalysis/Analyses/EntityPointerLevel EntityPointerLevel.cpp, clang/lib/ScalableStaticAnalysis/SourceTransformation/Transformations CppBoundedBuffers.cpp

[SSAF][clang-reforge] Add end-to-end clang-reforge tests (#219085)

- Make CppBoundedBuffers adapt to flattened WPA results;
- Let CppBoundedBuffers use qualified EntityNames so that it can
associate ASTNodes with WPA results;
- Add end-to-end tests

Final step of:
rdar://185840466
DeltaFile
+623-0clang/test/Analysis/Scalable/source-edit-generation/end-to-end-cpp-bounded-buffers.cpp
+25-9clang/lib/ScalableStaticAnalysis/SourceTransformation/Transformations/CppBoundedBuffers.cpp
+22-4clang/unittests/ScalableStaticAnalysis/SourceTransformation/CppBoundedBuffersTest.cpp
+1-1clang/lib/ScalableStaticAnalysis/Analyses/EntityPointerLevel/EntityPointerLevel.cpp
+671-144 files

FreeBSD/ports 148f5ecbiology/bbmap distinfo Makefile, biology/bbmap/files patch-calcmem.sh

biology/bbmap: Update to 40.02

Many fixes and improvements since v39.34
Changes: https://github.com/bbushnell/BBTools/commits/master/

Reported by:    portscout
DeltaFile
+1,415-272biology/bbmap/pkg-plist
+9-8biology/bbmap/Makefile
+3-3biology/bbmap/files/patch-calcmem.sh
+3-3biology/bbmap/distinfo
+1,430-2864 files

LLVM/project e2e8caflldb/docs/use/tutorials custom-frame-recognizers.md, lldb/source/Plugins/ScriptInterpreter/Python/Interfaces ScriptedStackFrameRecognizerPythonInterface.cpp

Add the ability to provide a scripted "step through" plan. (#218812)

This is a scripted equivalent of the "trampoline handler" that lldb uses
to run to the target of a dynamic dispatch stub, or to the target of
std::function, or an objc message send.
DeltaFile
+90-0lldb/test/API/commands/frame/recognizer/step-through/recognizer.py
+56-0lldb/test/API/commands/frame/recognizer/step-through/TestFrameRecognizerStepThrough.py
+43-0lldb/source/Plugins/ScriptInterpreter/Python/Interfaces/ScriptedStackFrameRecognizerPythonInterface.cpp
+26-0lldb/docs/use/tutorials/custom-frame-recognizers.md
+17-7lldb/source/Target/StackFrameRecognizer.cpp
+17-0lldb/test/API/commands/frame/recognizer/step-through/main.c
+249-713 files not shown
+333-719 files

LLVM/project aa8a758lld/MachO Config.h Options.td, lld/test/MachO strip-swift-force-load.s

[lld] strip __swift_FORCE_LOAD_$ dyld fixups in __DATA,__const (#214584)

Add a new flag to optionally strip swift FORCE_LOAD symbol sections,
which are used by the compiler to force dylib load commands. This has
shown a ~30% reduction in binds for some large applications, with
corresponding size reduction for the number of elided pointers.

This is based on a similar ld64 optimisation that removes the fixups for
the force load sections:

https://github.com/keith/ld64/blob/37d025c536163da612874999d0ea94a4e4e475e7/src/ld/passes/dylibs.cpp#L385-L389
DeltaFile
+112-0lld/test/MachO/strip-swift-force-load.s
+74-0lld/MachO/StripSwiftForceLoad.cpp
+32-0lld/MachO/StripSwiftForceLoad.h
+6-0lld/MachO/Driver.cpp
+3-0lld/MachO/Options.td
+1-0lld/MachO/Config.h
+228-01 files not shown
+229-07 files

LLVM/project 3e892fallvm/lib/Target/X86 X86ISelLoweringCall.cpp

[llvm][NFC] remove an unused variable (#219889)

Remove a variable `InsIndex` which was defined but never used anywhere.

Signed-off-by: Hardik Kumar <hardikxk at gmail.com>
DeltaFile
+1-2llvm/lib/Target/X86/X86ISelLoweringCall.cpp
+1-21 files

LLVM/project 5406ca3flang/lib/Optimizer/Transforms/CUDA CUFDeviceFuncTransform.cpp, flang/test/Fir/CUDA cuda-device-func-transform.mlir

[flang][cuda] Extend CUF kernel host stub line table to the END statement (#219608)

`CUFDeviceFuncTransform` creates a host stub for a kernel, with an empty
body holding nothing but a `return`. Both the stub and its `return` keep
only the original declaration location, so the stub's line table ends up
with rows only for the declaration line.

This change extends the line table to span the procedure's whole source
line range, by using the location of the original `END` statement for
the stub's `return`. A debugger can then set a breakpoint on a line
inside the kernel body and stop there.

Lit test `cuda-device-func-transform.mlir` is enhanced to guard this
change.
DeltaFile
+16-0flang/test/Fir/CUDA/cuda-device-func-transform.mlir
+8-1flang/lib/Optimizer/Transforms/CUDA/CUFDeviceFuncTransform.cpp
+24-12 files

FreeBSD/src 0211e64sys/compat/linuxkpi/common/src linux_80211.c

LinuxKPI: 802.11: add != NULL check in ieee80211_tx_status_ext()

There seems to be another possible race with net80211 state machine
changing the bss from under us (another lvif_bss_synched case).
Just do the != NULL check to avoid a NULL pointer deref in
ieee80211_ratectl_rate().

(bz extended the original comment and wrote the commit message).

Sponosred by:   The FreeBSD Foundation (commit)
PR:             297184
MFC after:      3 days
DeltaFile
+9-1sys/compat/linuxkpi/common/src/linux_80211.c
+9-11 files

FreeBSD/src 523c399sys/contrib/dev/athk/ath10k pci.c

ath10k: remove some early FreeBSD-specific debugging

The extra DELAY seems to no longer be needed and the dump_stack()
is definitively a problem now.  Remove all this.

Sponsored by:   The FreeBSD Foundation
MFC after:      3 days
DeltaFile
+0-10sys/contrib/dev/athk/ath10k/pci.c
+0-101 files

LLVM/project 6f93872llvm/lib/Target/AMDGPU AMDGPU.td, llvm/lib/TargetParser AMDGPUTargetParser.cpp

AMDGPU: Add visible features for aperture regs, doorbell ID and AGPR alloc (#219985)

These fields are needed to migrate AMDGPUAttributor to using
TargetParser information instead of subtarget features.

Co-authored-by: Claude (Opus 4.8) <noreply at anthropic.com>
DeltaFile
+21-6llvm/lib/Target/AMDGPU/AMDGPU.td
+4-3llvm/lib/TargetParser/AMDGPUTargetParser.cpp
+25-92 files

FreeBSD/src 5a223aeusr.bin/fortune/fortune fortune.6

fortune: Fix tag width in fortune.6 man-page

Reported by: ziaee

Reviewed by:    ziaee
Differential Revision:  https://reviews.freebsd.org/D59242
DeltaFile
+1-1usr.bin/fortune/fortune/fortune.6
+1-11 files

LLVM/project ae35002llvm/test CMakeLists.txt

[Test] Add missing dependency for llvm-ordergen (#219992)

Without this dependency, `llvm-ordergen` is not build when running the
tests only, resulting in failures for the tool.
DeltaFile
+4-0llvm/test/CMakeLists.txt
+4-01 files

FreeBSD/src 91eff10contrib/sqlite3 sqlite3rc.h VERSION, contrib/sqlite3/autosetup sqlite-config.tcl

sqlite3: Vendor import of sqlite3 3.53.3

Release notes at https://www.sqlite.org/releaselog/3_53_3.html.

Obtained from:  https://www.sqlite.org/2026/sqlite-autoconf-3530300.tar.gz

MFC after:      2 weeks

Merge commit 'e698feec080925c6cffa9ec31be884daa5cea536'

(cherry picked from commit 14e3daa72db7d6410877481a4ed2791603e2b99f)
DeltaFile
+1,198-445contrib/sqlite3/sqlite3.c
+109-44contrib/sqlite3/shell.c
+21-7contrib/sqlite3/sqlite3.h
+6-2contrib/sqlite3/autosetup/sqlite-config.tcl
+1-1contrib/sqlite3/sqlite3rc.h
+1-1contrib/sqlite3/VERSION
+1,336-5006 files

FreeBSD/src d461550contrib/sqlite3 sqlite3.h shell.c, contrib/sqlite3/autosetup sqlite-config.tcl proj.tcl

sqlite3: Vendor import of sqlite3 3.53.1

Release notes at https://www.sqlite.org/releaselog/3_53_1.html.

Obtained from:  https://www.sqlite.org/2026/sqlite-autoconf-3530100.tar.g

Merge commit 'b00eb376e3fb28e738f9370552dae9d92c1fdd76' into sqlite3

(cherry picked from commit 5b8f59e648431715e8f5f60ef09c0be4508b3ae6)
DeltaFile
+11,180-5,219contrib/sqlite3/sqlite3.c
+9,171-5,882contrib/sqlite3/shell.c
+753-193contrib/sqlite3/sqlite3.h
+454-141contrib/sqlite3/autosetup/proj.tcl
+505-57contrib/sqlite3/tea/generic/tclsqlite3.c
+182-77contrib/sqlite3/autosetup/sqlite-config.tcl
+22,245-11,56919 files not shown
+22,595-11,83825 files

FreeBSD/src c81e5aacontrib/sqlite3 sqlite3rc.h VERSION, contrib/sqlite3/autosetup sqlite-config.tcl

sqlite3: Vendor import of sqlite3 3.53.3

Release notes at https://www.sqlite.org/releaselog/3_53_3.html.

Obtained from:  https://www.sqlite.org/2026/sqlite-autoconf-3530300.tar.gz

Merge commit 'e698feec080925c6cffa9ec31be884daa5cea536'

(cherry picked from commit 14e3daa72db7d6410877481a4ed2791603e2b99f)
DeltaFile
+1,198-445contrib/sqlite3/sqlite3.c
+109-44contrib/sqlite3/shell.c
+21-7contrib/sqlite3/sqlite3.h
+6-2contrib/sqlite3/autosetup/sqlite-config.tcl
+1-1contrib/sqlite3/sqlite3rc.h
+1-1contrib/sqlite3/VERSION
+1,336-5006 files

FreeBSD/src 3dccdfecontrib/sqlite3 sqlite3.h shell.c, contrib/sqlite3/autosetup sqlite-config.tcl proj.tcl

sqlite3: Vendor import of sqlite3 3.53.1

Release notes at https://www.sqlite.org/releaselog/3_53_1.html.

Obtained from:  https://www.sqlite.org/2026/sqlite-autoconf-3530100.tar.g

Merge commit 'b00eb376e3fb28e738f9370552dae9d92c1fdd76' into sqlite3

(cherry picked from commit 5b8f59e648431715e8f5f60ef09c0be4508b3ae6)
DeltaFile
+11,180-5,219contrib/sqlite3/sqlite3.c
+9,171-5,882contrib/sqlite3/shell.c
+753-193contrib/sqlite3/sqlite3.h
+454-141contrib/sqlite3/autosetup/proj.tcl
+505-57contrib/sqlite3/tea/generic/tclsqlite3.c
+182-77contrib/sqlite3/autosetup/sqlite-config.tcl
+22,245-11,56919 files not shown
+22,595-11,83825 files

NetBSD/pkgsrc FX4Um7ndoc CHANGES-2026

   doc: Updated devel/got to 0.127
VersionDeltaFile
1.5723+2-1doc/CHANGES-2026
+2-11 files

NetBSD/pkgsrc jpngWl2devel/got Makefile distinfo

   devel/got: update to 0.127

   # changes

   * got 0.127; 2026-07-20
   - re-add cmdline tests to 'make regress' target (regression from 0.126)
   - add version flag (-V, --version) to gotd, gotwebd, and gotsysd
   - make 'got merge' accept tags as merge source argument
   - do not raise errors when unversioned files are found during got rm -k
   - add rm -s ? option for deleting unversioned files from the work tree
   - add rm -I option for also deleting ignored unversioned files with rm -s ?
   - make 'tog log' reload the work tree's base-commit info during Ctrl-L refresh
   - fix failures due to trailing slashes in checkout -p path-prefix argument
   - gotwebd: use <meta http-equiv="refresh"> tag to redirect browser after login
   - gotwebd.conf: add option which restores legacy redirect using http status 307
VersionDeltaFile
1.23+4-4devel/got/distinfo
1.30+2-2devel/got/Makefile
+6-62 files

LLVM/project e85d0f7llvm/lib/Transforms/Scalar LoopFuse.cpp, llvm/test/Transforms/LoopFusion store_then_accumulate.ll

[LoopFusion] Allow fusing adjacent loops with same-iteration scalar deps (#216242)

The scalar dependence branch rejected all non-invariant flow deps, while
the array branch already accepted EQ-only direction vectors. Treat
same-iteration scalar flow/anti patterns as safe to fuse when the
dependence direction has no GT/LT component, matching the array logic.

Extra tests are added in
https://github.com/llvm/llvm-project/pull/216243
DeltaFile
+81-0llvm/test/Transforms/LoopFusion/store_then_accumulate.ll
+14-0llvm/lib/Transforms/Scalar/LoopFuse.cpp
+95-02 files

NetBSD/pkgsrc Zc9kdVKdoc CHANGES-2026

   doc: Updated sysutils/fastfetch to 2.67.1
VersionDeltaFile
1.5722+2-1doc/CHANGES-2026
+2-11 files

FreeBSD/src 132f818contrib/lutok aclocal.m4 configure, contrib/lutok/admin config.sub ltmain.sh

contrib/lutok: update from 0.4 to 0.6.2

More information about what's included in the new release can be found
[here](https://github.com/freebsd/lutok/compare/lutok-0.4...lutok-0.6.2).

MFC after:      1 week
Merge commit '447d4fe61d8bf55ffa21698ecee0ac51010a9a0f'
DeltaFile
+23,387-0contrib/lutok/configure
+11,524-0contrib/lutok/admin/ltmain.sh
+8,488-0contrib/lutok/m4/libtool.m4
+2,007-0contrib/lutok/api-docs/html/doxygen.css
+1,802-0contrib/lutok/admin/config.sub
+1,733-0contrib/lutok/aclocal.m4
+48,941-0190 files not shown
+68,466-701196 files

NetBSD/pkgsrc 9ZIpbw3sysutils/fastfetch distinfo Makefile

   sysutils/fastfetch: update to 2.67.1

   # pkgsrc changes

   Requires GCC14 for C23 standard.

   # upstream changes

   # 2.67.1

   Bugfixes:
   * Fixed a `Symbol not found` error when running on macOS 10.15. (#2499, Codec, macOS)
   * Fixed Alacritty font size never being parsed from the TOML config. (#2501, TerminalFont)
   * Fixed bright colors incorrectly being active when the terminal uses a light theme. (#2509, Display)
   * Fixed Ghostty terminal font detection (TerminalFont)
       * Now tries to load the config with the `.ghostty` extension. (#2500)
       * Fixed `font-family` fallback order. (#2510)
   * Some internal cleanups and optimizations.


    [139 lines not shown]
VersionDeltaFile
1.30+4-4sysutils/fastfetch/distinfo
1.53+4-4sysutils/fastfetch/Makefile
+8-82 files

LLVM/project 7b91afalld/MachO Driver.cpp, lld/test/MachO exported-symbols-list-escapes.s

[GlobPattern] add AsLiteral to help lld determine if a symbol is literal (#215854)

lld determines if a `symbolName` is literal by `find_first_of("*?[]")`,
which is not accurate and ignored escape characters, we do the
following:

1. Add a new API `std::optional<std::string> asLiteral(...)` that dumps
the pattern as a literal string if it is one.
2. All `symbolNames` are considered as `GlobPattern` first to leverage
`asLeteral` to help us determine if a string is a literal. The quick
path in during `GlobPattern` construction is `if
(!S.find_first_of(PrefixMetas)) return Pat;`, so for strings without
`*?[]` (most of the `symbolName`s), the performance should be about the
same.
3. `symbolName`s that are literal go back to hashing like lld did before

Added tests in lld and unit test for GlobPattern

---------

Co-authored-by: Ellis Hoag <ellis.sparky.hoag at gmail.com>
DeltaFile
+89-0llvm/unittests/Support/GlobPatternTest.cpp
+73-0lld/test/MachO/exported-symbols-list-escapes.s
+28-0llvm/lib/Support/GlobPattern.cpp
+14-6lld/MachO/Driver.cpp
+11-0llvm/include/llvm/Support/GlobPattern.h
+215-65 files

LLVM/project 51e608flldb/source/Plugins/TypeSystem/Clang TypeSystemClang.cpp, lldb/test/API/lang/cpp/diamond main.cpp TestCppDiamond.py

[lldb][MSABI] Take offset of vbptr into account (#190679)

In the MS ABI, the offset found in the virtual base table is relative to
the virtual base pointer. See Clang's
`MicrosoftCXXABI::emitVBTableDefinition`:
https://github.com/llvm/llvm-project/blob/1a0ca1019d214a24b55a45704dc71fa183672362/clang/lib/CodeGen/MicrosoftCXXABI.cpp#L2247-L2261

We previously assumed the offset was relative to the record's start.

For example for `B` in
```cpp
struct Extra {
  int e1 = 1;
};
struct A {
  int a = 3;
};
struct B : public Extra, public virtual A {
  int b = 4;

    [24 lines not shown]
DeltaFile
+31-0lldb/test/API/lang/cpp/diamond/TestCppDiamond.py
+9-0lldb/test/API/lang/cpp/diamond/main.cpp
+2-0lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.cpp
+42-03 files

FreeBSD/src eaf4397sys/dev/aq aq_dbg.c aq_main.c

aq(4): add a runtime dev.aq.N.debug trace control

The trace_* family (trace/trace_error/trace_warn/trace_detail, used in the
F/W and init/config paths) was gated behind the compile-time
AQ_CFG_DEBUG_LVL, which is 0, so the dbg_level_/dbg_categories_ runtime
variables were dead and tracing could only be enabled by recompiling.

Decouple trace_base_ from AQ_CFG_DEBUG_LVL so it is always compiled and
gated purely at runtime on dbg_level_/dbg_categories_, make those two
variables writable (no longer const, default level 0 = off), and expose
them as dev.aq.N.debug (verbosity) and dev.aq.N.debug_categories
(subsystem mask) sysctls.

The datapath-heavy AQ_DBG_ENTER/PRINT/DUMP macros and the trace_aq_*_descr
descriptor dumps stay behind AQ_CFG_DEBUG_LVL (still 0), so the per-packet
paths are untouched -- trace_* is only used off the datapath.  The two
variables are global (the trace macros reference them directly), so the
per-device sysctls share one backing store, which is fine for a debug
knob.

    [10 lines not shown]
DeltaFile
+3-7sys/dev/aq/aq_dbg.h
+8-0sys/dev/aq/aq_main.c
+2-2sys/dev/aq/aq_dbg.c
+13-93 files

FreeBSD/src 73760c8sys/dev/aq aq_common.h aq_main.c

aq(4): adopt native FreeBSD errno convention

Convert the driver's internal error-handling chain from the Linux
negative-errno convention to FreeBSD positive errno everywhere.

- All `return (-EXXX)` become `return (EXXX)`, `int err = -EXXX` loses
  the sign, and `if (err < 0)` checks become `if (err != 0)` across
  aq_fw.c, aq_fw1x.c, aq_fw2x.c and aq_hw.c.
- mac_soft_reset_flb_ returns ETIMEDOUT/0 instead of a bool so it
  matches its RBL sibling.
- The ETIME and EOK aliases in aq_common.h are removed; all sites use
  ETIMEDOUT and 0 directly, and the `rc = -rc` sign flips in
  aq_if_attach_pre are dropped.

Turn AQ_HW_WAIT_FOR into a statement expression evaluating to 0 on
success or ETIMEDOUT on timeout, assigned explicitly at all seven call
sites, instead of silently assigning ETIMEDOUT to a variable named err
in the caller scope.  A statement expression rather than an inline
function because every call must re-evaluate its condition each

    [26 lines not shown]
DeltaFile
+28-36sys/dev/aq/aq_hw.c
+17-17sys/dev/aq/aq_fw2x.c
+16-16sys/dev/aq/aq_fw.c
+12-12sys/dev/aq/aq_fw1x.c
+13-8sys/dev/aq/aq_main.c
+5-12sys/dev/aq/aq_common.h
+91-1016 files

FreeBSD/src 4e40b09sys/dev/aq aq_fw1x.c aq_fw2x.c

aq(4): modernize and de-Linuxify the vendor driver

Dead-code removal, device_printf(9) logging, style(9) de-Linuxification,
const F/W-ops tables, and readability cleanups.  No change for valid
traffic.

Dead code and logging:
- Remove the sub-gigabit TSO-masking block in the link-state ISR: it
  cleared IFCAP_TSO from the static isc_capabilities record (read only at
  attach / SIOCSIFCAP, never on the datapath), so it never gated TSO and
  only corrupted the validation mask.  The Atlantic has no sub-gigabit TSO
  erratum.
- Tidy the RX buffer-size handling: drop the dead switch(MCLBYTES) in
  aq_if_rx_queues_alloc, rename rx_max_frame_size -> rx_buf_size, and bound
  the per-fragment length from the wb.pkt_len writeback (EBADMSG on
  underflow or a final fragment longer than the RX buffer).
- Drop every __FreeBSD__/__FreeBSD_version branch (FreeBSD 14.0 baseline);
  the pre-13 arms used pre-opaque-if_t APIs since removed and one never
  built.

    [33 lines not shown]
DeltaFile
+70-87sys/dev/aq/aq_hw.c
+19-85sys/dev/aq/aq_main.c
+39-49sys/dev/aq/aq_ring.c
+43-43sys/dev/aq/aq_hw_llh.c
+40-40sys/dev/aq/aq_fw2x.c
+28-28sys/dev/aq/aq_fw1x.c
+239-33210 files not shown
+328-45116 files

FreeBSD/src 682aec2sys/dev/aq aq_hw.h aq_main.c

aq(4): Fix RSS indirection table OOB write and queue distribution

Two related fixes to `aq(4)`'s RSS indirection table handling:

1. Fix an out-of-bounds stack write in `aq_hw_rss_set()`.  RSS table entries are 3 bits (8 queues max), but with more than 8 RX rings `rss_table[]` holds larger values; the 32-bit write then spills one `uint16_t` past `bitary[]` and corrupts the stack, so the NIC never links or the kernel panics.  Mask each value to 3 bits and pack 16 bits at a time to keep the write in bounds.

2. Build the indirection table in `aq_if_attach_post()` with a modulo over `min(rx_rings_count, HW_ATL_RSS_INDIRECTION_QUEUES_MAX)` instead of `i & (rx_rings_count - 1)`, which assumed a power-of-two ring count.

Reviewed by:    adrian
Differential Revision:  https://reviews.freebsd.org/D57240

(cherry picked from commit 57f5252ff8a17aa837f677638cce5885b8a5fb3b)
DeltaFile
+10-2sys/dev/aq/aq_hw.c
+2-1sys/dev/aq/aq_main.c
+2-0sys/dev/aq/aq_hw.h
+14-33 files

FreeBSD/src bf5229dsys/dev/aq aq_fw2x.c

aq(4): take F/W statistics off the iflib core lock (kick-and-read)

The once-per-second statistics refresh ran the whole F/W-mailbox
transaction under iflib's CTX (sx) lock: fw2x_get_stats toggled the MPI
STATISTICS control bit and busy-polled the state register for the
acknowledgement (up to ~25 ms) before downloading the counters, so a slow
F/W response blocked datapath reconfigure / ioctls for the duration.

The per-cast and error counters have no direct-register source -- the
reference Linux atlantic driver and our port both read them out of the
F/W mailbox, and the MSM registers the chip exposes are never used for the
periodic counters.  So rather than poll, adopt the kick-and-read shape the
iflib peer with the same constraint uses (vmxnet3): consume the snapshot
the F/W produced for the *previous* request, then toggle the bit to
request the next one -- no wait.  The F/W finished that previous refresh
~1 s ago, so the download needs no poll, and the toggle write stays
serialized against set_mode by the CTX lock exactly as before.  This
removes the 25 ms poll (and the toggle_mpi_ctrl_and_wait_ helper) from
under the lock; only the fast 16-dword download remains.

    [12 lines not shown]
DeltaFile
+7-54sys/dev/aq/aq_fw2x.c
+7-541 files