loader: add hidden boot menu option and fix verbose/mute interaction
Add loader_menu_hidden="YES" support to hide the boot menu during the
autoboot countdown. Instead of drawing the full menu immediately, a
minimal "Press any key for boot menu..." prompt is shown. Pressing any
key reveals the menu; otherwise the system boots when the countdown
expires. The countdown duration is controlled by autoboot_delay.
Also force boot_mute=NO when verbose boot is enabled from the menu, so
that verbose output is not silenced by the default boot_mute="YES".
Disabling verbose leaves boot_mute untouched per loader.conf.
[NFC][LowerTypeTests] Add AArch64 and X86 jump table tests with debug info (#192735)
It just recommits test copied from non dbg version.
Implementation is https://github.com/llvm/llvm-project/pull/192736.
security/strongswan: Enable ML plugin by default to allow Post-Quantum Key Exchange Methods
Currently ML-DSA (used for Digital Signatures) is a draft in strongswan
(ETA Version 6.1.0 or later). So CNSA 2.0 cannot be fully supported yet.
https://linux-ipsec.org/slides/2025/steffen-pqc-auth-for-ikev2.pdf
But most firewalls (Palo Alto / Fortigate) already support ML-KEM Key
Exchange in addition to standard proposals.
E.g. aes128gcm16-ecp256-ke1_mlkem512.
More details:
https://docs.strongswan.org/docs/latest/config/proposals.html
PR: 294305
Approved by: strongswan at Nanoteq.com (maintainer, timeout 2 weeks)
Sponsored by: UNIS Labs
[offload] Fix synchronization when record replay is enabled (#193291)
When kernel record replay was enabled, the operations on the current
stream were not synchronized. That's because the current stream was
"ignored", and a new stream was used when RR is active. This is invalid
when there are pending operations on the original stream and can lead to
invalid prologue recording data.
This commit addresses this issue by using the original stream and
synchronizing it explicitly before and after kernel launch. This way, we
ensure the operations are completed before performing the prologue and
epilogue data recording. Additionally, the kernel record replay entry
points are moved to the same layer, in `GenericKernelTy::launch()`.
[runtimes] Enable Fortran only with explicit CMAKE_Fortran_COMPILER (#193332)
Only enable Fortran support when the user (or the bootstrapping build)
passes `-DCMAKE_Fortran_COMPILER=...`.
`enable_language(...)` other than C/CXX reveals problems with the
current build system. LLVM likes to add
`-Wl,--color-diagnostics`
to `CMAKE_EXE_LINKER_FLAGS` whenever possible. The problem is that
`CMAKE_EXE_LINKER_FLAGS` is added to the linker line regardless of which
language is used, but `HandleLLVMOptions.cmake` probes only
`CMAKE_CXX_COMPILER`. Other languages' compilers such as
`CMAKE_CUDA_COMPILER` (`nvcc`) or `CMAKE_Fortran_COMPILER` (`gfortran`)
may not accept the flag. CMake then fails when those compilers are "not
able to compile a simple test program." because it does not accept the
`--color-diagnostics` flag.
`CMAKE_EXE_LINKER_FLAGS` does not support generator expression such that
`$<$<COMPILE_LANGUAGE:C,CXX>:-Wl,--color-diagnostics>` does not work
[6 lines not shown]
[BoundsSafety][NFC] Move LateParsedAttribute outside Parser class; move LateParsedAttrList to DeclSpec.h (#192145)
Preparatory refactoring for llvm/llvm-project#179612, which introduces
late parsing of bounds-safety attributes as type attributes. The new
approach needs LateParsedAttribute accessible from DeclSpec.h (to store
late attr pointers in DeclaratorChunk, Declarator, and DeclSpec), which
cannot depend on Parser.h.
- Move LateParsedDeclaration and LateParsedAttribute to namespace level
in Parser.h
- Move LateParsedAttrList to DeclSpec.h with a forward declaration of
LateParsedAttribute
Other LateParsedDeclaration subclasses (LateParsedClass,
LateParsedPragma, LateParsedMemberInitializer, etc.) remain inside
Parser as they are only created and consumed within Parser and don't
need to cross the Parser/Sema boundary.
Support loader arguments in GPU hermetic tests (#193341)
GPU tests require arguments passed to the loader (like llvm-gpu-loader)
to be placed before the test binary on the command line.
Updated LLVMLibCTestRules.cmake to generate a three-part .params file to
separate loader flags from test arguments and pass environment
overrides. Implicitly added LIBOMPTARGET_STACK_SIZE for NVPTX targets.
Modified format.py to parse this new format and position the loader
arguments correctly before the binary.
[libcxx][Github] Bump container version (#193351)
Now that the rebuilt container images are available with an upgraded
Github runner, bump to the latest image.
[LFI][libunwind] Avoid writing to reserved registers on the `aarch64_lfi` target (#192739)
The registers `x25`, `x26`, `x27`, and `x28` are reserved for the
`aarch64_lfi` target and should not be written/used. See
`llvm/docs/LFI.rst` for more details. They contain fixed constants or
temporaries used as part of assembly-level rewrites of load/store
instructions. The rewriter will reject programs that attempt to write to
these registers. It is technically OK to save/read them (in
`UnwindRegistersSave.S`), but there is no point since there is no need
to restore them (and to maintain LFI's security invariant, they in fact
cannot be written).
[CI] Fix cross-project-tests dependencies (#193323)
We error out in CMake otherwise if we do not enable `clang`. Avoid
adding other dependencies for now as they are optional and otherwise
cause us to build them when using cross-project-tests to test other
projects like lld.
[SSAF] Fix -Wunused-variable (#193344)
We currently take the return value of inserting into a map (the iterator
and insertion boolean) to assert on the value of the insertion boolean.
This is unused in non-asserts builds, so mark it [[maybe_unused]] given
we cannot inline due to the insertion having side effects.
linuxkpi: Pass a `const void *` to `krealloc()`
This matches the API on Linux.
Reviewed by: bz
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D56451
linuxkpi: Include <linux/uuid.h> from <linux/mod_devicetable.h>
The DRM generic code started to deppend on this indirect include of
<linux/uuid.h> in Linux 6.12.
Reviewed by: bz, emaste
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D56449
linuxkpi: Passing a size of zero to `krealloc()` frees the pointer
This matches the API on Linux.
Reviewed by: bz
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D56452
linuxkpi: Add `fop_flags` to `struct file_operations`
... along with the `FOP_*` flag constants.
Note that this `fop_flags` field is not used on FreeBSD. It is added to
make the DRM drivers compile out of the box.
The DRM generic code and drivers started this in Linux 6.12.
Reviewed by: bz
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D56450
linuxkpi: Define `MINORBITS`
We can't really define a proper value for this constant because minor
and major are encoded in a complex way on FreeBSD which cannot be
represented with a simple shift.
The DRM generic code started to use it in Linux 6.12.
In this context, `MINORBITS` is used to define an upper limit passed to
`xa_alloc()`. Therefore it is not used to encode or decode minors. It is
used as an arbitrary value. Therefore, we define the constant to 20,
like on Linux.
Reviewed by: bz
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D56447
linuxkpi: Define `sort_r()`
Like Linux `sort()` and FreeBSD `qsort()`, `sort_r()` is a wrapper
around FreeBSD `qsort_r()`.
The i915 DRM driver started to use it in Linux 6.12.
Reviewed by: bz
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D56437
linuxkpi: Add several `guid_*()` functions
The DRM generic code and the amdgpu DRM driver started to use several of
these functions in Linux 6.12. Likewise for `UUID_SIZE`.
Reviewed by: bz
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D56448
linuxkpi: Define diagnostic macros like `might_resched()` or `cant_sleep()`
They are no-ops on FreeBSD.
While here, move the already defined `might_sleep*()` macros from
<linux/wait.h> to <linux/kernel.h> where they belong.
The DRM generic code started to use `might_fault()` in Linux 6.12.
Reviewed by: bz
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D56434
linuxkpi: Define `dev_err_probe*()`
They differ from other `dev_*()` logging functions by returning the
passed error code. The error code is also used to determine if the
message should be logged in the first place and at which log level.
The DRM generic code started to use it in Linux 6.12.
Reviewed by: bz
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D56435
linuxkpi: Define `__GFP_THISNODE`
It is used to force the NUMA node to allocate from. This flag is
unimplemented for now because we don't have an implementation of
`alloc_pages_node()` yet.
The DRM TTM code started to use this flag in Linux 6.12.
Reviewed by: bz
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D56436