snd_hda: wake display audio and restore amplifier settings
An Intel display-audio codec was observed to remain in D3 after monitor
sleep on DragonFly BSD. Starting a new stream then produced no sound,
and waking the codec alone left the output pin amplifier muted and other
function configuration unrestored.
Read the audio function power state at stream start. If its requested or
actual state is not D0, use the existing power-up routine before
configuring and starting the stream, then restore the function to a
known state:
Restore selectors, pins, EAPD, GPIO/GPO and direct codec patches, then
replay the cached gain and mute values once the pins are configured.
Split widget configuration out of hdaa_audio_commit() into
hdaa_audio_widget_commit() so the wake path can reuse it without
reinitializing the cached amplifier values. Preserve the existing
volume, mute and forced-mute values.
[35 lines not shown]
linker_set: Remove obsolete macros
Removed ABS_SET, BSS_SET, and SET_ENTRY. They were initially
introduced in v1.1 to be used with a.out file. After the migration
to ELFs they are equivalent to TEXT_SET and DATA_SET.
Furthermore, these macros are never used in the src tree.
Event: Oslo Hackathon 2026
Reviewed by: des, jhb
Differential Revision: https://reviews.freebsd.org/D61035
[mlir][ODS] Allow a space-only separator for bit enums (#237149)
Bit enums required a separator containing `|` or `,`, so a flag set
could not be written as bare keywords like LLVM IR's `nuw nsw`, and
dialects wanting that syntax (e.g. ClangIR overflow flags) had to
hand-write an `EnumProp` parser and printer. This allows `separator = "
"` on new-style `BitEnum`s: the generated `FieldParser` reads case
keywords until the next token is not one, symbolize splits on spaces,
and the op-format `enum` directive parses the same way. Like the
existing check for a separator literal, the format verifier rejects a
case literal written right after such an enum, since the parser would
take it as another case. The `BitEnumBase` assert now requires `|`, `,`,
or a space `" "`, where `|` and `,` may be space-padded, so separators
like `"||"` are rejected; legacy `BitEnumAttr` still requires `|` or
`,`. Builds on llvm/llvm-project#237962, which adds the `EnumInfo`
separator accessors.
Assisted-by: Claude Code (Claude Opus 5.5).
system: simplify rc.halt and rc.reboot and use it during firmware upgrades as well
Run stop through our /etc/rc.shutdown hook and use the RC scripts everywhere.
Related to: https://forum.opnsense.org/index.php?topic=53287.0
[ControlFlowHub] Keep the incoming value of a redirected self-loop (#237903)
When reconnectPhis moves a PHI entry for a self-loop of Out (BB == Out)
into the new PHI in the guard block, it replaced the incoming value with
the new PHI itself. That is only right if the incoming value is the
original PHI, and that case is already handled: if the original PHI ends
up with no operands it is replaced by the new PHI everywhere, including
in the new PHI's own operand. Any other value, such as the next value
of an induction variable, was lost.
Keep the incoming value instead. This special case goes back to the
original UnifyLoopExits code, where BB == Out cannot happen.
FixIrreducible
reaches it when the header of an irreducible cycle has a self-loop.
In FixIrreducible/basic.ll the value along the self-loop is now the
input's own undef. In FixIrreducible/undef-phis.ll all the moved values
are now undef, so the PHI is replaced by undef (not poison, after
#237407).
[3 lines not shown]
[Flang][NFC] Remove trivial uses of SearchTypes (#238479)
Second cleanup after #216960
Some uses of `evaluate::SearchTypes` only use for a single TypeCategory.
With KIND not a template parameter anymore and uses only single static
TypeCategory, the visitor code does not need to be polymorphic anymore.
Most of these only look for a specific known-in-advance KIND, such that
we don't even need to loop over all kinds.
For the remaining uses I had the idea to turn `SearchTypes` into a
function that takes a polymorphic lambda. However, some visitor classes
such as `LocationHelper` and `AsConstantHelper` contain more methods
than just the callback method which diminishes the advantage over the
additional change churn.
Change applied using AI
[LoongArch] Load scalars into vector lane 0 with FLD/VLDREPL
Inserting a loaded integer into lane 0 of an undefined vector, which is
also how sub-128-bit vector loads are legalized, was lowered to a scalar
load plus [X]VINSGR2VR. VINSGR2VR merges into its destination, so it
carries a false dependency on the previous value of that register, and
it needs a GPR-to-vector move.
Use FLD.{S/D} for 32/64-bit elements and [X]VLDREPL.{B/H} for 8/16-bit
elements instead. They write the whole register in one instruction.
When the register allocator reuses one vector register for several such
loads, the false dependency serializes otherwise independent chains. In
the GSM autocorrelation loop (9 x i64 multiply-accumulate over i16 taps)
on LA664:
VF2: 0.953s -> 0.724s
VF4: 1.446s -> 0.856s
[Clang] Use fixed triple for more Profile tests (NFC) (#239186)
The index type size will differ between 32-bit and 64-bit platforms,
producing slightly different IR. Use a fixed 64-bit triple to
keep output consistent.
system: simplify rc.halt and rc.reboot and use it during firmware upgrades as well
Run stop through our /etc/rc.shutdown hook and use the RC scripts everywhere.
Related to: https://forum.opnsense.org/index.php?topic=53287.0
[libc] Use a syscall wrapper for pkey_free
This PR move pkey_free behind the centralized syscall wrappers, following libc/docs/dev/syscall_wrapper_refactor.md.
[libc] Use a syscall wrapper for pkey_alloc
This PR move pkey_alloc behind the centralized syscall wrappers, following libc/docs/dev/syscall_wrapper_refactor.md.