17 Oct, 2020

1 commit

  • kernel.h is being used as a dump for all kinds of stuff for a long time.
    Here is the attempt to start cleaning it up by splitting out min()/max()
    et al. helpers.

    At the same time convert users in header and lib folder to use new header.
    Though for time being include new header back to kernel.h to avoid
    twisted indirected includes for other existing users.

    Signed-off-by: Andy Shevchenko
    Signed-off-by: Andrew Morton
    Cc: "Rafael J. Wysocki"
    Cc: Steven Rostedt
    Cc: Rasmus Villemoes
    Cc: Joe Perches
    Cc: Linus Torvalds
    Link: https://lkml.kernel.org/r/20200910164152.GA1891694@smile.fi.intel.com
    Signed-off-by: Linus Torvalds

    Andy Shevchenko
     

13 Aug, 2020

1 commit

  • Rationale:
    Reduces attack surface on kernel devs opening the links for MITM
    as HTTPS traffic is much harder to manipulate.

    Signed-off-by: Alexander A. Klimov
    Signed-off-by: Andrew Morton
    Acked-by: Coly Li [crc64.c]
    Link: http://lkml.kernel.org/r/20200726112154.16510-1-grandmaster@al2klimov.de
    Signed-off-by: Linus Torvalds

    Alexander A. Klimov
     

15 Jun, 2020

1 commit

  • People report that utime and stime from /proc//stat become very
    wrong when the numbers are big enough, especially if you watch these
    counters incrementally.

    Specifically, the current implementation of: stime*rtime/total,
    results in a saw-tooth function on top of the desired line, where the
    teeth grow in size the larger the values become. IOW, it has a
    relative error.

    The result is that, when watching incrementally as time progresses
    (for large values), we'll see periods of pure stime or utime increase,
    irrespective of the actual ratio we're striving for.

    Replace scale_stime() with a math64.h helper: mul_u64_u64_div_u64()
    that is far more accurate. This also allows architectures to override
    the implementation -- for instance they can opt for the old algorithm
    if this new one turns out to be too expensive for them.

    Signed-off-by: Oleg Nesterov
    Signed-off-by: Peter Zijlstra (Intel)
    Link: https://lkml.kernel.org/r/20200519172506.GA317395@hirez.programming.kicks-ass.net

    Oleg Nesterov
     

10 Jun, 2020

1 commit

  • …/git/shuah/linux-kselftest

    Pull kselftest updates from Shuah Khan:
    "This consists of:

    - Several fixes from Masami Hiramatsu to improve coverage for lib and
    sysctl tests.

    - Clean up to vdso test and a new test for getcpu() from Mark Brown.

    - Add new gen_tar selftests Makefile target generate selftest package
    running "make gen_tar" in selftests directory from Veronika
    Kabatova.

    - Other miscellaneous fixes to timens, exec, tpm2 tests"

    * tag 'linux-kselftest-5.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest:
    selftests/sysctl: Make sysctl test driver as a module
    selftests/sysctl: Fix to load test_sysctl module
    lib: Make test_sysctl initialized as module
    lib: Make prime number generator independently selectable
    selftests/ftrace: Return unsupported if no error_log file
    selftests/ftrace: Use printf for backslash included command
    selftests/timens: handle a case when alarm clocks are not supported
    Kernel selftests: Add check if TPM devices are supported
    selftests: vdso: Add a selftest for vDSO getcpu()
    selftests: vdso: Use a header file to prototype parse_vdso API
    selftests: vdso: Rename vdso_test to vdso_test_gettimeofday
    selftests/exec: Verify execve of non-regular files fail
    selftests: introduce gen_tar Makefile target

    Linus Torvalds
     

05 Jun, 2020

1 commit

  • pr_xxx() functions usually have a newline at the end of the logging
    message.

    Here, this newline is added via the 'pr_fmt' macro.

    In order to be more consistent with other files, use a more standard
    convention and put these newlines back in the messages themselves and
    remove it from the pr_fmt macro.

    While at it, use __func__ instead of hardcoding a function name in the
    last message.

    Signed-off-by: Christophe JAILLET
    Signed-off-by: Andrew Morton
    Reviewed-by: Andy Shevchenko
    Cc: Mauro Carvalho Chehab
    Cc: Andrew Morton
    Cc: Greg Kroah-Hartman
    Cc: Thomas Gleixner
    Link: http://lkml.kernel.org/r/20200409163234.22830-1-christophe.jaillet@wanadoo.fr
    Signed-off-by: Linus Torvalds

    Christophe JAILLET
     

03 Jun, 2020

