Skip to content
Permalink
Pratik-Rajesh-…
Switch branches/tags

Commits on Apr 12, 2021

  1. selftest/cpuidle: Add support for cpuidle latency measurement

    The cpuidle latency selftest provides support to systematically extract,
    analyse and present IPI and timer based wakeup latencies for each CPU
    and each idle state available on the system.
    
    The selftest leverages test-cpuidle_latency module's debugfs interface
    to interact and extract latency information from the kernel.
    
    The selftest inserts the module if already not inserted, disables all
    the idle states and enables them one by one testing the following:
    1. Keeping source CPU constant, iterate through all the CPUS measuring
      IPI latency for baseline (CPU is busy with cat /dev/random > /dev/null
      workload) and then when the CPU is allowed to be at rest
    2. Iterating through all the CPUs, sending expected timer durations to
      be equivalent to the residency of the deepest idle state enabled
      and extracting the difference in time between the time of wakeup and
      the expected timer duration
    
    The timer based test produces run to run variance on some intel based
    systems that sport a mechansim "C-state pre-wake" which can
    pre-wake a CPU from an idle state when timers are armed. For systems and
    architectures that don't have this mechansim can leverage timer tests
    with the -i option.
    
    To run this test specifically:
    $ sudo make -C tools/testing/selftests TARGETS="cpuidle" run_tests
    
    There are a few optional arguments too that the script can take
            [-h <help>]
            [-i <run timer tests>]
            [-m <location of the module>]
            [-o <location of the output>]
            [-v <verbose> (run on all cpus)]
    Default Output location in: tools/testing/selftest/cpuidle/cpuidle.log
    
    To run the test without re-compiling:
    $ cd tools/testing/selftest/cpuidle/
    $ sudo ./cpuidle.sh
    
    Signed-off-by: Pratik Rajesh Sampat <psampat@linux.ibm.com>
    pratiksampat authored and intel-lab-lkp committed Apr 12, 2021
  2. cpuidle: Extract IPI based and timer based wakeup latency from idle s…

    …tates
    
    Introduce a mechanism to fire directed IPIs from a specified source CPU
    to a specified target CPU and measure the difference in time incurred on
    wakeup.
    
    Also, introduce a mechanism to queue a HR timer on a specified CPU and
    subsequently measure the time taken to wakeup the CPU.
    
    Finally define a simple debugfs interface to control the knobs to fire
    the IPI and Timer events on specified CPU and view their incurred idle
    wakeup latencies.
    
    Signed-off-by: Pratik Rajesh Sampat <psampat@linux.ibm.com>
    pratiksampat authored and intel-lab-lkp committed Apr 12, 2021

Commits on Apr 7, 2021

  1. selftests/resctrl: Change a few printed messages

    Change a few printed messages to report test progress more clearly.
    
    Add a missing "\n" at the end of one printed message.
    
    Suggested-by: Shuah Khan <shuah@kernel.org>
    Signed-off-by: Fenghua Yu <fenghua.yu@intel.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    fyu1 authored and shuahkh committed Apr 7, 2021

