[PM] Move PassInfoMixin to detail namespace
To follow up on the TODO and to prevent backslide (which we have had
quite a bit of).
Reviewers: arsenm, nikic, aengelke, aeubanks
Pull Request: https://github.com/llvm/llvm-project/pull/218198
[CopyProf] Prefer RequirePassInfoMixin
PassInfoMixin will be removed soon. Given these passes are sanitizer
passes, we also probably want them to run regardless of the presence of
optnone.
Reviewers: aeubanks, snehasish
Pull Request: https://github.com/llvm/llvm-project/pull/218197
dpaa: Add LRO and receive callback batching
Reduce the code executed in the DQRR dequeue loop, and move the
heavy-weight operations to post-dequeue loop.
* Batch if_input() after DQRR dispatch loop completes. Only do the
DQRR_CI_CINH write at the end of the loop, so only up to 16 entries
will be processed.
* Add software LRO per FQ. Each per-CPU RX FQ gets its own LRO tracking
structure.
Since LRO is configured at FQ initialization time, allocate the ifnet
earlier in attach to prevent a panic.
dpaa/eth: distribute RX across per-CPU FQs via FMan KeyGen
Grow sc_nrxfqs from 1 to the CPU total, and hash the RX
5-tuple across the range with the KG driver from the prior commit.
Each FQ lands on its own per-CPU QMan channel, so a given core
drains only its own share of RX work and gets frame annotation +
data-head stashed into its cache.
* Add alignment parameter to qman_alloc_fqid_range() to meet KeyGen
requirements.
* Initialize 1 frame queue (FQ) per CPU in dpaa_eth_fm_port_rx_init(),
using a 5-tuple to spread the load across CPUs.
* Channel ownership for TX confirms moved from rx_init/free to
tx_init/free -- sc_rx_channel is now a TX-confirm-only per-port
pool channel.
Fallbacks/degradation:
* If any per-CPU channel is -1 (no portal attached)
the port fails to attach with a clear message.
[4 lines not shown]
dpaa/fman: KeyGen (Parse-Classify-Distribute) driver
Add sys/dev/dpaa/fman_keygen.[ch]. Public API is four functions:
* fman_kg_init(sc) -- Initialize KeyGen subsystem, clear out any stale
config.
* fman_kg_fini(sc) -- Teardown KeyGen
* fman_kg_alloc_hash_scheme(sc, port, base_fqid, nfqs)
-- Allocate a scheme, program it for
RSS-over-IP-5-tuple hashing to nfqs FQs
starting at base_fqid, bind it to port.
* fman_kg_free_hash_scheme(sc, port)
-- Remove a scheme added by
fman_kg_alloc_hash_scheme().
KeyGen state (bitmap + port->scheme table) is added to the fman softc.
Future work may allow configuring the KG hash inputs, but what we have
now (5-tuple of src/src-port/dst/dst-port/IPSec SPI field) is
sufficient.
dpaa_eth: refactor RX FQ state into an array (N=1)
Preparation for FMan KeyGen-driven multi-queue RX. Replace the
single sc_rx_fq / sc_rx_fqid pair with a sc_rx_fqs[] array (currently
one entry) and sc_rx_fqid_base. Each entry carries a back-pointer
to the softc for use by the RX callback.
dpaa/qman: per-CPU pool channel service + FQID range allocator
Add plumbing for future FMan KeyGen-driven multi-queue RX. Pure
infrastructure; no behavioural change for existing single-FQ
consumers.
qman:
* New qman_percpu_channel(cpu) to get the per-CPU channel, needed for
receive-side scaling.
* New qman_alloc_fqid_range(count, *basep) / qman_free_fqid_range()
reserve a contiguous FQID range so a later KeyGen-distribution
caller can compute FQID = base + (hash & mask) and create each FQ
individually with force_fqid=true (each landing on its own
per-CPU channel).
qman_fq_create:
* Honor the force_fqid / fqid_or_align parameters: when force_fqid is
set, use the caller-supplied FQID and skip the internal vmem_alloc.
The fqids_num != 1 restriction is lifted; qman_fq_list[] now records
[4 lines not shown]
Force ACL application on app-owned ix-volume paths
## Problem
The served schema hides `force` for ix-volumes and defaults it to true, but clients submit an explicit false and middleware honours it, so applying an ACL fails with `path contains existing data` as soon as the app has written to its own volume. Once that false is persisted, validation rejects the config before normalization can correct it.
The bad value comes from the UI, which honours `hidden` only on the field carrying it: for an ix-volume the whole `options` block is hidden, so the form still builds a `force` control, seeds it with its own boolean default of false rather than the schema's true, and submits that for a system managed dataset.
## Solution
ix-volumes are system managed, so anything in them is ours - confirmed with Stavros that `force` should always be true for them when an ACL is wanted.
`normalize_ix_volume` stamps `force` to true in place once it has computed the volume's host path, gated on a containment check since `dataset_name` is not validated as a path anywhere. `validate_acl_entries` skips its existing-data probe for anything under `/mnt/.ix-apps/app_mounts` - that tree is ours, and `filesystem.add_to_acl` still refuses an unforced apply over a populated path.
Host path ACLs keep their guard and their false default. The cost is that a host path typed under `app_mounts` now fails from `add_to_acl` rather than validation, so it fails later, after `update_volumes` has created datasets and any sibling ACLs have been applied.
Merge tag 'scftorture.2026.08.18a' of git://git.kernel.org/pub/scm/linux/kernel/git/rcu/linux
Pull smp_call_function() torture-test updates from Paul McKenney:
- Count single_rpc offline failures in statistics output
- Make invoker threads actually wait for all threads to start
* tag 'scftorture.2026.08.18a' of git://git.kernel.org/pub/scm/linux/kernel/git/rcu/linux:
scftorture: Make invoker threads actually wait for all threads to start
scftorture: Count single_rpc offline failures in statistics output
Force ACL application on app-owned ix-volume paths
## Problem
Enabling an ACL on an ix-volume of an installed app fails with `path contains existing data and 'force' was not specified`. The served schema hides the `force` flag for ix-volumes and defaults it to true, but clients can still submit an explicit false, and middleware then faithfully applies it - so the guard trips as soon as the app has written anything into its own volume, which is almost immediately after install. A false which has already been persisted is worse: on the next update validation rejects the config before normalization ever gets a chance to correct it.
## Solution
**Normalization** - `normalize_ix_volume` stamps `force` to true right after it computes the volume's host path, in place, so the dict which gets written back to the app config agrees with the ACL which was actually applied and a stored false heals itself. Doing it there rather than in `normalize_acl` matters twice over: `normalize_acl` is also reached by `host_path_config.acl`, which must keep its data-loss guard, and for volumes whose `acl_entries` carries its own `normalize/acl` ref the child is normalized while descending, before the parent has re-pointed the path - a decision taken then would outlive the re-point. `dataset_name` is not validated as a path anywhere, so the new `is_app_volume_path` containment check is what stops an absolute or `..`-laden one from steering the clamp onto somebody else's data.
**Validation** - `validate_acl_entries` runs before normalization, so a persisted false is rejected before the clamp can heal it. It now skips the existing-data probe for any path under `/mnt/.ix-apps/app_mounts`. That whole tree is created and owned by middleware, so whether it holds data is not middleware's call to refuse a save over, and skipping only drops a pre-flight message - `filesystem.add_to_acl` still refuses an unforced apply over a populated path, and `force` is written in exactly one place, the clamp above, which only ever sets it for the requesting app's own volume. Keying the skip on the shared root rather than on the requesting app keeps it to four lines with no plumbing: no flag threaded through `validate_question`, and no app name threaded into three validators two of which would ignore it.
The exemption is deliberately broader than the requesting app, and it costs one degraded error path plus a widening of an existing partial-apply hazard. A user who sets a storage entry to host path, types a path under `/mnt/.ix-apps/app_mounts`, enables the ACL and leaves force unchecked now gets a late unscoped `Failed to apply ACLs to the following paths` instead of a field-scoped validation error. Failing at `add_to_acl` rather than at validation also means `update_volumes` has already created the ix-volume datasets, and in a multi-ACL config `core.bulk` applies the other ACLs before collecting the failure - so some ACLs land while the config edit rolls back. Both routes still reject, and no ACL is ever applied outside the requesting app's own volume, because the clamp stays app-scoped.
[Mips] Mark immediate branch macros as having delay slots (#217565)
Immediate conditional branch macros expand to real branches with delay
slots, but their pseudo-instruction definitions did not carry
`hasDelaySlot`. Mark them consistently with the register forms so IAS
inserts a delay-slot `nop` under `.set reorder`.
Adds `llvm/test/MC/Mips/macro-bcc-imm-delay-slot.s` covering reordered
and non-reordered expansion.
Fixes #217368
www/qt5-webengine: Fix build on -CURRENT
clang on CURRENT invokes ld.lld, which does not search LOCALBASE.
GN host tools such as character_data_generator then fail with
"unable to find library -levent".
Add USES=localbase:ldflags and LIBRARY_PATH so the host linker
can find ports libraries without relying on GNU ld following the
chromium and qt6-webengine patterns.
Approved by: blanket
libusb: Validate arguments before dereferencing the hotplug context
libusb_hotplug_register_callback() resolves its context with
GET_CONTEXT() and then immediately reads ctx->no_discovery and
ctx->usb_event_mode, but only checks "ctx == NULL" afterwards.
GET_CONTEXT() falls back to usbi_default_context, which is NULL before
libusb_init() and is reset to NULL by libusb_exit(). An application
that calls libusb_hotplug_register_callback(NULL, ...) without an
initialised default context therefore crashes on the ctx->no_discovery
read, instead of getting the LIBUSB_ERROR_INVALID_PARAM the existing
guard was clearly written to return.
Move the argument validation ahead of the first dereference. None of
the validated arguments depend on the context, so no other ordering
constraint is affected.
Signed-off-by: yuvrajnode <yuvrajsinghrock1221 at gmail.com>
Reviewed by: aokblast
[3 lines not shown]
libusb: Fix NULL dereference when a hotplug callback deregisters itself
libusb_hotplug_register_callback() runs the newly registered callback
over the already-enumerated device list when LIBUSB_HOTPLUG_ENUMERATE
is set. A hotplug callback returning non-zero means "deregister me",
and the enumerate loop honours that by freeing the handle and setting
it to NULL.
Since commit 6bda9f26d2ed changed libusb_hotplug_callback_handle from a
pointer to an int, the tail of the function unconditionally dereferences
that handle, so any caller that passes LIBUSB_HOTPLUG_ENUMERATE, a
non-NULL handle pointer, and a callback that returns non-zero on a
matching device crashes inside libusb. This is a normal usage pattern
and it was safe before the conversion, when the equivalent line simply
stored NULL.
Report the reserved id 0 instead. The allocator hands out ids starting
at 1, and libusb_hotplug_deregister_callback() already ignores 0, so
this restores the pre-conversion behaviour.
[6 lines not shown]
[DAG] Remove trivial VP SDNodes. NFC (#217866)
This removes the codegen parts of the trivial VP intrinsics. It's quite
far reaching, but the general categories of code removed are:
- Removing definitions from VPIntrinsics.def
- Legalization and expansion code
- MatchContext used to match over both VP and non-VP nodes
- Some dead DAGCombines and folds in SelectionDAGBuilder
There are still more things to be cleaned up after this, e.g. removing
more of the VPIntrinsic class hierarchy, removing
ExpandVectorPredication/moving expansion into other places, removing
MatchContext from SDPatternMatch
Merge tag 'rcu.2026.08.18a' of git://git.kernel.org/pub/scm/linux/kernel/git/rcu/linux
Pull RCU updates from Paul McKenney:
"Make expedited grace periods expedite normal RCU callbacks
Miscellaneous fixes:
- Improve diagnostic output with character task states
- Mark accesses to inform KCSAN of concurrency design
- Move from kmalloc() to kmalloc_obj()
- Documentation updates
- Improve handling of RCU deferred quiescent states
- Clean up unused function arguments and structure fields
- Reduce show_rcu_gp_kthreads() stack space
Tasks RCU updates:
- Clean up after SRCU re-implementation of Tasks Trace RCU
- Mark accesses to inform KCSAN of concurrency design
- Add ->lazy_timer status to diagnostic output
- Remove an unnecessary memory barrier
[44 lines not shown]
ixl: Make VF reset resource reconstruction fallible
Treat each stage of VF reset and VSI reconstruction as fallible. Keep
the VF out of VFACTIVE when PCIe drain, reset completion, VSI
release, or VSI allocation fails, following the DPDK PF reset model.
Propagate initial reset failures back through pci_iov_vf_add and unwind
the VF queue allocation.
Free the old software filter list before initializing a replacement VSI.
ixl_init_filters() previously replaced the list head without freeing its
entries, so every VF FLR leaked all MAC and VLAN filter objects. Reset
the associated counters and VLAN bitmap with the list.
Avoid allocating an initial VSI only to destroy it during the required
initial VF reset, and remove redundant broadcast/filter programming from
VSI setup. Also delete a partially created VSI when later Admin Queue
setup fails.
(cherry picked from commit ee52b925fa08158e510d5dddfd1c8fa26f120575)
www/osrm-backend: Fix build: 'deadline_timer' is deprecated: Use system_timer
In file included from /wrkdirs/usr/ports/www/osrm-backend/work/osrm-backend-0ae940c31566df2aec0ecd679c84c11ede9831ef/src/tools/r
outed.cpp:1:
In file included from /wrkdirs/usr/ports/www/osrm-backend/work/osrm-backend-0ae940c31566df2aec0ecd679c84c11ede9831ef/include/ser
ver/server.hpp:4:
/wrkdirs/usr/ports/www/osrm-backend/work/osrm-backend-0ae940c31566df2aec0ecd679c84c11ede9831ef/include/server/connection.hpp:53:
18: error: 'deadline_timer' is deprecated: Use system_timer [-Werror,-Wdeprecated-declarations]
53 | boost::asio::deadline_timer timer;
| ^
/usr/local/include/boost/asio/deadline_timer.hpp:36:1: note: 'deadline_timer' has been explicitly marked deprecated here
36 | BOOST_ASIO_DEPRECATED_MSG("Use system_timer")
| ^
/usr/local/include/boost/asio/detail/config.hpp:1484:47: note: expanded from macro 'BOOST_ASIO_DEPRECATED_MSG'
1484 | # define BOOST_ASIO_DEPRECATED_MSG(msg) [[deprecated(msg)]]
| ^
1 error generated.
- Add -Wno-deprecated-declarations to the CXXFLAGS.
[7 lines not shown]
ixl: Validate VF virtchnl configuration
Bound variable-length virtchnl messages before computing their expected
length, following the newer Intel virtchnl implementation.
Validate VF ring sizes and alignments before programming HMC contexts.
DPDK uses 128-byte ring alignment and 64 through 8160 descriptors;
the virtchnl ABI further specifies TX multiples of 8 and RX multiples
of 32. Preserve the 4096-descriptor limit on X722.
Validate queue bitmaps before changing any rings, validate all queue
and interrupt contexts before applying a request, and reject invalid
RSS table entries. Also avoid sending an ACK after VLAN-strip setup
fails and reply to delete-VLAN errors with the correct opcode.
These checks prevent malformed or oversized requests from an untrusted
VF from partially programming resources outside its allocation.
(cherry picked from commit e779914354db5cb3a20f4ec894d08b0f81d05ba2)
ixl: Initialize VF sysctl contexts before use
The VF array is zeroed at allocation, but its sysctl contexts were
only populated after each VF was successfully added. If VF setup
failed, IOV teardown still passed every requested VF context to
sysctl_ctx_free(). An untouched context is not an initialized empty
TAILQ and caused a page fault during teardown.
Initialize every VF context with the array so both successful setup
and partial-failure cleanup have a valid lifetime.
(cherry picked from commit ae122c5443882ae4d3d19aacfcfd16a2c8d7b688)
iavf: Honor iflib transmit completion batching
iavf uses descriptor writeback by default. Hardware writes completion
status into a transmit descriptor only when it completes a descriptor
marked RS. iavf marked every packet RS even though its report-status
queue recorded and inspected only descriptors selected by iflib. The
other completion writes could not help reclaim descriptors.
iflib marks selected packets with IPI_TX_INTR as completion
checkpoints. It forces a checkpoint as deferred work or ring pressure
grows. Retain EOP on every packet, but set RS only at those
checkpoints.
The deprecated head-writeback option on 700-series VFs gets the same
batching: each RS checkpoint permits hardware to publish the completed
ring head.
DPDK uses the same sparse RS design. Let iflib choose the adaptive
interval for FreeBSD. This is a PCIe/memory bandwidth savings.
[2 lines not shown]
ixl: Honor iflib transmit completion batching
ixl uses head writeback by default. Hardware publishes the transmit
ring head through DMA only after completing a descriptor marked RS.
Marking every packet requested much more frequent head updates than
iflib needs to reclaim descriptors.
iflib marks selected packets with IPI_TX_INTR as completion
checkpoints. It forces a checkpoint as deferred work or ring pressure
grows. Retain EOP on every packet, but set RS only at those
checkpoints. This batches head writebacks while preserving bounded
descriptor reclamation.
The optional descriptor writeback mode benefits as well. ixl already
recorded only IPI_TX_INTR descriptors in its report-status queue, so
status written for every other packet was not inspected.
DPDK uses the same sparse RS design. Let iflib choose the adaptive
interval for FreeBSD. This is a PCIe/memory bandwidth savings.
[2 lines not shown]
iavf: Recover when PF communication is unavailable
A PF reset or loss of virtchnl service can make visible interface
initialization wait up to ten seconds and then return from the void
ifdi_init callback. Iflib consequently marks the interface running even
though its queues were not initialized, and no retry is scheduled when
the PF returns.
Check reset readiness without polling during reinitialization, propagate
queue-message submission errors, and bound a silent enable or disable to
one mailbox timeout. Report unsuccessful initialization to iflib and
publish link-down state without polling the stopped mailbox.
A VFLR also discards the Admin Queue and permits the PF to replace the
VF VSI. Track when full virtchnl rediscovery is required, renegotiate the
API version, refresh and validate the VF resources before using a cached
VSI ID, and replay the MAC and VLAN filters cleared by reset. Bound each
runtime discovery attempt while preserving the existing attach-time wait.
[5 lines not shown]