From: Dengke Du <dengke.du@windriver.com>
To: <bruce.ashfield@gmail.com>
Cc: openembedded-core@lists.openembedded.org
Subject: Re: [PATCH 1/1] kernel-selftest: add it
Date: Fri, 6 Jul 2018 17:04:25 +0800 [thread overview]
Message-ID: <e314e169-ea01-018b-fffb-998a03aa8cff@windriver.com> (raw)
In-Reply-To: <2756919e455edbd10cabd14ed1cb788cb501c7a0.1530863459.git.dengke.du@windriver.com>
Please ignore this, thanks!
On 2018年07月06日 15:51, Dengke Du wrote:
> The framework for kernel-selftest, this framework contains many aspect,
> such as bpf, we should enable bpf kernel feature, this enable bpf syscall.
>
> How to test?
> On target, enter directory: /opt/kselftest/bpf/, run "./test_align 0 11"
> this command test all the bpf align testcases.
>
> Results:
> Test 0: mov ... PASS
> Test 1: shift ... PASS
> Test 2: addsub ... PASS
> Test 3: mul ... PASS
> Test 4: unknown shift ... PASS
> Test 5: unknown mul ... PASS
> Test 6: packet const offset ... PASS
> Test 7: packet variable offset ... PASS
> Test 8: packet variable offset 2 ... PASS
> Test 9: dubious pointer arithmetic ... PASS
> Test 10: variable subtraction ... PASS
> Test 11: pointer variable subtraction ... PASS
> Results: 12 pass 0 fail
>
> Signed-off-by: Dengke Du <dengke.du@windriver.com>
> ---
> .../kernel-selftest/kernel-selftest.bb | 94 ++++++++++++++++++++++
> meta/recipes-kernel/linux/linux-yocto.inc | 1 +
> 2 files changed, 95 insertions(+)
> create mode 100644 meta/recipes-kernel/kernel-selftest/kernel-selftest.bb
>
> diff --git a/meta/recipes-kernel/kernel-selftest/kernel-selftest.bb b/meta/recipes-kernel/kernel-selftest/kernel-selftest.bb
> new file mode 100644
> index 0000000..c976e7b
> --- /dev/null
> +++ b/meta/recipes-kernel/kernel-selftest/kernel-selftest.bb
> @@ -0,0 +1,94 @@
> +SUMMARY = "Kernel selftest for Linux"
> +DESCRIPTION = "Kernel selftest for Linux"
> +LICENSE = "GPLv2"
> +
> +DEPENDS = " \
> + elfutils \
> + libcap \
> + libcap-ng \
> + fuse \
> + util-linux \
> + rsync-native \
> +"
> +
> +do_configure[depends] += "virtual/kernel:do_shared_workdir"
> +
> +inherit linux-kernel-base kernel-arch
> +
> +do_populate_lic[depends] += "virtual/kernel:do_patch"
> +
> +inherit kernelsrc
> +
> +S = "${WORKDIR}/${BP}"
> +
> +# The LDFLAGS is required or some old kernels fails due missing
> +# symbols and this is preferred than requiring patches to every old
> +# supported kernel.
> +LDFLAGS="-ldl -lutil"
> +
> +EXTRA_OEMAKE = '\
> + CROSS_COMPILE=${TARGET_PREFIX} \
> + ARCH=${ARCH} \
> + CC="${CC}" \
> + AR="${AR}" \
> + LD="${LD}" \
> + EXTRA_CFLAGS="-ldw" \
> + ${PACKAGECONFIG_CONFARGS} \
> +'
> +
> +EXTRA_OEMAKE += "\
> + 'DESTDIR=${D}' \
> + 'prefix=${prefix}' \
> + 'bindir=${bindir}' \
> + 'sharedir=${datadir}' \
> + 'sysconfdir=${sysconfdir}' \
> + 'sharedir=${@os.path.relpath(datadir, prefix)}' \
> + 'mandir=${@os.path.relpath(mandir, prefix)}' \
> + 'infodir=${@os.path.relpath(infodir, prefix)}' \
> +"
> +
> +KERNEL_SELFTEST_SRC ?= "Makefile \
> + include \
> + tools \
> +"
> +
> +# Add bpf selftest now, other can be added later.
> +do_compile () {
> + # Linux kernel build system is expected to do the right thing
> + unset CFLAGS
> + oe_runmake -C ${S}/tools/testing/selftests/bpf
> +}
> +
> +# On target, enter /opt/kselftest/bpf directory, run "./test_align 0 11"
> +# The test_align testcase test the bpf instruction set, the testcase defined here:
> +# https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf.git/tree/tools/testing/selftests/bpf/test_align.c#n47
> +do_install () {
> + # Linux kernel build system is expected to do the right thing
> + unset CFLAGS
> + mkdir -p ${D}/opt/kselftest/bpf
> + install -m 0755 ${B}/tools/testing/selftests/bpf/test_align ${D}/opt/kselftest/bpf/
> +}
> +
> +do_configure[prefuncs] += "copy_perf_source_from_kernel remove_clang_related"
> +python copy_perf_source_from_kernel() {
> + sources = (d.getVar("KERNEL_SELFTEST_SRC") or "").split()
> + src_dir = d.getVar("STAGING_KERNEL_DIR")
> + dest_dir = d.getVar("S")
> + bb.utils.mkdirhier(dest_dir)
> + for s in sources:
> + src = oe.path.join(src_dir, s)
> + dest = oe.path.join(dest_dir, s)
> + if os.path.isdir(src):
> + oe.path.copytree(src, dest)
> + else:
> + bb.utils.copyfile(src, dest)
> +}
> +
> +remove_clang_related() {
> + sed -i -e '/test_pkt_access/d' -e '/test_pkt_md_access/d' ${S}/tools/testing/selftests/bpf/Makefile
> +}
> +
> +PACKAGE_ARCH = "${MACHINE_ARCH}"
> +
> +INHIBIT_PACKAGE_DEBUG_SPLIT="1"
> +FILES_${PN} += "/opt/kselftest/bpf/*"
> diff --git a/meta/recipes-kernel/linux/linux-yocto.inc b/meta/recipes-kernel/linux/linux-yocto.inc
> index 1ebfb60..362d6d8 100644
> --- a/meta/recipes-kernel/linux/linux-yocto.inc
> +++ b/meta/recipes-kernel/linux/linux-yocto.inc
> @@ -72,3 +72,4 @@ addtask kernel_configcheck after do_configure before do_compile
>
> # enable kernel-sample for oeqa/runtime/cases's ksample.py test
> KERNEL_FEATURES_append_qemuall=" features/kernel-sample/kernel-sample.scc"
> +KERNEL_FEATURES_append = " ${@bb.utils.contains('DISTRO_FEATURES', 'ptest', 'features/bpf/bpf.scc', '', d)}"
prev parent reply other threads:[~2018-07-06 9:07 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-07-06 7:51 [PATCH 0/1] kernel-selftest: add it Dengke Du
2018-07-06 7:51 ` [PATCH 1/1] " Dengke Du
2018-07-06 9:04 ` Dengke Du [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=e314e169-ea01-018b-fffb-998a03aa8cff@windriver.com \
--to=dengke.du@windriver.com \
--cc=bruce.ashfield@gmail.com \
--cc=openembedded-core@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox