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
     

24 Nov, 2015

1 commit

  • This is much less error-prone than the old code.

    Signed-off-by: Andy Lutomirski
    Cc: Andy Lutomirski
    Cc: Borislav Petkov
    Cc: Brian Gerst
    Cc: Denys Vlasenko
    Cc: Frederic Weisbecker
    Cc: H. Peter Anvin
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Link: http://lkml.kernel.org/r/812df7e64f120c5c7c08481f36a8caa9f53b2199.1447361906.git.luto@kernel.org
    Signed-off-by: Ingo Molnar

    Andy Lutomirski
     

07 Jul, 2015

1 commit

  • This will let us sprinkle sanity checks around the kernel
    without making too much of a mess.

    Signed-off-by: Andy Lutomirski
    Cc: Andy Lutomirski
    Cc: Borislav Petkov
    Cc: Brian Gerst
    Cc: Denys Vlasenko
    Cc: Denys Vlasenko
    Cc: Frederic Weisbecker
    Cc: H. Peter Anvin
    Cc: Kees Cook
    Cc: Linus Torvalds
    Cc: Oleg Nesterov
    Cc: Peter Zijlstra
    Cc: Rik van Riel
    Cc: Thomas Gleixner
    Cc: paulmck@linux.vnet.ibm.com
    Link: http://lkml.kernel.org/r/5da41fb2ceb29eac671f427c67040401ba2a1fa0.1435952415.git.luto@kernel.org
    Signed-off-by: Ingo Molnar

    Andy Lutomirski
     

07 May, 2015

1 commit

  • Context tracking recursion can happen when an exception triggers
    in the middle of a call to a context tracking probe.

    This special case can be caused by vmalloc faults. If an access
    to a memory area allocated by vmalloc happens in the middle of
    context_tracking_enter(), we may run into an endless fault loop
    because the exception in turn calls context_tracking_enter()
    which faults on the same vmalloc'ed memory, triggering an
    exception again, etc...

    Some rare crashes have been reported so lets protect against
    this with a recursion counter.

    Reported-by: Dave Jones
    Signed-off-by: Frederic Weisbecker
    Reviewed-by: Rik van Riel
    Acked-by: Peter Zijlstra (Intel)
    Cc: Borislav Petkov
    Cc: Chris Metcalf
    Cc: H. Peter Anvin
    Cc: Martin Schwidefsky
    Cc: Mike Galbraith
    Cc: Oleg Nesterov
    Cc: Paul E. McKenney
    Cc: Rafael J . Wysocki
    Cc: Thomas Gleixner
    Link: http://lkml.kernel.org/r/1430928266-24888-2-git-send-email-fweisbec@gmail.com
    Signed-off-by: Ingo Molnar

    Frederic Weisbecker
     

09 Mar, 2015

3 commits

  • The host kernel is not doing anything while the CPU is executing
    a KVM guest VCPU, so it can be marked as being in an extended
    quiescent state, identical to that used when running user space
    code.

    The only exception to that rule is when the host handles an
    interrupt, which is already handled by the irq code, which
    calls rcu_irq_enter and rcu_irq_exit.

    The guest_enter and guest_exit functions already switch vtime
    accounting independent of context tracking. Leave those calls
    where they are, instead of moving them into the context tracking
    code.

    Reviewed-by: Paul E. McKenney
    Signed-off-by: Rik van Riel
    Cc: Paul E. McKenney
    Cc: Andy Lutomirski
    Cc: Will deacon
    Cc: Marcelo Tosatti
    Cc: Christian Borntraeger
    Cc: Luiz Capitulino
    Cc: Paolo Bonzini
    Signed-off-by: Frederic Weisbecker

    Rik van Riel
     
  • With code elsewhere doing something conditional on whether or not
    context tracking is enabled, we want a stub function that tells us
    context tracking is not enabled, when CONFIG_CONTEXT_TRACKING is
    not set.

    Reviewed-by: Paul E. McKenney
    Signed-off-by: Rik van Riel
    Cc: Paul E. McKenney
    Cc: Andy Lutomirski
    Cc: Will deacon
    Cc: Marcelo Tosatti
    Cc: Christian Borntraeger
    Cc: Luiz Capitulino
    Cc: Paolo Bonzini
    Signed-off-by: Frederic Weisbecker

    Rik van Riel
     
  • Current context tracking symbols are designed to express living state.
    As such they are prefixed with "IN_": IN_USER, IN_KERNEL.

    Now we are going to use these symbols to also express state transitions
    such as context_tracking_enter(IN_USER) or context_tracking_exit(IN_USER).
    But while the "IN_" prefix works well to express entering a context, it's
    confusing to depict a context exit: context_tracking_exit(IN_USER)
    could mean two things:
    1) We are exiting the current context to enter user context.
    2) We are exiting the user context
    We want 2) but the reviewer may be confused and understand 1)

    So lets disambiguate these symbols and rename them to CONTEXT_USER and
    CONTEXT_KERNEL.

    Acked-by: Rik van Riel
    Cc: Paul E. McKenney
    Cc: Andy Lutomirski
    Cc: Will deacon
    Cc: Marcelo Tosatti
    Cc: Christian Borntraeger
    Cc: Luiz Capitulino
    Cc: Paolo Bonzini
    Signed-off-by: Frederic Weisbecker

    Frederic Weisbecker
     

03 Dec, 2013

2 commits


14 Aug, 2013

1 commit

  • We plan to use the context tracking static key on inline
    vtime APIs. For this we need to include the context tracking
    headers from those of vtime.

    However vtime headers need to stay low level because they are
    included in hardirq.h that mostly contains standalone
    definitions. But context_tracking.h includes sched.h for
    a few task_struct references, therefore it wouldn't be sensible
    to include it from vtime.h

    To solve this, lets split the context tracking headers and move
    out the pure state definitions that only require a few low level
    headers. We can safely include that small part in vtime.h later.

    Signed-off-by: Frederic Weisbecker
    Cc: Steven Rostedt
    Cc: Paul E. McKenney
    Cc: Ingo Molnar
    Cc: Thomas Gleixner
    Cc: Peter Zijlstra
    Cc: Borislav Petkov
    Cc: Li Zhong
    Cc: Mike Galbraith
    Cc: Kevin Hilman

    Frederic Weisbecker