Commits on Apr 2, 2021

  1. Documentation: kselftest: fix path to test module files

    The top-level kselftest directory is not called kselftest, but
    selftests.
    
    Signed-off-by: Antonio Terceiro <antonio.terceiro@linaro.org>
    Cc: Shuah Khan <shuah@kernel.org>
    Cc: Jonathan Corbet <corbet@lwn.net>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    terceiro authored and shuahkh committed Apr 2, 2021
  2. selftests/resctrl: Create .gitignore to include resctrl_tests

    Create .gitignore to hold the test file resctrl_tests generated after
    compiling.
    
    Suggested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Babu Moger <babu.moger@amd.com>
    Signed-off-by: Fenghua Yu <fenghua.yu@intel.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    fyu1 authored and shuahkh committed Apr 2, 2021
  3. selftests/resctrl: Fix checking for < 0 for unsigned values

    Dan reported following static checker warnings
    
    tools/testing/selftests/resctrl/resctrl_val.c:545 measure_vals()
    warn: 'bw_imc' unsigned <= 0
    
    tools/testing/selftests/resctrl/resctrl_val.c:549 measure_vals()
    warn: 'bw_resc_end' unsigned <= 0
    
    These warnings are reported because
    1. measure_vals() declares 'bw_imc' and 'bw_resc_end' as unsigned long
       variables
    2. Return value of get_mem_bw_imc() and get_mem_bw_resctrl() are assigned
       to 'bw_imc' and 'bw_resc_end' respectively
    3. The returned values are checked for <= 0 to see if the calls failed
    
    Checking for < 0 for an unsigned value doesn't make any sense.
    
    Fix this issue by changing the implementation of get_mem_bw_imc() and
    get_mem_bw_resctrl() such that they now accept reference to a variable
    and set the variable appropriately upon success and return 0, else return
    < 0 on error.
    
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Tested-by: Babu Moger <babu.moger@amd.com>
    Signed-off-by: Fenghua Yu <fenghua.yu@intel.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    fyu1 authored and shuahkh committed Apr 2, 2021
  4. selftests/resctrl: Fix incorrect parsing of iMC counters

    iMC (Integrated Memory Controller) counters are usually at
    "/sys/bus/event_source/devices/" and are named as "uncore_imc_<n>".
    num_of_imcs() function tries to count number of such iMC counters so that
    it could appropriately initialize required number of perf_attr structures
    that could be used to read these iMC counters.
    
    num_of_imcs() function assumes that all the directories under this path
    that start with "uncore_imc" are iMC counters. But, on some systems there
    could be directories named as "uncore_imc_free_running" which aren't iMC
    counters. Trying to read from such directories will result in "not found
    file" errors and MBM/MBA tests will fail.
    
    Hence, fix the logic in num_of_imcs() such that it looks at the first
    character after "uncore_imc_" to check if it's a numerical digit or not. If
    it's a digit then the directory represents an iMC counter, else, skip the
    directory.
    
    Reported-by: Reinette Chatre <reinette.chatre@intel.com>
    Tested-by: Babu Moger <babu.moger@amd.com>
    Signed-off-by: Fenghua Yu <fenghua.yu@intel.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    fyu1 authored and shuahkh committed Apr 2, 2021
  5. selftests/resctrl: Fix unmount resctrl FS

    umount_resctrlfs() directly attempts to unmount resctrl file system without
    checking if resctrl FS is already mounted or not. It returns 0 on success
    and on failure it prints an error message and returns an error status.
    Calling umount_resctrlfs() when resctrl FS isn't mounted will return an
    error status.
    
    There could be situations where-in the caller might not know if resctrl
    FS is already mounted or not and the caller might still want to unmount
    resctrl FS if it's already mounted (For example during teardown).
    
    To support above use cases, change umount_resctrlfs() such that it now
    first checks if resctrl FS is already mounted or not and unmounts resctrl
    FS only if it's already mounted.
    
    unmount resctrl FS upon exit. For example, running only mba test on a
    Broadwell (BDW) machine (MBA isn't supported on BDW CPU).
    
    This happens because validate_resctrl_feature_request() would mount resctrl
    FS to check if mba is enabled on the platform or not and finds that the H/W
    doesn't support mba and hence will return false to run_mba_test(). This in
    turn makes the main() function return without unmounting resctrl FS.
    
    Tested-by: Babu Moger <babu.moger@amd.com>
    Signed-off-by: Fenghua Yu <fenghua.yu@intel.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    fyu1 authored and shuahkh committed Apr 2, 2021
  6. selftests/resctrl: Skip the test if requested resctrl feature is not …

    …supported
    
    There could be two reasons why a resctrl feature might not be enabled on
    the platform
    1. H/W might not support the feature
    2. Even if the H/W supports it, the user might have disabled the feature
       through kernel command line arguments
    
    Hence, any resctrl unit test (like cmt, cat, mbm and mba) before starting
    the test will first check if the feature is enabled on the platform or not.
    If the feature isn't enabled, then the test returns with an error status.
    For example, if MBA isn't supported on a platform and if the user tries to
    run MBA, the output will look like this
    
    ok mounting resctrl to "/sys/fs/resctrl"
    not ok MBA: schemata change
    
    But, not supporting a feature isn't a test failure. So, instead of treating
    it as an error, use the SKIP directive of the TAP protocol. With the
    change, the output will look as below
    
    ok MBA # SKIP Hardware does not support MBA or MBA is disabled
    
    Suggested-by: Reinette Chatre <reinette.chatre@intel.com>
    Tested-by: Babu Moger <babu.moger@amd.com>
    Signed-off-by: Fenghua Yu <fenghua.yu@intel.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    fyu1 authored and shuahkh committed Apr 2, 2021
  7. selftests/resctrl: Modularize resctrl test suite main() function

    Resctrl test suite main() function does the following things
    1. Parses command line arguments passed by user
    2. Some setup checks
    3. Logic that calls into each unit test
    4. Print result and clean up after running each unit test
    
    Introduce wrapper functions for steps 3 and 4 to modularize the main()
    function. Adding these wrapper functions makes it easier to add any logic
    to each individual test.
    
    Please note that this is a preparatory patch for the next one and no
    functional changes are intended.
    
    Suggested-by: Reinette Chatre <reinette.chatre@intel.com>
    Tested-by: Babu Moger <babu.moger@amd.com>
    Signed-off-by: Fenghua Yu <fenghua.yu@intel.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    fyu1 authored and shuahkh committed Apr 2, 2021
  8. selftests/resctrl: Don't hard code value of "no_of_bits" variable

    Cache related tests (like CAT and CMT) depend on a variable called
    no_of_bits to run. no_of_bits defines the number of contiguous bits
    that should be set in the CBM mask and a user can pass a value for
    no_of_bits using -n command line argument. If a user hasn't passed any
    value, it defaults to 5 (randomly chosen value).
    
    Hard coding no_of_bits to 5 will make the cache tests fail to run on
    systems that support maximum cbm mask that is less than or equal to 5 bits.
    Hence, don't hard code no_of_bits value.
    
    If a user passes a value for "no_of_bits" using -n option, use it.
    Otherwise, no_of_bits is equal to half of the maximum number of bits in
    the cbm mask.
    
    Please note that CMT test is still hard coded to 5 bits. It will change in
    subsequent patches that change CMT test.
    
    Tested-by: Babu Moger <babu.moger@amd.com>
    Signed-off-by: Fenghua Yu <fenghua.yu@intel.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    fyu1 authored and shuahkh committed Apr 2, 2021
  9. selftests/resctrl: Fix MBA/MBM results reporting format

    MBM unit test starts fill_buf (default built-in benchmark) in a new con_mon
    group (c1, m1) and records resctrl reported mbm values and iMC (Integrated
    Memory Controller) values every second. It does this for five seconds
    (randomly chosen value) in total. It then calculates average of resctrl_mbm
    values and imc_mbm values and if the difference is greater than 300 MB/sec
    (randomly chosen value), the test treats it as a failure. MBA unit test is
    similar to MBM but after every run it changes schemata.
    
    Checking for a difference of 300 MB/sec doesn't look very meaningful when
    the mbm values are changing over a wide range. For example, below are the
    values running MBA test on SKL with different allocations
    
    1. With 10% as schemata both iMC and resctrl mbm_values are around 2000
       MB/sec
    2. With 100% as schemata both iMC and resctrl mbm_values are around 10000
       MB/sec
    
    A 300 MB/sec difference between resctrl_mbm and imc_mbm values is
    acceptable at 100% schemata but it isn't acceptable at 10% schemata because
    that's a huge difference.
    
    So, fix this by checking for percentage difference instead of absolute
    difference i.e. check if the difference between resctrl_mbm value and
    imc_mbm value is within 5% (randomly chosen value) of imc_mbm value. If the
    difference is greater than 5% of imc_mbm value, treat it is a failure.
    
    Tested-by: Babu Moger <babu.moger@amd.com>
    Signed-off-by: Fenghua Yu <fenghua.yu@intel.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    fyu1 authored and shuahkh committed Apr 2, 2021
  10. selftests/resctrl: Use resctrl/info for feature detection

    Resctrl test suite before running any unit test (like cmt, cat, mbm and
    mba) should first check if the feature is enabled (by kernel and not just
    supported by H/W) on the platform or not.
    validate_resctrl_feature_request() is supposed to do that. This function
    intends to grep for relevant flags in /proc/cpuinfo but there are several
    issues here
    
    1. validate_resctrl_feature_request() calls fgrep() to get flags from
       /proc/cpuinfo. But, fgrep() can only return a string with maximum of 255
       characters and hence the complete cpu flags are never returned.
    2. The substring search logic is also busted. If strstr() finds requested
       resctrl feature in the cpu flags, it returns pointer to the first
       occurrence. But, the logic negates the return value of strstr() and
       hence validate_resctrl_feature_request() returns false if the feature is
       present in the cpu flags and returns true if the feature is not present.
    3. validate_resctrl_feature_request() checks if a resctrl feature is
       reported in /proc/cpuinfo flags or not. Having a cpu flag means that the
       H/W supports the feature, but it doesn't mean that the kernel enabled
       it. A user could selectively enable only a subset of resctrl features
       using kernel command line arguments. Hence, /proc/cpuinfo isn't a
       reliable source to check if a feature is enabled or not.
    
    The 3rd issue being the major one and fixing it requires changing the way
    validate_resctrl_feature_request() works. Since, /proc/cpuinfo isn't the
    right place to check if a resctrl feature is enabled or not, a more
    appropriate place is /sys/fs/resctrl/info directory. Change
    validate_resctrl_feature_request() such that,
    
    1. For cat, check if /sys/fs/resctrl/info/L3 directory is present or not
    2. For mba, check if /sys/fs/resctrl/info/MB directory is present or not
    3. For cmt, check if /sys/fs/resctrl/info/L3_MON directory is present and
       check if /sys/fs/resctrl/info/L3_MON/mon_features has llc_occupancy
    4. For mbm, check if /sys/fs/resctrl/info/L3_MON directory is present and
       check if /sys/fs/resctrl/info/L3_MON/mon_features has
       mbm_<total/local>_bytes
    
    Please note that only L3_CAT, L3_CMT, MBA and MBM are supported. CDP and L2
    variants can be added later.
    
    Reported-by: Reinette Chatre <reinette.chatre@intel.com>
    Tested-by: Babu Moger <babu.moger@amd.com>
    Signed-off-by: Fenghua Yu <fenghua.yu@intel.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    fyu1 authored and shuahkh committed Apr 2, 2021
  11. selftests/resctrl: Check for resctrl mount point only if resctrl FS i…

    …s supported
    
    check_resctrlfs_support() does the following
    1. Checks if the platform supports resctrl file system or not by looking
       for resctrl in /proc/filesystems
    2. Calls opendir() on default resctrl file system path
       (i.e. /sys/fs/resctrl)
    3. Checks if resctrl file system is mounted or not by looking at
       /proc/mounts
    
    Steps 2 and 3 will fail if the platform does not support resctrl file
    system. So, there is no need to check for them if step 1 fails.
    
    Fix this by returning immediately if the platform does not support
    resctrl file system.
    
    Tested-by: Babu Moger <babu.moger@amd.com>
    Signed-off-by: Fenghua Yu <fenghua.yu@intel.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    fyu1 authored and shuahkh committed Apr 2, 2021
  12. selftests/resctrl: Add config dependencies

    Add the config file for test dependencies.
    
    Suggested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Babu Moger <babu.moger@amd.com>
    Signed-off-by: Fenghua Yu <fenghua.yu@intel.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    fyu1 authored and shuahkh committed Apr 2, 2021
  13. selftests/resctrl: Fix a printed message

    Add a missing newline to the printed help text to improve readability.
    
    Tested-by: Babu Moger <babu.moger@amd.com>
    Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
    Signed-off-by: Fenghua Yu <fenghua.yu@intel.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    rchatre authored and shuahkh committed Apr 2, 2021
  14. selftests/resctrl: Share show_cache_info() by CAT and CMT tests

    show_cache_info() functions are defined separately in CAT and CMT
    tests. But the functions are same for the tests and unnecessary
    to be defined separately. Share the function by the tests.
    
    Suggested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Babu Moger <babu.moger@amd.com>
    Signed-off-by: Fenghua Yu <fenghua.yu@intel.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    fyu1 authored and shuahkh committed Apr 2, 2021
  15. selftests/resctrl: Call kselftest APIs to log test results

    Call kselftest APIs instead of using printf() to log test results
    for cleaner code and better future extension.
    
    Suggested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Babu Moger <babu.moger@amd.com>
    Signed-off-by: Fenghua Yu <fenghua.yu@intel.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    fyu1 authored and shuahkh committed Apr 2, 2021
  16. selftests/resctrl: Rename CQM test as CMT test

    CMT (Cache Monitoring Technology) [1] is a H/W feature that reports cache
    occupancy of a process. resctrl selftest suite has a unit test to test CMT
    for LLC but the test is named as CQM (Cache Quality Monitoring).
    Furthermore, the unit test source file is named as cqm_test.c and several
    functions, variables, comments, preprocessors and statements widely use
    "cqm" as either suffix or prefix. This rampant misusage of CQM for CMT
    might confuse someone who is newly looking at resctrl selftests because
    this feature is named CMT in the Intel Software Developer's Manual.
    
    Hence, rename all the occurrences (unit test source file name, functions,
    variables, comments and preprocessors) of cqm with cmt.
    
    [1] Please see Intel SDM, Volume 3, chapter 17 and section 18 for more
        information on CMT: https://software.intel.com/content/www/us/en/develop/articles/intel-sdm.html
    
    Suggested-by: Reinette Chatre <reinette.chatre@intel.com>
    Tested-by: Babu Moger <babu.moger@amd.com>
    Signed-off-by: Fenghua Yu <fenghua.yu@intel.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    fyu1 authored and shuahkh committed Apr 2, 2021
  17. selftests/resctrl: Fix missing options "-n" and "-p"

    resctrl test suite accepts command line arguments (like -b, -t, -n and -p)
    as documented in the help. But passing -n and -p throws an invalid option
    error. This happens because -n and -p are missing in the list of
    characters that getopt() recognizes as valid arguments. Hence, they are
    treated as invalid options.
    
    Fix this by adding them to the list of characters that getopt() recognizes
    as valid arguments. Please note that the main() function already has the
    logic to deal with the values passed as part of these arguments and hence
    no changes are needed there.
    
    Tested-by: Babu Moger <babu.moger@amd.com>
    Signed-off-by: Fenghua Yu <fenghua.yu@intel.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    fyu1 authored and shuahkh committed Apr 2, 2021
  18. selftests/resctrl: Ensure sibling CPU is not same as original CPU

    The resctrl tests can accept a CPU on which the tests are run and use
    default of CPU #1 if it is not provided. In the CAT test a "sibling CPU"
    is determined that is from the same package where another thread will be
    run.
    
    The current algorithm with which a "sibling CPU" is determined does not
    take the provided/default CPU into account and when that CPU is the
    first CPU in a package then the "sibling CPU" will be selected to be the
    same CPU since it starts by picking the first CPU from core_siblings_list.
    
    Fix the "sibling CPU" selection by taking the provided/default CPU into
    account and ensuring a sibling that is a different CPU is selected.
    
    Tested-by: Babu Moger <babu.moger@amd.com>
    Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
    Signed-off-by: Fenghua Yu <fenghua.yu@intel.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    rchatre authored and shuahkh committed Apr 2, 2021
  19. selftests/resctrl: Clean up resctrl features check

    Checking resctrl features call strcmp() to compare feature strings
    (e.g. "mba", "cat" etc). The checkings are error prone and don't have
    good coding style. Define the constant strings in macros and call
    strncmp() to solve the potential issues.
    
    Suggested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Babu Moger <babu.moger@amd.com>
    Signed-off-by: Fenghua Yu <fenghua.yu@intel.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    fyu1 authored and shuahkh committed Apr 2, 2021
  20. selftests/resctrl: Fix compilation issues for other global variables

    Reinette reported following compilation issue on Fedora 32, gcc version
    10.1.1
    
    /usr/bin/ld: resctrl_tests.o:<src_dir>/resctrl.h:65: multiple definition
    of `bm_pid'; cache.o:<src_dir>/resctrl.h:65: first defined here
    
    Other variables are ppid, tests_run, llc_occup_path, is_amd. Compiler
    isn't happy because these variables are defined globally in two .c files
    but are not declared as extern.
    
    To fix issues for the global variables, declare them as extern.
    
    Chang Log:
    - Split this patch from v4's patch 1 (Shuah).
    
    Reported-by: Reinette Chatre <reinette.chatre@intel.com>
    Tested-by: Babu Moger <babu.moger@amd.com>
    Signed-off-by: Fenghua Yu <fenghua.yu@intel.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    fyu1 authored and shuahkh committed Apr 2, 2021
  21. selftests/resctrl: Fix compilation issues for global variables

    Reinette reported following compilation issue on Fedora 32, gcc version
    10.1.1
    
    /usr/bin/ld: cqm_test.o:<src_dir>/cqm_test.c:22: multiple definition of
    `cache_size'; cat_test.o:<src_dir>/cat_test.c:23: first defined here
    
    The same issue is reported for long_mask, cbm_mask, count_of_bits etc
    variables as well. Compiler isn't happy because these variables are
    defined globally in two .c files namely cqm_test.c and cat_test.c and
    the compiler during compilation finds that the variable is already
    defined (multiple definition error).
    
    Taking a closer look at the usage of these variables reveals that these
    variables are used only locally in functions such as cqm_resctrl_val()
    (defined in cqm_test.c) and cat_perf_miss_val() (defined in cat_test.c).
    These variables are not shared between those functions. So, there is no
    need for these variables to be global. Hence, fix this issue by making
    them static variables.
    
    Reported-by: Reinette Chatre <reinette.chatre@intel.com>
    Tested-by: Babu Moger <babu.moger@amd.com>
    Signed-off-by: Fenghua Yu <fenghua.yu@intel.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    fyu1 authored and shuahkh committed Apr 2, 2021
  22. selftests/resctrl: Enable gcc checks to detect buffer overflows

    David reported a buffer overflow error in the check_results() function of
    the cmt unit test and he suggested enabling _FORTIFY_SOURCE gcc compiler
    option to automatically detect any such errors.
    
    Feature Test Macros man page describes_FORTIFY_SOURCE as below
    
    "Defining this macro causes some lightweight checks to be performed to
    detect some buffer overflow errors when employing various string and memory
    manipulation functions (for example, memcpy, memset, stpcpy, strcpy,
    strncpy, strcat, strncat, sprintf, snprintf, vsprintf, vsnprintf, gets, and
    wide character variants thereof). For some functions, argument consistency
    is checked; for example, a check is made that open has been supplied with a
    mode argument when the specified flags include O_CREAT. Not all problems
    are detected, just some common cases.
    
    If _FORTIFY_SOURCE is set to 1, with compiler optimization level 1 (gcc
    -O1) and above, checks that shouldn't change the behavior of conforming
    programs are performed.
    
    With _FORTIFY_SOURCE set to 2, some more checking is added, but some
    conforming programs might fail.
    
    Some of the checks can be performed at compile time (via macros logic
    implemented in header files), and result in compiler warnings; other checks
    take place at run time, and result in a run-time error if the check fails.
    
    Use of this macro requires compiler support, available with gcc since
    version 4.0."
    
    Fix the buffer overflow error in the check_results() function of the cmt
    unit test and enable _FORTIFY_SOURCE gcc check to catch any future buffer
    overflow errors.
    
    Reported-by: David Binderman <dcb314@hotmail.com>
    Suggested-by: David Binderman <dcb314@hotmail.com>
    Tested-by: Babu Moger <babu.moger@amd.com>
    Signed-off-by: Fenghua Yu <fenghua.yu@intel.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    fyu1 authored and shuahkh committed Apr 2, 2021

Commits on Mar 26, 2021

  1. selftests/timers: Fix spelling mistake "clocksourc" -> "clocksource"

    There is a spelling mistake in a comment. Fix it.
    
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Acked-by: John Stultz <john.stultz@linaro.org>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    Colin Ian King authored and shuahkh committed Mar 26, 2021
  2. selftests: fix prepending $(OUTPUT) to $(TEST_PROGS)

    Currently the following command produces an error message:
    
        linux# make kselftest TARGETS=bpf O=/mnt/linux-build
        # selftests: bpf: test_libbpf.sh
        # ./test_libbpf.sh: line 23: ./test_libbpf_open: No such file or directory
        # test_libbpf: failed at file test_l4lb.o
        # selftests: test_libbpf [FAILED]
    
    The error message might not affect the return code of make, therefore
    one needs to grep make output in order to detect it.
    
    This is not the only instance of the same underlying problem; any test
    with more than one element in $(TEST_PROGS) fails the same way. Another
    example:
    
        linux# make O=/mnt/linux-build TARGETS=splice kselftest
        [...]
        # ./short_splice_read.sh: 15: ./splice_read: not found
        # FAIL: /sys/module/test_module/sections/.init.text 2
        not ok 2 selftests: splice: short_splice_read.sh # exit=1
    
    The current logic prepends $(OUTPUT) only to the first member of
    $(TEST_PROGS). After that, run_one() does
    
       cd `dirname $TEST`
    
    For all tests except the first one, `dirname $TEST` is ., which means
    they cannot access the files generated in $(OUTPUT).
    
    Fix by using $(addprefix) to prepend $(OUTPUT)/ to each member of
    $(TEST_PROGS).
    
    Fixes: 1a94068 ("selftests: lib.mk: copy test scripts and test files for make O=dir run")
    Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    iii-i authored and shuahkh committed Mar 26, 2021

Commits on Mar 6, 2021

  1. Linux 5.12-rc2

    torvalds committed Mar 6, 2021
  2. Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/gi…

    …t/rdma/rdma
    
    Pull rdma fixes from Jason Gunthorpe:
     "Nothing special here, though Bob's regression fixes for rxe would have
      made it before the rc cycle had there not been such strong winter
      weather!
    
       - Fix corner cases in the rxe reference counting cleanup that are
         causing regressions in blktests for SRP
    
       - Two kdoc fixes so W=1 is clean
    
       - Missing error return in error unwind for mlx5
    
       - Wrong lock type nesting in IB CM"
    
    * tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma:
      RDMA/rxe: Fix errant WARN_ONCE in rxe_completer()
      RDMA/rxe: Fix extra deref in rxe_rcv_mcast_pkt()
      RDMA/rxe: Fix missed IB reference counting in loopback
      RDMA/uverbs: Fix kernel-doc warning of _uverbs_alloc
      RDMA/mlx5: Set correct kernel-doc identifier
      IB/mlx5: Add missing error code
      RDMA/rxe: Fix missing kconfig dependency on CRYPTO
      RDMA/cm: Fix IRQ restore in ib_send_cm_sidr_rep
    torvalds committed Mar 6, 2021
  3. Merge tag 'gcc-plugins-v5.12-rc2' of git://git.kernel.org/pub/scm/lin…

    …ux/kernel/git/kees/linux
    
    Pull gcc-plugins fixes from Kees Cook:
     "Tiny gcc-plugin fixes for v5.12-rc2. These issues are small but have
      been reported a couple times now by static analyzers, so best to get
      them fixed to reduce the noise. :)
    
       - Fix coding style issues (Jason Yan)"
    
    * tag 'gcc-plugins-v5.12-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux:
      gcc-plugins: latent_entropy: remove unneeded semicolon
      gcc-plugins: structleak: remove unneeded variable 'ret'
    torvalds committed Mar 6, 2021
  4. Merge tag 'pstore-v5.12-rc2' of git://git.kernel.org/pub/scm/linux/ke…

    …rnel/git/kees/linux
    
    Pull pstore fixes from Kees Cook:
    
     - Rate-limit ECC warnings (Dmitry Osipenko)
    
     - Fix error path check for NULL (Tetsuo Handa)
    
    * tag 'pstore-v5.12-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux:
      pstore/ram: Rate-limit "uncorrectable error in header" message
      pstore: Fix warning in pstore_kill_sb()
    torvalds committed Mar 6, 2021

