24 Apr, 2020

1 commit

  • Add build/cross-build dependency check script kselftest_deps.sh
    This script does the following:

    Usage: ./kselftest_deps.sh -[p] [test_name]

    kselftest_deps.sh [-p] gcc
    kselftest_deps.sh [-p] gcc vm
    kselftest_deps.sh [-p] aarch64-linux-gnu-gcc
    kselftest_deps.sh [-p] aarch64-linux-gnu-gcc vm

    - Should be run in selftests directory in the kernel repo.
    - Checks if Kselftests can be built/cross-built on a system.
    - Parses all test/sub-test Makefile to find library dependencies.
    - Runs compile test on a trivial C file with LDLIBS specified
    in the test Makefiles to identify missing library dependencies.
    - Prints suggested target list for a system filtering out tests
    failed the build dependency check from the TARGETS in Selftests
    the main Makefile when optional -p is specified.
    - Prints pass/fail dependency check for each tests/sub-test.
    - Prints pass/fail targets and libraries.
    - Default: runs dependency checks on all tests.
    - Optional test name can be specified to check dependencies for it.

    To make LDLIBS parsing easier
    - change gpio and memfd Makefiles to use the same temporary variable used
    to find and add libraries to LDLIBS.
    - simlify LDLIBS append logic in intel_pstate/Makefile.

    Results from run on x86_64 system (trimmed detailed pass/fail list):
    ========================================================
    Kselftest Dependency Check for [./kselftest_deps.sh gcc ] results...
    ========================================================
    Checked tests defining LDLIBS dependencies
    --------------------------------------------------------
    Total tests with Dependencies:
    55 Pass: 53 Fail: 2
    --------------------------------------------------------
    Targets passed build dependency check on system:
    bpf capabilities filesystems futex gpio intel_pstate membarrier memfd
    mqueue net powerpc ptp rseq rtc safesetid timens timers vDSO vm
    --------------------------------------------------------
    FAIL: netfilter/Makefile dependency check: -lmnl
    FAIL: gpio/Makefile dependency check: -lmount
    --------------------------------------------------------
    Targets failed build dependency check on system:
    gpio netfilter
    --------------------------------------------------------
    Missing libraries system
    -lmnl -lmount
    --------------------------------------------------------
    ========================================================

    Results from run on x86_64 system with aarch64-linux-gnu-gcc:
    (trimmed detailed pass/fail list):
    ========================================================
    Kselftest Dependency Check for [./kselftest_deps.sh aarch64-linux-gnu-gcc ]
    results...
    ========================================================
    Checked tests defining LDLIBS dependencies
    --------------------------------------------------------
    Total tests with Dependencies:
    55 Pass: 41 Fail: 14
    --------------------------------------------------------
    Targets failed build dependency check on system:
    bpf capabilities filesystems futex gpio intel_pstate membarrier memfd
    mqueue net powerpc ptp rseq rtc timens timers vDSO vm
    --------------------------------------------------------
    --------------------------------------------------------
    Targets failed build dependency check on system:
    bpf capabilities gpio memfd mqueue net netfilter safesetid vm
    --------------------------------------------------------
    Missing libraries system
    -lcap -lcap-ng -lelf -lfuse -lmnl -lmount -lnuma -lpopt -lz
    --------------------------------------------------------
    ========================================================

    Signed-off-by: Shuah Khan

    Shuah Khan
     

25 Mar, 2020

1 commit


19 Jun, 2019

1 commit

  • Based on 2 normalized pattern(s):

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license version 2 as
    published by the free software foundation

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license version 2 as
    published by the free software foundation #

    extracted by the scancode license scanner the SPDX license identifier

    GPL-2.0-only

    has been chosen to replace the boilerplate/reference in 4122 file(s).

    Signed-off-by: Thomas Gleixner
    Reviewed-by: Enrico Weigelt
    Reviewed-by: Kate Stewart
    Reviewed-by: Allison Randal
    Cc: linux-spdx@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190604081206.933168790@linutronix.de
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     

09 Apr, 2019

1 commit


17 Jan, 2019

1 commit

  • With gcc 7.3.0:

    gpio-mockup-chardev.c: In function ‘get_debugfs’:
    gpio-mockup-chardev.c:62:3: warning: ignoring return value of ‘asprintf’, declared with attribute warn_unused_result [-Wunused-result]
    asprintf(path, "%s/gpio", mnt_fs_get_target(fs));
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Handle asprintf() failures to fix this.

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Shuah Khan

    Geert Uytterhoeven
     

18 Dec, 2018

