aq: Use the common RSS key without options RSS
Fetch the common RSS key independently of options RSS instead of
generating a private key in non-RSS kernels. Keep the existing
software-RSS or round-robin indirection policy and hardware key
serialization unchanged.
Reviewed by: gallatin
MFC after: 2 weeks
Sponsored by: BBOX.io
Differential Revision: https://reviews.freebsd.org/D59793
(cherry picked from commit 772994d7748287be70fe850ec9e1117d4e7b1747)
aq: Report partial initialization failures to iflib
Stop initialization when hardware setup, ring initialization/start, or
datapath start fails. Run the existing best-effort stop/cache/reset
cleanup and report the failure through iflib_init_failed(). Do not keep
configuring later rings or publish the interface as running.
Reviewed by: nprice
MFC after: 2 weeks
Sponsored by: BBOX.io
Differential Revision: https://reviews.freebsd.org/D59853
(cherry picked from commit 050683bb8e136981e4a1f66e845ab05c135630f4)
aq: Invalidate the descriptor cache after stopping all rings
Atlantic controllers can retain receive descriptors and their data
addresses after their rings are disabled. Reusing or releasing those
mappings without invalidating the device cache has caused observed
IOMMU and SMMU faults in the referenced Linux reports (7a1bb49461b1,
ed4d81c4b3f2 and 7526183cfdbe).
Move global cache invalidation out of the per-ring stop routine. Disable
every ring first, toggle invalidation once, and wait for its completion
indication. Exclude Atlantic A0, as in the upstream workaround. Report
a completion timeout rather than silently discarding it.
Reviewed by: nprice
MFC after: 2 weeks
Sponsored by: BBOX.io
Differential Revision: https://reviews.freebsd.org/D59852
(cherry picked from commit 4993c1052f899b9a971815df5661ca241641ad8e)
mgb: Propagate DMA setup errors and use the requested channel
Check the receive DMA and frame transfer setup results that were
previously discarded. Return EINVAL for invalid ring/writeback addresses
rather than reporting success, and stop initialization through
iflib_init_failed() when a ring could not be configured.
Use the transmit queue count for transmit initialization and the supplied
channel index for DMA operations. The driver currently allocates one
queue in each direction, so those index/count corrections are latent.
MFC after: 2 weeks
Sponsored by: BBOX.io
(cherry picked from commit 3f6c1e731376ffaf8612e7e196119acabbf357e4)
mgb: Correct TX interrupt bit
The TX interrupt handler checked MGB_INTR_STS_RX(qidx) instead of
MGB_INTR_STS_TX(qidx) -- presumably a copy-paste issue.
Because the driver does not use TX interrupts so there was no actual
issue in practice.
Reviewed by: adrian
Sponsored by: The FreeBSD Foundation
Fixes: 8890ab7758b8 ("Introduce if_mgb driver for Microchip LAN743x PCIe NIC")
Differential Revision: https://reviews.freebsd.org/D60550
(cherry picked from commit 6c3f2b8be268de075d60387158f2889140851725)
NAS-144261 / 28.0.0-BETA.1 / Accept key_file alone when changing a dataset key (#19991)
## Problem
change_key rejected a request that set only key_file with "Either Key or
passphrase must be provided." because the check ran before the key was
read from the input pipe and only looked at key and generate_key, so an
encryption root could not be changed to a hex key uploaded as a file.
## Solution
Count key_file as a key source in that check and name all four key
options in its error. Combinations of key options are still rejected by
resolve_key_options and an invalid key file still fails in
read_hex_key_from_pipe, both before anything is changed. The integration
test uploads a key file and confirms both the stored key and that ZFS
accepts it.
[LoopSimplify] Use SmallSetVector for dead predecessor removal (#231155)
In `simplifyOneLoop`, `BadPreds` was previously declared as
`SmallPtrSet<BasicBlock*, 4>`. When a non-header loop block had 5 or
more unreachable out-of-loop predecessors, `SmallPtrSet` overflowed its
inline small array and iterated over `BasicBlock*` pointers in hash
order under ASLR. Because `PHINode::removeIncomingValue` swaps each
removed predecessor slot with the last `PHINode` operand, removing dead
predecessors in pointer-hash order permuted the remaining live incoming
blocks in the `PHINode` and produced non-deterministic IR and ThinLTO
bitcode.
Replace `SmallPtrSet<BasicBlock*, 4>` with `SmallSetVector<BasicBlock *,
4>` to deduplicate and remove dead predecessors in deterministic
`predecessors(BB)` order.
Fixes #231143
fix(SelectionDAG): Preserve operand sharing
Demanded-bits simplification can bypass a shared producer without
removing it or its bitwise user. Reusing its previously single-use input
extends its live range and can introduce two-address copies.
Keep the shared value in this case for AND, OR, and XOR. Still bypass
bitwise producers to enable reassociation. Folds that remove the user
and rewrites using already-shared inputs remain available.
Remove three redundant copies in vector-bo-select without target or
subtarget checks.
The RISC-V checks each lose one instruction. GFX9 v_sdiv_i24 moves five
vector operations to scalar operations and adds a final move, growing
by four bytes; the other AMDGPU changes only affect register allocation.
*/fcitx5-*: Bump PORTREVISION after textproc/fcitx5 update
Rebuild the fcitx5 addons that link against textproc/fcitx5 but are
not updated in this batch:
- chinese/fcitx5-keykey
- chinese/fcitx5-mcbopomofo
- japanese/fcitx5-cskk
- japanese/fcitx5-hazkey
- japanese/fcitx5-karukan
- japanese/fcitx5-skk
- textproc/fcitx5-afrim
- textproc/fcitx5-mcfoxim
chinese/fcitx5-table-other: Update to 5.1.8
The package contains only data files, no ELF objects. libime and
fcitx5 are needed at build time (find_package(LibIMETable), and
libime_tabledict to convert the dictionaries), so turn LIB_DEPENDS
into BUILD_DEPENDS and keep a run dependency on fcitx5 only.
chinese/fcitx5-table-extra: Update to 5.1.13
The package contains only data files, no ELF objects. libime and
fcitx5 are needed at build time (find_package(LibIMETable), and
libime_tabledict to convert the dictionaries), so turn LIB_DEPENDS
into BUILD_DEPENDS and keep a run dependency on fcitx5 only.
chinese/fcitx5-chinese-addons: Update to 5.1.15
Add build dependency on devel/nlohmann-json: since 5.1.14,
CMakeLists.txt calls find_package(nlohmann_json 3.2 REQUIRED).
Fix the dependency declarations flagged by stage-qa: boost is only
used for a header (boost/container_hash/hash.hpp), so it is a build
dependency; libfmt is not used at all; the GUI part links against
libFcitx5Qt6WidgetsAddons, not libFcitx5Qt6DBusAddons; and only the
gettext tools (msgfmt) are needed, not libintl.