1 commit


05 Dec, 2019

1 commit

  • In some cases the previous algorithm would not return the closest
    approximation. This would happen when a semi-convergent was the
    closest, as the previous algorithm would only consider convergents.

    As an example, consider an initial value of 5/4, and trying to find the
    closest approximation with a maximum of 4 for numerator and denominator.
    The previous algorithm would return 1/1 as the closest approximation,
    while this version will return the correct answer of 4/3.

    To do this, the main loop performs effectively the same operations as it
    did before. It must now keep track of the last three approximations,
    n2/d2 .. n0/d0, while before it only needed the last two.

    If an exact answer is not found, the algorithm will now calculate the
    best semi-convergent term, t, which is a single expression with two
    divisions:

    min((max_numerator - n0) / n1, (max_denominator - d0) / d1)

    This will be used if it is better than previous convergent. The test
    for this is generally a simple comparison, 2*t > a. But in an edge
    case, where the convergent's final term is even and the best allowable
    semi-convergent has a final term of exactly half the convergent's final
    term, the more complex comparison (d0*dp > d1*d) is used.

    I also wrote some comments explaining the code. While one still needs
    to look up the math elsewhere, they should help a lot to follow how the
    code relates to that math.

    This routine is used in two places in the video4linux code, but in those
    cases it is only used to reduce a fraction to lowest terms, which the
    existing code will do correctly. This could be done more efficiently
    with a different library routine but it would still be the Euclidean
    alogrithm at its heart. So no change.

    The remain users are places where a fractional PLL divider is
    programmed. What would happen is something asked for a clock of X MHz
    but instead gets Y MHz, where Y is close to X but not exactly due to the
    hardware limitations. After this change they might, in some cases, get
    Y' MHz, where Y' is a little closer to X then Y was.

    Users like this are: Three UARTs, in 8250_mid, 8250_lpss, and imx. One
    GPU in vp4_hdmi. And three clock drivers, clk-cdce706, clk-si5351, and
    clk-fractional-divider. The last is a generic clock driver and so would
    have more users referenced via device tree entries.

    I think there's a bug in that one, it's limiting an N bit field that is
    offset-by-1 to the range 0 .. (1<<
    Cc: Oskar Schirmer
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Trent Piepho
     

21 May, 2019

3 commits

  • Add SPDX license identifiers to all Make/Kconfig files which:

    - Have no license information of any form

    These files fall under the project license, GPL v2 only. The resulting SPDX
    license identifier is:

    GPL-2.0-only

    Signed-off-by: Thomas Gleixner
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     
  • Add SPDX license identifiers to all files which:

    - Have no license information of any form

    - Have MODULE_LICENCE("GPL*") inside which was used in the initial
    scan/conversion to ignore the file

    These files fall under the project license, GPL v2 only. The resulting SPDX
    license identifier is:

    GPL-2.0-only

    Signed-off-by: Thomas Gleixner
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     
  • Add SPDX license identifiers to all files which:

    - Have no license information of any form

    - Have EXPORT_.*_SYMBOL_GPL inside which was used in the
    initial scan/conversion to ignore the file

    These files fall under the project license, GPL v2 only. The resulting SPDX
    license identifier is:

    GPL-2.0-only

    Signed-off-by: Thomas Gleixner
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     

15 May, 2019

2 commits

  • The integer exponentiation is used in few places and might be used in
    the future by other call sites. Move it to wider use.

    Link: http://lkml.kernel.org/r/20190323172531.80025-2-andriy.shevchenko@linux.intel.com
    Signed-off-by: Andy Shevchenko
    Cc: Daniel Thompson
    Cc: Lee Jones
    Cc: Ray Jui
    Cc: Thierry Reding
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andy Shevchenko
     
  • For better maintenance and expansion move the mathematic helpers to the
    separate folder.

    No functional change intended.

    Note, the int_sqrt() is not used as a part of lib, so, moved to regular
    obj.

    Link: http://lkml.kernel.org/r/20190323172531.80025-1-andriy.shevchenko@linux.intel.com
    Signed-off-by: Andy Shevchenko
    Signed-off-by: Mauro Carvalho Chehab
    Cc: Randy Dunlap
    Cc: Thierry Reding
    Cc: Lee Jones
    Cc: Daniel Thompson
    Cc: Ray Jui
    [mchehab+samsung@kernel.org: fix broken doc references for div64.c and gcd.c]
    Link: http://lkml.kernel.org/r/734f49bae5d4052b3c25691dfefad59bea2e5843.1555580999.git.mchehab+samsung@kernel.org
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andy Shevchenko