1 commit

  • Commit b2d35fa5fc80 ("selftests: add headers_install to lib.mk") added
    khdr target to run headers_install target from the main Makefile. The
    logic uses KSFT_KHDR_INSTALL and top_srcdir as controls to initialize
    variables and include files to run headers_install from the top level
    Makefile. There are a few problems with this logic.

    1. Exposes top_srcdir to all tests
    2. Common logic impacts all tests
    3. Uses KSFT_KHDR_INSTALL, top_srcdir, and khdr in an adhoc way. Tests
    add "khdr" dependency in their Makefiles to TEST_PROGS_EXTENDED in
    some cases, and STATIC_LIBS in other cases. This makes this framework
    confusing to use.

    The common logic that runs for all tests even when KSFT_KHDR_INSTALL
    isn't defined by the test. top_srcdir is initialized to a default value
    when test doesn't initialize it. It works for all tests without a sub-dir
    structure and tests with sub-dir structure fail to build.

    e.g: make -C sparc64/drivers/ or make -C drivers/dma-buf

    ../../lib.mk:20: ../../../../scripts/subarch.include: No such file or directory
    make: *** No rule to make target '../../../../scripts/subarch.include'. Stop.

    There is no reason to require all tests to define top_srcdir and there is
    no need to require tests to add khdr dependency using adhoc changes to
    TEST_* and other variables.

    Fix it with a consistent use of KSFT_KHDR_INSTALL and top_srcdir from tests
    that have the dependency on headers_install.

    Change common logic to include khdr target define and "all" target with
    dependency on khdr when KSFT_KHDR_INSTALL is defined.

    Only tests that have dependency on headers_install have to define just
    the KSFT_KHDR_INSTALL, and top_srcdir variables and there is no need to
    specify khdr dependency in the test Makefiles.

    Fixes: b2d35fa5fc80 ("selftests: add headers_install to lib.mk")
    Cc: stable@vger.kernel.org
    Signed-off-by: Shuah Khan
    Reviewed-by: Khalid Aziz
    Reviewed-by: Anders Roxell
    Signed-off-by: Shuah Khan

    Shuah Khan
     

28 Nov, 2018

1 commit

  • If pkg-config is available, use it to define the CFLAGS and
    LDLIBS needed for libmount; else, use the current hard-coded
    paths and options.

    Using pkg-config is very helpful for cross-compilation
    environments, and is sometimes readily available on developer
    boxes to ensure we get the right compiler/linker options for
    the given package.

    Signed-off-by: Daniel Díaz
    Signed-off-by: Shuah Khan

    Daniel Díaz
     

25 Oct, 2018

