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
     

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
     

17 Jan, 2015

1 commit

  • Avoid overflow possibility.

    [ The overflow is purely theoretical, since this is used for memory
    ranges that aren't even close to using the full 64 bits, but this is
    the right thing to do regardless. - Linus ]

    Signed-off-by: Louis Langholtz
    Cc: Yinghai Lu
    Cc: Peter Anvin
    Cc: Andrew Morton
    Signed-off-by: Linus Torvalds

    Louis Langholtz
     

19 Jun, 2013

1 commit

  • Joshua reported: Commit cd7b304dfaf1 (x86, range: fix missing merge
    during add range) broke mtrr cleanup on his setup in 3.9.5.
    corresponding commit in upstream is fbe06b7bae7c.

    The reason is add_range_with_merge could generate blank spot.

    We could avoid that by searching new expanded start/end, that
    new range should include all connected ranges in range array.
    At last add the new expanded start/end to the range array.
    Also move up left array so do not add new blank slot in the
    range array.

    -v2: move left array to avoid enhance add_range()
    -v3: include fix from Joshua about memmove declaring when
    DYN_DEBUG is used.

    Reported-by: Joshua Covington
    Tested-by: Joshua Covington
    Signed-off-by: Yinghai Lu
    Link: http://lkml.kernel.org/r/1371154622-8929-3-git-send-email-yinghai@kernel.org
    Cc: v3.9
    Signed-off-by: H. Peter Anvin

    Yinghai Lu
     

18 May, 2013

1 commit

  • Christian found v3.9 does not work with E350 with EFI is enabled.

    [ 1.658832] Trying to unpack rootfs image as initramfs...
    [ 1.679935] BUG: unable to handle kernel paging request at ffff88006e3fd000
    [ 1.686940] IP: [] memset+0x1f/0xb0
    [ 1.692010] PGD 1f77067 PUD 1f7a067 PMD 61420067 PTE 0

    but early memtest report all memory could be accessed without problem.

    early page table is set in following sequence:
    [ 0.000000] init_memory_mapping: [mem 0x00000000-0x000fffff]
    [ 0.000000] init_memory_mapping: [mem 0x6e600000-0x6e7fffff]
    [ 0.000000] init_memory_mapping: [mem 0x6c000000-0x6e5fffff]
    [ 0.000000] init_memory_mapping: [mem 0x00100000-0x6bffffff]
    [ 0.000000] init_memory_mapping: [mem 0x6e800000-0x6ea07fff]
    but later efi_enter_virtual_mode try set mapping again wrongly.
    [ 0.010644] pid_max: default: 32768 minimum: 301
    [ 0.015302] init_memory_mapping: [mem 0x640c5000-0x6e3fcfff]
    that means it fails with pfn_range_is_mapped.

    It turns out that we have a bug in add_range_with_merge and it does not
    merge range properly when new add one fill the hole between two exsiting
    ranges. In the case when [mem 0x00100000-0x6bffffff] is the hole between
    [mem 0x00000000-0x000fffff] and [mem 0x6c000000-0x6e7fffff].

    Fix the add_range_with_merge by calling itself recursively.

    Reported-by: "Christian König"
    Signed-off-by: Yinghai Lu
    Link: http://lkml.kernel.org/r/CAE9FiQVofGoSk7q5-0irjkBxemqK729cND4hov-1QCBJDhxpgQ@mail.gmail.com
    Cc: v3.9
    Signed-off-by: H. Peter Anvin

    Yinghai Lu
     

01 May, 2013

1 commit


31 Oct, 2011

1 commit


12 Nov, 2010

1 commit

  • clean_sort_range() should return a number of nonempty elements of range
    array, but if the array is full clean_sort_range() returns 0.

    The problem is that the number of nonempty elements is evaluated by
    finding the first empty element of the array. If there is no such element
    it returns an initial value of local variable nr_range that is zero.

    The fix is trivial: it changes initial value of nr_range to size of the
    array.

    The bug can lead to loss of information regarding all ranges, since
    typically returned value of clean_sort_range() is considered as an actual
    number of ranges in the array after a series of add/subtract operations.

    Found by Analytical Verification project of Linux Verification Center
    (linuxtesting.org), thanks to Alexander Kolosov.

    Signed-off-by: Alexey Khoroshilov
    Cc: Yinghai Lu
    Cc: "H. Peter Anvin"
    Cc: Geert Uytterhoeven
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alexey Khoroshilov
     

10 Aug, 2010

1 commit


11 Feb, 2010

2 commits

  • So make interface more consistent with early_res.
    Later we can share some code with early_res.

    Signed-off-by: Yinghai Lu
    LKML-Reference:
    Signed-off-by: H. Peter Anvin

    Yinghai Lu
     
  • We have almost the same code for mtrr cleanup and amd_bus checkup, and
    this code will also be used in replacing bootmem with early_res,
    so try to move them together and reuse it from different parts.

    Also rename update_range to subtract_range as that is what the
    function is actually doing.

    -v2: update comments as Christoph requested

    Signed-off-by: Yinghai Lu
    LKML-Reference:
    Signed-off-by: H. Peter Anvin

    Yinghai Lu