Commits on Mar 5, 2021

  1. Merge tag 'for-5.12/dm-fixes' of git://git.kernel.org/pub/scm/linux/k…

    …ernel/git/device-mapper/linux-dm
    
    Pull device mapper fixes from Mike Snitzer:
     "Fix DM verity target's optional Forward Error Correction (FEC) for
      Reed-Solomon roots that are unaligned to block size"
    
    * tag 'for-5.12/dm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm:
      dm verity: fix FEC for RS roots unaligned to block size
      dm bufio: subtract the number of initial sectors in dm_bufio_get_device_size
    torvalds committed Mar 5, 2021
  2. Merge tag 'block-5.12-2021-03-05' of git://git.kernel.dk/linux-block

    Pull block fixes from Jens Axboe:
    
     - NVMe fixes:
          - more device quirks (Julian Einwag, Zoltán Böszörményi, Pascal
            Terjan)
          - fix a hwmon error return (Daniel Wagner)
          - fix the keep alive timeout initialization (Martin George)
          - ensure the model_number can't be changed on a used subsystem
            (Max Gurtovoy)
    
     - rsxx missing -EFAULT on copy_to_user() failure (Dan)
    
     - rsxx remove unused linux.h include (Tian)
    
     - kill unused RQF_SORTED (Jean)
    
     - updated outdated BFQ comments (Joseph)
    
     - revert work-around commit for bd_size_lock, since we removed the
       offending user in this merge window (Damien)
    
    * tag 'block-5.12-2021-03-05' of git://git.kernel.dk/linux-block:
      nvmet: model_number must be immutable once set
      nvme-fabrics: fix kato initialization
      nvme-hwmon: Return error code when registration fails
      nvme-pci: add quirks for Lexar 256GB SSD
      nvme-pci: mark Kingston SKC2000 as not supporting the deepest power state
      nvme-pci: mark Seagate Nytro XM1440 as QUIRK_NO_NS_DESC_LIST.
      rsxx: Return -EFAULT if copy_to_user() fails
      block/bfq: update comments and default value in docs for fifo_expire
      rsxx: remove unused including <linux/version.h>
      block: Drop leftover references to RQF_SORTED
      block: revert "block: fix bd_size_lock use"
    torvalds committed Mar 5, 2021
  3. Merge tag 'io_uring-5.12-2021-03-05' of git://git.kernel.dk/linux-block

    Pull io_uring fixes from Jens Axboe:
     "A bit of a mix between fallout from the worker change, cleanups and
      reductions now possible from that change, and fixes in general. In
      detail:
    
       - Fully serialize manager and worker creation, fixing races due to
         that.
    
       - Clean up some naming that had gone stale.
    
       - SQPOLL fixes.
    
       - Fix race condition around task_work rework that went into this
         merge window.
    
       - Implement unshare. Used for when the original task does unshare(2)
         or setuid/seteuid and friends, drops the original workers and forks
         new ones.
    
       - Drop the only remaining piece of state shuffling we had left, which
         was cred. Move it into issue instead, and we can drop all of that
         code too.
    
       - Kill f_op->flush() usage. That was such a nasty hack that we had
         out of necessity, we no longer need it.
    
       - Following from ->flush() removal, we can also drop various bits of
         ctx state related to SQPOLL and cancelations.
    
       - Fix an issue with IOPOLL retry, which originally was fallout from a
         filemap change (removing iov_iter_revert()), but uncovered an issue
         with iovec re-import too late.
    
       - Fix an issue with system suspend.
    
       - Use xchg() for fallback work, instead of cmpxchg().
    
       - Properly destroy io-wq on exec.
    
       - Add create_io_thread() core helper, and use that in io-wq and
         io_uring. This allows us to remove various silly completion events
         related to thread setup.
    
       - A few error handling fixes.
    
      This should be the grunt of fixes necessary for the new workers, next
      week should be quieter. We've got a pending series from Pavel on
      cancelations, and how tasks and rings are indexed. Outside of that,
      should just be minor fixes. Even with these fixes, we're still killing
      a net ~80 lines"
    
    * tag 'io_uring-5.12-2021-03-05' of git://git.kernel.dk/linux-block: (41 commits)
      io_uring: don't restrict issue_flags for io_openat
      io_uring: make SQPOLL thread parking saner
      io-wq: kill hashed waitqueue before manager exits
      io_uring: clear IOCB_WAITQ for non -EIOCBQUEUED return
      io_uring: don't keep looping for more events if we can't flush overflow
      io_uring: move to using create_io_thread()
      kernel: provide create_io_thread() helper
      io_uring: reliably cancel linked timeouts
      io_uring: cancel-match based on flags
      io-wq: ensure all pending work is canceled on exit
      io_uring: ensure that threads freeze on suspend
      io_uring: remove extra in_idle wake up
      io_uring: inline __io_queue_async_work()
      io_uring: inline io_req_clean_work()
      io_uring: choose right tctx->io_wq for try cancel
      io_uring: fix -EAGAIN retry with IOPOLL
      io-wq: fix error path leak of buffered write hash map
      io_uring: remove sqo_task
      io_uring: kill sqo_dead and sqo submission halting
      io_uring: ignore double poll add on the same waitqueue head
      ...
    torvalds committed Mar 5, 2021
  4. Merge tag 'pm-5.12-rc2' of git://git.kernel.org/pub/scm/linux/kernel/…

    …git/rafael/linux-pm
    
    Pull power management fixes from Rafael Wysocki:
     "These fix the usage of device links in the runtime PM core code and
      update the DTPM (Dynamic Thermal Power Management) feature added
      recently.
    
      Specifics:
    
       - Make the runtime PM core code avoid attempting to suspend supplier
         devices before updating the PM-runtime status of a consumer to
         'suspended' (Rafael Wysocki).
    
       - Fix DTPM (Dynamic Thermal Power Management) root node
         initialization and label that feature as EXPERIMENTAL in Kconfig
         (Daniel Lezcano)"
    
    * tag 'pm-5.12-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
      powercap/drivers/dtpm: Add the experimental label to the option description
      powercap/drivers/dtpm: Fix root node initialization
      PM: runtime: Update device status before letting suppliers suspend
    torvalds committed Mar 5, 2021
Older