2 commits

  • When simply running `make' from the selftests top dir, this
    error shows up:

    cc -O2 -g -std=gnu99 -Wall -I../../../../usr/include/ -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/uuid gpio-mockup-chardev.c ../../../gpio/gpio-utils.o -lmount -o gpio-mockup-chardev
    cc: error: ../../../gpio/gpio-utils.o: No such file or directory
    : recipe for target 'gpio-mockup-chardev' failed
    make[1]: *** [gpio-mockup-chardev] Error 1

    because the output directory is set to "selftests/gpio" and
    all binaries built from ../../../gpio/ end up there. In fact,
    they appear as, exempli gratia:
    * gpiogpio-event-mon
    * gpiogpio-hammer
    * gpioinclude/
    * gpiolsgpio
    which is wrong, as it's missing a directory separator
    somewhere.

    This patch sets straight the output directory when building
    ../../../gpio/ so that binaries don't cross paths.

    Signed-off-by: Daniel Díaz
    Signed-off-by: Shuah Khan (Samsung OSG)

    Daniel Díaz
     
  • This patch cleans up the Makefile by restructuring a couple of
    things, namely:
    1) change explicit paths in targets for variables
    2) substitute a variable (BINARIES) for another, part of the
    selftests build system (TEST_PROGS_EXTENDED)
    3) proper cleaning up of the EXTRA objects

    The resulting Makefile is much more readable and manageable.

    Signed-off-by: Fathi Boudra
    Signed-off-by: Daniel Díaz
    Signed-off-by: Shuah Khan (Samsung OSG)

    Fathi Boudra
     

05 Sep, 2018

1 commit

  • If the kernel headers aren't installed we can't build all the tests.
    Add a new make target rule 'khdr' in the file lib.mk to generate the
    kernel headers and that gets include for every test-dir Makefile that
    includes lib.mk If the testdir in turn have its own sub-dirs the
    top_srcdir needs to be set to the linux-rootdir to be able to generate
    the kernel headers.

    Signed-off-by: Anders Roxell
    Reviewed-by: Fathi Boudra
    Signed-off-by: Shuah Khan (Samsung OSG)

    Anders Roxell
     

09 Jul, 2018

1 commit

  • Following logic from commit: 22f6592b23, GPIOHANDLE_REQUEST_OUTPUT
    should handle errors same way as GPIOHANDLE_REQUEST_INPUT does, or else
    the following error occurs:

    gpio-mockup-chardev: gpio line test flag value: No
    such file or directory

    despite the real result of gpio_pin_test(), gpio_debugfs_get() and
    gpiotools_request_linehandle() functions.

    Signed-off-by: Rafael David Tinoco
    Signed-off-by: Linus Walleij

    Rafael David Tinoco
     

31 May, 2018

1 commit

  • When gpio test is skipped because of unmet dependencies and/or
    unsupported configuration, it exits with error which is treated as
    a fail by the Kselftest framework. This leads to false negative
    result even when the test could not be run.

    Change it to return kselftest skip code when a test gets skipped to
    clearly report that the test could not be run.

    Kselftest framework SKIP code is 4 and the framework prints appropriate
    messages to indicate that the test is skipped.

    Signed-off-by: Shuah Khan (Samsung OSG)

    Shuah Khan (Samsung OSG)
     

02 Nov, 2017

1 commit

  • Many source files in the tree are missing licensing information, which
    makes it harder for compliance tools to determine the correct license.

    By default all files without license information are under the default
    license of the kernel, which is GPL version 2.

    Update the files which contain no license information with the 'GPL-2.0'
    SPDX license identifier. The SPDX identifier is a legally binding
    shorthand, which can be used instead of the full boiler plate text.

    This patch is based on work done by Thomas Gleixner and Kate Stewart and
    Philippe Ombredanne.

    How this work was done:

    Patches were generated and checked against linux-4.14-rc6 for a subset of
    the use cases:
    - file had no licensing information it it.
    - file was a */uapi/* one with no licensing information in it,
    - file was a */uapi/* one with existing licensing information,

    Further patches will be generated in subsequent months to fix up cases
    where non-standard license headers were used, and references to license
    had to be inferred by heuristics based on keywords.

    The analysis to determine which SPDX License Identifier to be applied to
    a file was done in a spreadsheet of side by side results from of the
    output of two independent scanners (ScanCode & Windriver) producing SPDX
    tag:value files created by Philippe Ombredanne. Philippe prepared the
    base worksheet, and did an initial spot review of a few 1000 files.

    The 4.13 kernel was the starting point of the analysis with 60,537 files
    assessed. Kate Stewart did a file by file comparison of the scanner
    results in the spreadsheet to determine which SPDX license identifier(s)
    to be applied to the file. She confirmed any determination that was not
    immediately clear with lawyers working with the Linux Foundation.

    Criteria used to select files for SPDX license identifier tagging was:
    - Files considered eligible had to be source code files.
    - Make and config files were included as candidates if they contained >5
    lines of source
    - File already had some variant of a license header in it (even if
    Reviewed-by: Philippe Ombredanne
    Reviewed-by: Thomas Gleixner
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

25 Apr, 2017

2 commits


22 Apr, 2017

1 commit

  • The gpio test requires to insert the gpio mockup module (CONFIG_GPIO_MOCKUP).
    The gpio mockup driver depends on gpiolib (CONFIG_GPIOLIB).
    CONFIG_GPIO_SYSFS is selected automatically by the gpio mockup driver.

    Tested on x86_64 and arm64 with defconfig and kselftest-merge.

    Signed-off-by: Fathi Boudra
    Signed-off-by: Shuah Khan

    Fathi Boudra
     

12 Jan, 2017

1 commit


13 Dec, 2016

1 commit

  • This test script try to do whitebox testing for gpio subsystem(based on
    gpiolib). It manipulate gpio device through chardev or sysfs and check
    the result from debugfs. This script test gpio-mockup through chardev by
    default. User could test other gpio chip by passing the module name.
    Some of the testcases are turned off by default to avoid the conflicting
    with gpiochip in system.

    In details, it test the following things:
    1. Test direction and output value for valid pin.
    2. Test dynamic allocation of gpio base.
    3. Add single, multi gpiochip to do overlap check.

    Run "tools/testing/selftests/gpio/gpio-mockup.sh -h" for usage.

    Acked-by: Shuah Khan
    Signed-off-by: Bamvor Jian Zhang
    Signed-off-by: Shuah Khan

    Bamvor Jian Zhang