filesystems:file_stressor is a 15 minute stress test; its forked children
move to their own process group, escape the per-test timeout and keep the
runner blocked (and silent) until they finish, so ptest-runner kills the
whole suite. Skip it.
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
meta-oe-image-ptest-kernel-selftest on qemux86-64 was killed by
ptest-runner after 34 of 427 tests. Fix the hangs, and a set of
failures found while running the rest of the suite:
- Add coreutils to RDEPENDS: the kselftest runner only enforces
per-test timeouts when timeout(1) is available, and busybox has
no timeout applet by default.
- Skip ftrace:ftracetest-ktap: it has no per-test timeout, and
instances/instance-event.tc can leave a task stuck in D state in
trace_array_get() on linux-yocto 7.2.4, hanging the whole suite.
- Add e2fsprogs-mke2fs to RDEPENDS, mount_setattr_test needs mkfs.ext4.
- selftests/filelock: zero-initialize struct flock in ofdlocks, which
memcmp()s structures with uninitialized padding, and fix its test
plan count (it announces 4 tests but reports 5).
- selftests/cgroup: keep the anon page touches in test_memcontrol
from being removed as dead stores by GCC 16 at -O2.
- selftests/filesystems: chown the idmapped_tmpfile layer directory
into the idmapped range so the mapped caller is not refused.
- Backport "selftests: proc: include fcntl.h in proc-pidns" to fix
the proc selftests build.
Each fix was verified on qemux86-64 by running the affected tests.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
do_compile fails with:
cc1: error: include location "/usr/include/libnl3" is unsafe for
cross-compilation [-Werror=poison-system-directories]
The kernel tools Makefile gets the libnl flags from pkg-config. The
recipe does not inherit pkgconfig, so there is no PKG_CONFIG_SYSROOT_DIR
and the host pkg-config answers with the host include path.
Drop the manual CFLAGS entry, pkg-config now gives the same path.
Signed-off-by: Alper Ak <alperyasinak1@gmail.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Since kernel 7.x tools/include/linux/compiler_types.h includes
<linux/compiler-context-analysis.h>, a no-op stub for the new
compiler-based context analysis annotations. The recipe copies
compiler_types.h out of the kernel tree and rewrites its includes to
local headers, but did not know about the new one, so the build fails:
./compiler_types.h:16:10: fatal error: 'linux/compiler-context-analysis.h' file not found
Copy the new header when the kernel provides it and rewrite the include
like the others.
While here, fix the mangled quoting on the TMPCHECK line, which produced
run.do_compile: line 138: TMPCHECK=grep: command not found
and left TMPCHECK unset. The unquoted [ -n $TMPCHECK ] test then always
succeeded, so the vdso branch was taken regardless of the grep result.
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Nothing cleans ${B} between rebuilds and the kernel makefiles cache
their feature detection results there, so a sysroot-only change (say
binutils leaving DEPENDS) skips the relink and packages a stale
binary that still links libbfd.
Signed-off-by: mark.yang <mark.yang@lge.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
A full check-upgrade-status sweep of meta-oe found 121 recipes reporting
UNKNOWN_BROKEN: their upstream version check resolved no version. This
adds the correct check metadata to each so the version check works again.
Fixes, by mechanism:
- wget/tarball recipes: add UPSTREAM_CHECK_URI + UPSTREAM_CHECK_REGEX
pointing at the real release listing (SourceForge files pages, GitHub
releases pages, GNU/ftp mirrors, distro pools).
- git recipes with release tags in a non-default format: add
UPSTREAM_CHECK_GITTAGREGEX matching the actual tag scheme.
- git repos with no tags at all: UPSTREAM_CHECK_COMMITS = "1".
- recipes whose upstream has no checkable release channel, or whose PV
format cannot be compared against upstream tags (CPAN zero-padded
versions, AUTOINC "git" PVs, dash-separated tags the checker cannot
convert): UPSTREAM_VERSION_UNKNOWN = "1" with an explanatory comment.
Also override GITHUB_BASE_URI for libppd's sibling libcupsfilters where the
github-releases class default pointed at a non-existent org (404).
Only version-check metadata is touched; no SRC_URI, SRCREV, PV, or checksum
is changed, so nothing that gets built is affected. Each fix was verified
with devtool check-upgrade-status: 120 of 121 now resolve (MATCH, UPDATE,
COMMITS, or an honestly-declared UNKNOWN). The remaining recipe (libubox)
already has correct metadata and only fails locally because the git://
port to git.openwrt.org is firewalled on the build host.
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
oe-core 6b2defb521 ("utils: Move functions from utils.bbclass to utils.py")
moved all_multilib_tune_values out of utils.bbclass, so the unqualified name
is no longer available to recipes. Update the packagegroup snippet in the
comment block so that copying it still works.
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
The variable was pruned from oe-core already in 2020 since
commit 3fdd772b419b ("recipes: Remove remaining INC_PR variables")
Signed-off-by: Niko Mauno <niko.mauno@vaisala.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
oe-core commit b980106560 ("lib/oe/kernel: Move python functions from
linux-kernel-base to library code") moved the kernel helpers out of
linux-kernel-base.bbclass into meta/lib/oe/kernel.py and renamed them from
get_kernelXXX to oe.kernel.get_XXX, so get_kernelversion_file no longer exists
and expanding KERNEL_VERSION raises NameError.
turbostat is COMPATIBLE_HOST x86 only, so this does not show up when parsing for
other architectures, but it breaks the same way as zabbix did.
Switch to the new name. The functions now live in the oe library, which is
always available in python expressions, so the linux-kernel-base inherit is no
longer needed -- it only exports KBUILD_BUILD_* now, which is of no use here,
and upstream intends to remove the class entirely.
Signed-off-by: Khem Raj <raj.khem@gmail.com>
binutils 2.47 removed the bfd_boolean compatibility define along with the
TRUE/FALSE macros it brought in, see binutils commit 1d95b744c069 ("Remove
bfd_boolean definition from bfd"). This breaks oprofile:
opagent.c:81:2: error: use of undeclared identifier 'bfd_boolean'
create_bfd.c:68:18: error: 'FALSE' undeclared
Add a patch using bool/false from <stdbool.h> instead, which is what the
bfd API has been returning since binutils 2.36.
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Add a new recipe for crash-trace, a crash utility extension that
displays kernel tracing data and traced events prior to a panic.
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
The upstream crash Makefile CONF_TARGET_ARCH mapping (used when
CROSS_COMPILE is set) enumerates most of OE supported arches
but omits 32-bit arm. Building with CROSS_COMPILE=arm-*
therefore aborts at Makefile parse time:
Makefile:75: *** The current Arch(arm) does not support cross compilation. Stop.
ARM is already a valid crash target (defs.h/configure.c), so add a patch
mapping the normalized "arm" arch to CONF_TARGET_ARCH=ARM like every
other supported arch.
Verified by cross building crash for qemuarm (arm-yoe-linux-gnueabi-):
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Cc: Ricardo Salveti <ricardo.salveti@oss.qualcomm.com>
The cross-canadian variant did not build. Several issues:
1. DEPENDS used :append on top of crash.inc's target DEPENDS. cross-canadian
does not remap DEPENDS to nativesdk, so the target zlib/readline/ncurses/
gmp/mpfr stayed in the dependency set and staged a real target usr/lib into
the recipe sysroot, clashing with the nativesdk toolchain (clang-glue
provides usr/lib as a symlink) during do_prepare_recipe_sysroot. Override
DEPENDS with the nativesdk set instead (matching gdb-cross-canadian) and add
the -native build tools the build needs.
2. do_compile hardcoded ${HOST_PREFIX}gcc, which does not exist on clang based
SDKs (TOOLCHAIN = "clang"), giving "C compiler cannot create executables".
Use the toolchain-aware ${CC}/${CXX} like the other variants.
3. crash's gdb merge re-enters the top-level crash Makefile from gdb's link
rule ("make -C ../.. ... library") without passing the compiler, so crash's
own objects fell back to the Makefile default $(CROSS_COMPILE)gcc and failed
to find a compiler on clang SDKs. Forward CC/CXX through that recursion in
the bundled gdb-16.2.patch; this is harmless where ${cross}-gcc exists.
Verified by building crash, crash-native, crash-cross and
crash-cross-canadian-x86-64 for a clang based SDK (qemux86-64).
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
The bundled gdb 16.2 hard-requires GMP and MPFR (crash 8.0.6 bundled gdb 10.2,
which did not). native.bbclass remaps DEPENDS to their -native variants
automatically, so crash-native builds, but cross.bbclass does not - so
crash-cross failed in gdb's configure with:
configure: error: Building GDB requires GMP 4.2+, and MPFR 3.1.0+.
List the build-host dependencies (gmp/mpfr, plus readline/ncurses that crash
links) explicitly for class-cross.
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
The recipe passed --with-sysroot=${STAGING_DIR_TARGET} to the bundled gdb's
configure. gdb bakes that path in as its default target sysroot, so the
resulting /usr/bin/crash binary embedded the build-time recipe-sysroot path:
File /usr/bin/crash in package crash contains reference to TMPDIR [buildpaths]
This was worked around by demoting the buildpaths QA check to a warning
(ERROR_QA:remove / WARN_QA:append), which only hides the problem - the build
path is still wrong for a binary that runs on the target (or, for the
cross-canadian variant, in the SDK).
Set --with-sysroot=/ instead. crash takes the kernel/vmlinux and dump on its
command line, so gdb's compiled-in default sysroot is irrelevant at runtime;
"/" is both a sane default and contains no build path. With this the binary
no longer references TMPDIR, so the QA suppression can be removed and the
buildpaths check passes for real.
Verified with a clean build for qemux86-64: no buildpaths QA issue and no
TMPDIR references remain in the crash binary.
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
The do_compile:prepend ran "git init && git add . && git commit" inside the
staged gdb-16.2 tree. crash's build does not use git at all - the bundled gdb
is unpacked from a release tarball and merged with plain "patch -p0" - so this
served no purpose and only made the build depend on a working git identity.
In any environment where committer identity is unset, or where commit signing
is enabled globally (commit.gpgsign=true), do_compile fails with:
error: gpg failed to sign the data
fatal: failed to write commit object
Drop the git scaffolding entirely; the gdb patch still applies with patch(1).
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
std::allocator::construct was removed in C++20 (GCC 16 default).
Rewrite 0006-gdbsupport-fix-default-init-alloc to include <memory>
guard the using-declaration to pre-C++17, and add a forwarding
construct() overload.
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
The GDB 10.2 sources still rely on std::allocator::construct, which was
removed in C++20.
This causes the build to fail with errors such as:
default-init-alloc.h:52:12: error:
'construct' has not been declared in 'class std::allocator<...>'
Explicitly build the C++ sources with GNU C++17 to retain compatibility
with the bundled GDB sources.
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Due to the way the kernel-selftest sources are set up, the toplevel
Makefile does not work and `make clean` will always result in a "The
source tree is not clean, please run 'make ARCH=... mrproper'" error.
Avoid running it by setting CLEANBROKEN = "1", so rebuilding the recipe
without a clean (which often happens when the kernel has changed) does
not fail.
Signed-off-by: Nora Schiffer <nora.schiffer@ew.tq-group.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
libcap is needed unconditionally for capability-aware tests such as
breakpoints, cgroup, clone3, futex, ptrace, and seccomp. Add it to
DEPENDS so it is always available at build time and to RDEPENDS so the
installed tests can call cap_get_proc() and friends at runtime.
bash and libgcc are also added to RDEPENDS: bash is required by several
test shell scripts, and libgcc provides libgcc_s.so needed by tests
that use GCC-emitted unwinding stubs.
Signed-off-by: Telukula Jeevan Kumar Sahu <j-sahu@ti.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade minicoredumper from 2.0.7 to 2.0.8.
Remove below patches because they have been merged by 2.0.8
upstream version:
0001-corestripper-Fix-uninitialized-warning.patch
0002-Fix-2038-year-problem-in-timestamp-handling.patch
0001-coreinject-fix-assignment-of-const-qualified-type.patch
Changelog:
===========
* Address multiple compiler warnings and errors found by more recent
toolchains. The issues existed technically, but were not a problem
for real-world usage scenarios.
* Relocate the man pages for sbin binaries to section 8.
* Fix timestamp value in the core dump directory name for 32-bit
systems with a 64-bit time_t definition after 2038-01-19.
* Improve status query for init script to check core_pattern usage and
handle when the regd daemon is not enabled.
* Known problems:
- If tar is active, core files larger than 8GB will be
truncated. If it is known that the core files will be >8GB and
the full core file is needed, tar must be disabled.
License-Update:
The COPYING changes in upstream commit 941079541a
update Copyright end dates to reflect when changes were last committed.
The COPYING.LGPLv2.1 change in upstream commit 00e3b2fdf7 replaces
the FSF postal mailing address with a URL as recommended by the GNU FAQ.
No license change, no impact on the recipe licensing.
Signed-off-by: Li Zhou <li.zhou@windriver.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Backport a patch from kernel to fix the following build errors.
bbpf.c: In function ‘kallsyms_cb’:
| libbpf.c:8192:13: error: assignment discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers]
| 8192 | res = strstr(sym_name, ".llvm.");
| | ^
| libbpf.c: In function ‘avail_kallsyms_cb’:
| libbpf.c:11497:31: error: assignment discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers]
| 11497 | if (!(sym_sfx = strstr(sym_name, ".llvm.")))
| | ^
| libbpf.c: In function ‘resolve_full_path’:
| libbpf.c:12085:35: error: assignment discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers]
| 12085 | next_path = strchr(s, ':');
| |
Signed-off-by: He Zhe <zhe.he@windriver.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Some headers come from 'mm' (in the top source directory, i.e. the root of
Linux's sources), as in the exampels below:
Makefile:LOCAL_HDRS += $(selfdir)/mm/local_config.h $(top_srcdir)/mm/gup_test.h
cow.c:#include "../../../../mm/gup_test.h"
gup_longterm.c:#include "../../../../mm/gup_test.h"
gup_test.c:#include <mm/gup_test.h>
hmm-tests.c:#include <mm/gup_test.h>
uffd-unit-tests.c:#include "../../../../mm/gup_test.h"
Add this directory to KERNEL_SELFTEST_SRC if 'mm' PACKAGECONFIG is enabled.
Signed-off-by: João Marcos Costa <joaomarcos.costa@bootlin.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Add numa (numactl), as required by rmap, migration, and others.
Add liburing, otherwise some tests would be disabled.
Moreover, liburing's availability is checked in a shell script executed
prior to the compilation of the individual test cases. This script,
however, does not read CFLAGS.
Backport a fix [1] from mainline to address this issue.
[1] https://github.com/torvalds/linux/commit/7f532d19c8be76ad2fcd7ab6b0c9eb618f70966b
Signed-off-by: João Marcos Costa <joaomarcos.costa@bootlin.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
The support of libhugetlbfs was removed from mainline Linux a while ago,
since v6.1 [1].
Since libhugetlbfs was the main reason to remove 'mm' selftests for some
specific architectures, the respective operations should only remove bpf.
Update the recipe to remove libhugetlbfs as a dependency of mm, and thus
unblock this test category for some targets.
[1] https://github.com/torvalds/linux/commit/6f83d6c74ea5a5b267be85206822da280cae110a
Signed-off-by: João Marcos Costa <joaomarcos.costa@bootlin.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
User space-side features
* bpf_map__set_exclusive_program() and bpf_map__exclusive_program() APIs for exclusive map creation;
* bpf_program__assoc_struct_ops() and bpf_prog_assoc_struct_ops() APIs to associate a non-struct_ops BPF program with a struct_ops map;
* btf__permute() API to rearrange BTF types in-place according to a provided mapping;
* BTF type lookup optimization: binary search for btf__find_by_name() and btf__find_by_name_kind();
* btf__add_btf() now accepts split BTF sources;
* fsession support (SEC("fsession+") / SEC("fsession.s+"));
* BPF_F_CPU and BPF_F_ALL_CPUS flags support for per-CPU map operations;
* arena globals are moved to the end of the arena mmap region if kernel supports it;
* support for LLVM-generated indirect jump tables (BPF ISA v4) via .jumptables ELF section and BPF_MAP_TYPE_INSN_ARRAY maps;
* avoid expensive kallsyms parsing when kprobe.session target is an exact function match;
* new dont_enable option in struct bpf_perf_event_opts to suppress perf event auto-enablement;
BPF-side features
* USDT SIB (Scale-Index-Base) addressing support;
* dynptr helper signatures (bpf_dynptr_from_mem, bpf_dynptr_read, bpf_dynptr_write, bpf_dynptr_data) widened from 32-bit to 64-bit size/offset parameters;
Bug fixes
* As usual, a number of bug fixes included, see full commit log for details.
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Current builds were extracting the relevance from LDFLAGS, which is
not the right thing to do. cflags carry the right elements to ensure
reproducibility with OE, so ensure its respected by makefile
Fixes
WARNING: agent-proxy-1.97-r0 do_package_qa: QA Issue: File /usr/bin/.debug/agent-proxy in package agent-proxy-dbg contains reference to TMPDIR [buildpaths]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
rtla source code is present in the kernel source tree at tools/tracing/rtla.
There is another build option for rtla to enable bpf bindings, this was
not a quick one to get working and left as a future improvement.
Makefile for rtla has evolved in newer kernels (v6.9). Some fixes needed for
support with older kernels. This commit was tested against 6.18 and 6.8.
Also add rtla to packagegroup-meta-oe-benchmarks.
Signed-off-by: Peter Bergin <peter@berginkonsult.se>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
When having a DEPENDS against cpupower it need to leave its header files.
Remove that cleanup that has been present since the beginning of the recipe
without any (to me) known reason.
cpupower ship a systemd service and config file in kernel source tree
since kernel 6.16. Package them as a separate package cpupower-systemd to
be installed if wanted.
Add cpupower to packagegroup-meta-oe to be included in builds of all
packages.
Signed-off-by: Peter Bergin <peter@berginkonsult.se>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
tmon is a monitoring and testing tool for Linux kernel thermal
subsystem, it help visualize, tune, and test this complex system.
Signed-off-by: Liwei Song <liwei.song@windriver.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
The minicoredumper has multiple 2038 year problems where 'long' type
variables and strtol() function calls cause overflow on 32-bit systems
when handling timestamps after 2038-01-19.
This leads to incorrect timestamp formatting in core dump directory
names (e.g., sleep40s.20380119.031407+0000.598).
Fix by changing 'long timestamp' to 'time_t timestamp' and replacing
strtol() with strtoll() to properly handle 64-bit timestamps on
32-bit systems.
Signed-off-by: Jiaying Song <jiaying.song.cn@windriver.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>